この疑問に回答します。
メールを送信する際に、迷惑メール防止の設定を組み込まないと相手に届く前に振るい落されます。しっかりと迷惑メール防止対策を実施する必要があります。
迷惑メール対策 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認証結果を説明します。
認証結果 | 意味 |
None | SPFレコードが公開されていない |
Pass | 認証処理に成功 |
Fail | SPFレコードが “-” として公開されている条件にマッチ |
SoftFail | SPFレコードが “~” として公開されている条件にマッチ |
DNSは情報の保存期間があります。DNSへの問い合わせ回数を減らすために、情報をキャッシュし一定期間保存します。そのため、設定変更が反映するまで時間がかかる場合がありますのでご注意ください。
SPFレコードの確認
SPFレコードを確認してくれるサイトがありますので利用します。
利用方法はドメイン名を指定するだけで簡単です。画面の上部に入力します。
すると、画面下部にレコード情報が表示されます。
このように表示されたら正しくDNSに登録がされています。
規模が大きくなると、include数が多くなりSPFの制限に引っ掛かります。
このエラーは再帰回数が上限値を超えている様子です。
整理がつかず困っています。今のところ送受信に影響は出ていません。
メール送信の確認
DNSの登録が終わって、SPFで利用するTXTレコードが反映したら、メールの受信チェックを行ってください。
正常に動作すればメールヘッダーにSPFの結果が表示されます。
「spf=pass」となっており認証が成功しています。
SPFの制限事項
文字数の制限は最大255文字まで
TXTレコードの文字列には、最大 255 文字がまでです。サーバー数が増えてくると上限を超えるので「include」などを利用して文字数の削減を試みてください。
include回数は10回まで
RFC4408にて、SPFレコードに設定するinclude回数は10回までと制限されています。既に複数のincludeを追加されている場合は、include回数の合計に注意が必要です。
SPFの回数を調べるには、以下のサイトがおすすめです。
includeの指定先で、さらにincludeしている場合は回数をカウントします。
全部で10回までになるように調整をする必要があります。
メール転送(エイリアス)Envelope from を変更
デフォルト設定のままでメール転送すると、SPF認証に失敗します。メールヘッダーを変更し、メール転送でもSPF認証をPassさせる必要があります。
関連記事 迷惑メール判定されないSPF設定
以上、「迷惑メール判定されないSPF設定」という記事でした。