Email

Postfix - 中繼本地生成的郵件,但接受來自同一域的 GApp 的郵件

  • April 15, 2015

我知道禁用所有本地傳遞的方法是從“mydestination”中刪除域,這將導致所有郵件通過我設置的任何中繼進行中繼。但我希望 postfix 接受來自 GApps 的所有郵件,以便本地遞送到 dovecot,但將所有本地生成的郵件轉發回 GApps。

例如:我在伺服器上執行 webmail,使用本地後綴。user1@example.com 向 user2@example.com 發送電子郵件。如果 user2 在本地存在 postfix 在本地傳遞,則不存在 - 我可以添加一個備份中繼,它將將該郵件發送到 GApps。但是我希望 postfix 總是將這些郵件轉發回 GApps(它將這些郵件向下游發送回 postfix 以進行本地傳遞),而不管本地可用性如何。這樣我就可以有一種瀑布模型。

我知道有很多相關的問題(沒有具體的答案),但基本上我想要的是在 gmail 和本地 dovecot 中為相同的使用者提供一種相同的收件箱。我通過直接使用 GApps SMTP Relay 而不是本地的網路郵件找到了一個臨時修復,但這並不能解決那些使用 IMAP 連接的任何問題(最終必須讓每個使用者訪問 GApps SMTP)。

終於讓我的設置與提到的後綴多個實例一起工作。我試過用exim4,但是apt-get install exim4自動解除安裝了postfix,連提示都沒有!無論如何,這是我如何讓它工作的:

#Adds some lines to main.cf enabling multiple instance
postmulti -e init

#Creates a new instance at the directory /etc/postfix-outgoing
postmulti -I postfix-outgoing -G mta -e create

對於我的案例,我希望25465用於接收來自 Gmail 的傳入郵件,但需要後綴送出(在埠 587 上執行)以用於傳出 MTA。所以我這樣評論它/etc/postfix/master.cf

#submission inet n       -       -       -       -       smtpd

並評論了smtpsmtps但添加了送出/etc/postfix-outgoing/master.cf以獲得類似的東西

submission inet n       -       -       -       -       smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_reject_unlisted_recipient=no

我複制了預設的 ISPConfig 的 main.cf 並對我的 .cf 文件/etc/postfix進行了很多修改/etc/postfix-outgoing/main.cf,但主要的有:

  1. 將 更改myhostname為與主實例不同。(否則後綴會混淆它們)
  2. 刪除了所有鴿舍特定的配置。
  3. 更改數據目錄。
  4. 確保 postfix 不會嘗試本地傳遞。(通過 mydestination、virtual_domains 等)。
  5. 輸入您的relayhost.
  6. 向 dovecot.conf 添加第二個偵聽器,service auth指向/var/spool/postfix-outgoing/private/auth原始路徑的直接引用對我不起作用。或者您可以嘗試 通過 TCP 使用 -Dovecot 身份驗證

最後啟用實例:

postmulti -i postfix-outgoing -x postconf -e \
 "master_service_disable ="
postmulti -i postfix-outgoing -e enable
postmulti -i postfix-outgoing -p start

tail -f /var/log/mail.log看看哪裡出了問題。

參考:http ://www.postfix.org/MULTI_INSTANCE_README.html

引用自:https://serverfault.com/questions/671251