Networking
發送電子郵件時 ICMP“埠不可達”
幾個月以來,我在發送電子郵件時遇到了零星的問題。
根據源 IP,使用 tcpdump 我終於發現我從似乎是我的電子郵件提供商那裡收到了“埠無法訪問”的消息。但是我的電子郵件提供商說他們在他們的網路中找不到問題,並說它一定在我的網路中。為了排除防火牆的問題,我設置了埠鏡像,並在連接到作為網橋執行的電纜調製解調器的埠上擷取了數據包。
我已經做了很多故障排除。我懂了:
- 當我通過 Wi-Fi 從 Android 手機或有線 PC 上的 Thunderbird 發送時,都會發生錯誤。
- 當我向電子郵件提供商發送到 SMTP 埠 465 或 587 時發生錯誤
- 它並不總是發生;經過一番嘗試,郵件終於被發送了;或者在第一次嘗試時發送
- 我剛剛看到,在接收 DNS 響應時,我的 DNS 解析器也將“埠不可達”發送到轉發 DNS 伺服器(1.1.1.1、1.0.0.1)。我想這與電子郵件問題無關,但誰知道呢?
這是我遇到的 ICMP 錯誤的一個範例。
Internet Control Message Protocol Type: 3 (Destination unreachable) Code: 3 (Port unreachable) Checksum: 0x8c59 [correct] [Checksum Status: Good] Unused: 00000000 Internet Protocol Version 4, Src: <my-ip>, Dst: <smtp-server-ip> Transmission Control Protocol, Src Port: 48624, Dst Port: 587, Seq: 3998125229 Source Port: 48624 Destination Port: 587 Sequence number: 3998125229 [Stream index: 0] Acknowledgment number: 0 Acknowledgment number (raw): 0 1010 .... = Header Length: 40 bytes (10) Flags: 0x002 (SYN) Window size value: 29200 [Calculated window size: 29200] Checksum: 0x3680 [unverified] [Checksum Status: Unverified] Urgent pointer: 0 Options: (20 bytes), Maximum segment size, SACK permitted, Timestamps, No-Operation (NOP), Window scale [Timestamps]
這裡會出現什麼問題,以及網路的哪個部分?問題既不在我的網路也不在電子郵件提供商的網路中是否合理?
如果在特定時間範圍內從該地址多次嘗試登錄失敗,我的電子郵件提供商將阻止來自特定 IP 的訪問,以避免濫用。
原來我的一台機器由於 TLS 錯誤導致登錄失敗,所以我的 IP 地址被暫時阻止。關閉這些登錄解決了這些問題。
解決那個問題真的很困難。提供商沒有詳細說明 SMTP 對我來說失敗的原因。最終幫助解決它的是嗅探/分析從我的整個網路到提供商主機的流量。