
我正在嘗試將 exim4 設定為 ISP 郵件伺服器前面的智慧主機。一切正常,除了一些來自無效寄件者的電子郵件(很可能是垃圾郵件)。 ISP 拒絕它們
450 4.1.8 <[email protected]>: Sender address rejected: Domain not found
這會導致 exim smarthost 重試,從而不必要地增加佇列大小。
我最接近的配置是使用/etc/exim4/local_sender_callout
file.但隨後標註會發送至 ISP,然後 ISP 會拒絕它:
554 5.7.1 <[email protected]>: Relay access denied
(對於任何地址,甚至是有效的地址)。在這種情況下設置/etc/exim4/passwd.client
似乎不起作用...
如何使用 exim smarthost 設定寄件者驗證(有或最好不附標註)?
澄清:我的 exim 不是開放中繼,它已經指定了僅接受電子郵件的受限網域清單。然後,這些電子郵件被發送到智慧主機,以遞送到實際郵箱。設定圖可能看起來像這樣。
Internet -> my exim(mx) -> ISP(smarthost) <- users accessing email via POP/IMAP
我的網域的 mx 記錄指向我的 exim 伺服器。然而,ISP 接受我的網域的電子郵件並將其儲存在郵箱中。
答案1
實際上,您正在設定一個前端 MX,其中包含一組更嚴格的過濾器,更深入地到達最終目的地。解決這個問題的最佳方法是至少在前端進行同樣的限制。
因為您有一個智慧型主機,所以您可以將「任何網域」的電子郵件傳送到智慧型主機。這與網域有效性檢查結合得很糟糕:在為 RCPT 命令定義的 ACL 中的某個位置,應該有一個require verify = sender
確保 Exim 在接受訊息之前有一種將電子郵件發送到寄件人域的方法。
由於您始終在線,我建議您在智慧型主機路由器之前直接放置一個額外的路由器。假設 smarthost 有domains = ! +local_domains
和no_more
,然後加入no_verify
smarthost Router 並在其前面插入此 Router:
remote_dns_verify:
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
# ignore_target_hosts = +some_hostlist_matching_rfc1918_and_so_on
same_domain_copy_routing
verify_only
no_more
至此,確認path 不會使用 smarthost,所以你將不再擁有「一切的路由」。驗證將只能路由具有 DNS 的遠端網域,因此您將不再接受 ISP 因無法路由而拒絕的電子郵件。
之後,我會考慮設定一些與特定遠端錯誤相符的重試規則,以停止重試 ISP 拒絕的郵件。看http://www.exim.org/exim-html-current/doc/html/spec_html/ch-retry_configuration.html了解更多。