Dovecot - 致命:execv(/usr/lib/dovecot/imap-login)失败:权限被拒绝

Dovecot - 致命:execv(/usr/lib/dovecot/imap-login)失败:权限被拒绝

我正在尝试按照以下指南合理地设置我自己的邮件服务器: 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 下的日志也很有帮助。

相关内容