将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_mynetworks
和reject_unauth_destination
,所以这样的事情可以:
[...] smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination [...] |
那么我们必须添加example.com
到relay_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链接
- Postfix: http : //www.postfix.org