メルマガのエラーアドレスやバウンスメールを自動的に処理する方法(PostFix)その2

| コメント(0) | トラックバック(0)
前回の応用編として、バウンスされたエラーアドレスを、メルマガごとに処理してみる。
(過去記事:「メルマガのエラーアドレスやバウンスメールを自動的に処理する方法(PostFix)」)
(環境:fedora9、postfix2.23以降、perl5.8.X)

まず、VERPを利用の際に、sendmailパスを以下のようにしてみる。

sendmail -XV -f bounce+$magazine_name

もちろん$magazine_nameにはメルマガ名とかメルマガ番号とかが格納されてること。



次に、/etc/postfix/main.cf の設定は前回と同じ。




次に、バウンスメール処理用のプログラム(perl)を以下のようにカスタマイズする。
(設置場所は前回同様、/home/owner/に設置)

例:process_bounce.cgi(705 or 755)


#!/usr/bin/perl -w

my ($magazine_name, $deadadd);

#バウンスメールのヘッダ及び本文を標準入力から取得
while(<>){
    #最初に出てきたTo行から宛先を取得
    if ($_ =~ /^To: "?bounce\+(.+?)\+(.+?)\=(.+?)"?\@mydomain.jp\n$/){
        $magazine_name = $1;            #最初に設定した$magazine_nameが取得できる
        $deadadd = $2."@".$3;            #ここでエラーアドレスを取得
        last;
    }
}


#
#
#このあたりで、mysqlに接続するなどして、不逹アドレスを削除する処理
#
#取得した$magazine_nameの値を利用して、読者削除したい対象のメルマガが指定可能
#

exit;


※こうすることによって、データベース処理が楽になる。
※もう一つ前回と違う点は、ペーストする正規表現を、

  /^To: "?bounce\+(.+?)\+(.+?)\=(.+?)"?\@mydomain.jp\n$/

としたところ。

これは、相手先MTAが、バウンズを返すエンベローブアドレスを""でくくってよこす場合があるので、そのための対処。





トラックバック(0)

トラックバックURL: http://www.igreks.jp/blog/mt-tb.cgi/4

コメントする