為什麼我在 Route 53 中為 SMTP 伺服器建立 MX 記錄後,伺服器無法接收電子郵件?
我在 Amazon Route 53 中為我的簡易郵件傳輸通訊協定 (SMTP) 伺服器建立了郵件交換程式 (MX) 記錄。現在我的伺服器無法接收電子郵件。
簡短說明
如果您未正確設定 Route 53 DNS 服務的公有託管區域,則用戶端將無法連接至您的 SMTP 伺服器。若要正確設定您的公有託管區域,請驗證以下設定:
- 在公有託管區域中已填入適當的資源記錄集。
- 您的非 AWS 網域名稱註冊商指向 Route 53 公有託管區域中的名稱伺服器。
解決方案
**注意事項:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請確認您使用的是最新版本的 AWS CLI。
確認您使用的是適當的資源記錄集
確認您已為 SMTP 伺服器建立適當的資源記錄集。如需詳細資訊,請參閱在建立或編輯 Amazon Route 53 資源記錄時指定的值。公有託管區域至少必須包含 SMTP 伺服器的 MX 記錄。如需詳細資訊,請參閱適用於簡單記錄的特定值。
確認您的非 AWS 網域名稱註冊商指向 Route 53 公有託管區域中的名稱伺服器
您可以將 Route 53 用於 DNS 服務,並使用其他網域名稱註冊商進行網域註冊。在這種情況下,您的網域名稱註冊商必須參照 Route 53 公有託管區域中的名稱伺服器。若要這麼做,請查詢網際網路的 whois 公用程式來採取以下步驟:
- **尋找網域名稱的註冊商。**在查詢欄位中輸入您的網域名稱,選取「網域」選項,然後選擇「提交」。查詢結果包括網域名稱註冊商和網域名稱的授權名稱伺服器。
**注意事項:**查詢結果可能會傳回與 Route 53 公有託管區域相關聯的名稱伺服器以外的名稱伺服器清單。在此情況下,SMTP 伺服器的 DNS 查詢不會傳送至 Route 53。若要更新與您的網域名稱相關聯的名稱伺服器清單,請聯絡您的網域名稱註冊商。 - **尋找網域註冊商的聯絡資訊。**在查詢欄位中輸入註冊商的名稱,選取「註冊商」選項,然後選擇「提交」。使用此資訊聯絡您的網域註冊商。要求您的網域註冊商更新名稱伺服器清單,讓您的網域名稱可以在其公有託管區域中參照這些伺服器。
- **確認您要轉移的 DNS 服務不會在註冊商名稱伺服器上的存留時間 (TTL) 到期之前刪除資源記錄集。**在網域名稱伺服器記錄的 TTL 期限過去之前,Route 53 DNS 服務不會回應網域名稱的 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 記錄集名稱前面加上 at 符號 (@)。或者,在為根網域建立 MX 記錄集時,供應商可能會要求您建立名稱為 "@" 的 MX 記錄集。但是,請勿在 Route 53 MX 記錄集名稱前面加上 "@" 或任何其他符號。若要在 Route 53 中為根網域建立 MX 記錄集,請將記錄集名稱保留為空白。然後,為 Route 53 MX 記錄集的其餘欄位提供適當的值。
測試傳送和接收電子郵件
連接至郵件伺服器,並測試您使用 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 Accepted。
**重要事項:**如果伺服器可以驗證寄件者和收件者等資訊,則會將訊息確認為已接受。
5. 輸入以下命令,然後按 Enter 鍵:
data
6. 輸入以下命令,然後按 Enter 鍵:
Subject: SPECIFY_SUBJECT_HERE
7. 輸入以下命令,然後按 Enter 鍵:
SPECIFY_MESSAGE_HERE
8. 輸入以下命令,然後按 Enter 鍵:
.
伺服器接受要傳遞的訊息,並回應 250 OK,表示已傳送電子郵件。
9. 如果您確認 MX 記錄設定正確,但 SMTP 伺服器仍無法接收電子郵件,請聯絡您的電子郵件服務供應商。
相關內容
- 已提問 20 天前lg...
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前