神奈川県公立高校出願システムのメールトラブルの話(digコマンドを使って調べよう)

ニュースで伝えられることだけでは良く分からないですし、最終的に何が原因だったのかという発表を待つのが正解ですが、メールシステムを構築する際にネームシステム(DNS)は避けては通れない話題ですし、失敗例から学ぶことは非常に多いので記録の一端としておきます。

ドメインの調査

まず出願システムのメールの受信については、MXレコードを見れば分かるはずです。

dig shutsugankanagawa.jp mx

<<snip>>
;; QUESTION SECTION:
;shutsugankanagawa.jp.		IN	MX

;; ANSWER SECTION:
shutsugankanagawa.jp.	16	IN	MX	10 mail.shutsugankanagawa.jp.

<<snip>>

mail.shutsugankanagawa.jpというホストが優先度10で設定されてます。見慣れないかもしれませんが。ホスト名の末尾にドットがあるのが「正解」です。

次にこのホストのIPアドレスを調べます。digコマンドで”a”(Aレコード)を省略しても大丈夫です。

dig mail.shutsugankanagawa.jp 

; <<>> DiG 9.10.6 <<>> mail.shutsugankanagawa.jp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4806
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;mail.shutsugankanagawa.jp.	IN	A

;; AUTHORITY SECTION:
shutsugankanagawa.jp.	465	IN	SOA	ns-1900.awsdns-45.co.uk. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400

;; Query time: 0 msec
;; SERVER: 192.168.1.2#53(192.168.1.2)
;; WHEN: Tue Jan 16 16:25:07 JST 2024
;; MSG SIZE  rcvd: 141

!?

mail.shutsugankanagawa.jpというホスト名にはIPアドレスが紐付けされていません。つまり、shutsugankanagawa.jpというドメインにはMXレコードが設定されているもののホストは存在しないので、このドメインにメールを届けることはできません。

ところが、mail.shutsugankanagawa.jpをホスト名ではなく、shutsugankanagawa.jpというドメインに存在するmailというサブドメインとして解釈すると、不思議なことが起こります(普通はこういうドメインシステム設計はしないと思いますが)。このサブドメインのMXレコードが存在してます。

dig mail.shutsugankanagawa.jp mx

<<snip>>
;; QUESTION SECTION:
;mail.shutsugankanagawa.jp.	IN	MX

;; ANSWER SECTION:
mail.shutsugankanagawa.jp. 300	IN	MX	10 52.193.62.66.
mail.shutsugankanagawa.jp. 300	IN	MX	10 13.113.157.93.
mail.shutsugankanagawa.jp. 300	IN	MX	20 feedback-smtp.ap-northeast-1.amazonses.com.
mail.shutsugankanagawa.jp. 300	IN	MX	10 52.194.140.218.

<<snip>>

優先度10にIPアドレスっぽい(「ぽい」については後述)ホスト名が3つ、優先度20(10に送信試行してダメならこちらに試行します)にホスト名が1つ設定されています。

ここで「IPアドレスっぽい」と書いたのは、このMXレコードの結果は通常はホスト名が返ってくるべきで、IPアドレスっぽい文字列の最後にドットが付いていることから、これは「ホスト名」です。つまり「52.193.62.66.」は「66」というドメインに存在する、「52.193.62」というホストです。

しかしながら、当然、Aレコードをクエリーしても返ってきません。

dig 52.193.62.66

; <<>> DiG 9.10.6 <<>> 52.193.62.66
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 9468
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;52.193.62.66.			IN	A

;; AUTHORITY SECTION:
.			10800	IN	SOA	a.root-servers.net. nstld.verisign-grs.com. 2024011600 1800 900 604800 86400

;; Query time: 77 msec
;; SERVER: 192.168.1.2#53(192.168.1.2)
;; WHEN: Tue Jan 16 16:34:31 JST 2024
;; MSG SIZE  rcvd: 116

優先度20のfeedback-smtp.ap-northeast-1.amazonses.comはAレコードが引けるので、外部のメールサーバがmail.shutsugankanagawa.jpというドメインにメールを送信する際には、まず優先度10の3つのホスト名で試行し名前が正引きできないので、優先度20のfeedback-smtp.ap-northeast-1.amazonses.comに送信する、という動作を強いられます。

では、優先度10のホストは何かというと、

dig -x 52.193.62.66

<<snip>>
;; QUESTION SECTION:
;66.62.193.52.in-addr.arpa.	IN	PTR

;; ANSWER SECTION:
66.62.193.52.in-addr.arpa. 300	IN	PTR	ec2-52-193-62-66.ap-northeast-1.compute.amazonaws.com.

<<snip>>

AWSのEC2で立てられたホストのようです。ただ、これら3台のホストはポートをオープンしていないように見受けられるので完全に謎です。

追記: これはこちらの回線の制限でした。切り替えたところ、25/TCPがオープンしてました。

AWS DNSの設定

AWSのDNS設定画面でIPアドレスを入力すると、末尾にドットが付いたAレコードが設定されることをフォロワーさんから教えていただきました。そこは普通はホスト名を入力するところですよ…。

IN MX 10 mail.hoge.com.
IN A 192.168.1.2

のように、MXレコードとAレコード(あるいはCNAMEレコード)の2つで構成されるはずです。

まとめ

メール送信システムがどうなっているかを調べたものではありませんので、出願者にメールが届かないという問題に直接の回答を与えるものでもありません。ただ、技術的にはかなり釈然としない設定が行われており、バウンス(送信エラーなどで戻ってくるメール)がまともに受信出来ないのでは?という疑問があります。