送信メールが迷惑メール扱いされないための設定 ~SPF認証編~

はじめに

SPF認証 (Sender Policy Framework) というのは、メール送信ドメインが偽装されいないかをチェックするための認証技術だそうです。

受信側SMTPサーバーは、受信したメールのヘッダ情報 (Envelope-from) に基づいてメール送信元のSMTPサーバーが属するドメインのDNSサーバーからTXTレコード (SPFレコード) を取得します。そして TXTレコード (SPFレコード) に記載されているルールに則り、送信元SMTPサーバーの正当性 (IPアドレス等) をチェックします。その結果問題がなければメールの受信または拒否などの処理を行います。

前の投稿に書いた通り、私の環境ではOCNのメールサーバーにリレーをしてメール送信しています。その設定の過程で envelope-from をOCNメールアドレスに書き換えていますので、SPF認証だけなら基本的に問題なくpassしてしまいます。(OCNのSMTPサーバーが信頼できる送信元として認証にpassしてくれるためです。)

その意味では今から書くSPF設定は不要なのですが、引き続く投稿では、DKIM認証そしてDMARC認証へと話を進める予定です。そのときにはやはり自分のドメインにおいてSPF認証にpassする環境が整っていなければいけませんので、今の時点でSPF設定は済ませておきたいと思います。

Postfixの設定の見直し

SPF認証にpassするための Postfix の設定というのは特にありません。

ですが、今後 DMARC認証要求に応えていくことを想定して From: ヘッダーは正しく設定しておく必要があります。ただ、Postfixのパラメーターがどのように認証に影響してくるのか色々と調べましたが、私は完全に理解していません。こんな感じ?と私が理解している内容は…

  • myhostname は、SMTP EHLOコマンドで送るホスト名としての役割を持つ。このホスト名は正引きできるべきであって、正引きできない場合は受信側サーバーの認証ポリシーによって受信拒否されてしまうことがある。ただし、正引きできるかどうかが問題であって、サーバーマシンのIPアドレスと必ずしも一致している必要はない。また、必ずしもMXレコードに設定したホスト名と同じである必要はない。
  • myoriginをちゃんと指定しておかないと、LAN内からメール送信した場合に送信元メールアドレスの@以降にちゃんとしたドメインが付されずDMARC認証が正しく行われなくなる。正しいドメイン名を指定しておく必要がある。

以上、間違ってたらすみません… ご指摘お待ちしてます。

「お名前.com」のDNSレコード設定

SPFレコードをその記法に従いながらTXTレコード内に記述します。

人によって様々な書き方をしているようですが、要はそのSPFレコードからIPアドレスをちゃんと引き出すことができて、かつそのIPアドレスがドメインの正引きアドレスと一致していればオッケーのようです。

一番シンプルなのは、IPアドレスを直接指定するやり方です。
「v=spf1 ip4:xxx.xxx.xxx.xxx ~all」
でも私の場合は固定IPアドレスを持っていません。前の投稿では変動するIPアドレスに対して都度Aレコードを自動更新する設定を行いましたが、その方法でTXTレコードを変更するには「お名前.com」のDNSサーバーとのソケット通信の中身をもっと深く知る必要がありそうです。(いつか実験してみたいところですが、あまり他人のDNSを用いて実験など行うべきではないですね。)
したがって私の場合はこのやり方は却下です。

次に、MXレコードの助けを借りる方法です。
「v=spf1 mx ~all」
この場合は別にMXレコードを設定しておく必要があります。検索が2段階となりDNSサーバーに負担はかかりそうですが、SPFとしてはこれで問題なさそうです。

同様に他のレコードを指定しても良いかもしれません。
「v=spf1 a:hostname.example.com ~all」
これも当然Aレコードの設定は必要です。やはりDNSサーバーへの負担は増えそうですが、SPFとしては問題ありません。

結局私の場合は MXレコードを使用して記述することにしました。

正しく設定できたかを確認する

こちらのチェックサイトにアクセスして確認しました。
自分のドメインを入力して問題点が表示されなければ SPFレコードの設定は成功です。

あとがき

後のDMARC認証に備えることを目的として上記のようなシンプルな記述でSPFを設定しましたが、本来ならリレー先の OCN の SMTPサーバーを include しておいた方が良いのかもしれません。その場合は無駄なトラフィックが発生してしまうことになるのか、そうでもないのか私はよく分かっていません。
(多分ですがOCNサーバーを include で含めなくてもそもそも論で permitted domain として無条件?に受け入れられてしまうのですから、SPF で一々明示するのは無駄?? どなたか教えて下さい。)

コメント

タイトルとURLをコピーしました