01 / 本文
結論:載せていたのに、受け取れる状態になっていなかった
運営しているサイトの全ページに、問い合わせ先として info@ のアドレスを載せていた。掲載内容の訂正・削除の依頼を受け付ける窓口として書いていた。
ある日、DNSの設定を調べる用事があって MX レコードを確認した。
1本も無かった。
MX が無いドメイン宛にメールを送ると、送信者にエラーが返る。つまり、そのアドレス宛に送られたメールは1通も届いていない。窓口として機能していなかった。
# MXレコードがあるか確認する
dig +short MX example.com
# → 何も出なければ、そのドメインはメールを受け取れない
# nslookup でも同じ
nslookup -type=MX example.com 1.1.1.102 / 本文
なぜ気づかなかったのか
アドレスを書いた時点で、受信できる状態にした気になっていた。ドメインを持っていれば、そのドメインのアドレスは使えると思い込んでいた。
実際には、ドメインの所有とメールの受信は別だ。MX レコードを設定して、受け取るサーバーを指定しないと届かない。
そして、届いていないことはこちらからは分からない。エラーが返るのは送信者側だ。「問い合わせが来ないな」と思っていただけで、実は届いていなかった可能性がある。
3つのサイトすべてが同じ状態だった。
03 / 本文
受信専用でよかったので、転送を選んだ
必要なのは受信だけだった。返信は普段使っている Gmail からすればいい。
メールサーバーを借りると費用も管理も増える。Cloudflare Email Routing なら無料で、受信したメールを指定のアドレスへ転送できる。
契約しているサーバーのメール機能を使う選択肢もあったが、そちらは利用規約でサイトの内容に制限があり、使えなかった。ホスティングの規約とサイトの内容が合っているかは、事前に確認したほうがいい。
04 / 本文
設定の手順
Cloudflare にドメインを追加してある前提で、次の順に進める。
1. 転送先アドレスを登録する。 アカウント階層に登録し、確認メールのリンクを踏む。
2. 転送ルールを作る。 info@example.com を、登録した転送先へ送る。
3. Email Routing を有効化する。 ここで MX と SPF が自動で追加される。
1と2は API でできる。3の有効化だけは管理画面のボタンが必要だった(APIは権限不足で403になる)。
ただし、MX と SPF を先に API で入れておけば、押すだけで済む。 他のドメインで使われている値をそのまま流用できる。
# 転送先アドレスを登録(確認メールが飛ぶ)
curl -s -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/email/routing/addresses" \
-H "Authorization: Bearer $CF_TOKEN" -H 'Content-Type: application/json' \
-d '{"email":"you@gmail.com"}'
# 転送ルールを作る
curl -s -X POST "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/email/routing/rules" \
-H "Authorization: Bearer $CF_TOKEN" -H 'Content-Type: application/json' \
-d '{
"name": "info を転送",
"enabled": true,
"matchers": [{"type":"literal","field":"to","value":"info@example.com"}],
"actions": [{"type":"forward","value":["you@gmail.com"]}]
}'05 / 本文
キャッチオールは破棄にする
Email Routing には、指定したアドレス以外の宛先をどう扱うかの設定がある。
「破棄(drop)」にしておく。 すべて転送する設定にすると、存在しないアドレス宛の迷惑メールまで全部届く。
また、メールを受け取らないドメイン(転送専用にしているものなど)には、Null MX を設定しておくとよい。「このドメインはメールを扱わない」と明示することになり、なりすましの踏み台にされにくくなる。
; メールを受け取らないドメインには Null MX を置く
example.com. IN MX 0 .06 / 本文
確認は、実際に送ってみるしかない
設定が終わったら、実際にメールを送って確かめる。スマートフォンなど、普段と違う環境から1通ずつ送るのが確実だ。
私の回線ではポート25が塞がれていて(OP25B)、コマンドからSMTPで確認できなかった。設定が正しいことは API で確認できるが、届くかどうかは送ってみないと分からない。
迷惑メールフォルダも見る。 転送されたメールは、初回は迷惑メール判定されることがある。届いていたら「迷惑メールではない」と設定しておく。
3つのアドレスに1通ずつ送って、3通とも届くことを確認して完了とした。
07 / 本文
サブドメインのNSレコードに注意
設定したのに www 宛だけ届かない、という状態になったドメインがあった。
原因は、www に NS レコードが残っていたことだった。これは「このサブドメインの管理は別のサーバーに任せる」という委任の指定で、A や MX より優先される。
他社のDNSから移してきたときのスキャンで、そのまま持ち込まれていた。移行したら、不要な NS レコードは消す。
08 / 本文
まとめ
サイトに載せたアドレスが、受信できる状態とは限らない。 ドメインの所有と、メールの受信は別だ。
MX が無ければ、送られたメールは届かない。 しかもエラーは送信者に返るので、こちらからは気づけない。
受信だけなら Cloudflare Email Routing で無料でできる。キャッチオールは破棄にし、メールを使わないドメインには Null MX を置く。
そして、実際に送って確かめる。 設定が正しいことと、届くことは別の話だ。
問い合わせ先や削除依頼の窓口を載せているなら、一度 dig MX を打ってみることをおすすめする。
コメント
この記事へのコメント
お名前だけで投稿できます。アカウント登録やログインは不要です。 いただいたコメントは確認のうえ公開します。