我正在尝试按照以下指南合理地设置我自己的邮件服务器: http://sealedabstract.com/code/nsa-proof-your-e-mail-in-2-hours/
我刚刚开始测试配置,似乎无法获得 SSL 连接。
当我运行此命令时:
openssl s_client -prexit -state -debug -connect localhost:993
它说“SSL 握手已读取 0 个字节并写入 298 个字节”,检查 /var/log/dovecot.log 显示:
致命:execv(/usr/lib/dovecot/imap-login)失败:权限被拒绝
这很奇怪,因为ls -lL /usr/lib/dovecot | grep imap-login
渲染:
drwxrwxrwx 2 mail dovecot 4096 7月8日 12:25 imap-login
和http://wiki.dovecot.org/UserIds似乎表明这些许可应该足够了。
因为我真的不知道这里发生了什么dovecot -n
:
# 2.1.7: /etc/dovecot/dovecot.conf
# OS: Linux 4.0.4-x86_64-linode57 x86_64 Debian 7.8
auth_debug = yes
auth_mechanisms = plain login
first_valid_uid = 0
log_path = /var/log/dovecot.log
mail_location = mbox:~/mail:INBOX=/decrypted-mail/%d/%n
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 {
args = /etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
plugin {
sieve = ~/.dovecot.sieve
sieve_dir = ~/sieve
}
protocols = imap pop3 lmtp
service auth-worker {
user = mail
}
service auth {
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0666
user = postfix
}
unix_listener auth-userdb {
mode = 0600
user = mail
}
user = dovecot
}
service imap-login {
inet_listener imap {
port = 0
}
}
service lmtp {
unix_listener lmtp {
group = postfix
mode = 0666
user = postfix
}
user = mail
}
service pop3-login {
inet_listener pop3 {
port = 0
}
}
ssl = required
ssl_cert = </etc/ssl/certs/dovecot.pem
ssl_key = </etc/ssl/private/dovecot.pem
userdb {
args = uid=mail gid=mail home=/decrypted-mail/%d/%n
driver = static
}
userdb {
args = uid=5000 gid=5000 home=/var/vmail/%d/%n allow_all_users=yes
driver = static
}
我做错什么了?
答案1
您还没有配置 IMAP 端口。
service imap-login {
inet_listener imap {
port = 0
}
inet_listener imaps {
port = 993
ssl = yes
}
}
如果你输入netstat -tulpen
你现在应该会看到如下一行
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 0 5728257 23418/dovecot
现在服务器将监听端口 993。
答案2
对我来说这是一个 AppArmor 问题。
这根本不是 Dovecot 或权限的问题,您可能拥有所有权限但仍然会收到此错误。
问题出在新的内核模块 AppArmor 上,至少对我来说是这样。当我尝试启动 Dovecot 时,我收到一条消息“致命错误:execv(/usr/libexec/dovecot/log) 失败:权限被拒绝”。
解决此问题
我们必须将以下几行添加到文件/etc/apparmor.d/local/usr.sbin.dovecot:
/var/log/dovecot rw,
/var/log/dovecot/error.log rw,
/var/log/dovecot/info.log rw,
/var/log/dovecot/debug.log rw,
/usr/libexec/dovecot/managesieve Puxmr,
/usr/libexec/dovecot/log Puxmr,
/usr/libexec/dovecot/anvil Puxmr,
/usr/libexec/dovecot/config Puxmr,
/usr/libexec/dovecot/stats Puxmr,
/usr/libexec/dovecot/imap-login Puxmr,
/usr/libexec/dovecot/auth Puxmr,
/usr/libexec/dovecot/imap Puxmr,
/etc/letsencrypt/live/artemisa.soft-gator.com/fullchain.pem r,
/etc/letsencrypt/live/artemisa.soft-gator.com/privkey.pem r,
network,
我们必须确保已创建日志文件。此外,查看 /var/log/messages 下的日志也很有帮助。