我正在设置一个邮件服务器http://workaround.org/ispmail/squeeze/setting-up-dovecot。我以前曾成功地做到过,这次唯一的问题是 dovecot 已升级到版本 2,并带有一些不同的配置文件。
根据 dovecot 的文档,我将旧的 dovecot.conf 从版本 1.2.15 转换过来。然后我做了一些看似合乎逻辑的小改动。
Dovecot 启动了,但不允许我从命令行通过 telnet localhost 110 进行简单的手动登录。我收到错误:
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
当我查看正在运行的 dovecot 进程时,我看到:
116:root 5139 0.0 0.0 21516 884 ? Ss 09:41 0:00 /usr/sbin/dovecot -c /etc/dovecot/dovecot.conf
117:dovecot 5142 0.0 0.0 13044 1044 ? S 09:41 0:00 dovecot/anvil
118:root 5143 0.0 0.0 13172 1212 ? S 09:41 0:00 dovecot/log
119:root 5145 0.0 0.0 23424 3212 ? S 09:41 0:00 dovecot/config
124:root 5374 0.0 0.0 7832 888 pts/1 S+ 09:57 0:00 grep -n --color=always dovecot
仅此而已。我没有看到 pop3-login 和 imap-login 进程,而我期望看到它们。
但是如果我使用 netstat -tap,我确实会看到端口正在正确监听:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 *:pop3 *:* LISTEN 3960/dovecot
tcp 0 0 *:imap2 *:* LISTEN 3960/dovecot
如果有人能告诉我为什么我不能登录,我将非常感激。Dovecot 日志没有显示任何有用的信息。这不是防火墙问题,因为我已经把它删除了。
下面请查看我的配置文件设置。
谢谢。
# 2.1.7: /etc/dovecot/dovecot.conf
# OS: Linux 3.2.0-4-amd64 x86_64 Debian 7.1 ext3
auth_debug = yes
auth_debug_passwords = yes
auth_mechanisms = plain login
auth_verbose = yes
debug_log_path = /var/log/dovecot/dovecot-debug.log
disable_plaintext_auth = no
log_path = /var/log/dovecot/dovecot-deliver.log
log_timestamp = "%Y-%m-%d %H:%M:%S "
mail_debug = yes
mail_location = maildir:/var/vmail/%d/%n/Maildir
mail_plugins = " quota"
mail_privileged_group = mail
namespace inbox {
inbox = yes
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 {
driver = pam
}
passdb {
args = /etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
plugin {
quota = maildir:storage=1000000
sieve = ~/.dovecot.sieve
sieve_dir = ~/sieve
sieve_global_path = /var/vmail/globalsieverc
}
protocols = " imap pop3"
service auth {
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0660
user = postfix
}
unix_listener auth-master {
mode = 0600
user = vmail
}
user = root
}
service imap-login {
inet_listener imap {
port = 143
}
inet_listener imaps {
port = 993
ssl = yes
}
}
service imap {
process_limit = 1024
}
service pop3-login {
inet_listener pop3 {
port = 110
}
inet_listener pop3s {
port = 995
ssl = yes
}
}
service pop3 {
process_limit = 1024
}
ssl_cert = </etc/dovecot/dovecot.pem
ssl_cert_username_field = example.com
ssl_key = </etc/dovecot/private/dovecot.pem
ssl_key_password = secretsecret
userdb {
driver = passwd
}
userdb {
args = uid=5000 gid=5000 home=/var/vmail/%d/%n allow_all_users=yes
driver = static
}
verbose_ssl = yes
protocol lda {
auth_socket_path = /var/run/dovecot/auth-master
log_path = /var/log/dovecot/dovecot-deliver.log
mail_plugins = sieve
postmaster_address = [email protected]
}
protocol imap {
mail_plugins = " quota imap_quota"
}
protocol pop3 {
mail_plugins = " quota"
pop3_uidl_format = %08Xu%08Xv
}
}
答案1
解决了 -
就我而言,我之前创建了自己的 SSL 证书,并尝试让 dovecot 使用该证书。当 dovecot 无法正常工作时,我返回到 dovecot 默认安装的 SSL PEM。但我忘记注释掉以下两行:
ssl_cert_username_field = example.com
ssl_key_password = secretsecret
均位于 conf.d/10-ssl.conf 中。
这些与我创建的 SSL 证书相关。它们与 dovecot 的默认 pem 无关。
一旦我注释掉这两行,一切就开始正常工作了。
一旦我决定使用不同的非 dovecot pem,我必须取消它们的注释。
答案2
尝试通过 telnet 连接后,检查邮件日志:/var/log/maillog。Dovecot 可能已启动,但配置中仍有错误。我通过这种方式发现了由配置错误导致的错误。