メール送信ドメイン認証(SPF)

出した覚えの無いところからエラーメールが帰ってきます。メールのヘッダを見るとFrom:やReturn-path:に私のメールアドレスが設定されているようで、勝手に使われているようです。

というわけで、送信ドメイン認証(SPF)を設定して、「うちの管理していないところから送られた可能性があるメールである」ということを宣言する意味で設定してみました。相手がSPFで認証を行っていない限り無意味ではありますが…。

最近のスパムメールを見ているとSPFやDKIMをpassするメールが増えてきているので、これらの認証を行っているメールサーバも増えているということでしょうね。

送信者側はDNSにTXTレコードを追加するだけと言う簡単な物です。設定内容は多くの解説サイトに紹介されていますので、ここではパス。(^^;

DNSのTXTレコードにそのドメインから送信する可能性のあるサーバの一覧を用意しておき、それらのサーバのいずれかから送信されたメールであることを確認するという方法をとります。

動作確認にはgmailのアカウントを取ってテストをするのが一番簡単なようです。gmailはSPF,DomainKeys,DKIMに対応しているので、送受信してヘッダを見ればどれも確認できます。

受信側の設定は認証しなければ特に必要はありません。世の中の動向を知るためにとりあえずヘッダに記録だけ残すようにしました。

最近のspamassassinではプラグインによってSPFもDKIMも認証を行えます。できればspamassassinの方でSPFだけの認証結果をヘッダに追加出きればいいんですが、全部のメールにX-Spam-Statusを付けるものまた鬱陶しいです。

で、判定は重複してしまいますが、postfix用のpolicydを導入する事にしたんですが、色々とあるようですね。perl,python,Cで作られた物が存在するようです。Debian(unstable)には、postfix-policyd-spf-perlとpython-policyd-spfの2つが現在ありました。設定ファイルで細かく設定を変更できるpython版の方を持ってきてインストールしました。

とりあえずfailしたメールもすべて受信する設定で起動しています。Rejectするかどうかはspamassassinのスコアで調整した方が良さそうです。

しばらく運用してみて、ドコモが「なりすまし拒否」にSPFを導入した11月からメールマガジンを発行しているドメインでは急激にSPF設定を行っているところが増えていますね。