メールサーバとDNSサーバの連携

目次
メールサーバとDNSサーバの連携を理解しよう
メールシステムを構築する際、多くの人はSMTPサーバやPOP3サーバ、IMAPサーバの設定に注目します。
しかし実際にはメールサーバ単体ではメールの送受信は成立しません。
メールシステムはDNSサーバと密接に連携して動作しています。
メール配送先の特定、送信元サーバの認証、なりすまし対策など、多くの処理でDNSが利用されています。
本記事ではメールサーバとDNSサーバがどのように連携しているのかを解説します。
メールサーバだけではメールは送れない
例えばPostfixでSMTPサーバを構築したとします。
しかし配送先メールサーバの場所が分からなければメールを送信できません。
そのためDNSサーバへの問い合わせが必要になります。
メールシステムの構成
一般的なメールシステムは次のような構成になります。
メールクライアント
↓
SMTPサーバ
↓
DNSサーバ
↓
配送先SMTPサーバ
DNSサーバが配送先特定を担当しています。
DNSの役割とは
DNSはドメイン名とIPアドレスを管理する仕組みです。
メールシステムでは以下の情報を提供します。
- メール受信サーバ
- メール送信元認証情報
- 逆引き情報
- 公開鍵情報
メール運用に不可欠な存在です。
メール送信時の流れ
例えば以下のメールを送信するとします。
student@example.com ↓ user@gmail.com
送信側SMTPサーバはgmail.comの情報を調べます。
MXレコード取得
最初にMXレコードを問い合わせます。
$ dig MX gmail.com受信メールサーバを特定するためです。
DNSサーバがこの情報を返します。
MXレコード例
gmail.com. IN MX 5 gmail-smtp-in.l.google.com.Gmailのメール受信サーバを示しています。
Aレコード取得
MXレコードにはホスト名しかありません。
そのためさらにAレコードを問い合わせます。
$ dig A gmail-smtp-in.l.google.com接続先IPアドレスを取得します。
Aレコード例
gmail-smtp-in.l.google.com. IN A 74.125.xxx.xxxSMTPサーバはこのIPへ接続します。
SMTP接続開始
取得したIPアドレスへ接続します。
74.125.xxx.xxx:25
ここからSMTP通信が開始されます。
受信側もDNSを利用する
実は受信側メールサーバもDNSを利用しています。
送信元サーバの信頼性確認を行うためです。
PTRレコード確認
送信元IPアドレスを逆引きします。
$ dig -x 203.0.113.10送信元ホスト名を取得します。
スパム対策の一環として利用されます。
FCrDNS確認
逆引きしたホスト名をさらに正引きします。
203.0.113.10
↓
mail.example.com
↓
203.0.113.10
整合性確認に利用されます。
SPF確認
受信側メールサーバはSPFレコードを確認します。
$ dig TXT example.com送信元IPアドレスが許可されているか確認します。
SPFレコード例
v=spf1 ip4:203.0.113.10 -all登録されたSMTPサーバのみ送信を許可します。
DKIM確認
メールヘッダにDKIM署名がある場合です。
DNSから公開鍵を取得します。
mail._domainkey.example.comDNSサーバが公開鍵を提供します。
DKIM公開鍵例
mail._domainkey
IN TXT
"v=DKIM1;
k=rsa;
p=MIGfMA..."署名検証に利用されます。
DMARC確認
DMARCレコードもDNSから取得します。
_dmarc.example.com認証失敗時の処理を確認します。
DMARC設定例
v=DMARC1; p=reject
認証失敗メールを拒否する設定です。
メールサーバが参照するDNSレコード一覧
| レコード | 用途 |
|---|---|
| A | IPアドレス取得 |
| MX | メールサーバ特定 |
| PTR | 逆引き確認 |
| TXT(SPF) | 送信元認証 |
| TXT(DKIM) | 公開鍵取得 |
| TXT(DMARC) | 認証ポリシー |
DNSはメール運用の基盤となっています。
メールサーバ自身もDNSを利用する
PostfixなどのSMTPサーバにはDNS設定が必要です。
例えば以下です。
/etc/resolv.conf
DNSサーバへ問い合わせできなければ配送できません。
DNS障害が起きるとどうなるか
DNSサーバへ問い合わせできない場合です。
DNS障害
↓
MX取得失敗
↓
配送失敗
メール送信が停止する可能性があります。
メールキューへ蓄積される
配送先が分からない場合、メールはキューへ保存されます。
$ mailq
または
$ postqueue -pSMTPサーバは後で再配送を試みます。
ローカルDNSサーバを利用する理由
企業環境ではローカルDNSサーバを利用することがあります。
理由は以下の通りです。
- 高速化
- キャッシュ利用
- 可用性向上
- ログ取得
メール配送性能にも影響します。
メールサーバ構築時の確認項目
- Aレコード
- MXレコード
- PTRレコード
- SPF
- DKIM
- DMARC
- DNS疎通確認
DNS関連の設定確認は必須です。
確認コマンド一覧
MX確認です。
$ dig MX example.com
Aレコード確認です。
$ dig A mail.example.com
逆引き確認です。
$ dig -x 203.0.113.10
SPF確認です。
$ dig TXT example.com
DKIM確認です。
$ dig TXT mail._domainkey.example.com
DMARC確認です。
$ dig TXT _dmarc.example.com実務でよくあるトラブル
メールサーバ設定は正しいのにメールが届かないケースがあります。
原因を調査するとDNS設定ミスだったという事例は非常に多くあります。
メールサーバとDNSサーバは一体で考えることが重要です。
まとめ
メールサーバとDNSサーバは密接に連携して動作しています。
メール配送ではMXレコードやAレコードが利用され、受信時にはPTR、SPF、DKIM、DMARCなどのDNS情報が参照されます。
現在のメールシステムはDNSなしでは成立しないと言っても過言ではありません。
メールサーバ構築や障害対応を行う際は、DNSとの連携を理解しておくことが重要です。





