You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:19:21