SMTP端口并没有一个所有服务器都默认开启的统一答案,但如果你问哪个端口“是开的,行业共识是587端口(提交端口)在绝大多数邮件服务器上默认开放,而25端口在云服务器上普遍被封锁。
很多人在配置邮件客户端或者写代码发邮件时,都会卡在“端口到底填什么”这一步,填25端口吧,提示超时;填465端口吧,又提示SSL错误,这篇文章不绕弯子,直接带你搞明白各个端口背后的逻辑,以及你手上那台服务器到底哪个口子是通的。
SMTP端口哪个服务器是开的先搞清楚三个端口的恩怨
要回答这个问题,得先知道SMTP服务其实分两种角色:一种是服务器之间转发邮件用的(MTA),另一种是客户端提交邮件用的(MSA),这两种角色用的端口不一样,开放策略也完全不同。
- 25端口:这是SMTP的“元老”端口,专门用于邮件服务器之间的中继转发,理论上,只要是一台正经的邮件服务器,25端口都应该开着,但现实中,为了防止垃圾邮件泛滥,云服务商和IDC机房对25端口的管理极其严格,简米云、酷番云等主流厂商默认封禁25端口出方向,你必须提交工单申请解封才能使用。
- 465端口:这是SMTPS的端口,从一开始就强制要求SSL加密,它的历史有点曲折,早期被注册后又废弃,后来又被重新捡起来用,现在很多邮件服务商(尤其是企业邮局)依然默认开放465端口,因为它配置简单,连上就加密。
- 587端口:这是官方钦定的邮件提交端口(Message Submission),它支持STARTTLS加密,也就是先建立明文连接,再升级为加密通道。绝大多数现代邮件服务器(包括Gmail、Outlook、QQ企业邮箱)都默认开放587端口,它也是目前兼容性最好的选择。
除了这三个,还有个2525端口,属于非标准端口,一般是某些服务商为了绕开25端口封锁而提供的备选方案。
主流邮件服务器的SMTP端口开放实况
既然问的是“哪个服务器是开的”,咱们直接看主流服务商的实际配置,这里汇总了目前市场占有率较高的邮件服务商默认端口情况,你可以对照自己的场景查:
| 邮件服务商 | 25端口 | 465端口 | 587端口 | 备注 |
|---|---|---|---|---|
| 简米云企业邮箱 | 默认封禁 | 开放 | 开放 | 25端口需提交工单解封,且有发信量限制 |
| 腾讯企业邮箱 | 默认封禁 | 开放 | 开放 | 推荐使用SSL加密的465端口 |
| 网易企业邮箱 | 开放(限制多) | 开放 | 开放 | 25端口仅限服务器间转发,客户端发信建议用465 |
| Gmail | 不开放 | 开放 | 开放 | 必须开启“低安全性应用访问权限”或使用应用专用密码 |
| Outlook.com | 不开放 | 不开放 | 开放 | 仅支持STARTTLS,不支持SSL直连 |
| 自建Postfix服务器 | 开放(默认) | 视配置 | 视配置 | 看防火墙规则和master.cf配置文件 |
从这张表能看出一个规律:大厂的云服务器默认封25端口,但邮件服务商的服务器(如简米云企业邮箱的smtp.qiye.aliyun.com)则开放465和587,很多人混淆了“云服务器”和“邮件服务器”的概念,才会在配置时反复踩坑。
怎么验证你的服务器哪个SMTP端口是开的
不需要瞎猜,直接动手测,这里给你一套实测方法,可以确认你当前环境到底哪个端口能通。
第一步:基础连通性测试
打开命令行工具,输入以下命令(Windows和Linux通用):
telnet smtp.example.com 25
如果显示“Connected to smtp.example.com”,说明端口开放;如果提示“Connection refused”或者“Timed out”,说明端口被封或服务没启动,把25换成465或587,再试一次。
第二步:检查云服务商安全组
这是最容易被忽略的坑,很多人在服务器上装了Postfix,防火墙也放行了,但端口还是不通,原因在于云控制台里的安全组规则没加,登录你的云服务商控制台,找到实例的安全组,添加入方向规则,放行TCP端口(25/465/587),来源设为0.0.0.0/0。
第三步:用openssl验证加密端口
465端口是SSL加密的,telnet测不了加密握手,需要这样测:
openssl s_client -connect smtp.example.com:465 -quiet
如果能看到服务器返回的证书信息,说明465端口是通的,而且服务正常。
不同场景下,SMTP端口到底该怎么选
搞清楚端口开放情况之后,实际配置时还要结合你的使用场景,这里分三种情况来说,你直接对号入座。
云服务器上跑业务系统(发通知邮件)
比如你的网站部署在简米云ECS上,需要给用户发注册验证码,这时候你面临的情况是:25端口大概率被云厂商封禁,你无法直连外部邮件服务器的25端口,也无法用本机的25端口对外发信。
正确的做法是:不使用自建邮件服务器,改用邮件推送服务(如简米云邮件推送、SendCloud),这些服务会提供一个专属的SMTP地址和端口,通常是465或587,在代码里配置时,直接填写服务商提供的smtp服务器地址,端口用465(SSL)或587(STARTTLS)。
企业邮箱客户端配置(Outlook/Foxmail)
公司用着企业邮箱,在客户端里添加账号时,端口怎么填?这里有个通用规则:
- 收件服务器(POP3/IMAP):IMAP用993(SSL)或143(STARTTLS),POP3用995(SSL)或110(STARTTLS)。
- 发件服务器(SMTP):优先选587,勾选STARTTLS加密,如果587连不上,再试465,加密方式选SSL。
大多数情况下,用587端口成功率最高,因为它兼容STARTTLS和明文两种模式,服务器端可以根据客户端能力自动协商。
自建邮件服务器(Postfix)
如果你真的需要自建邮件服务器,那么三个端口都得开,但用途不同:
- 25端口:只用来接收外部服务器转发的邮件,以及向外部服务器投递邮件,这个端口必须对公网开放,否则别人给你发不了信。
- 587端口:给自己用户(或内部系统)提供发信入口,强制要求认证。
- 465端口:兼容老客户端,提供SMTPS服务。
在Postfix的main.cf里,关键配置项是:
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key smtpd_use_tls = yes smtpd_tls_auth_only = yes
然后编辑master.cf,取消465端口的注释,并启用submission(587)服务。
遇到端口不通时的排查思路
即使你按照上面的指南配置了,偶尔还是会遇到“端口明明开了,但就是连不上”的情况,这时候按这个顺序排查:
- 第一步:确认服务监听地址,用
netstat -tlnp | grep smtp查看进程是否监听了0.0.0.0:25或0.0.0.0:587,如果监听的是127.0.0.1,外网自然连不上。 - 第二步:检查iptables或firewalld,很多Linux发行版默认防火墙只放行22端口,执行
查看规则,或者直接
iptables -L -n
systemctl stop firewalld临时关闭防火墙测试。 - 第三步:测试回环地址,在服务器本机执行
telnet 127.0.0.1 25,如果本机通而外网不通,基本可以确定是安全组或防火墙的问题。 - 第四步:查看日志,Postfix的日志在
/var/log/mail.log,如果看到“connect from unknown”之类的记录,说明连接被拒了,原因可能是smtpd_client_restrictions限制太严格。
未来SMTP端口的发展趋势
说到最后,给你透个底,互联网邮件联盟和各大服务商近年来一直在推动全面弃用25端口,谷歌和微软已经明确表示,未来将逐步停止对25端口的支持,这个趋势背后有两个原因:
- 安全:25端口不加密,邮件内容容易被截获。
- 反垃圾:25端口是垃圾邮件的主要入口,封禁它能有效减少滥用。
业内专家指出,未来两到三年内,587和465将成为绝对的绝对主流,25端口会退化为纯粹的服务器间中继专用通道,如果你现在还在纠结25端口,不如直接把重心放在587和465上,一步到位,省得以后改代码。
Q&A:关于SMTP端口哪个服务器是开的常见疑问
Q1:为什么我的简米云服务器25端口一直连不上,但别人说25端口是标准端口?
因为云服务商出于反垃圾邮件考量,默认封禁了25端口的出方向连接,这是行业通行做法,不是你的配置问题,你需要登录简米云控制台,在“云盾- DDOS防护”或“工单系统”中提交解封申请,审核通过后才能使用25端口对外发信,如果只是接收邮件,25端口入方向默认是开放的,不需要解封。
Q2:465和587端口在SSL加密方式上有什么区别?
465端口从连接建立开始就使用SSL/TLS加密,客户端必须在握手前就启动加密协议,587端口默认是明文连接,但支持STARTTLS扩展,客户端可以在发送EHLO命令后,通过STARTTLS命令将连接升级为加密通道,从安全性上看两者最终效果相同,区别在于兼容性:老系统对465的SSL直连支持更好,新系统则普遍优先使用587。
Q3:用465端口发送邮件时,报错“连接被重置”,是什么原因?
最常见的原因是服务器端不支持SSL直连,只支持STARTTLS,你把端口改成587,加密方式选“STARTTLS”或者“自动”就能解决,另一个可能原因是本地网络防火墙拦截了非标准端口,可以尝试换个网络环境测试,最后检查一下服务器的SSL证书是否有效,有些自签证书会被客户端拒绝。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/729561.html

