Postfix配置求助:如何限定单个域名仅向服务器自身IPv4地址发送邮件
嘿,我明白你的需求了——服务器上跑着好几个域名,就想让其中一个只能给自己发邮件(也就是投递到你的公网IPv4对应的服务器邮箱),其他域名不受影响对吧?之前帮朋友配置过类似的场景,给你一套靠谱的步骤:
核心思路
我们用Postfix的发件人依赖传输映射功能,只针对目标域名的所有发件人,强制他们的邮件全部投递到你的服务器公网IP,彻底杜绝发往外网的可能。
具体配置步骤
步骤1:编辑Postfix主配置文件(通常路径是
/etc/postfix/main.cf),添加一行启用发件人传输映射:sender_dependent_transport_maps = hash:/etc/postfix/sender_transport步骤2:创建映射文件
/etc/postfix/sender_transport,填入你的限制规则。假设你要限制的域名是your-target-domain.com,服务器公网IP是192.0.2.100,内容如下:@your-target-domain.com smtp:192.0.2.100这里的
@前缀表示匹配该域名下的所有发件人(比如user@your-target-domain.com都会被限制),后面的smtp:你的IP表示强制把这些邮件通过SMTP投递到你自己的服务器。步骤3:生成Postfix识别的哈希映射表(这步必须做,否则配置不会生效):
postmap /etc/postfix/sender_transport步骤4:重启Postfix服务让配置生效:
# 适用于systemd系统(Ubuntu 18.04+/CentOS 7+等) systemctl restart postfix # 适用于旧init系统 service postfix restart
额外优化(可选)
如果你想进一步确保该域名的邮件只能发给服务器上真实存在的本地收件人(避免随便填个本地域名地址就投递),可以检查main.cf里是否启用了本地收件人映射:
local_recipient_maps = proxy:unix:passwd.byname $alias_maps
如果没启用,加上这行然后重启Postfix即可——这样不存在的本地邮箱会直接被退回。
测试验证
用被限制域名的邮箱发一封邮件到外网地址(比如test@gmail.com),邮件会被强制投递到你的服务器,随后因为服务器没有对应外网域名的邮箱而退回;而发给该服务器上的本地邮箱(比如admin@your-target-domain.com)则会正常投递。
备注:内容来源于stack exchange,提问作者bv4nuf

