我们刚刚将我们的电子邮件迁移到新服务器,但新系统无法识别客户端登录尝试,在邮件日志中显示消息“已断开连接(0 秒内未进行身份验证尝试):用户 = <>”。
这个问题几乎毫无疑问是因为一个或多个配置文件没有被复制或正确配置,或者可能是因为没有安装身份验证系统。唯一的问题是,哪一个?
系统是基本的postfix + dovecot。复制过来的配置文件都是/etc/postfix和/etc/dovecot的配置文件。
在服务器设置期间,使用 yum 安装了 dovecot 和 postfix。
该服务器是 Rackspace 服务器上的 Fedora 19,安装的其他应用程序只有 MySQL 和 Apache。
Postfix 和 Dovecot 均启动时没有显示任何错误消息。
鸽舍-n
# 2.2.7: /etc/dovecot/dovecot.conf
# OS: Linux 3.11.4-201.fc19.x86_64 x86_64 Fedora release 19 (Schrödinger’s Cat)
auth_mechanisms = cram-md5 plain
auth_verbose = yes
disable_plaintext_auth = no
mbox_write_locks = fcntl
namespace inbox {
location =
mailbox Drafts {
special_use = \Drafts
}
mailbox Junk {
special_use = \Junk
}
mailbox Sent {
special_use = \Sent
}
mailbox "Sent Messages" {
special_use = \Sent
}
mailbox Trash {
special_use = \Trash
}
prefix =
}
passdb {
args = scheme=cram-md5 /etc/cram-md5.pwd
driver = passwd-file
}
passdb {
driver = pam
}
service auth {
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0660
user = postfix
}
}
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem
userdb {
args = uid=vmail gid=vmail home=/var/spool/vhosts/%d/%n /etc/dovecot/userdb
driver = static
}
userdb {
driver = passwd
}
大约每秒一次,日志中会添加如下一行:
dovecot: imap-login: Disconnected (no auth attempts in 1 secs): user=<>, rip=1.2.3.4, lip=9.A.B.C, TLS handshaking: Disconnected, session=
大约每隔 3 分钟就会添加三组如下的行:
dovecot: imap-login: Login: user=<[email protected]>, method=CRAM-MD5, rip=1.1.1.1, lip=2.2.2.2, mpid=17131, session=<BS5K3XPrqAC8HJXQ>
gp8 dovecot: imap([email protected]): Error: user [email protected]: Initialization failed: Namespace '': Mail storage autodetection failed with home=/var/spool/vhosts/example.com/username
gp8 dovecot: imap([email protected]): Error: Invalid user settings. Refer to server log for more information.
不管怎样,看起来好像收到的邮件被正确地投递到了 maildir。
我接受了 MadHatter 对此问题的回答,结果发现是(大量)缺少 dovecot 配置文件。虽然接受的答案没有准确指出这一点,但它确实让我仔细检查了已复制的内容。
我现在对 dovecot 还有一个问题,但将提出另一个问题来解决它。
答案1
根据我们上面的评论,问题似乎与 SSL/TLS 有关。您告诉我有问题的客户端未配置为使用 SSL 或 TLS,但在dovecot -n
您问题的输出中,行
ssl = required
出现。我怀疑当客户端连接到纯文本服务(端口 143)时,守护进程(配置为需要加密)会立即尝试启用 TLS。由于客户端未配置此功能,它会忽略升级安全性的尝试,导致服务器感到沮丧并断开连接并显示日志错误
TLS handshaking: Disconnected