サーバーから送信されたメールが迷惑メールに振り分けられる原因「SPF編」

サーバーからGmail宛に送ったメールが、迷惑メールに直行してしまう事があります。

これはGmailに限ってではなく、プロバイダー宛のメールでも同じような事が起きることがあります。SPFの設定忘れが主な原因です。

SPFとは、送信ドメイン認証の事で、詳しくは、OCNの送信ドメイン認証(SPF)の対応を見ると分りやすいと思います。

SPFは、独自ドメインを管理するDNSにSPF情報を追加して、送信元ドメインと一致させるだけで、簡単に設定が出来ます。

SPFの設定例

バリュードメインとサーバーのSPF設定は下記の通りです。

メールアドレス(送信元)は、下記と仮定します。
hoge@example.com

バリュードメイン側のSPF設定例(※DNSレコード...)

a * 203.0.113.0
mx @ 10
txt @ v=spf1 +a +mx ~all

txt @ v=spf1 +a +mx ~all が、SPFの設定。

サーバー側の設定

# vi /etc/mailnameを修正します。

example.com

この2つ作業だけでSPFの対応が可能です。

Gmailにテスト送信

サーバーからテストでGmailなどに送って、「メッセージのソース」を表示すると、ヘッダー情報の、Received-SPF: を見ると認証の結果が分ります。

試しに、SSHで自分のGmail宛にメールを送ってみます。
$ echo "This is test mail." | mail アカウント名@gmail.com

Gmailに届いたメールのソースを確認してみると

認証成功(pass)

Received-SPF: pass (google.com: domain of hoge@example.com designates 203.0.113.0 as permitted sender) client-ip=203.0.113.0;

認証失敗(none)

Received-SPF: none (google.com: hoge@www does not designate permitted sender hosts) client-ip=203.0.113.0;

認証が失敗している原因は、@wwwとなっており、DNSで設定したドメイン(example.com)と異なっているので認証が失敗しました。原因は、/etc/mailname の設定忘れです。

サーバーから送られてくるメールが、Received-SPF: pass となっていれば、迷惑メールに行く確率が大分下がりますので、SPFの設定を忘れずにしてください。

Received-SPF: pass - 送信ドメインの正当性が証明された。
Received-SPF: softfail - 送信ドメインは詐称されている可能性があると判断されています。Gmail宛に届くと迷惑メールへ・・・。

SPFレコードの設定例(BIND編 / DNS側)

自前でDNSサーバーをお持ちの方は、下記の設定が参考になります。

// SPFレコードが一つの場合
example.com.   IN TXT " v=spf1 +ip4:192.168.100.0/24 ~all"

// SPFレコードが複数の場合
example.com.   IN TXT "v=spf1 +ip4:192.168.100.0/24 +ip4:10.0.0.0/24 ~all"

サーバーからお客さん宛にメールを送る必要が場合は、SPFの設定は必須だと思ってください。

読んで頂いて有り難うございます!