CakePHP5入門【コラム④】SPFレコードについて

C菜
開発環境のメールサーバである「exim4」の設定として、プロバイダのメールサーバを利用してメール送信するようにしたじゃないですか~
(「mail sent by smarthost」を選択)
そのあと、私の持ってるGmailアカウント(xxxx@gmail.com)宛てにメールを送ってみたんですけど~
(xxxxの箇所は伏字)
(「mail sent by smarthost」を選択)
そのあと、私の持ってるGmailアカウント(xxxx@gmail.com)宛てにメールを送ってみたんですけど~
(xxxxの箇所は伏字)
echo "test" | mail -s "Test" xxxx@gmail.com[Enter] |

A子
ん?
ちゃんと届いたんだよね?
ちゃんと届いたんだよね?

C菜
いえ、それが届かなかったんですよ~
なぜでしょうね~?
なぜでしょうね~?

B美
あー、SPFレコードの仕組みをきちんと説明してなかったね
まず、宛先のメールサーバがSPFレコードを確認せずにメールを受け取ってくれるのなら、何も問題は無いわ
まず、宛先のメールサーバがSPFレコードを確認せずにメールを受け取ってくれるのなら、何も問題は無いわ

A子
それって、送信者の「なりすまし」を防ぐことはできない…ってことだよね?

B美
まぁ、SPF(Sender Policy Framework)以外にも「なりすまし」を防ぐ方法はあるから、一概には言えないけどね
んで、宛先メールサーバがSPFレコードを確認する場合、まずは送信者のメールアドレスを見るの
例えば、C菜が送ったメールの送信者は「root@friction-river.mydns.jp」だったから、DNSサーバで「friction-river.mydns.jp」を名前解決するわけ
んで、宛先メールサーバがSPFレコードを確認する場合、まずは送信者のメールアドレスを見るの
例えば、C菜が送ったメールの送信者は「root@friction-river.mydns.jp」だったから、DNSサーバで「friction-river.mydns.jp」を名前解決するわけ

A子
えーっと、「MyDNS.JP」という「ダイナミックDNSサービス」のDNSサーバがその問い合わせ先ってことかな?

C菜
あれ~?
そのDNSサーバにSPFレコードを設定することは不可能…って言ってませんでした~?
そのDNSサーバにSPFレコードを設定することは不可能…って言ってませんでした~?

A子
いやいや、実際に送信元メールサーバとして利用するのはプロバイダのメールサーバじゃん
そのプロバイダが使っているDNSサーバに問い合わせてくれないの?
そのプロバイダが使っているDNSサーバに問い合わせてくれないの?

B美
そこが勘違いしている点なのよね
宛先のメールサーバって、中継したメールサーバ(と、そのDNSサーバ)を確認せずに、あくまでも送信元メールアドレスのドメイン名だけしか見ないのよ
で、そこにはSPFレコードの設定は無いってわけ
宛先のメールサーバって、中継したメールサーバ(と、そのDNSサーバ)を確認せずに、あくまでも送信元メールアドレスのドメイン名だけしか見ないのよ
で、そこにはSPFレコードの設定は無いってわけ

C菜
だったら「mail sent by smarthost」じゃなくて、「internet site」を選択しても良かったんじゃないですか~?
(プロバイダのメールサーバを使わず、直接宛先メールサーバと接続する方法です~)
(プロバイダのメールサーバを使わず、直接宛先メールサーバと接続する方法です~)

B美
いいえ、全然違うわよ
「mail sent by smarthost」を選んだ場合って、(ある方法を使えば)Gmailアカウント宛てのメールでもちゃんと届けられるからね
「mail sent by smarthost」を選んだ場合って、(ある方法を使えば)Gmailアカウント宛てのメールでもちゃんと届けられるからね

A子
あっ!もしかして…
送信者のメールアドレスのドメイン名を見てるわけだから、それをプロバイダのものに変えれば…
送信者のメールアドレスのドメイン名を見てるわけだから、それをプロバイダのものに変えれば…

B美
大正解!
…ってやれば、送信者のメールアドレスは「xxxx@mx2.xxxx.ne.jp」(これはプロバイダのメールアドレス)になるのよ
(xxxxの箇所は伏字)
echo "test" | mail -s "Test" -r xxxx@mx2.xxxx.ne.jp xxxx@gmail.com[Enter] |
…ってやれば、送信者のメールアドレスは「xxxx@mx2.xxxx.ne.jp」(これはプロバイダのメールアドレス)になるのよ
(xxxxの箇所は伏字)

C菜
やってみるです~
・・・
あっ、メールが届きました~!
・・・
あっ、メールが届きました~!

A子
うーん、なるほど…
分かってみれば簡単だけど、割と引っ掛かる点かもしれないね(苦笑)
分かってみれば簡単だけど、割と引っ掛かる点かもしれないね(苦笑)