第一封電子郵件被退回;第二封和隨後的電子郵件通過
550 relay not permitted
這是 Exim4 從我的 Debian 筆記型電腦發送的電子郵件退回時的錯誤消息。
奇怪的是,只有第一封電子郵件被退回。第二封和隨後的電子郵件可以通過中繼到達目的地。但是,如果我重新啟動筆記型電腦,重新啟動後的第一封電子郵件會再次退回。
中繼在埠 587 上經過 STARTTLS 後受到明文密碼保護。X.509 證書是真實的,而不是蛇油。我同時管理中繼伺服器和筆記型電腦。如果重要的話,中繼伺服器也在 Debian 上執行 Exim4。不涉及後綴。
我想可以通過將筆記型電腦配置為在每次啟動時發送一封虛擬電子郵件(或者甚至可能只是一個 SMTP EHLO?)來解決這個問題,但是這種行為似乎很奇怪。我難住了。如果你知道我接下來應該調查什麼來解決這個問題,你會給我建議嗎?
您的電子郵件超時很可能是由於您的守護程序首先嘗試 IPv6。
預設情況下,IPv6 堆棧實現優先於 IPv4 堆棧,因此當程序/守護程序嘗試通信時,當目標同時具有公共 IPv4 和 IPv6 地址時,它們將首先嘗試使用 IPv6 地址。
即使您沒有公共 IPv6,您也有 IPv6 localhost 和連結本地地址。
這不是第一次,也可能不是最後一次,我確實捕捉到 Internet 守護程序首先嘗試將連結本地地址作為源 IP 地址與另一個地址通信,並且只有在超時後,如果他們仍然有時間/嘗試分配,可能會退回到將數據發送到 IPv4 目標。(在過去,我曾經在我曾經執行的 ISP 中遇到過 DNS 和電子郵件問題。)
因此對於 exim,您可以在應用程序/守護程序級別禁用 IPv6,使用指令
disable_ipv6=true
或/etc/exim4/exim4.conf.template
取決於/etc/exim4/update-exim4.conf.conf
您使用的是非拆分還是拆分配置方案。來自Exim Internet Mailer-第 14 章 - 主要配置
disable_ipv6 使用:main 類型:boolean 預設值:false
如果此選項設置為 true,即使 Exim 二進製文件支持 IPv6,也不會發生 IPv6 活動。永遠不會查找 AAAA 記錄,並且會忽略 local_interfaces 中列出的任何 IPv6 地址、手動路由路由器的數據等。如果啟用了 IP 文字,ipliteral 路由器將拒絕處理 IPv6 文字地址。
另一種方法可能也將其僅綁定到 IPv4 地址,但缺點是必須在配置中硬編碼 IPv4 地址:
local_interfaces = <; 127.0.0.1 ; \ 192.168.23.65
至於系統本身,因為您沒有積極使用 IPv6:
添加作為文件的最後一行,預設情況下優先考慮 IPv4
/etc/gai.conf
precedence ::ffff:0:0/96 100
添加到
/etc/sysctl.conf
預設情況下禁用 IPv6 堆棧(從核心 3 開始支持設置):net.ipv6.conf.all.disable_ipv6=1
sysctl 將在啟動時應用。要在啟動前啟動它,請執行以下操作:
sudo sysctl -p
雖然他們稱其為 IPv6 停用,但該模組仍處於載入狀態,雖然介面不再具有 IPv6 地址,但您仍然可以看到應用程序連接到其 IPv6 套接字。您還可以將禁用 IPv6 的選項傳遞給核心,並且不會載入 IPv6 核心模組。編輯
/etc/default/grub
:GRUB_CMDLINE_LINUX="ipv6.disable=1"
然後應用它,如果你有 grub(你的 grub 分區可能會有所不同,或者你可能沒有它;我的 ARM 伺服器中沒有它,並且必須為核心選項編輯其他文件):
sudo update-grub sudo grub-install /dev/sda
您可能必須配置一個或其他守護程序以在應用程序級別禁用 IPv6(從我的腦海中
xinetd
,如果您安裝了它的話)。