
我正在嘗試為共享網域設定郵件伺服器:一半郵箱託管在 Gmail 上,另一半託管在本機伺服器上。
我安裝了 iRedMail 1.6.0 並配置 Gmail 將所有未解析的 @example.com 使用者傳送到本機伺服器。當寄件者不是 @example.com 時,它會起作用...如果是,郵件會因未經身份驗證的連接而被拒絕。將所有 gmail 子網路新增至 mynetworks(在 main.cf 和 settings.py 中)解決了這個問題(有更好的解決方案嗎?)。
真正的問題是當郵箱被遠端託管時,郵件會從本地後綴退出。
我必須使用遠端郵箱清單建立虛擬郵箱映射(糟糕的解決方案)才能通過「rcpt to:」命令。過了一會兒,我收到了一份無法送達的報告:
操作:失敗狀態:5.1.1 診斷代碼:x-unix;使用者未知
經過一番努力,我發現添加一個具有與虛擬郵箱映射大約相同數據的傳輸映射(在傳輸映射中我也有本地傳輸規則)可以使問題消失並且郵件正常流動。
現在,使用兩個不同的地址清單來完成同一個工作就更糟了。我正在尋找一種更優雅的解決方案,例如“將任何未解析的@example.com電子郵件轉發至...”,就像我在Gmail上所做的那樣。有什麼建議嗎?
謝謝達裡奧
答案1
如果您將網域配置為當地的本地域(不是虛擬的),你可以嘗試使用fallback_transport
或者fallback_transport_maps
。像這樣設定(在main.cf
):
fallback_transport = smtp:gmail.com
(它將對 gmail.com 進行 MX 查找並使用該查找的結果;我假設 Gmail 上託管的網域的 MX 伺服器清單與 gmail.com 位址的 MX 伺服器清單相同)。考慮閱讀人5運輸如果您想更多地探索右側部分的格式。
您在本地端「將所有未解決的內容傳送到 Gmail」以及在 Gmail 端「將所有未解決的內容傳送到本機」的想法非常糟糕。如果某些郵件雙方都沒有解決,它將無限期地反复,最終您的伺服器將被 Gmail 禁止。為了避免這種情況,您必須維護兩個列表:在 Gmail 上,您需要知道本地郵件地址的確切列表,在本地,您需要知道 Gmail 上郵件地址的確切列表。使用fallback_transport_maps
這種方式,對於已知的遠端郵箱,它將返回與我之前建議的相同的內容,而未知的則不會返回任何內容,從而使 Postfix 提前拒絕郵件。您應該儘早拒絕,這是電子郵件的好處。出於類似的原因,最好讓 Gmail 也只轉發您實際擁有的郵件。別抱怨,這就是這樣設定的代價。
如果你有一個虛擬的設定後,您可以嘗試用於transport_maps
此目的,但應非常謹慎地進行。不要創建開放中繼。
此解決方案的另一個問題是您的某些寄件者可能具有限制性 DMARC 策略(即好的,我希望有更多的寄件者這樣做——網路上的垃圾郵件將會少得多)。他們不太可能將您的伺服器列為允許在 SPF 記錄中代表他們發送郵件的伺服器,因此,如果此類郵件進入您的伺服器並決定將其重定向到 Gmail,Gmail將要拒絕它,你就無法對此做任何事情,句點。據我所知,這是無法解決的。