メールサーバが1台だけというシンプル環境での、送信側で行うSPFの設定方法をざっくりと説明します。
メールサーバ構築手順
- 【Ubuntu Server 22.04】Postfix + SMTP-AUTH + Dovecotでメールサーバを構築
- 【Ubuntu Server 22.04】DovecotをSSL通信で暗号化
- 【Ubuntu Server 22.04】PostfixでTLSを有効化して通信を暗号化
- 【Ubuntu Server 22.04】PostfixにDKIMの設定を追加
- 【迷惑メール対策】ざっくり説明SPFの設定方法(送信側)
- 【迷惑メール対策】ざっくり説明DMARCの設定方法(送信側)
- 【Ubuntu Server 22.04】PostfixにSPFチェック機能を追加(policyd-spf)
- 【Ubuntu Server 22.04】PostfixとOpenDMARCでDMARC認証を行う方法
【ざっくり説明】SPF(Sender Policy Framework)について
SPFとは、電子メールの送信元の偽装(なりすまし)を防ぐために、送信元のサーバが正しいかどうかを確認するための仕組みです。
設定していない場合、受信側の設定によっては迷惑メールと判定されてメールを送信することができなくなる場合も有ります。(Gmailとか)
設定自体はDNSにレコードを一行設定を追加するだけなので、もし設定をしていない場合は設定しておいたほうが良いでしょう。
SPFについてもっと詳しい説明は、下記のサイトなどを参照してみてください。
https://salt.iajapan.org/wpmu/anti_spam/admin/tech/explanation/spf/#10
SPFを使用した確認の流れ
SPFで送信元が偽装(なりすまし)されていないかの確認は、下記のような流れで行われます。
- メール送信側からメールが送信される
- 受信側でメールのFrom部分に設定されているドメインのSPFレコードをDNSに問い合せを行う
- 送信元のメールサーバがSPFレコードに登録されているものと一致していれば正当なメールであると判定、違っている場合は送信元が偽装(なりすまし)されていると判定
送信側のSPF設定方法
メール送信側はDNSにSPFレコードを登録することで、メール受信者側からの問い合わせに答えることができるようになります。
SPFレコードとは
簡単に説明すると、メールが送信されるサーバのIPアドレスやホスト名などの情報のことです。
この情報をDNSのSPFまたはTXTレコードに設定することで、メール受信側からのSPFレコードの問い合わせに答えることができるようになります。
SPFレコードの記述例
今回は下記環境での記述例を説明していきます。
- ユーザ名@vpslife.server-memo.netといったメールアドレスを使用
- メールを送信するサーバは1台だけでそれ以外からはメールを送信しない
DNSのサービスを提供している業者の多くが対応している、DNSのTXTレコードを使用した方法で説明をしていきます。
IPアドレスを使用する場合
メールを送信するサーバのIPアドレスを使って設定を行う場合は、下記のように設定を行います。
IN TXT "v=spf1 +ip4:メールサーバのIPアドレス -all"
設定内容的には、「+ip4の部分で設定されているIPアドレスのメールサーバからのみメールを送信し、その他からはメールを送信しません。」といった内容になります。
ですので、ip4で設定されているIPアドレス以外のサーバからメールが送信された場合は、そのメールは送信元の偽装(なりすまし)が行われているという判定になります。
+は省略可能
インターネットでSPFの設定例を調べてみると、+ip4部分の記述で「+ip4:IPアドレス」や「ip4:IPアドレス」と「+」が有ったり無かったりする場合が有りますが、「+」は省略することができるためどちらも同じ設定となります。
実際の設定例
ユーザ名@vpslife.server-memo.netといったメールを送信するメールサーバのSPFレコードの登録例です。
今回はサブドメインを使用したメールアドレスなので、ホスト名であるvpslifeを追加しています
vpslife IN TXT "v=spf1 +ip4:133.130.96.87 -all"
サブドメインを使用していない場合の設定方法
サブドメインを使用していないメールアドレス(ユーザ名@server-memo.net)の場合は、ホスト名を記述する必要がないので下記のように登録します。
IN TXT "v=spf1 +ip4:133.130.96.87 -all"
ムームーDNSの設定例
ムームードメインが提供しているDNSの場合は、こんな感じで設定します。
ホスト名(Aレコード)を使用する場合
サーバのホスト名を使用してSPFレコードを登録する場合は、下記のように「+a:メールサーバのホスト名」で設定を行います。
IN TXT "v=spf1 +a:メールサーバのホスト名(FQDN形式)-all"
実際の設定例
サブドメインを使用したメールアドレスなので、ホスト名であるvpslifeを追加しています
vpslife IN TXT "v=spf1 +a:vpslife.server-memo.net -all"
サブドメインを使用していない場合の設定方法
サブドメインを使用していないメールアドレス(ユーザ名@server-memo.net)の場合は、ホスト名を記述する必要がないので、下記のように登録します。
IN TXT "v=spf1 +a:vpslife.server-memo.net -all"
その他の設定方法や注意点について
今回はメールサーバが1台だけのシンプル構成での設定方法を説明しましたが、その他の条件でのSPFレコードの設定方法については、下記のサイト参考にしてみてください。
https://salt.iajapan.org/wpmu/anti_spam/admin/tech/explanation/spf
設定時の注意点についても解説があるので、こちらも確認しておくと良いでしょう。
https://salt.iajapan.org/wpmu/anti_spam/admin/operation/information/spf_i01/
設定の確認方法
SPFの設定が正しく行われているかの確認する方法として、下記の2通りの方法を紹介します。
- Webサイトで確認
- digコマンドで確認
Webサイトで確認
下記のサイトで簡単にSPFの設定を確認することができます。
https://mxtoolbox.com/spf.aspx
Domain Nameの部分に確認したいドメイン名を入力し、SPF Record Lookupボタンを押下します。
SPFレコードの確認結果が表示されるので、設定内容に間違いがないかの確認をしてください。
設定方法に問題が有る場合は、Testの右側にバツが表示されます。
digコマンドで確認
digコマンドでTXTレコードを指定しDNSに問い合わせを行うことで、TXTレコードに設定されている内容を確認することができます。
dig -t TXT ドメイン名
実際にvpslife.server-memo.netについて問い合わせを行った結果が下記になります。
ANSWER SECTIONに問い合わせたTXTレコードの結果が表示されていますので、設定に間違いがないかを確認することができます。
$ dig -t txt vpslife.server-memo.net
; <<>> DiG 9.18.1-1ubuntu1.2-Ubuntu <<>> -t txt vpslife.server-memo.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53080
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;vpslife.server-memo.net. IN TXT
;; ANSWER SECTION:
vpslife.server-memo.net. 3600 IN TXT "v=spf1 +ip4:133.130.96.87 -all"
;; Query time: 51 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Sun Jan 15 15:03:56 JST 2023
;; MSG SIZE rcvd: 95
コメント