将 Postfix 配置为同一邮箱的备份 MX 和本地投递

将 Postfix 配置为同一邮箱的备份 MX 和本地投递

我尝试解释得更好......

实际上我有一个独立的邮件服务器(CentOS7+postfix+dovecot),它为我的域提供一些邮箱,我想添加一个备份 MX。

正如很多文档中所说(http://www.akadia.com/services/postfix_mx_backup.html)备份 MX 通常会将邮件保留在其队列中,并不断尝试将其转发到主 MX 服务器,直到主 MX 服务器重新上线为止。

但是,据我所知,当主 MX 服务器关闭时,不可能轻松访问这些邮件并阅读它们(是的,在紧急情况下我可以通过 SSH 访问 /var/spool/mail/somewhere,但这与“邮箱”概念相去甚远)。

因此,我的想法是将备份 MX 上收到的所有邮件的副本也发送到本地邮箱,这样我就可以使用专用网络邮件阅读这些邮件。另一份副本仍位于邮件队列中,准备在可能的情况下发送到主 MX(作为标准备份 MX 配置)。

所以问题是,怎么做?master.cf 支持邮件的自定义路由(例如,我在这里使用管道将邮件转发到 spamassassin,而不使用 amavis),但我找不到操作方法/手册/示例来执行此类操作。

更新:

我找到了一种对我来说很有效的解决方法,我会将它添加到这里,并留下问题以供回答或建议,因为我不确定这是最好的解决方案......

我实际上使用与主 MX 相同的 postfix/dovecot 配置(包含本地邮箱、用户等)配置了备份 MX,并将其作为 MX 添加到 DNS(优先级低于主 MX)。

然后我按照本指南配置了一条规则,为所有收到的邮件添加密件抄送:http://www.linuxmail.info/backup-mail-postfix/

在 main.cf 中我添加了:

recipient_bcc_maps = pcre:/etc/postfix/backup_bcc.pcre
transport_maps = hash:/etc/postfix/transport
smtp_generic_maps = pcre:/etc/postfix/generic.pcre

backup_bcc.pcre 包含一条规则,该规则添加一个 bcc,将 .backupmx 添加到收件人域(使其成为无效的本地域):

/^(.*)@example\.com$/ [email protected]

传输图包含一条规则,用于将 .backupmx 的所有邮件转发到主 MX:

.backupmx smtp:[1.2.3.4]

并且必须以 db 格式进行编译:

postmap /etc/postfix/transport

并且 generic.pcre 包含一条规则,用于在将其转发到主 MX 之前删除 .backupmx ext:

/^(.*)@example\.com\.backupmx$/ [email protected]

因此,如果将邮件发送到我的备份 MX(由于主 MX 关闭),该邮件将被传递到本地邮箱并转发到主 MX(或者,如果无法访问,则保留在队列中,直到重新上线)。

我还添加了

-o receive_override_options=no_address_mappings

按照 Rob 的建议添加到我的 master.cfhttps://serverfault.com/a/28484/348531以避免内容过滤导致的重复密件抄送问题。

相关内容