サーバー構築

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

サーバーから送信されたメールが迷惑メールに振り分けられる原因「SPF編」
目次
  1. SPFの設定例
  2. バリュードメイン側のSPF設定例(※DNSレコード…)
  3. サーバー側の設定
  4. Gmailにテスト送信
  5. Gmailに届いたメールのソースを確認してみると
  6. SPFレコードの設定例(BIND編 / DNS側)

サーバーから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の設定は必須だと思ってください。

2026年11月時点の補足:Gmail の送信者の要件

2024年2月1日から、Gmail に送るすべての送信者に、送信ドメインの認証(SPF か DKIM のどちらか)と、送信元の IP の正引き・逆引き(PTR)の設定が求められています。1日に5,000件以上送る場合は、SPF と DKIM の両方と DMARC も必要です。SPF だけ設定して終わりにしないでください。

要件(Google 公式・2024年2月1日から)すべての送信者1日5,000件以上
SPF または DKIM必要SPF と DKIM の両方が必要
DMARC-必要(ポリシーは none でよい)
正引き・逆引き DNS(PTR)必要必要
TLS で送る必要必要
迷惑メール率0.3%未満0.3%未満

DMARC は、まず受け取った報告を見るだけの設定(p=none)から始めます。設定したら、外から見えるかを dig で確かめます。

_dmarc.example.com.  IN TXT  "v=DMARC1; p=none; rua=mailto:dmarc@example.com"

$ dig +short TXT example.com
"v=spf1 +a +mx ~all"
$ dig +short TXT _dmarc.example.com
"v=DMARC1; p=none; rua=mailto:dmarc@example.com"

出典: Google「メール送信者のガイドライン」(2026年11月確認)

2026年11月時点の補足:実際の SPF レコードの例

大手のドメインの SPF も、この記事と同じ TXT レコードで公開されています。このサイトを置いている Debian 13.7 の VPSから引いた Google の例です(2026年11月5日)。

$ dig +short TXT google.com | grep spf
"v=spf1 include:_spf.google.com ~all"

include: で別のドメインの SPF を読み込み、最後の ~all で「それ以外から来たメールは怪しい(ソフトフェイル)」と宣言しています。