- blogs:
- cles::blog

qmailをSPFに対応させてみる


DomainKeysに対応させたついでなので、SPFにも対応させてみました。
† SPFとは
SPFはDNSにメールが送信される可能性があるサーバーをあらかじめリストアップしておき、リストにないサーバーからメールが送信されているものをspamとみなす技術です。基本的にはDNSだけの仕組みなのでDomainkeysよりはだいぶシンプルな仕組みになっています。
SPF/SenderIDとひとくくりにされていることが多く、これらは互換性もあるようですが、技術としては別のもののよう*1です。SenderIDについてはMicrosoftが推進しており、Microsoftにも専用のウェブサイト「Sender ID リソース」が開設されています。
† Yahoo!Mailも対応している
ヤフーは12日、メールサービス「Yahoo!メール」に送信ドメイン認証技術「SPF(Sender Policy Framework)」をを導入したと発表した。
ちょっと乗り遅れているので良くわからないのですが、Yahoo!とMicrosoftがだいぶ主導権争いをしていたようですが、どちらも一長一短の技術なので、結局両方使われる流れになっているのでしょうか。
† 送信側の対応
送信側はDNSサーバーにポリシーを書き込むだけで対応は完了なので、DomainKeysと比べると対応はかなり楽です。ポリシー生成もMicrosoftのSender ID Framework SPF Record Wizardや、openspf.orgのThe SPF Setup Wizardを使うと簡単に生成できます。
† 受信側の対応
受信側については受信時にDNSを参照して、ポリシーを確認する必要があるのでMTA側を変更する必要があります。
qmail用のパッチはSPF implementation for qmailで公開されています。
ここで恒例のFAILEDがたくさん出るpatch当てをやろうとしたんですが、patchが「もうあたってるよ」と文句を言うのでそんなバカなと思いながらも調べてみると、もうすでにパッチがあたっていました。どうやら、使っているLarge Qmail Patch for Netqmail with Vpopmailにすでにpatchが取り込まれていたというオチでした。
Gmail宛てにメールを送って試してみたところ下記のようなヘッダが付加されていました。
また、後述するパッチを当てている場合には下記のようなヘッダが付加されるようです。
† 設定してみる
とりあえず、control/spfbehaviorというファイルに1を書き込みます。
この数字を書き換えることにより挙動が変化します。
qmail SPF (Sender Policy Framework) patch
# 0: Never do SPF lookups, don t create Received-SPF headers
# 1: Only create Received-SPF headers, never block
# 2: Use temporary errors when you have DNS lookup problems
# 3: Reject mails when SPF resolves to fail (deny)
# 4: Reject mails when SPF resolves to softfail
# 5: Reject mails when SPF resolves to neutral
# 6: Reject mails when SPF does not resolve to pass
あまり厳しくするとメールが受信できなくなるので、しばらく1で様子をみて、2もしくは3にレベルを上げていくという運用になるのではないかと思います。
- *1: openspf.orgのSPF vs Sender IDというドキュメントに「SPF and Sender ID are not the same.」と書いてある。
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/1779
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110859)
3 . 年次の人間ドックへ(110434)
4 . 2023 年分の確定申告完了!(1つめ)(109977)
5 . 三菱鉛筆がラミーを買収(109881)