exim4 智慧主機,附寄件者驗證功能

exim4 智慧主機,附寄件者驗證功能

我正在嘗試將 exim4 設定為 ISP 郵件伺服器前面的智慧主機。一切正常,除了一些來自無效寄件者的電子郵件(很可能是垃圾郵件)。 ISP 拒絕它們

450 4.1.8 <[email protected]>: Sender address rejected: Domain not found

這會導致 exim smarthost 重試,從而不必要地增加佇列大小。

我最接近的配置是使用/etc/exim4/local_sender_calloutfile.但隨後標註會發送至 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_domainsno_more,然後加入no_verifysmarthost 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了解更多。

相關內容