mailman の Domain not found スクリプトより
## Domain not found のエラーから、該当するメールアドレスとメーリングリスト名を抽出
open(SMTPERR, "< $errlog") || die "Error: $errlog \n";
while() {
    chomp;
    if ( $_ =~ /$taisho/ && $_ =~ /Domain not found/ && $_ =~ /refused/ ) {
        @array = split( / +/, $_);
        # 該当メールアドレスの抽出
        $array[11] =~ s/://g;
        if ( $array[11] !~ /^[^@]+@[^.]+\..+/ ) {
            print "$array[11] は、メールアドレスではありません。作業を中止します。\n";
            exit(1);
        } else {
            # メーリングリストの抽出
            $array[19] =~ s///g;
            @ml_tmp = split(/\./, $array[19]);
            $ml_tmp[4] =~ s/\@cc//g;
            if ( $ml_tmp[4] !~ /^[a-z][a-z|0-9]*\-[a-z|0-9]+/ || $ml_tmp[4] !~ /mailman/ ) {
                print "$ml_tmp[4] は、正しいメーリングリスト名ではありません。作業を中止します。\n";
                exit(1);
            } else {
                ## $dnfml[数][0] が、メールアドレス、$dnfml[数][0] が、ML名
                @dnfml = (
                    [ "$array[11]", "$ml_tmp[4]" ]
                );
            }
        }
    }
}
close(SMTPERR);
foreach(@errlogdata) {
    if( $_ =~ /$taisho/ && $_ =~ /$eaddr/ && $_ =~ /refused/ && $_ =~ /Domain not found/ ) {
        @array = split(/ +/, $_);
        # メーリングリストの抽出
        $array[19] =~ s///g;
        @ml_tmp = split(/\./, $array[19]);
        $ml_tmp[4] =~ s/\@cc//g;
        if ( $ml_tmp[4] !~ /^[a-z][a-z|0-9]*\-[a-z|0-9]+/ ) {
            print "$ml_tmp[4] は、正しいメーリングリスト名ではありません。作業を中止します。\n";
            exit(1);
        } else {
            $ml_pre = $ml_tmp[4];
        }
    }
}
### 多次元配列用uniq処理
### @hoge[i] までが配列名なので、
途中か?
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。