Sender IDについて調べてみた

11/1からDoCoMoが送信ドメイン認証(Sender ID)を開始したようなので、今更ながらSender IDについて調べてみました。

  • メールの送信元偽装を防ぐための技術。
  • 受信した側で認証を行う。
  • 送信元アドレスと、DNSに公開されたSPFレコードを比較し認証する。
  • 送信元では、DNSSPFレコードを設定すればOK。
  • 送信元として、Envelope-fromに加えて、Resent-sender, Resent-from, Sender, Fromの順にチェックされる。
  • DoCoMoの場合は、メールヘッダのFromが存在しないとき、Envelope-fromをチェックしにいく。変則?

SPF(TXT)レコードの確認には、メールヘッダのFROMフィールドを使用します。なお、メールヘッダのFROMフィールドが存在しない場合はエンベロープFROMを使用します。

http://www.nttdocomo.co.jp/service/mail/imode_mail/sender_id/

ドコモにメール送る時は

* 送信メールサーバーのIPアドレスSPFレコードとしてDNSに登録する
* From:に書くアドレスは、SPFレコードを設定した自社ドメインしか使わない
* どうしても違うFrom:アドレスを使いたい時は、MTAでFrom:を削除してenvelope-from:でSPFをチェックさせないとドコモは受け取ってくれないよ(ひでぇ!)

……という解釈なんだけど。最後の項目はけっこう泣ける人もいるんじゃないかなぁ。

void GraphicWizardsLair( void ); // ドコモが今日からSender-ID/SPFでメールを受信拒否する設定を始めたけど、From:とenvelope-from:の解釈がRFCと違ってまぜこぜ?

SPFレコードの設定

いろいろな設定があるようだけど、単純に使えそうなもの。

MXレコードに登録されているメールサーバから送信する場合、

IN TXT "v=spf1 mx ~all"

メールサーバのIPを直接指定する場合、

IN TXT "v=spf1 +ip4:xxx.xxx.xxx.xxx +ip4:yyy.yyy.yyy.yyy ~all"

末尾には「~all」を指定する。これによりもし認証に失敗してもメールを受信拒否されないで済む。

SPFレコードの自動作成ツール

複雑な設定をする場合は、このあたりを使うのがよさそう。
http://www.microsoft.com/mscorp/safety/content/technologies/senderid/wizard/
http://old.openspf.org/wizard.html

参考

http://www.nttdocomo.co.jp/service/mail/imode_mail/sender_id/
Sender ID:送信者側の設定作業 (1/4):送信ドメイン認証技術解説 - @IT
http://e-words.jp/w/Sender20ID.html
envelope from

DNS、メール関係詳しくないので間違ってるかもしれませんが、きっとこんな感じ。ひとまず自前のDNSにはIPアドレス指定で書いておけばよさそう。
間違ってたら教えてください。