前回の応用編として、バウンスされたエラーアドレスを、メルマガごとに処理してみる。
(過去記事:「メルマガのエラーアドレスやバウンスメールを自動的に処理する方法(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が、バウンズを返すエンベローブアドレスを""でくくってよこす場合があるので、そのための対処。
(過去記事:「メルマガのエラーアドレスやバウンスメールを自動的に処理する方法(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が、バウンズを返すエンベローブアドレスを""でくくってよこす場合があるので、そのための対処。
