在 Ubuntu 上搭建加密的邮件服务器,核心目标是:
✅ 传输加密(SMTP / IMAP / POP3)
✅ 身份认证加密
✅ 防止明文密码和数据泄露
下面按必须 → 推荐 → 进阶给你一个完整、可落地的方案。
常见组合(推荐):
| 功能 | 软件 |
|---|---|
| SMTP(发信) | Postfix |
| IMAP / POP3(收信) | Dovecot |
| 用户认证 | Dovecot SASL |
| 加密证书 | Let’s Encrypt |
sudo apt install certbot
sudo certbot certonly --standalone -d mail.example.com
证书路径:
/etc/letsencrypt/live/mail.example.com/
fullchain.pem
privkey.pem
⚠️ 邮件服务器必须使用 真实域名
编辑:
sudo nano /etc/postfix/main.cf
添加或修改:
# TLS 证书
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.example.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.example.com/privkey.pem
# 启用 TLS
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
# 加密等级
smtpd_tls_security_level = encrypt
smtpd_tls_loglevel = 1
# 端口
smtpd_tls_received_header = yes
编辑:
sudo nano /etc/postfix/master.cf
确保有:
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_tls_auth_only=yes
重启:
sudo systemctl restart postfix
✅ 效果:
编辑:
sudo nano /etc/dovecot/conf.d/10-ssl.conf
ssl = required
ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem
编辑:
sudo nano /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = yes
auth_mechanisms = plain login
确保监听:
protocols = imap pop3
端口:
重启:
sudo systemctl restart dovecot
✅ 必须做到:
防止中间人攻击(进阶)
Postfix 默认支持:
smtp_tls_security_level = may
适合企业级安全
sudo ufw allow 25
sudo ufw allow 587
sudo ufw allow 465
sudo ufw allow 143
sudo ufw allow 993
sudo ufw allow 995
openssl s_client -connect mail.example.com:587 -starttls smtp
openssl s_client -connect mail.example.com:993
❌ 用自签证书 → 客户端不信任
❌ 25 端口允许明文登录
❌ 忘了开 587
❌ 证书过期(Let’s Encrypt 90 天)
✅ Let’s Encrypt 证书
✅ SMTP 587 + STARTTLS
✅ IMAP 993 / POP3 995 SSL
✅ 禁止明文认证
✅ Postfix + Dovecot
如果你愿意,我可以:
你现在用的是 Postfix + Dovecot 吗?还是别的?