二重バウンスメールの処理

二重バウンスメールは postmaster (すなわち epwww メンバ)に配送されるように なっている. その際, メールの本文のみが自動的に削除されるようにする.

特に再構築時にやる必要は無し

~epwww/.qmail の編集

~epwww/.qmail の二行目に以下を一行で追加する

| condredirect epwww-wbounce /home/epwww/bin/check_wbounce.pl

condredirect は配送されたメッセージに対してプログラム(ここでは check_wbounce.pl)を実行し,プログラムが 0 を返した場合は指定された アドレス(ここでは epwww-wbounce) に転送するコマンドである. check_wbounce.pl を以下のように作成し,二重バウンスメールが 来た場合 0 を返すようにする.パーミッションは 755.

#!/usr/bin/perl
foreach(STDIN) {
  if(/bounce bounced/) {
     exit 0;
  }
}
exit -1;

~epwww/.qmail-wbounce の編集

~epwww/.qmail-wbounce を以下のように編集する(一行で).パーミッションは600. これにより,epmail-wbounce に 配送されたメッセージは以下に述べる rmcontents.pl によって本文のみ 削除され To: postmaster は To: epwww-member に書き換えられる. 本文が削除されたメールは qmail-inject によって epwww-member に 配送される.

| /home/epwww/bin/rmcontents.pl|/var/qmail/bin/qmail-inject

/home/epwww/bin/rmcontents.pl を以下のように作成する.パーミッションは 755.

#!/usr/bin/perl
foreach (STDIN) {
    s/^To: postmaster/To: epwww-member/;
    $string = $string . $_;
}
@list = split(/--- Below this line is a copy of the message.\n/, $string);

@temp = split(/\n\n/, $list[1]);

unshift(@temp, $list[0]);

@temp = ($temp[0],"--- Below this line is a copy of the message.\n",
            $temp[1],"\n\n--- The contents below have been deleted by ~epwww/bin/rmcontents.pl !\n");

print @temp ;

本文が削除された部分には "--- The contents below have been deleted by ~epwww/ bin/rmcontents.pl !" と表示される.


最終更新日: 2014/05/12 (渡辺 健介) フォーマット修正 Copyright © 2013 epcore