迷惑メール判定されないSPF設定

メール
迷惑メール判定されないようにメール送信にSPFを利用したい。

この疑問に回答します。

メールを送信する際に、迷惑メール防止の設定を組み込まないと相手に届く前に振るい落されます。しっかりと迷惑メール防止対策を実施する必要があります。

迷惑メール対策 SPFとDKIM

迷惑メール対策は色々なものがあります。その中から最も利用度が高い、SPF(エスピーエフ)とDKIM(ディーキム)について解説します。SPF,DKIMともメールを送信する側が対応するものです。

SPF(Sender Policy Framework)とDKIM(Domainkeys Identified Mail)は、どちらも送信ドメイン認証の仕組みです。IETFによってSPFはRFC4408、DKIMはRFC4871およびRFC5672にて仕様が定められています。

SPFはDNSのSPFレコードを利用し送信ドメインを認証します。SPFに対応しているメール受信サーバーは、メール受信時に送信元ドメインのDNSサーバーからSPFレコードを参照し値を検証します。この検証によりなりすまし等を防ぐことができます。

DKIMは電子署名を利用し送信ドメインを認証します。SPFと同様にDNSを利用します。DKIMはDNSサーバーに送信元ドメインの公開鍵を登録します。メールサーバーは秘密鍵で暗号化した電子署名を付加してメールを送信します。DKIMに対応しているメール受信サーバーはメールヘッダーから送信元ドメインのDNSサーバーから公開鍵を取得し、電子署名を検証します。この検証によりなりすまし等を防ぐことが可能となります。

SPFに対応した環境を構築する

SPFはDNSのSPFレコードを利用し送信ドメインを認証します。SPFに対応しているメール受信サーバーは、メール受信時に送信元ドメインのDNSサーバーからSPFレコードを参照し値を検証します。

つまり、メールサーバー(SMTP)に対して設定を行うのではなく、別の仕組み(DNS)に対して設定を行い迷惑メールの対策します。

DNSにSPFレコードを登録する

SPFの設定方法は、DNSサーバーの「TXTレコード」にSPF設定に準拠した書き方で登録するのみです。難しくはありません。

DNSにSPFで利用するTXTレコードを登録します。TXTレコードの書式は下記の通りです。

[自分のドメイン名].  IN TXT "v=spf1 +ip4:xxx.xxx.xxx.xxx ~all"

基本は、送信するサーバーのグローバルIPアドレスを列挙して許可し、指定以外のグローバルIPを拒否します。

限定子は、マッチした場合の認証結果を指定する。よく利用する限定子を説明します。

表記意味意味
+Pass送信メールサーバーとして認証する
Fail送信メールサーバーとして認証しない
~SoftFail認証情報を公開しているが、認証失敗する可能性がある

自身が管理しているサーバーだけが送信する場合は、「+」を利用してサーバーを列挙し、最後に対象外はすべて「 – all」を意味する記述を行います。

ただ、現実は「-」を利用せず「~」を設定する方が一般的です。

認証対象の送信元サーバーのIPアドレスと照合する条件のよく利用するものを説明します。

機構引数機能
allなしすべての送信元ホストにマッチする。
SPFレコードの末尾に置かれ、デフォルトの動作を定義するために利用される
includeドメイン名引数に与えられたドメインのSPFレコードを使って認証処理を行う
aドメイン名引数に与えられたサーバー名FQDNのAレコードを使って認証を行う
ip4
(CIDR)
IPアドレス引数に与えられたIPアドレスを使って認証を行う

よくあるSPF認証結果を説明します。

認証結果意味
NoneSPFレコードが公開されていない
Pass認証処理に成功
FailSPFレコードが “-” として公開されている条件にマッチ
SoftFailSPFレコードが “~” として公開されている条件にマッチ

DNSは情報の保存期間があります。DNSへの問い合わせ回数を減らすために、情報をキャッシュし一定期間保存します。そのため、設定変更が反映するまで時間がかかる場合がありますのでご注意ください。

SPFレコードの確認

SPFレコードを確認してくれるサイトがありますので利用します。

mxtoolbox.com

利用方法はドメイン名を指定するだけで簡単です。画面の上部に入力します。

SPFレコードの確認
SPFレコードの確認

すると、画面下部にレコード情報が表示されます。

SPFレコードの確認結果
SPFレコードの確認結果

このように表示されたら正しくDNSに登録がされています。

規模が大きくなると、include数が多くなりSPFの制限に引っ掛かります。

SPFレコードの確認エラー
SPFレコードの確認エラー

このエラーは再帰回数が上限値を超えている様子です。

整理がつかず困っています。今のところ送受信に影響は出ていません。

メール送信の確認

DNSの登録が終わって、SPFで利用するTXTレコードが反映したら、メールの受信チェックを行ってください。

正常に動作すればメールヘッダーにSPFの結果が表示されます。

SPFレコードの確認ヘッダー
SPFレコードの確認ヘッダー

「spf=pass」となっており認証が成功しています。

SPFの制限事項

文字数の制限は最大255文字まで

TXTレコードの文字列には、最大 255 文字がまでです。サーバー数が増えてくると上限を超えるので「include」などを利用して文字数の削減を試みてください。

include回数は10回まで

RFC4408にて、SPFレコードに設定するinclude回数は10回までと制限されています。既に複数のincludeを追加されている場合は、include回数の合計に注意が必要です。

includeの指定先で、さらにincludeしている場合は回数をカウントします。

全部で10回までになるように調整をする必要があります。

 

 

 

以上、「迷惑メール判定されないSPF設定」という記事でした。