配置Postfix通过其他服务器发件

提醒:本文最后更新于 2313 天前,文中所描述的信息可能已发生改变,请仔细核实。


前面提到博客服务器因为是HKBN,并不支持rDNS,所以Zero在rixCloud上开了台机子专门给我做邮件服务器。才有了今天这篇文章,题图是博客目前的邮件系统简易示意图。

博客服务器即图中的WEB Server,邮件服务器即Mail Server。两者都安装了Postfix。

前者作为Null Client,主要作用是对所有该服务器的邮件转发给Master,也就是后者Mail Server。

Null Client配置很简单,主要就是配置只监听本地,设置邮件域,还有设置relayhost及禁用本地邮件投递。下面简单说下配置过程。

/etc/postfix/main.cf中,配置:

inet_interfaces = loopback-only
mydestination =
myhostname = kn007.net
mynetworks = 127.0.0.0/8, [::1]/128
myorigin = $myhostname
relayhost = mail.kn007.net
local_transport = error: local delivery disabled
smtp_tls_security_level = encrypt

其中mydestination留空,myhostname不能与Master服务器同参数配置相同。

smtp_tls_security_level的话,看个人需要,主要就是TLS隧道,但是需要Master配置了TLS。

因为本地邮件投递被禁用了,那么就没必要让postfix再监听local邮件传递了。在/etc/postfix/master.cf中,把local那一行注释掉就行了。这一步不做也可以,做了省点内存而已。

接下来,配置Master,基本看之前文章来配置。

其中的不同点,在/etc/postfix/main.cf中:

myhostname = mail.kn007.net
mydomain = kn007.net
myorigin = $mydomain
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 127.0.0.0/8, [::1]/128, 103.86.69.2, 61.244.29.105

myhostname要定义与Null Client的myhostname不同,相同将导致无法发信,我这里是设置成mail.kn007.net。

你可以在mydestination和myorigin设置成你的主域。比如我就是设置成kn007.net,这样发件域还是kn007.net,这样对我来说DKIM配置还不用改。

mynetworks要添加Null Client的IP,以便通过Relay Access检测。

如果你并没有Relay授权检测,那么可以忽略这一步。不过强烈建议做Relay检测,不然你的邮件系统可能会被滥用,配置方法见之前文章。

最后,在OpenDKIM的配置文件/etc/opendkim/TrustedHosts中,同样的也要添加Null Client的IP,以便正常签名。

完成配置更改后,记得重启Postfix及OpenDKIM,以完成应用。

好的,这样就成功做到如图所示的架构。之前文章可见专题文章《Postfix小结》。


配置完,根据一些实际情况,比如我是有用Dovecot+RainLoop来管理域名邮箱邮件的,那么还要做些变通。

因为RainLoop在Null Client,即WEB Server上,而Null Client本身是没有本地邮局的,只做转发,邮件都在Master上。

我在Master,即Mail Server上,搭建好Dovecot和Nginx。Dovecot只允许WEB Server访问(防火墙策略),而Nginx反代WEB Server上的RainLoop。

这样便达到目的,WEB Server的RainLoop访问来自Mail Server上的Postfix和Dovecot来完成收发邮件;而直接访问Mail Server,因为反代,也能顺利访问到RainLoop来管理邮件。

为什么要反代呢,因为MX记录指向的是Mail Server而不是WEB Server,所以需要反代。

还有,平时有计划任务备份WEB Server的数据,所以我用了rsync把Mail Server的邮件同步到WEB Server上,以达到备份目的。

另祝元旦快乐。

转载请注明转自:kn007的个人博客的《配置Postfix通过其他服务器发件