先日「電子署名でもダメかも」とお伝えしました。ここで送信ドメイン認証の「DKIM」というものがあると教えていただきました。ありがとうございます。

 DKIM では件名や差出人、あて先などに対して電子署名を付けることができるので、それらの改ざんを検出することができます。「なんてすばらしい」。というわけで、DKIM に対応しようといろいろ調べてみました。

 そもそも DKIM はクライアントで対応するものではなく、送信・受信メールサーバーの両方で対応するものです。Gmail などが対応しているようですが、まだ多くのメールサーバーで対応が進んでいないようです。

 送信・受信両方のメールサーバーで DKIM に対応している場合、認証した結果がどうなのかは受信メールの Authentication-Results: ヘッダーを見ればわかります。このヘッダーで送信ドメイン認証の DKIM の他に、「SPF」、「Sender ID」、「DomainKeys」の認証結果も見ることができます。

 ヘッダーを見なくても DKIM では認証に成功した場合のみ受信メールサーバーがメールを受信し、失敗した場合は、SSP と呼ばれる処理に従ってメールを破棄することもできます。なのでクライアント側の対応は本当に不要なように見えますが、DKIM 以外の送信ドメイン認証にも対応する場合は(対応できるものは対応しておいた方がいいです)、メールを受信しないとわからないため、クライアント側でも少しだけ対応が必要になります。

 具体的には認証結果が正しく認証されたかどうか判定して、正しい場合のみコマンドを実行し、正しくない場合は何もしないといった処理をすることになります。この Authentication-Results: ヘッダーを使った送信ドメイン認証と SSL を組み合わせれば強力なセキュリティを実現できるのではないでしょうか。

 ただ Authentication-Results: ヘッダーが改ざんされないのが前提ですが、Authentication-Results: は受信メールサーバーで付加しているので、大丈夫だとは思います。