服务器端口587
- 云服务器
- 2025-08-20
- 8
器 端口 587是用于安全传输邮件的SMTPS协议 端口,支持SSL/TLS加密,保障邮件传输的安全性
端口587的基本定义与用途
SMTP(简单邮件传输协议)的扩展端口——587是互联网工程任务组(IETF)推荐的用于提交电子邮件至服务器的标准端口,它基于明文传输机制(可配合STARTTLS升级为加密连接),主要功能包括:
- 发送外发邮件(Outbound Mail);
- 支持身份验证和安全策略;
- 替代传统的不安全端口25(已被多数ISP限制)。
| 特性 | 说明 |
|---|---|
| 协议类型 | SMTP over TLS(先建立明文链接,再协商加密) |
| 默认行为 | 需主动发起STARTTLS指令以启用SSL/TLS加密 |
| 典型应用场景 | 企业邮箱客户端、邮件网关向目标服务器中继邮件 |
| 优势 | 兼容性强、支持现代安全标准,逐步取代端口25作为主流发信端口 |
为何选择587而非其他端口?
历史背景与安全性演进
早期邮件传输直接使用端口25,但因其缺乏强制加密导致易受中间人攻破,为解决此问题,IETF提出:

- 端口587作为“显式提交端口”(Explicit Submission Port),强制要求客户端先通过STARTTLS切换至加密模式;
- 端口465则用于隐式SSL/TLS(Implicit SSL),即全程必须保持加密状态,但兼容性较差。
运营商与防火墙策略差异
| 端口号 | 常见用途 | 是否被封锁风险 | 推荐等级 |
|---|---|---|---|
| 25 | 传统SMTP | 高(住宅宽带) | ️仅限内网 |
| 587 | ESMTP with STARTTLS | 低 | ⭐⭐⭐⭐⭐首选 |
| 465 | SMTPS (Implicit SSL) | ️中等 | ⭐⭐备用方案 |
提示:大多数云服务商和企业级防火墙仅开放587端口供外部访问,因其平衡了安全性与兼容性。
配置示例与常见问题排查
正确配置步骤(以Postfix为例):
# /etc/postfix/main.cf关键参数设置 submission inet n y smtpd smtp_tls_security_level = may # 允许STARTTLS协商 smtp_tls_note_starttls_offer = yes # 记录日志中的加密尝试
️ 典型错误及解决方案:
| 现象 | 可能原因 | 修复方法 |
|---|---|---|
| “Connection refused” | 未监听587端口或防火墙拦截 | netstat -tulnp | grep :587确认服务运行;检查iptables规则 |
| “Invalid HELO argument” | 客户端未正确触发STARTTLS流程 | 确保邮件客户端支持ESMTP并勾选“使用TLS”选项 |
| 认证失败(Authentication failed) | 用户名/密码错误或SASL机制未启用 | 验证凭据;在Postfix中启用smtpd_sasl_auth_enable=yes |
安全防护建议
-
访问控制列表(ACL)
仅允许可信IP段通过587端口提交邮件,
168.1.0/24 OK

-
速率限制
防止暴力免费攻破:
-
日志审计
监控异常登录尝试:
smtpd_proxy_filter = mypolicyd:127.0.0.1:10023
结合SPF/DKIM/DMARC实现全链路溯源。
相关问题与解答
Q1: 如果服务器同时开放了25、587和465端口会怎样?
A: 这会导致资源浪费和管理混乱,最佳实践是仅保留587作为对外公开端口,内部网络可保留25用于MTA间通信,而465仅在特殊场景下使用(如老旧设备兼容需求),多端口并存可能引发配置冲突和安全隐患。
Q2: 如何测试本地主机能否成功通过587端口发送邮件?
A: 使用命令行工具进行端到端验证:
# 安装bsmtp并执行以下命令(替换为用户实际邮箱地址) echo "Test body" | bsmtp -t <your_email@example.com> -h mail.example.com -p 587 -u your_username -w your_password
若返回代码为250 OK且收件箱收到测试邮件,则表明配置