SPFを普及させるための提案に基づき、エラーメールを抑制する実装を Sendmailへのパッチとして提供する。
我々の環境では、13%のエラーメールを抑制した。 (エラーメールが生成される状況に占めるエラーメールを抑制した割合)
本実装ではメールヘッダに含まれるAuthentication-Resultsヘッダにある SPF検証結果を参照し、検証結果がfailまたはsoftfail時にエラーメールの抑 制を行う。ヘッダの利用により外部との境界メールサーバから内部の配送サー バに転送する構成であっても、本機能を利用したSPFの恩恵にあずかれる。も ちろん、ヘッダを付加するsid-milterと本実装が同一のSendmailで動作しても 構わない。
エラーメールの抑制は、Sendmail内部のフラグを制御することによって実 現している。
Sendmailと同様とします。
sendmailのソースコードに対し、本実装(パッチ)を適用する。
$ cd /tmp $ tar -xzf sendmail.8.13.8.tar.gz $ cd sendmail-8.13.8 $ patch -p1 < sm-dsn-supr-0.1.0-8.13.8.patch
devtools/Site/site.config.m4 を作成し、以下のビルド・ディレクティブを加える。
APPENDDEF(`confENVDEF', `-D_FFR_DSN_SUPR_WITH_SPF')
Buildコマンドを利用してコンパイルする。
$ ./Build
コンパイル後、問題がなければrootユーザになり、インストールする。
$ su # ./Build install
sid-milterが動作しているヘッダ作成ホストを指定するため、 sendmail.cfに以下の設定を加える。
O SPFRecieverHostMap=spf_recv_hosts Kspf_recv_hosts hash -T<TMPF> /etc/mail/spf_recv_hosts
Authentication-Resultsの作成ホストは、 /etc/mail/spf_recv_hostsで定義する。左辺には作成ホスト名、右辺には何ら かの値を定義する。
(設定例) mxhost.example.com enabled
/etc/mail/spf_recv_hostsファイルを作成後、makemapコマンドを利用し、 db ファイルに変換する。
$ makemap hash /etc/mail/spf_recv_hosts < /etc/mail/spf_recv_hosts
sendmailを再起動させた後、メールを送って正常に動作しているか確認する。
正常に動作している場合は、エラーの有無に関わらず、softfail/failとなっ たメールが到着すると以下のようなログを出力する。
Jun 1 14:37:30 mxhost sendmail[14747]: k4V5aZwf014744: clear DSN flags for suppressing (spf=softfail)
また、Authentication-Resultsを作成したホストがデータベースマップで 確認できなかった場合は、以下のようなログを出力する。
Jun 1 15:49:36 ripple sendmail[17197]: k4V6nSYK017194: SPF receiver host is not found (maybe map is not defined), ignore this header
以上で、導入は完了である。
contrib/est_dsn.plを利用するとエラーメール数を集計できる。
(出力例) $ ./est_dsn.pl /var/log/maillog Total incoming messages: 5307 Total delivered messages: 4901 Estimated DSN messages: 3418 Actual DSN messages: 2906 Suppressed DSN messages: 512
一般に Estimated DSN messages = Actual DSN messages + Suppressed DSN messagesとなる。ただし、SMTPセッション中でDSNにてNOTIFY=NEVER と指 定された場合は、エラーメールを抑制するため、一致しないことがある。 (8.13.7以降で、DSNを無効化すれば、Sendmailによってエラーメールが抑制 されることはない。)
本パッチの導入事例を募集しています。sagawa+dsn_patch@sfc.wide までご連絡下さい。
同じアドレスで、ご意見・お問い合わせ等も承ります。
(迷惑メール防止のため、実際に送信する際は上記アドレスの末尾に
.ad.jpを加えてご利用下さい)