Postfix跨服务器代发邮件及对应DNS配置的技术咨询
Postfix跨服务器代发邮件及对应DNS配置的技术咨询
我之前帮客户配置过几乎一模一样的场景,刚好可以给你一步步拆解方案,保证Server1正常收信的同时,所有外发邮件走Server2代发:
一、Server2(代发专用服务器)的Postfix配置
- 首先限制仅允许Server1使用它代发,避免被滥用:编辑
/etc/postfix/main.cf,添加或修改:
把mynetworks = [Server1的公网IP]/32, 127.0.0.0/8[Server1的公网IP]换成实际的IP地址,比如192.168.1.100就写192.168.1.100/32。 - 让Server2支持处理所有用户域名的代发请求:在
main.cf里添加:
如果用户域名很多,也可以用正则批量匹配(比如所有relay_domains = user1.com, user2.com, user3.com.com域名),但手动列出来更安全,防止意外转发其他域名的邮件。 - 配置完记得重启Postfix生效:
systemctl restart postfix
二、Server1(网站托管服务器)的Postfix配置
- 把所有外发邮件转发到Server2:编辑
/etc/postfix/main.cf,设置:
加方括号是为了跳过DNS的MX查询,直接用IP转发,避免配置出错。relayhost = [Server2的公网IP] - 测试转发是否正常:可以在Server1上发一封测试邮件:
然后去Server2上查看邮件日志echo "测试内容" | mail -s "跨服务器代发测试" your-personal-email@example.comtail -f /var/log/mail.log,如果看到类似from=<xxx@user1.com>, to=<your-personal-email@example.com>, relay=none, delay=0.1, delays=0.01/0/0/0, dsn=2.0.0, status=sent的日志,说明转发成功了。 - 不用修改Server1的收信配置:它默认已经监听本地端口,只要DNS的MX记录指向它, incoming邮件就会正常投递到Server1的邮箱。
三、用户域名的DNS关键配置
这部分是确保邮件不被当成垃圾邮件的核心:
- MX记录:保持不变,依然指向Server1的域名或IP,比如:
这样所有收件请求还是会到Server1,完全不影响用户收信。user1.com. MX 10 server1.your-hosting-domain.com. - SPF记录:必须更新,因为现在发件服务器是Server2,所以要把Server2的IP加入SPF规则。在用户域名下添加TXT记录:
这里包含Server1是防止偶尔有本地发信的情况,user1.com. TXT "v=spf1 ip4:[Server1的IP] ip4:[Server2的IP] ~all"~all是软失败,等测试稳定后可以改成-all严格模式,更有利于邮件送达。 - DKIM记录(可选但强烈推荐):如果想进一步提升邮件送达率,在Server2上配置DKIM:
- 安装opendkim工具:
apt install opendkim opendkim-tools(Debian/Ubuntu) - 为每个用户域名生成DKIM密钥,然后在用户域名的DNS里添加TXT记录,格式类似:
dkim._domainkey.user1.com. TXT "v=DKIM1; k=rsa; p=[生成的公钥内容]"
- 安装opendkim工具:
四、最终验证
- 发测试邮件到不同邮箱(比如Gmail、Outlook),查看邮件头,确认
Received字段里的发件服务器是Server2的IP。 - 检查收件是否正常:用外部邮箱给
user@user1.com发邮件,确认能收到Server1上的对应邮箱里。 - 验证SPF和DKIM:查看邮件头里的
Authentication-Results字段,应该显示spf=pass和dkim=pass(如果配置了DKIM)。
备注:内容来源于stack exchange,提问作者Mien
相关产品推荐
相关产品推荐

