如何配置 postfix 将本地邮件发送到另一个本地服务器?

如何配置 postfix 将本地邮件发送到另一个本地服务器?

我有一对邮件服务器,主要由 Postfix、Procmail 和 Cyrus-IMAP 组成,它们都运行良好。IMAP 服务器配置为简单的主/副本对。所有“普通”邮件都由主服务器的 Postfix 接收,后者通过 Procmail 处理邮件,然后将其发送到在同一服务器上运行的 Cyrus-IMAP。两个服务器都可以这样运行,但实际上只有主服务器接收外部电子邮件。

目前,任一盒子上的本地帐户都通过其本地 Postfix 发送邮件(例如,由 cron 作业生成),该邮件会被本地传送到同一盒子上的 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

答案1

我更早之前就这么做了 - 通过从 中删除您的域名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

答案2

您可以尝试在 main.cf 中放入的副本上使用 transport_maps

transport_maps = hash:/etc/postfix/transport

然后在 /etc/postfix/transport 中输入

localdomain smtp:yourmasterserver

不要忘记:

postmap /etc/postfix/transport

并重新启动postfix

答案3

设置如下:

$ 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、RedHat)

相关内容