Friction River Software

  • お問い合わせ

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

C菜

開発環境のメールサーバである「exim4」の設定として、プロバイダのメールサーバを利用してメール送信するようにしたじゃないですか~
(「mail sent by smarthost」を選択)

そのあと、私の持ってるGmailアカウント(xxxx@gmail.com)宛てにメールを送ってみたんですけど~
(xxxxの箇所は伏字)

echo "test" | mail -s "Test" xxxx@gmail.com[Enter]

A子

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

C菜

いえ、それが届かなかったんですよ~

なぜでしょうね~?

B美

あー、SPFレコードの仕組みをきちんと説明してなかったね

まず、宛先のメールサーバがSPFレコードを確認せずにメールを受け取ってくれるのなら、何も問題は無いわ

A子

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

B美

まぁ、SPF(Sender Policy Framework)以外にも「なりすまし」を防ぐ方法はあるから、一概には言えないけどね

んで、宛先メールサーバがSPFレコードを確認する場合、まずは送信者のメールアドレスを見るの
例えば、C菜が送ったメールの送信者は「root@friction-river.mydns.jp」だったから、DNSサーバで「friction-river.mydns.jp」を名前解決するわけ

A子

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

C菜

あれ~?

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

A子

いやいや、実際に送信元メールサーバとして利用するのはプロバイダのメールサーバじゃん

そのプロバイダが使っているDNSサーバに問い合わせてくれないの?

B美

そこが勘違いしている点なのよね

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

C菜

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

B美

いいえ、全然違うわよ

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

A子

あっ!もしかして…

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

B美

大正解!

echo "test" | mail -s "Test" -r xxxx@mx2.xxxx.ne.jp xxxx@gmail.com[Enter]

…ってやれば、送信者のメールアドレスは「xxxx@mx2.xxxx.ne.jp」(これはプロバイダのメールアドレス)になるのよ
(xxxxの箇所は伏字)

C菜

やってみるです~

・・・

あっ、メールが届きました~!

A子

うーん、なるほど…

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