soft@appleple.com

【Sendmail】バウンスメールの仕組み

Sendmailは通常の状態ですと、WEB上から送信されるメールに
関しては、そのプログラムのユーザー権限にて送信しますので、
wwwユーザーで動作していれば、www宛に返ってきます。

このバウンスメールを任意の箇所に戻すようにする。

上記の現象を防ぐためには、プログラムで下記の対応をする必要
があります。

@エラーメールの送信先を、Errors-To: フィールドにて指定する方法。

例)
---------------------------------
$mailheader = <From: info@hogehoge.com
To: info@hoge.com
Errors-To: kurihara@hoge.com
Subject: WEBメール

END_OF_HEADER
----------------------------------

このフィールドは、非標準フィールドですが、RFC2076にて情報が記載
されています。ただ、このフィールドは非標準ですので最近のMTAでは
サポートされず、無視される傾向にあるので、廃止の方向です。
お勧めできません。

ASendmailに対しての送信コマンドに-fオプションをつけて、
envelope-fromを設定する。

例)sendmail -f info@hogehoge.com

例えば、perlで処理する場合ですと、下記のような感じが良いと思います。
プログラマーでないので、間違いがあるかもしれませんが、参考程度に・・

if ( open ( MAIL, "|sendmail -t -f" ) ) {
print MAIL "To:${送信先}\n";
print MAIL "From:${送信元}\n";
print MAIL "Envelope-From :${エラーメール返信先}\n";
print MAIL "Subject:${表題}\n\n";
print MAIL "${本文}\n\n";
close ( MAIL );
return ( 0 );
} else {
return ( False );
}


MTAはエラーメールをバウンスさせるときenvelope-from は <> にするので、エラーメールがループする事はありません。

Last Update : 2005年11月11日 (金) 06:49