タイトルの通り、一般の方には全く不要な情報なので読み進めていただく必要はございません。
大した情報ではありませんが、備忘録もかねて書いておきます。
独自ドメインを取得しメールサーバを構築・管理している方は、最近のspamメール対策に苦労されていることと思います。かく言う私も、linuxベースでメールサーバを構築し多くのドメインのメールを管理しておりますが、spamメール対策を講じるのが面倒大変になってきました。多量なspamを検出する機能の実装ももちろん大変ですが、この最近問題なのは、gmail, yahooメール, hotmailなどの大手が運用するフリーメールがspam対策を堅固に実装し、独自で構築したメールサーバからのメールはしれっとspamと判定してしまうことです。spamhouseなどのようにメールサーバのブラックリスト化もされておりますが、意図しないところで自分のサーバーがリスト化されたり、悩まされる日々です。
詳しくは述べませんが、その対策として、spf(sender policy framework)、DKIMなどがなんとな~く台頭してきました。少し前はspfとDomainkeysだったのですが、Domainkeysは似たようなDKIMに移行しつつありますね。最近メールサーバーを久々に構築する機会があり、せっかくなので、マルチドメイン(バーチャルドメイン)+spf+DKIM+SMTP-Auth +TLS(POP3s, IMAP4s)でてんこ盛りサーバーをあげてやろうと数時間格闘しましたが、DKIMだけうまく行かず断念致しました。qmailベースだったのですが、DomainKeysは比較的容易に実装できたのですが、DKIMはまだまだ難しい感じでした。久々オープンソースのソースコードの読んで改変しつつがんばったのですが、しょうがないですな・・。
さて、今回のブログの本題であるspfに関してです。最近、独自ドメインを取得してgmailの自分のアカウントに転送し、gmailで送受信(FROMはそのドメインのメールアドレスを使う)している方もいらっしゃるかと思います。つまりSMTPをgmailのサーバーを使うという構図です。その場合、いわゆるそのドメインのMXレコードに当たっているホスト(SMTP)以外からメールが送信される訳ですから、最近の状況ですとかなりspam判定される事が多くなります。そこでspfを、DNSのTXTレコードに登録するわけですが、gmailは莫大なサーバーですのでSMTPのIPアドレスがどれになるか予想がつきません。私も困ったなと思っていたわけですが、spfの仕組みをよく考えればDNSに問い合わせれば取得できます。まったく当たり前の話ですが、とぼけていて実行していませんでした。
linuxのdigコマンドなどを使えば便利です。
$ dig gmail.com txt ←gmail.comドメインTXTレコードをDNSに問い合わせます。
この結果は
;; ANSWER SECTION:
gmail.com. 300 IN TXT “v=spf1 redirect=_spf.google.com”
となります。gmail.comは、_spf.google.comにリダイレクトしています。リダイレクトは指定されたドメインにチェックを転送する機能の様です。そこで再度問い合わせます。
$ dig _spf.google.com txt ←_spf.google.comドメインTXTレコードをDNSに問い合わせます。
この結果は
;; ANSWER SECTION:
_spf.google.com. 203 IN TXT “v=spf1 ip4:216.239.~~googleさんに迷惑をかけないため途中省略~~.144.0/20 ?all”
という感じで、複数のIP/マスクで表示されます。このipをgmailベースで送信する可能性のあるドメインのTXTレコードに追加しておけば良いわけです。(gmailと同じようにredirectで_spf.google.comに指定しておくのも良いかと思います)
この結果、gmailから送ったメールを、spf対応の受信サーバーで受信したところ、
Received-SPF: pass (0: SPF record at _spf.google.com designates 209.85.xxx.xxx as permitted sender)
となり無事にpassになりました。いままでsoftfailでしたのでこの辺気がかりでしたが、はやくちゃんと理解すれば良かったです。spfは実装も簡単ですが、実際にはこうやってdnsに問い合わせれば簡単にIPを取得できるわけですし、spam業者がこのIPをspfに加えてspamを送れば送信できてしまうわけですから、spfも時間の問題かもしれませんね。ちなみにGmail先生はSPF+DomainKeys+DKIMを全て実装しています。さすがですな。