Sender IDについて調べてみた
11/1からDoCoMoが送信ドメイン認証(Sender ID)を開始したようなので、今更ながらSender IDについて調べてみました。
- メールの送信元偽装を防ぐための技術。
- 受信した側で認証を行う。
- 送信元アドレスと、DNSに公開されたSPFレコードを比較し認証する。
- 送信元では、DNSにSPFレコードを設定すれば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アドレス指定で書いておけばよさそう。
間違ってたら教えてください。