我有一个在 AlmaLinux 上运行的 VPS。对于 SMTP,我使用 sendmail,它可以成功地为我的两个域名发送和接收电子邮件。我已设置 Dovecot 来处理 IMAP/POP3。我想允许 Gmail 帐户使用 Gmail 提供的“检查来自其他帐户的邮件”功能从我的一个域名(我们称之为 example.com)获取电子邮件。不幸的是,我无法让它工作。
实际情况如下:
我确信 Dovecot 已正确配置以处理 POP3 连接。在我的计算机上,我可以在命令行中输入以下内容:
openssl s_client -starttls pop3 -connect mail.example.com:110
如果我随后输入USER fake_username
和PASS fake_password
,我就可以执行 POP 命令(例如LIST
和STAT
)并得到正确的响应。
此外,我在本地计算机上配置了 Thunderbird,以使用 POP3 从 mail.example.com 阅读电子邮件。在 Thunderbird 中,我可以使用以下帐户设置阅读电子邮件:
Server Name: mail.example.com
Port: 110
User Name: fake_username
Connection Security: STARTTLS
Authentication Method: Normal Password
...电子邮件顺利送达。
但是,当我在 Gmail 中使用相同的信息(mail.example.com、端口 110、正确的用户名、正确的密码)时,我会收到两条错误消息之一,这取决于我是否选中了“检索邮件时始终使用安全连接 (SSL)”复选框。
如果我取消选中该复选框,则在网络表单上,我会看到以下错误消息:
“服务器拒绝使用给定的用户名和密码进行 POP3 访问。”
在我的服务器日志(dovecot.log
)中,我看到以下内容:
Mar 19 12:27:36 pop3-login: Info: Disconnected: Disconnected: Too many bad commands (no auth attempts in 0 secs): user=<>, rip=209.85.128.137, lip=103.72.79.234, session=<cR/KSUP3MIvRVYCJ>
如果我选中“始终使用 SSL”复选框,Gmail 前端会显示以下错误消息:
“连接到 mail.example.com 时出现问题”
在 中dovecot.log
,我看到:
Mar 19 12:27:01 pop3-login: Debug: SSL: where=0x2001, ret=1: before SSL initialization
Mar 19 12:27:01 pop3-login: Debug: SSL: where=0x2002, ret=-1: before SSL initialization
Mar 19 12:27:01 pop3-login: Debug: SSL: where=0x2002, ret=-1: before SSL initialization
Mar 19 12:27:01 pop3-login: Debug: SSL: where=0x2002, ret=-1: before SSL initialization
Mar 19 12:27:01 pop3-login: Debug: SSL: where=0x2001, ret=1: before SSL initialization
Mar 19 12:27:01 pop3-login: Debug: SSL: where=0x2001, ret=1: SSLv3/TLS read client hello
Mar 19 12:27:01 pop3-login: Debug: SSL: where=0x2001, ret=1: SSLv3/TLS write server hello
Mar 19 12:27:01 pop3-login: Debug: SSL: where=0x2001, ret=1: SSLv3/TLS write change cipher spec
Mar 19 12:27:01 pop3-login: Debug: SSL: where=0x2001, ret=1: TLSv1.3 write encrypted extensions
Mar 19 12:27:01 pop3-login: Debug: SSL: where=0x2001, ret=1: SSLv3/TLS write certificate
Mar 19 12:27:01 pop3-login: Debug: SSL: where=0x2001, ret=1: TLSv1.3 write server certificate verify
Mar 19 12:27:01 pop3-login: Debug: SSL: where=0x2001, ret=1: SSLv3/TLS write finished
Mar 19 12:27:01 pop3-login: Debug: SSL: where=0x2001, ret=1: TLSv1.3 early data
Mar 19 12:27:01 pop3-login: Debug: SSL: where=0x2002, ret=-1: TLSv1.3 early data
Mar 19 12:27:01 pop3-login: Debug: SSL: where=0x2002, ret=-1: TLSv1.3 early data
Mar 19 12:27:01 pop3-login: Debug: SSL: where=0x2002, ret=-1: TLSv1.3 early data
Mar 19 12:27:01 pop3-login: Debug: SSL: where=0x2002, ret=-1: TLSv1.3 early data
Mar 19 12:27:01 pop3-login: Debug: SSL: where=0x2001, ret=1: TLSv1.3 early data
Mar 19 12:27:01 pop3-login: Debug: SSL: where=0x2001, ret=1: SSLv3/TLS read finished
Mar 19 12:27:01 pop3-login: Debug: SSL: where=0x20, ret=1: SSLv3/TLS write session ticket
Mar 19 12:27:01 pop3-login: Debug: SSL: where=0x2001, ret=1: SSLv3/TLS write session ticket
Mar 19 12:27:01 pop3-login: Debug: SSL: where=0x2001, ret=1: SSLv3/TLS write session ticket
Mar 19 12:27:01 pop3-login: Debug: SSL: where=0x2002, ret=1: SSL negotiation finished successfully
Mar 19 12:27:01 pop3-login: Info: Login: user=<fake_username>, method=PLAIN, rip=71.232.112.192, lip=[MY SERVER'S IP ADDRESS], mpid=949498, TLS, session=<waq2R0P3fM1H6HDA>
Mar 19 12:27:01 pop3(fake_username)<949498><waq2R0P3fM1H6HDA>: Info: Disconnected: Logged out top=0/0, retr=0/0, del=0/0, size=0
Mar 19 12:27:01 pop3-login: Debug: SSL alert: close notify
在我的文件中/etc/dovecot/10-auth.conf
,唯一取消注释的行是:
auth_mechanisms = plain login
!include auth-system.conf.ext
并且没有任何与 auth 相关的内容dovecot.conf
我认为,一方面我通过命令行和在 Thunderbird 中授权会话的方式存在一些不匹配(除非我使用 ,否则 Thunderbird 无法通过 POP3 连接到 mail.example.com STARTTLS
),另一方面 Gmail 尝试连接的方式也存在一些不匹配。不幸的是,错误日志对我来说都是天书,我无法充分理解 Dovecot 文档,无法弄清楚如何让 Dovecot 授予对 Gmail 的访问权限。
有没有好心人知道这里发生了什么/可能发生什么以及我该如何解决它?
答案1
Google 并不期望使用 STARTTLS。他们期望使用 POP3S,可能在端口 995 上。您必须在 dovecot 中启用此功能。