Route 53 で SMTP サーバーの MX レコードを作成したのに、サーバーがメールを受信できないのはなぜですか?

所要時間3分
0

Amazon Route 53 の簡易メール転送プロトコル (SMTP) サーバーのメールエクスチェンジャー (MX) レコードを作成しました。今、私のサーバーはメールを受信できません。

簡単な説明

Route 53 DNS サービスのパブリックホストゾーンを適切に設定しないと、クライアントは SMTP サーバーに接続できません。パブリックホストゾーンを適切に設定するには、次の設定を確認してください。

  • パブリックホストゾーンには、適切なリソースレコードセットが格納されます。
  • AWS 以外のドメイン名レジストラは、Route 53 パブリックホストゾーンのネームサーバーを指しています。

解決策

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、最新の AWS CLI バージョンを使用しているかどうかを確認してください

適切なリソースレコードセットを使用していることを確認する

SMTP サーバー用の適切なリソースレコードセットが作成されていることを確認します。詳細については、「Amazon Route 53 リソースレコードを作成または編集するときに指定する値」を参照してください。少なくとも、パブリックホストゾーンには SMTP サーバーの MX レコードが含まれている必要があります。詳細については、「シンプルなレコードに固有の値」を参照してください。

AWS 以外のドメイン名レジストラが Route 53 パブリックホストゾーンのネームサーバーを指していることを確認する

DNS サービスには Route 53 を、ドメイン登録には別のドメイン名レジストラを使用できます。この場合、ドメイン名レジストラは Route 53 パブリックホストゾーンのネームサーバーを参照する必要があります。そのためには、インターネットベースの whois ユーティリティに問い合わせて、次の手順を実行してください。

  • ドメイン名のレジストラを検索します。 クエリフィールドにドメイン名を入力し、[ドメイン] オプションを選択して [送信] を選択します。クエリ結果には、ドメイン名レジストラとドメイン名の権限のあるネームサーバーが含まれます。
    注: クエリ結果から、Route 53 パブリックホストゾーンに関連付けられているネームサーバー以外のネームサーバーのリストが返されることがあります。この場合、SMTP サーバーの DNS クエリは Route 53 に送信されません。ドメイン名に関連付けられているネームサーバーのリストを更新するには、ドメイン名登録事業者に問い合わせてください。
  • ドメイン登録事業者の連絡先情報を検索してください。 クエリフィールドにレジストラの名前を入力し、[レジストラ] オプションを選択して [送信] を選択します。この情報を使用して、ドメインレジストラにお問い合わせください。ドメイン名がそのパブリックホストゾーンでネームサーバーを参照できるように、ドメイン登録事業者にネームサーバーのリストを更新するよう依頼してください。
  • **移管元の DNS サービスが、レジストラのネームサーバー上の有効期間 (TTL) の期限が切れる前にリソースレコードセットを削除しないことを確認します。**Route 53 の DNS サービスは、ドメインネームサーバーレコードの TTL 期間が経過するまで、ドメイン名の DNS クエリに応答しません。詳細については、「DNS 設定を変更したが、有効になっていない」を参照してください。

DNS MX レコードセットの問題を確認する

1.    ドメインの MX レコードが存在することを確認するには、以下のコマンドを実行します。

Linux または macOS

dig DOMAIN_NAME MX

これにより、次の dig の例のような出力が返されます。

$ dig amazon.com MX

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.2 <<>> amazon.com MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61726
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;amazon.com.                    IN      MX

;; ANSWER SECTION:
amazon.com.             300     IN      MX      5 amazon-smtp.amazon.com.
;; Query time: 1 msec
;; SERVER: 10.10.0.2#53(10.10.0.2)
;; WHEN: Wed Apr 14 06:21:43 UTC 2021
;; MSG SIZE  rcvd: 67

Windows

nslookup -type=MX DOMAIN_NAME

これにより、次の nslookup の例のような出力が返されます。

$ nslookup -type=MX amazon.com
Server:         10.10.0.2
Address:        10.10.0.2#53

Non-authoritative answer:
amazon.com      mail exchanger = 5 amazon-smtp.amazon.com.

2.    MX レコードのホスト名を解決できることを確認するには、以下のコマンドを実行します。

Linux または macOS

dig MX_RECORD

これにより、次の dig の例のような出力が返されます。

$ dig amazon-smtp.amazon.com

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.2 <<>> amazon-smtp.amazon.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64180
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;amazon-smtp.amazon.com.                IN      A

;; ANSWER SECTION:
amazon-smtp.amazon.com. 27      IN      A       52.94.124.7

;; Query time: 1 msec
;; SERVER: 10.10.0.2#53(10.10.0.2)
;; WHEN: Wed Apr 14 06:41:18 UTC 2021
;; MSG SIZE  rcvd: 67

Windows

nslookup MX_RECORD

これにより、次の nslookup の例のような出力が返されます。

$ nslookup amazon-smtp.amazon.com
Server:         10.10.0.2
Address:        10.10.0.2#53

Non-authoritative answer:
Name:   amazon-smtp.amazon.com
Address: 52.119.213.154

注: DNS プロバイダーによっては、MX レコードセット名の前にアットマーク (@) を付ける必要があります。また、プロバイダーによっては、ルートドメインの MX レコードセットを作成するときに、「@」という名前の MX レコードセットを作成する必要がある場合があります。ただし、Route 53 MX レコードセット名の先頭に「@」やその他の記号を付けないでください。Route 53 のルートドメインの MX レコードセットを作成するには、レコードセット名を空白のままにします。次に、Route 53 MX レコードセットの残りのフィールドに適切な値を指定します。

E メールの送受信のテスト

メールサーバーに接続し、SMTP コマンドを使用してメールを送受信する機能をテストします。

1.    次のコマンドを入力して、Enter キーを押します。プレースホルダーの値は、必ずメールサーバー名または IP アドレスとポート番号に置き換えてください。

telnet MAIL_SERVER_NAME_OR_IP MAIL_SERVER_PORT_NUMBER

注: このコマンドで入力ミスをした場合は、Enter キーを押します。この場合、Backspace キーまたは Delete キーを押しても機能しません。Enter キーを押した後、コマンドを再試行してください。場合によっては、Telnet セッションを閉じて再接続する必要があります。

2.    次のコマンドを入力して、Enter キーを押します。プレースホルダーの値は必ずメールサーバーのドメイン名に置き換えてください。

EHLO YOUR_MAIL_SERVER_FULLY_QUALIFIED_DOMAIN_NAME

3.    次のコマンドを入力して、Enter キーを押します。プレースホルダーの値は必ずメールアドレスに置き換えてください。

mail from: your_name@yourdomainname

サーバーは 250 OK と応答します。

4.    次のコマンドを入力して、Enter キーを押します。プレースホルダーの値は、必ず受信者のメールアドレスに置き換えてください。

rcpt to: recipient@yourdomainname

注: 送信者と受信者は同じ電子メールアドレスを持つことができます。

サーバーは 250 承認済みと応答します。

重要: サーバーが送信者や受信者などの情報を検証できる場合、メッセージは受理されたことが確認されます。

5.    次のコマンドを入力して、Enterキーを押します。

data

6.    次のコマンドを入力して、Enterキーを押します。

Subject: SPECIFY_SUBJECT_HERE

7.    次のコマンドを入力して、Enterキーを押します。

SPECIFY_MESSAGE_HERE

8.    次のコマンドを入力して、Enterキーを押します。

.

サーバーはメッセージの配信を受け入れ、メールを送信したことを示す 250 OK と応答します。

9.    MX レコードが正しく設定されていることを確認しても SMTP サーバーがメールを受信できない場合は、メールサービスプロバイダーに連絡してください。