我有一对主要由Postfix,Procmail和Cyrus-IMAP组成的邮件服务器,它们都能正常工作。 IMAP服务器configuration在一个简单的主/副本对中。 所有“普通”邮件都被主人的Postfix所接受,后者通过Procmail处理,将其传送到在同一台服务器上运行的Cyrus-IMAP。 两台服务器都能够像这样运行,但只有主服务器实际上收到外部电子邮件。
目前,任何一个盒子上的本地帐户都通过本地Postfix发送邮件(例如,由cron作业生成),邮件本地发送到同一个盒子上的Cyrus-IMAP。
然而,赛勒斯的复制不喜欢直接在副本上发生的变化,所以我希望副本将其本地邮件传递给主服务器。
我看到了两个方法来实现这一点:
要么
还有第三种方式是副本服务器将所有东西都传递给主服务器(即内部和外部邮件),但似乎有些不必要。 我不需要改变处理外部邮件的方式 – 任何一个邮箱都可以通过本地Postfix发送外部邮件,然后外部中继。
我真正想要做的只是改变内部电子邮件在副本上的处理方式,以便将它们传送到主服务器,无论是Postfix还是IMAP服务器。
在postfix的master.cf中,现有的,工作的,本地传输的configuration:
procmail-local unix - nn - - pipe flags=OR user=cyrus argv=/usr/bin/procmail -t -m RECIPIENT=${mailbox} SENDER=${sender} EXTENSION=${extension} /etc/procmailrc
在procmailrc中传递给Cyrus的现有工作,configuration:
DELIVERMAIL="/usr/lib/cyrus/bin/deliver -r $SENDER -a $RECIPIENT $RECIPIENT
我之前还会这么做 – 通过从主机中删除您的域名,该域的邮件应该被传送到为您的域名列为MX的服务器。 如果你想指定一个服务器,而不是使用MX,你应该使用file /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的MXlogging。
编辑完文件后,使用命令`postmap / path / to / postfix / etc / transport'
您还需要确保postfix知道使用该文件,通过编辑/path/to/postfix/etc/main.cf以下行:
transport_maps = hash:/path/to/postfix/etc/transport
如果你的系统使用db文件。 如果相反,它使用dbm文件,行应该是
transport_maps = dbm:/path/to/postfix/etc/transport
您可以尝试在main.cf中放置的副本上使用transport_maps
transport_maps = hash:/etc/postfix/transport
然后在/ etc / postfix / transport中放入
localdomain smtp:yourmasterserver
不要忘记:
postmap /etc/postfix/transport
并重新启动后缀
设置是:
$ grep domain.com /etc/postfix/* /etc/postfix/main.cf:relay_domains = domain.com /etc/postfix/relay_recipients:"@domain.com OK" Binary file /etc/postfix/relay_recipients.db matches /etc/postfix/transport:domain.com smtp:[ip.address.of.the.mail.server] Binary file /etc/postfix/transport.db matches
另外不要忘记:
$ postmap /etc/postfix/transport $ postmap /etc/postfix/relay_recipients $ /etc/init.d/postfix restart
(CentOS的,红帽)