SPFを設定してGmailで迷惑メール扱いされるのを回避
Contents
SPFとは
SPFの言葉の意味と仕組みについてSPF
Sender Policy Frameworkの略送信に使うメールアドレスが、どのメールサーバーから送信されるのかを記載した宣言書を予め作っておき、メールを受信したメールサーバーは、宣言書をみて宣言通りかどうかチェックする仕組み
(宣言書と異なるメールはジャンクと疑われる)
SPFレコード
SPFの宣言書のことメールアドレスを作ったとこのDNSサーバーに、TXTレコードとして登録する
例)"v=spf1 a:example.com -all"
SPF(チェック)の流れ
- 受信元メールサーバーは、メールアドレスを作ったとこのDNSサーバーが持っている宣言書(SPFレコード)を確認させてもらう
- 受信元メールサーバーは、実際に来たメールの送信元(今回はAWS。IPアドレスとかドメインとか。)が、宣言書にあるか確かめる
- 受信元メールサーバーは、2.の結果を元にメールを受信するか、迷惑メールフォルダに入れるとか、受け取り拒否するとか何らかの処理を行う
(送信側で「何らかの処理」を指定したい場合には、DMARCの設定が別途必要)
SPFのチェック結果はメールヘッダにも記載され(Gmailだと「メッセージのソースを表示」で確認可)、結果を確認することができる
認証結果
結果には以下の種類があるPass以外は、受信先でどのように扱われるか分からない
Pass | チェックにパスした |
---|---|
None | SPFレコードがない |
neutral | SPFレコードはあるが、条件"?"に該当した(チェック結果が出せない) |
SoftFail | SPFレコードはあるが、条件"~"に該当した(怪しいけど失敗という確定はできない) |
Fail | チェックにパスしなかった |
TempError | 一時的な障害によりチェックできなかった |
PermError | SPFレコードの記述誤りなどでチェックできなかった |
SPFを設定する
環境
この時の環境
サイトのサーバー:AWS EC2 Amazon Linux
メールアドレス取得先:Rackspace
サイトのドメイン取得先:Liquid Web
Amazon Linuxには、sendmailをインストールした
サイトのドメイン名と、メールアドレスのドメイン名(@以降の文字列)は異なるものを使用
サイトのドメイン名は、AWSのRoute53にAレコードが設定されている
メールアドレス取得先:Rackspace
サイトのドメイン取得先:Liquid Web
Amazon Linuxには、sendmailをインストールした
サイトのドメイン名と、メールアドレスのドメイン名(@以降の文字列)は異なるものを使用
サイトのドメイン名は、AWSのRoute53にAレコードが設定されている
現象
SPFを設定しない場合、Gmail(受信元メールサーバー)は、送信元メールアドレスのドメイン情報を管理している(Rackspace)DNSサーバーにあるSPFレコードを参照するが、初期状態ではSPFレコードがないので確認できない。
Gmail内で受信したメールのメールヘッダを確認すると、
SPF:NEUTRAL(IP: ××.×××.××.××)
となっていた
ゴール
SPF:PSSS(IP: ××.×××.××.××)にするやったこと
メールアドレス取得先(Rackspace)で、SPFレコードをセットする
Rackspaceは、自分でDNSサーバーにレコードを追加・修正することができた
(レンタルサーバーなど、自分でレコードを追加・修正できない場合があるので、その場合にはサーバー管理者に問い合わせる必要がある)
- Rackspaceにログイン
- 上部ナビバーの「Select a Product」から「Rackspace Cloud」を選択
- 「Networking」から「Cloud DNS」を選択
- 対象ドメインのページに行き、Recordsセクションの「Add Record」をクリック
- 必要項目を記入
Record type:TXT Record
Host Name:何も入力しない
Text:v=spf1 ip4:××.×××.××.×× ~all
*1 ××.×××.××.××には、サイトのIPアドレスを記入。今回はAWSなので、このサイトのElastic IPを指定
*2 ~allにすると、サイト以外からこのメアドで送信したメールは「 SoftFail」となる。メアドが、サイトからの送信メールにしか使用しない場合は-allにしておく(-allにすると、「Fail」と判定される)
Time to Live (TTL):そのまま
- 「Add Record」をクリック
これでGmail(受信元メールサーバー)は、メールアドレス(Rackspace)のDNSサーバーにあるSPFレコードからサイトのIPアドレスを参照することができ、実際のメール送信元(サイト)と同じなのでPASSという結果を出す
実際にGmailにメール送信すると、
PASS(IP: ××.×××.××.××)
となった
以上