Google Compute Engine中sendmail自发送邮件及防火墙配置咨询
在GCE实例中允许出站SMTP到特定MX服务器的解决方案
没问题,我来帮你搞定这个困扰——Google Cloud确实默认封禁了出站25端口(SMTP)以防范垃圾邮件,但咱们可以通过防火墙规则精准开放到你自己MX服务器的流量,具体步骤如下:
1. 创建针对性的出站防火墙规则
首先在GCP控制台配置防火墙,只允许你的实例向指定MX服务器发送SMTP请求:
- 打开VPC网络下的「防火墙」页面
- 点击「创建防火墙规则」,填写以下参数:
- 规则名称:比如
allow-smtp-to-my-mx(自定义好记的名称即可) - 网络:选择你的实例所在的VPC网络
- 方向:出站
- 目标:建议选「指定目标标签」,然后给需要发邮件的实例打上专属标签(比如
smtp-enabled),这样更安全;如果图省事也可以选「所有实例」 - 目标标签:若选了指定目标标签,这里填写你刚才设置的标签名
- 协议和端口:选择「指定的协议和端口」,在TCP栏输入
25 - 目的地IP范围:填写你MX服务器的公网IP(可通过
nslookup -type=mx yourdomain.com查到MX记录对应的IP,单个IP用xxx.xxx.xxx.xxx/32,多个IP用逗号分隔) - 优先级:设置为比默认规则更高的数值,比如1000(默认规则优先级为65534,数值越小优先级越高)
- 规则名称:比如
- 点击「创建」完成规则配置
2. 调整sendmail配置确保正常发件
防火墙规则生效后,还需要微调sendmail的配置:
- 先确认sendmail已安装:Debian/Ubuntu系统用
sudo apt install sendmail,RHEL/CentOS系统用sudo yum install sendmail - 编辑
/etc/mail/access文件,添加一行允许转发到你域名的规则:yourdomain.com RELAY - 生成新的access数据库:
sudo makemap hash /etc/mail/access < /etc/mail/access - 重启sendmail服务使配置生效:
sudo systemctl restart sendmail
3. 踩坑提醒
- Google的额外限制:有时候即使防火墙规则生效,Google仍可能拦截25端口的出站流量,这时候可以换用587端口(SMTP提交端口,默认是允许的)。要么修改sendmail默认使用587端口,要么直接用命令
sendmail -S yourmxserver:587 -t指定端口发送。 - MX IP要准确:如果你的域名有多个MX记录,最好把所有对应的IP都加到防火墙的目的地范围里,避免遗漏导致发件失败。
- 安全第一:不要将25端口开放给所有IP地址,仅允许指向你自己的MX服务器,防止实例被滥用发送垃圾邮件。
内容的提问来源于stack exchange,提问作者cnst
相关产品推荐
相关产品推荐

