ヤフーメールの迷惑フォルダ対策

webの開発のお仕事でよくあるのが、「メール配信システム」です。
サーバのDBにユーザのメールアドレスを蓄積して、決められた時刻にメールを大量に送るのが主な内容です。
こういうのを作ってて、送られる側の立場からすると、「いらねえよな。。」と常々思うのですが、クライアントは「是非!」というので作ったりしてました。(これからも作りますよ!!)

ここで最近よく問題になるのが、Yahooメールの「迷惑メール」フォルダに直行してしますケースです。
Yahooでは「DomainKeys」の導入を推奨していますが、送信プログラムに組み込む手間がかなりかかるので、第1ステップとして、DNSへのspfキーの設定をオススメします。
spf=Sender Policy Framework
とかいうらしいです。メールを受信したサーバが、受信時にFrom欄のドメイン(DNS)に設定されたSPFを問合わせして、その内容を送信者のサーバのIP情報と比較して、適正がどうかを判断する仕組みのようです。
メール配信システムの場合、「送信」に注力すれば良いので、現行のシステムに変更を加えずに、DNSにこの設定を行うだけというのが一番リーズナブルであるといえます。
SPFの設定は、DNSのTXTフィールドが使われます。
メールの送信サーバのドメインがxxx.comで送信サーバのIPアドレスが、123.456.789.123だとすると

xxx.com. IN TXT “v=spf1 ip4:123.456.789.123 -all”
となります。
送信サーバのIP範囲が、123.456.789.120から16個あれば

xxx.com. IN TXT “v=spf1 ip4:123.456.789.120/28 -all”
のようになります。

設定の確認はdigコマンドが便利です。
以下、@yahoo.co.jpに対してのdigコマンド実行結果です。

% dig yahoo.co.jp TXT

; <<>> DiG 8.3 <<>> yahoo.co.jp TXT
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43259
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUERY SECTION:
;;      yahoo.co.jp, type = TXT, class = IN

;; ANSWER SECTION:
yahoo.co.jp.            6m54s IN TXT    “v=spf1 include:spf01.yahoo.co.jp include:spf02.yahoo.co.jp ~all”

IP範囲指定が複雑な場合は、spfフィールドでincludeなどの指定もできるようです。

排気ガスを大量に出して地球を汚してしまうくらい、スゴーく悲しい作業ですが、お金を稼ぐには覚えておいたほうが良い知識だと言えるでしょう。

参考:Sender ID:送信者側の設定作業