Postfix能否配置为通过587/465端口向外发送邮件?
问题背景
我有多台采用Postfix+Opendkim+Dovecot架构的SMTP邮件服务器,网站通过587端口连接服务器发送邮件。查看发送日志发现,服务器向Gmail、Yahoo、iCloud等邮箱外发邮件时默认使用25端口,而部分云服务商封禁了25端口的出站流量,建议改用587或465端口发送。此前尝试取消/etc/postfix/master.cf中submission inet n - y - - smtpd的注释,但这仅用于配置服务器监听587端口接收邮件,无法改变外发端口。
日志示例:
Jul 3 11:38:03 smtp postfix/smtp[16580]: ABDB4C06AA: to=<example-mail@gmail.com>, relay=gmail-smtp-in.l.google.com[64.233.164.27]:25, delay=0.5, delays=0.07/0/0.17/0.27, dsn=2.0.0, status=sent (250 2.0.0 OK 1719995883 38308e7fff4ca-2ee51546c65si28040131fa.331 - gsmtp)
配置Postfix外发端口方法
Postfix的外发行为由smtp服务进程(而非接收用的smtpd)控制,以下两种方式可修改外发端口:
1. 全局统一修改外发端口
适合所有目标邮箱服务商均支持指定端口的场景:
- 编辑
/etc/postfix/main.cf,添加或修改以下参数:- 若使用587端口(STARTTLS加密):
smtp_destination_port = 587 smtp_tls_security_level = may - 若使用465端口(SSL加密):
smtp_destination_port = 465 smtp_tls_wrappermode = yes smtp_tls_security_level = encrypt
- 若使用587端口(STARTTLS加密):
- 保存文件后重启Postfix服务:
systemctl restart postfix
2. 针对特定域名配置外发端口
适合部分服务商仅支持特定端口的场景,灵活性更高:
- 编辑
/etc/postfix/main.cf,添加映射配置:transport_maps = hash:/etc/postfix/transport - 创建并编辑
/etc/postfix/transport文件,指定不同域名的外发端口(以Gmail、Yahoo、iCloud为例):gmail.com smtp:[gmail-smtp-in.l.google.com]:587 yahoo.com smtp:[mx-biz.mail.yahoo.com]:587 icloud.com smtp:[mx01.mail.icloud.com]:587注意:方括号
[]用于禁用MX记录查询,直接使用指定的服务器地址;若需用465端口,将:587替换为:465即可。 - 生成映射哈希文件:
postmap /etc/postfix/transport - 重启Postfix服务:
systemctl restart postfix
注意事项
- 配置前请先验证目标邮箱服务商的MX服务器是否开放指定端口,可通过
telnet <mx-server> <port>测试连通性。 - 若使用465端口,需确保Postfix已安装并启用TLS相关模块(通常默认已配置)。
内容的提问来源于stack exchange,提问作者Alex Smirnov
相关产品推荐
相关产品推荐

