在 Debian 上搭建邮件服务器时,“认证”通常指 SMTP 发信认证(SMTP AUTH),以及可选的 POP3/IMAP 登录认证。下面按常见方案给你一个清晰说明。
✅ 推荐方案:
Postfix + Dovecot + SASL 认证
Postfix 本身不存密码,它通过 Dovecot SASL 做认证:
邮件客户端
↓ (SMTP AUTH)
Postfix
↓ (SASL)
Dovecot
↓
系统用户 / 数据库
sudo apt update
sudo apt install postfix dovecot-core dovecot-imapd dovecot-pop3d
安装 Postfix 时:
编辑:
sudo nano /etc/dovecot/conf.d/10-master.conf
找到 service auth:
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}
编辑:
sudo nano /etc/dovecot/conf.d/10-auth.conf
确保:
disable_plaintext_auth = no
auth_mechanisms = plain login
!include auth-system.conf.ext
(默认已包含)
编辑:
sudo nano /etc/postfix/main.cf
添加或修改:
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions =
permit_sasl_authenticated
reject_unauth_destination
smtpd_relay_restrictions =
permit_sasl_authenticated
reject_unauth_destination
sudo adduser mailuser
然后用客户端测试:
telnet localhost 25
EHLO test
AUTH LOGIN
或使用:
swaks --to user@domain.com --from you@domain.com \
--server localhost --auth LOGIN \
--auth-user mailuser --auth-password 密码
✅ 使用 587(Submission) 而非 25
✅ 启用 TLS
smtpd_tls_cert_file = /etc/letsencrypt/live/domain/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/domain/privkey.pem
smtpd_use_tls = yes
✅ 禁用明文认证(生产环境):
disable_plaintext_auth = yes
❌ 认证失败
→ 检查 /var/log/mail.log
❌ Postfix 无法连 Dovecot
→ 权限:/var/spool/postfix/private/auth
❌ 能收不能发
→ 未加 permit_sasl_authenticated
如果你愿意,可以告诉我:
我可以直接给你一套可复制的配置文件。