OP25B

最近、流行なんで対策をメモ。
sendmail.mcを以下のように修正。
DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl
DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
で、saslpasswd2でパスワードを作る。
一々作るのが面倒なので、

#! /usr/bin/perl

&csv_file_read("./passwd.csv");

for ($x = 0 ; $x <= $#opwork ; $x++) {
$uname = $opwork[$x][0];
$newpwd = $opwork[$x][1];
print $uname;
print " ";
print $newpwd;
print "\n";
&do_password();
}

sub do_password()
{
# ログインユーザのパスワードを変更する
&admin_system(qq^
echo '$newpwd'| passwd --stdin $uname
^);

&admin_system(qq^
# SMTP認証のパスワードを変更する
echo $newpwd | saslpasswd2 $uname
^);
}

sub admin_system()
{
my $cmd=shift;
system( qq^
> /var/tmp/rcp.log
{$cmd} > /var/tmp/rcp.log 2>&1
echo "rc=\$?" >> /var/tmp/rcp.log
^);

if ( $? ne 0 ) {
print("LOG:",`cat /var/tmp/rcp.log`);
# exit(1);
return 0
}
return 1
}

sub csv_file_read()
{
my ($fname) = @_;
open FH,$fname; #
my $ii = 0;
$#opwork =-1;
while(){
$r_org=$_;
# chomp $r_org;
@fwork = split(',',$r_org);
@{$opwork[$ii]} = @fwork;
$ii++;
}
close (FH);
}

csvファイル形式は
user1,pass1,
user2,pass2,
user3,pass3,
とする。