Postfix

如何配置 postfix 將本地郵件發送到另一個本地伺服器?

  • September 25, 2019

我有一對主要由 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

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