ubuntu邮件服务器端口设置问题
小樊
41
2025-12-06 23:50:00
Ubuntu 邮件服务器端口设置与最佳实践
一、端口用途与推荐策略
- 下表给出常见端口、用途与建议开放策略(面向公网发信与客户端收信的常见组合):
| 端口 |
协议 |
用途 |
加密与方向 |
建议 |
| 25/TCP |
SMTP |
服务器间邮件传输(MTA→MTA) |
明文/STARTTLS,入站+出站 |
必开(云厂商可能限制,见下文) |
| 587/TCP |
SMTP Submission |
客户端发信(MUA→MTA) |
STARTTLS,入站 |
必开(推荐强制加密) |
| 465/TCP |
SMTPS |
客户端发信(隐式 SSL) |
SSL/TLS,入站 |
可选(与 587 二选一或并存) |
| 110/TCP |
POP3 |
客户端收信 |
明文/STARTTLS,入站 |
可选(建议用 IMAP) |
| 995/TCP |
POP3S |
客户端收信 |
SSL/TLS,入站 |
可选 |
| 143/TCP |
IMAP |
客户端收信 |
明文/STARTTLS,入站 |
推荐 |
| 993/TCP |
IMAPS |
客户端收信 |
SSL/TLS,入站 |
推荐 |
- 说明:
- 25 端口常被运营商/云平台限制或阻断,用于对外投递时可能被拦截;客户端发信请优先使用 587/Submission。
- 现代客户端更推荐 IMAP(143/993) 而非 POP3(110/995),便于多端同步与服务器侧规则生效。
二、防火墙放行端口(UFW 示例)
- 启用并放行必要端口(按需精简):
- 启用默认策略并放行邮件端口:
- sudo ufw default deny incoming
- sudo ufw default allow outgoing
- sudo ufw allow 25/tcp
- sudo ufw allow 587/tcp
- sudo ufw allow 465/tcp # 可选
- sudo ufw allow 143/tcp
- sudo ufw allow 993/tcp # 推荐
- sudo ufw allow 110/tcp # 可选
- sudo ufw allow 995/tcp # 可选
- sudo ufw enable
- sudo ufw status verbose
- 如需仅允许特定来源访问(例如仅公司出口网段访问 25/587):
- sudo ufw allow from 203.0.113.0/24 to any port 25,587
- 注意:云服务器(如部分公有云)可能默认封禁或限制 25 端口出站,需要在控制台安全组/防火墙策略中放开或申请解封后再测试。
三、Postfix 与 Dovecot 关键配置
- Postfix(/etc/postfix/main.cf 片段,示例值按需替换):
- myhostname = mail.example.com
- mydomain = example.com
- myorigin = $mydomain
- inet_interfaces = all
- inet_protocols = ipv4(或 ipv6)
- mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
- mynetworks = 127.0.0.0/8 [::1]/128(仅本机中继;对外发信请配合 SASL/SMTP 认证)
- home_mailbox = Maildir/
- Dovecot(核心与认证,示例):
- /etc/dovecot/dovecot.conf:protocols = imap pop3
- /etc/dovecot/conf.d/10-mail.conf:mail_location = maildir:~/Maildir
- /etc/dovecot/conf.d/10-auth.conf:disable_plaintext_auth = yes;auth_mechanisms = plain login
- /etc/dovecot/conf.d/10-ssl.conf:ssl = yes;ssl_cert = </etc/ssl/certs/ssl-cert-snakeoil.pem;ssl_key = </etc/ssl/private/ssl-cert-snakeoil.key
- 证书与 TLS(两种常见做法,二选一或并存):
- 自签或现有证书:在 Dovecot 的 10-ssl.conf 中直接配置 ssl_cert/ssl_key。
- Let’s Encrypt 证书(推荐):
- 获取证书后,在 Postfix 中配置:
- smtp_tls_cert_file = /etc/letsencrypt/live/example.com/fullchain.pem
- smtp_tls_key_file = /etc/letsencrypt/live/example.com/privkey.pem
- 在 Dovecot 10-ssl.conf 中配置相同路径的证书与密钥,确保证书包含用于服务器名称的 SAN 或正确 CN。
四、连通性与功能测试
- SMTP 基础连通与 EHLO 测试(明文端口 25 或 Submission 587):
- telnet mail.example.com 25
- 连接成功后输入:EHLO mail.example.com,看到 250 响应即表示服务可达;输入 QUIT 退出。
- 加密端口测试(SMTPS 465 / IMAPS 993 / POP3S 995):
- 使用 OpenSSL 验证握手与证书:
- openssl s_client -connect mail.example.com:993 -servername mail.example.com
- 客户端验证:
- 使用 Thunderbird/Outlook 配置账户,IMAP 使用 143/993(STARTTLS/SSL),SMTP 使用 587/465(STARTTLS/SSL),验证登录与收发。
五、DNS 与合规要点
- 必须配置正确的 DNS 记录 才能对外收发:
- A 记录:mail.example.com → 服务器公网 IP
- MX 记录:example.com → 优先级 10 mail.example.com
- 为提升到达率与合规性,建议同时部署 SPF、DKIM、DMARC 等标准记录(本文不展开具体记录值,请按域名实际配置)。
- 若遇到 25 端口不通:
- 检查云厂商安全组/防火墙策略是否放行入站/出站 25;
- 若无法放开,使用 587/Submission 作为客户端发信端口,对外投递依赖上游智能主机或邮件网关。