メール周りのDNS設定に関する覚書


メールの設定をしたいときにDNSで気にすること

メールの専門家でもないけれど、Route53でガイダンスに沿ってメール送受信の設定をしたり、むかしさくらのVPSの中でpostfix運用しようとして爆死したり、SendGrid使ってメール運用したり、Mailtrap使ってメール系の挙動のテストしたりしたことがあるような人が書く覚え書き。

たまにしか設定しなくてわりとすぐに忘れてしまうので、自分なりに言語化しておく。

メール送信

メール送信は、実はどんなドメインでも送信側で名乗ることができる。FROMのメールアドレスに文字列を入れるだけだからだ。
なので基本的に、メールの送信者がドメインの正当な所有者であることを証明するためにDNS側の設定は行われる。

メール送信時は、以下のことをDNS側に問い合わせたときに確認できればよい(はず(すごい厳密にやる場合は他にいろいろ必要かもしれないけどそれ以上は詳しくないです))。

情報の名前 使うDNS側のレコードタイプ 説明
DKIM CNAME(とか) DomainKeys Identified Mail.
メール送信時に電子署名を追加しておき、DNS側ではこの署名が正しいことを確認するための公開鍵を公開1しておくものとのこと。
CNAMEって書いたけど必ずしもそうじゃない気もする
SPF SPF Sender Policy Framework.
そのドメインを送信元として送ってもいいIPアドレスの一覧みたいなのを埋め込むらしい。
そのまま SPFレコード というのがDNSの設定項目にある
SESではなくても動くけどあったほうがベター

この辺の設定が甘いと何が起きるか

怪しい送信だと疑われてブラックリスト入りすると、メールの受信側で弾かれたりする。
一度こうなってしまうとドメインそのもののメール方面での活用が超めんどくさくなってしまうし、アンコントローラブルな感じになってきてとてもつらいので予め回避しておくのが良いです。

SendGrid御大が記事をまとめてくれているので詳しくはこちらで。
https://sendgrid.kke.co.jp/blog/?p=11357

参考にしたURL

https://www.nic.ad.jp/ja/basics/terms/dkim.html
https://www.nic.ad.jp/ja/basics/terms/spf.html

メール受信

メール受信は、受け取り側が何番かのポートを開放しておくわけだが、基本的に送信されてきたメールはまず当該ドメインを管理するDNSに届くためそこから何処かに転送したりする必要がある。

原則、MXレコードというのを設定してなんとかする。

情報の名前 使うDNS側のレコードタイプ 説明
MXレコード MX Mail Exchange.
送信されてきたメールをどこで処理すればいいかを指定する

蛇足(テーブルに収めるにはちょっと見た目が悪かったので別セクション)

G Suiteとかで扱いたいときにはMXレコードの宛先をG Suite側が用意してる受け口に送ったりする。SESとかで用意している送信用のSMTP情報と組み合わせるとGmailがそのドメインのメールボックスみたいに使えるようになったりしてとても便利。ただし Re: Re: みたいに繋がっていくタイプの処理はまるっとメールサービスに任せたりしないとうまく動かなかったりするので、あまり考えなしにメールの取り扱いを請け負わないように注意。普通にG Suite契約時にドメイン取っちゃったり、合わせて設定しちゃうぐらいの方がかなり楽です。ただ、システムからメール送りたいときとかはSES挟みたいとか出てくるから難しいところだよね、、と思ったりする。

参考にしたURL

以上、大した内容でもないですが、あんまりまとめてる人がいない印象だったので書いてみました。
誰かのお役に立てば幸いです。


  1. 頭痛が痛いみたいな感じする