我在容器中安装了 docker-mailserver 和 Roundcube,旁边还有用于存储邮件数据和用户密码的 MySQL 数据库。Dovecot 内部配置为使用数据库验证登录用户密码。昨天我配置了 IMAP,它运行正常。Roundcube 也运行正常。现在我在配置 SMTP 安全连接时遇到了问题。即使设置了“require”和类似“始终使用 STARTTLS”,我也无法使用安全连接发送电子邮件。普通(不安全)连接可以正常工作。
我的postfix-main.cf
文件:
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/dovecot/fullchain.pem
smtpd_tls_key_file = /etc/dovecot/privkey.pem
smtpd_tls_eecdh_grade = strong
smtpd_tls_protocols= !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_mandatory_protocols= !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_mandatory_ciphers = high
smtpd_tls_security_level=may
smtpd_tls_ciphers = high
tls_preempt_cipherlist = yes
smtpd_tls_mandatory_exclude_ciphers = aNULL, MD5 , DES, ADH, RC4, PSD, SRP, 3DES, eNULL
smtpd_tls_exclude_ciphers = aNULL, MD5 , DES, ADH, RC4, PSD, SRP, 3DES, eNULL
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
# smtpd_tls_auth_only = yes
# smtp_use_tls = yes
# smtp_enforce_tls = yes
# smtpd_enforce_tls = yes
如果我取消注释最后 4 行,则无法通过 Roundcube 发送电子邮件(SMTP 服务器需要安全连接,但服务器上未在 Roundcube 端配置安全连接)。而且也无法从我的家用 Thunderbird 保护 SMTP 通信。使用不安全连接的 TB 可以正常工作。
我在这里看过文档:
http://www.postfix.org/SASL_README.html
但这并没有多大帮助。
使 postfix/dovecot 与 STARTTLS 一起工作需要什么正确的配置?
编辑:
配置: https://pastie.io/hxcfkw.ini
我得到的连接信息是:
# telnet localhost 587
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 mail.correct_domain.com ESMTP
EHLO test.com
250-mail.correct_domain.com
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 CHUNKING
^]
telnet> quit
Connection closed.
因此看起来服务器没有提供任何安全性。
编辑2:
我看过这个链接:
但那里什么也帮不了我。TB 不断与邮件服务器上的 STARTTLS 断开连接。