我有一对主要由 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
。该文件应如下所示:请注意
[]
标记很重要 - 没有它们,您的服务器仍会查找 mainserver.ourdomain.com 的 MX 记录。编辑文件后,使用命令
postmap /path/to/postfix/etc/transport
/path/to/postfix/etc/main.cf
您还需要通过使用以下行进行编辑来确保 postfix 知道使用该文件:如果您的系统使用 db 文件。如果它使用 dbm 文件,则该行应该是
您可以尝试在放入 main.cf 的副本上使用 transport_maps
然后在 /etc/postfix/transport 你放
不要忘记:
并重新启动后缀
设置是:
也不要忘记:
(中央操作系统、红帽)