将Postfix设置为备份MX

将Postfix设置为备份MX

版本1.0
作者:Falko Timme

在本教程中,我将展示如何将Postfix邮件服务器设置为域的备份邮件交换器,以便在主邮件交换机关闭或无法访问的情况下接收该域的邮件,并将邮件传递到主MX一次又一次。

我不会保证这将为您工作!

1初步说明

我想为域example.com设置一个备份MX。 在这个例子中,主要的MX for example.com被称为mx1.example.com (IP地址1.2.3.4 ),所以我调用备份MX mx2.example.com (IP地址1.2.3.5 )。

我已经为example.com创建了如下所示的MX记录:

example.com.               86400   IN      MX      10 mx1.example.com.
example.com.               86400   IN      MX      20 mx2.example.com.

主要MX具有较低的数量( 10 ),因此比备份MX( 20 )的优先级更高。

我假设mx2.example.com上的Postfix已经安装并工作了。

2在mx2.example.com上配置Postfix

要使mx2.example.com成为域example.com的备份MX,我们所要做的就是更改/添加三行到/etc/postfix/main.cf

vi /etc/postfix/main.cf

首先确保smtpd_recipient_restrictions包含permit_mynetworksreject_unauth_destination ,所以这样的事情可以:

[...]
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
[...]

那么我们必须添加example.comrelay_domains参数; 如果/etc/postfix/main.cf中没有relay_domains参数 ,以下内容将会执行:

[...]
relay_domains = $mydestination, example.com
[...]

最后我们在/etc/postfix/main.cf中添加一个空的relay_recipient_maps 参数

[...]
relay_recipient_maps =
[...]

(这样我们就不必指定一个有效的电子邮件地址列表来备份,如果你必须管理数百个电子邮件帐户,这可能是一项艰巨的任务。)

我必须添加一个重要的事情:您不能/etc/postfix/main.cf中的以下参数中列出example.com

  • 宿醉
  • virtual_alias_domains
  • virtual_mailbox_domains

已经这样了 我们现在要做的就是重新启动Postfix:

/etc/init.d/postfix restart

3测试

要测试新的备份MX,我们在mx1.example.com删除 MTA(Postfix,Sendmail,Exim等), 并将一些远程服务器的电子邮件发送到example.com帐户(例如someuser@example.com )的。

如果您可以访问远程(发送)服务器上的邮件日志,那么您应该在其中找到类似的内容:

Jun 6 18:29:16 mail postfix/smtp[17746]: AF814144146: to=<someuser@example.com>, relay=mx2.example.com[1.2.3.5], delay=1, status=sent (250 2.0.0 Ok: queued as DCA5A1BF40F)

如您所见,邮件已发送到mx2.example.com而不是mx1.example.com ,因为mx1.example.com无法访问。 现在,我们来看看mx2.example.com的邮件日志:

Jun 6 18:29:16 mx2 postfix/qmgr[3049]: DCA5A1BF40F: from=<falko@blabla.tld>, size=892, nrcpt=1 (queue active)
Jun 6 18:29:16 mx2 postfix/smtpd[3051]: disconnect from mail.blabla.tld[1.2.3.6]
Jun 6 18:29:16 mx2 postfix/smtp[3057]: connect to mx1.test1.de[1.2.3.4]: Connection refused (port 25)
Jun 6 18:29:16 mx2 postfix/smtp[3057]: DCA5A1BF40F: to=<someuser@example.com>, relay=none, delay=0.07, delays=0.03/0.02/0.01/0, dsn=4.4.1, status=deferred (connect to mx1.test1.de[1.2.3.4]: Connection refused)

mx2.example.com已接受邮件,并尝试连接到mx1.example.com将其传递到主MX。 因为主MX已关闭, 否则mx2.example.com无法传递邮件并将其保留在邮件队列中,直到mx1.example.com再次可用。

现在我们再次在mx1.example.com上启动MTA。 备份MX不会立即提供排队的邮件,但是在几分钟之后,您应该在mx2.example.com的邮件日志中看到这样的信息

Jun 6 18:56:44 mx2 postfix/qmgr[3080]: DCA5A1BF40F: from=<falko@blabla.tld>, size=892, nrcpt=1 (queue active)
Jun 6 18:56:45 mx2 postfix/smtp[3083]: DCA5A1BF40F: to=<someuser@example.com>, relay=mx1.example.com[1.2.3.4]:25, delay=1648, delays=1648/0.09/0.4/0.12, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 167995B0109)

该邮件已经发送到主MX,您可以在邮件日志中看到此邮件:

Jun 6 18:56:45 mx1 postfix/local[4963]: 167995B0109: to=<someuser@server1.example.com>, orig_to=<someuser@example.com>, relay=local, delay=0.54, delays=0.08/0.02/0/0.43, dsn=2.0.0, status=sent (delivered to command: /usr/bin/procmail -f-)

因此,当mx1.example.com关闭时,不会丢失任何邮件,用户可以继续从mx1.example.com检索邮件。

4链接

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏