如何配置 postfix 將本地郵件發送到另一個本地伺服器?
我有一對主要由 Postfix、Procmail 和 Cyrus-IMAP 組成的郵件伺服器,它們都執行良好。IMAP 伺服器配置為簡單的主/副本對。所有“正常”郵件都被主伺服器的 Postfix 接受,它通過 Procmail 處理它,以傳遞到在同一伺服器上執行的 Cyrus-IMAP。兩台伺服器都能夠像這樣執行,但只有主伺服器實際接收外部電子郵件。
目前,任一盒子上的本地帳戶通過其本地 Postfix 發送郵件(例如,由 cron 作業生成),該 Postfix 在本地傳遞到同一盒子上的 Cyrus-IMAP。
但是,Cyrus 的複制不喜歡直接在副本上發生更改,因此我希望副本將其本地郵件傳遞給主伺服器。
我看到了兩種實現這一目標的方法:
- 更改副本的本地傳輸以將郵件傳遞到主伺服器上的 Postfix
或者
- 更改副本的 procmail 以將郵件傳遞到主伺服器上的 Cyrus-IMAP。
還有第三種方法是副本伺服器將所有內容中繼到主伺服器(即內部和外部電子郵件),但這似乎有些不必要。我不需要更改處理外部郵件的方式——任何一個盒子都可以通過其本地 Postfix 發送外部電子郵件,然後將其轉發到外部。
我真正想做的只是改變內部電子郵件在副本上的處理方式,以便將它們傳遞給主伺服器,或者發送到 Postfix 或那裡的 IMAP 伺服器。
我在 postfix 的 master.cf 中的本地傳輸的現有、工作、配置:
procmail-local unix - n n - - pipe flags=OR user=cyrus argv=/usr/bin/procmail -t -m RECIPIENT=${mailbox} SENDER=${sender} EXTENSION=${extension} /etc/procmailrc
procmailrc 中現有的、工作的、傳遞給 Cyrus 的配置:
DELIVERMAIL="/usr/lib/cyrus/bin/deliver -r $SENDER -a $RECIPIENT $RECIPIENT
我會更早地這樣做 - 通過從 中刪除您的域名
mydestination
,該域的郵件應該被傳遞到您的域列為 MX 的伺服器。如果你想指定一個伺服器,而不是使用 MX,你應該使用這個文件/path/to/postfix/etc/transport
。該文件應如下所示:# all mails to our own domain should go to our main incoming server ourdomain.com smtp:[mainserver.ourdomain.com]
請注意,這些
[]
標記很重要——沒有它們,您的伺服器仍會查找 mainserver.ourdomain.com 的 MX 記錄。編輯文件後,使用命令
postmap /path/to/postfix/etc/transport
/path/to/postfix/etc/main.cf
您還需要通過編輯以下行來確保 postfix 知道使用該文件:transport_maps = hash:/path/to/postfix/etc/transport
如果您的系統使用 db 文件。如果改為使用 dbm 文件,則該行應為
transport_maps = dbm:/path/to/postfix/etc/transport