Postfix - 中繼本地生成的郵件,但接受來自同一域的 GApp 的郵件
我知道禁用所有本地傳遞的方法是從“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
對於我的案例,我希望埠25和埠465用於接收來自 Gmail 的傳入郵件,但需要後綴送出(在埠 587 上執行)以用於傳出 MTA。所以我這樣評論它
/etc/postfix/master.cf
#submission inet n - - - - smtpd
並評論了smtp和smtps但添加了送出,
/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
,但主要的有:
- 將 更改
myhostname
為與主實例不同。(否則後綴會混淆它們)- 刪除了所有鴿舍特定的配置。
- 更改數據目錄。
- 確保 postfix 不會嘗試本地傳遞。(通過 mydestination、virtual_domains 等)。
- 輸入您的
relayhost
.- 向 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
看看哪裡出了問題。