先保留完整 NDR/DSN,尤其是三位數回覆、enhanced status code、對方 hostname、時間與 Message-ID。4xx 通常可重試,5xx 通常要先修原因;不能只憑 550 三個數字下結論。
DNS 與寄件身分
查 MX 與排序PowerShell
Resolve-DnsName example.com -Type MX | Sort-Object Preference若 MX 指到不存在或錯誤區域,收信會失敗。
查 SPFPowerShell
Resolve-DnsName example.com -Type TXT | Where-Object Strings -Match 'v=spf1'同一網域不應有多筆 SPF record。
查 DMARCPowerShell
Resolve-DnsName _dmarc.example.com -Type TXT確認 policy、rua、alignment 與語法。
查 DKIM selectorPowerShell
Resolve-DnsName selector1._domainkey.example.com -Type CNAME有些系統使用 TXT;selector 要從實際 header 或平台設定取得。
查寄件 IP PTRLinux/macOS
dig +short -x 203.0.113.25PTR 由 IP 擁有者設定,不是在一般 forward zone 隨便加一筆。
確認 PTR 的正向 ALinux/macOS
dig +short A mail.example.com常見做法是 forward-confirmed reverse DNS,但收件規則仍依各家。
查 DMARC 原始 TXTLinux/macOS
dig +short TXT _dmarc.example.com引號分段要合併閱讀。
Queue 與伺服器 log
查看 Postfix queueLinux/Postfix
postqueue -p先看 Queue ID、狀態、延遲與最後回覆,不要立刻 flush。
查看傳統 mail queueLinux
mailq多數 Postfix 系統等同 postqueue -p。
查看近期 Postfix logsystemd Linux
journalctl -u postfix --since '2 hours ago' --no-pager不同 distro 也可能寫 /var/log/mail.log 或 maillog。
依 Queue ID 找紀錄Linux
grep 'ABC123DEF' /var/log/mail.log把 Queue ID 換成實際值;log 路徑依 distro。
篩選 deferred/bouncedLinux/Postfix
grep -Ei 'status=(deferred|bounced)' /var/log/mail.log | tail -n 100先統計共同 destination 與回覆,不要盲目重寄。
檢查 Postfix 設定語法Linux/Postfix
postfix check沒有輸出通常表示基本語法通過,仍要測 mail flow。
列出非預設 Postfix 參數Linux/Postfix
postconf -n便於稽核 relay、TLS、mynetworks 與 transport maps。
TLS 與回覆判讀
讀取 SMTP banner 與 STARTTLSOpenSSL
openssl s_client -connect mail.example.com:25 -starttls smtp -servername mail.example.com -briefTLS 失敗時記錄 verification 與協定版本。
查 SMTP enhanced status code 規格瀏覽器/文件
https://www.rfc-editor.org/rfc/rfc3463例如 5.1.1、5.7.1 比單看 550 更能定位原因。
查 Microsoft 365 24 小時 traceExchange Online PowerShell
Get-MessageTraceV2 -StartDate (Get-Date).AddHours(-24) -EndDate (Get-Date) -SenderAddress [email protected]需要 Exchange Online 權限與當版模組。
查看 Exchange Server queueExchange Management Shell
Get-Queue | Sort-Object MessageCount -Descending | Format-Table Identity,Status,MessageCount,NextHopDomain,LastErrorLastError 是關鍵,不要只看 queue 數量。
怎麼確認有做對
- 完整 NDR 的 SMTP code、enhanced code、remote host 與 Message-ID 都已保存。
- SPF、DKIM、DMARC 與 PTR 從公網 resolver 查得到且符合實際寄送來源。
- 修正後用一封測試信確認 queue、trace、header 與對方接收結果。
常見錯誤
- 看到 550 就一直重寄。
- SPF 一口氣加入過多 include,沒看 DNS lookup 上限。
- 只修 SPF,忽略 DKIM alignment、DMARC 或寄件 IP 信譽。
- 把暫時性 4xx 當成永久拒收,或把所有 5xx 都當垃圾信。
常見問題
421、450、451 要立刻人工重寄嗎?
通常是暫時性錯誤,MTA 會依 queue policy 重試。先看 retry schedule、queue 成長、對方 rate limit 與 DNS/網路,避免手動重送造成更嚴重限速。
550 5.7.1 一定是 SPF 嗎?
不一定。可能是 relay denied、政策、反垃圾信、DMARC、權限或 connector;要讀完整 enhanced status 與對方附帶文字。
延伸閱讀
版本與官方文件
參數會隨工具版本與作業系統實作改變。正式環境先用 --help、-h 或系統內建說明確認,再以當版官方文件為準。
常見問題
421、450、451 要立刻人工重寄嗎?
通常是暫時性錯誤,MTA 會依 queue policy 重試。先看 retry schedule、queue 成長、對方 rate limit 與 DNS/網路,避免手動重送造成更嚴重限速。
550 5.7.1 一定是 SPF 嗎?
不一定。可能是 relay denied、政策、反垃圾信、DMARC、權限或 connector;要讀完整 enhanced status 與對方附帶文字。