Dovecot / Postfix / SASL:连接到 /var/run/dovecot/auth-client 失败:权限被拒绝

Dovecot / Postfix / SASL:连接到 /var/run/dovecot/auth-client 失败:权限被拒绝

Dovecot / Postfix 配置在我的服务器上无法正常工作:经过多次检查,我了解到

  1. Imap 服务可使用本地或桌面客户端运行
  2. Postfix 正在监听,新邮件存储在 Postfix 队列中
  3. 从 postfix 队列到 vmail 文件夹的传输不起作用,而 postfix 日志提到这个重复出现的错误“SASL:连接到 /var/run/dovecot/auth-client 失败:权限被拒绝”。

这是我的 dovecot 配置。

# 2.2.15: /etc/dovecot/dovecot.conf
# OS: Linux 3.10.9-xxxx-grs-ipv6-64 x86_64 Gentoo Base System release 2.2 ext4
auth_debug = yes
auth_mechanisms = plain login
auth_verbose = yes
auth_verbose_passwords = yes
base_dir = /var/run/dovecot/
debug_log_path = /var/log/dovecot-debug.log
first_valid_gid = 12
first_valid_uid = 150
info_log_path = /var/log/dovecot-info.log
last_valid_gid = 12
last_valid_uid = 150
log_path = /var/log/dovecot.log
mail_debug = yes
mail_gid = mail
mail_location = maildir:/home/vmail/%u
mail_uid = vmail
namespace inbox {
  inbox = yes
  location = maildir:/home/vmail/%u
  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 = INBOX.
  separator = .
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
protocols = imap pop3
service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix
  }
  unix_listener auth-userdb {
    group = mail
    mode = 0600
    user = vmail
  }
}
service lmtp {
  unix_listener lmtp {
    group = postfix
    mode = 0600
    user = postfix
  }
}
ssl_cert = </etc/ssl/postfix/server.pem
ssl_key = </etc/ssl/postfix/server.key
userdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
verbose_ssl = yes

这是我的 postfix 配置。

alias_database = texthash:/etc/mail/aliases
alias_maps = texthash:/etc/mail/aliases
command_directory = /usr/sbin
compatibility_level = 2
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 1
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin; export PATH; (echo cont; echo where) | gdb $daemon_directory/$process_name $process_id 2>&1 >$config_directory/$process_name.$process_id.log & sleep 5
default_destination_concurrency_limit = 20
dovecot_destination_recipient_limit = 1
home_mailbox = .maildir/
html_directory = /usr/share/doc/postfix-2.9.0/html
inet_interfaces = all
local_destination_concurrency_limit = 2
local_recipient_maps = $virtual_mailbox_maps
mail_owner = postfix
mail_spool_directory = /var/mail
mailq_path = /usr/bin/mailq
manpage_directory = /usr/share/man
meta_directory = /etc/postfix
mydestination = $myhostname, localhost.$mydomain, $mydomain, localhost, 127.0.0.1
myhostname = ns3322776.ovh.net
mynetworks_style = host
myorigin = $myhostname
newaliases_path = /usr/bin/newaliases
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.9.0/readme
sample_directory = /etc/postfix
sendmail_path = /usr/sbin/sendmail
setgid_group = postdrop
shlib_directory = /usr/lib64/postfix/${mail_version}
smtp_tls_note_starttls_offer = yes
smtp_use_tls = yes
smtpd_client_restrictions = permit_mynetworks,reject_unknown_client
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination,permit_inet_interfaces
smtpd_relay_restrictions = permit_mynetworks,permit_sasl_authenticated,defer_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = /var/run/dovecot/auth-client
smtpd_sasl_type = dovecot
smtpd_sender_restrictions = reject_unknown_sender_domain
smtpd_tls_CAfile = /etc/ssl/postfix/server.pem
smtpd_tls_cert_file = /etc/ssl/postfix/server.crt
smtpd_tls_key_file = /etc/ssl/postfix/server.key
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
smtpd_use_tls = yes
soft_bounce = yes
unknown_local_recipient_reject_code = 550
virtual_gid_maps = static:150
virtual_mailbox_base = /home/vmail
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual_mailboxes.cf
virtual_minimum_uid = 150
virtual_transport = lmtp:unix:dovecot-lmtp
virtual_uid_maps = static:0

以下是日志

2015-02-26 11:25:22 - postfix/master - warning: process /usr/libexec/postfix/smtpd pid 22687 exit status 1
2015-02-26 11:25:22 - postfix/master - warning: process /usr/libexec/postfix/smtpd pid 22686 exit status 1
2015-02-26 11:25:22 - postfix/master - warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
2015-02-26 11:25:22 - postfix/master - warning: process /usr/libexec/postfix/smtpd pid 22685 exit status 1
2015-02-26 11:25:21 - postfix/smtpd - fatal: no SASL authentication mechanisms
2015-02-26 11:25:21 - postfix/smtpd - warning: SASL: Connect to /var/run/dovecot/auth-client failed: Permission denied
2015-02-26 11:25:21 - postfix/smtpd - connect from 39160.vs.webtropia.com[62.141.39.160]

如果有人有任何建议或任何事情请告诉我,这将非常有帮助!谢谢

答案1

您可以在 main.cf 中定义此参数

smtpd_sasl_path = /var/run/dovecot/auth-client

这告诉 postfix SASL 连接的 unix 套接字的路径。

然而,在 dovecot 配置中,您定义 SASL 套接字位于 /var/spool/postfix/private/auth 中

service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix
  }
  ...
}

尝试设置smtpd_sasl_path = private/auth并重新启动 postfix。

答案2

我也遇到了这个问题。我看不到你的日志文件,但错误如下

Jan 18 16:54:47 xxxx0 postfix/smtpd[5819]: warning: SASL: Connect to /var/run/dovecot/auth-client failed: No such file or directory
Jan 18 16:54:47 xxxx0 postfix/smtpd[5819]: fatal: no SASL authentication mechanisms
Jan 18 16:54:48 xxxx0 postfix/master[5813]: warning: process /usr/lib/postfix/sbin/smtpd pid 5819 exit status 1
Jan 18 16:54:48 xxxx0 postfix/master[5813]: warning: /usr/lib/postfix/sbin/smtpd: bad command startup -- throttling

这很难找到,因为守护进程终止了,而且令人困惑的是 /var/run/dovecot/auth-client 套接字确实存在。我记得 postfix 使用 chroot。当我只更改 master.cf 一个字符时

--- a/postfix/master.cf
+++ b/postfix/master.cf
@@ -9,7 +9,7 @@
 # service type  private unpriv  chroot  wakeup  maxproc command + args
 #               (yes)   (yes)   (no)    (never) (100)
 # ==========================================================================
-smtp      inet  n       -       y       -       -       smtpd
+smtp      inet  n       -       n       -       -       smtpd
 #smtp      inet  n       -       y       -       1       postscreen
 #smtpd     pass  -       -       y       -       -       smtpd
 #dnsblog   unix  -       -       y       -       0       dnsblog

并重新启动守护进程,没有错误消息,并且 smtpd 开始接收消息

Jan 18 17:01:05 xxxx0 postfix/smtpd[6034]: connect from mail-lf1-f49.google.com[209.85.167.49]
Jan 18 17:01:06 xxxx0 postfix/smtpd[6034]: Anonymous TLS connection established from mail-lf1-f49.google.com[209.85.167.49]: TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256
Jan 18 17:01:06 xxxx0 postfix/smtpd[6034]: 8852527CDA: client=mail-lf1-f49.google.com[209.85.167.49]
Jan 18 17:01:06 xxxx0 postfix/cleanup[6039]: 8852527CDA: message-id=<CAG7vz7oDTXmSfKOTM7YKqzVGvvXyEvtjsREaN4dXh+qJXN60BQ@mail.gmail.com>
Jan 18 17:01:06 xxxx0 postfix/qmgr[6013]: 8852527CDA: from=<[email protected]>, size=2730, nrcpt=1 (queue active)
Jan 18 17:01:06 xxxx0 postfix/virtual[6040]: 8852527CDA: to=<[email protected]>, relay=virtual, delay=0.03, delays=0.01/0.01/0/0, dsn=2.0.0, status=sent (delivered to maildir)
Jan 18 17:01:06 xxxx0 postfix/qmgr[6013]: 8852527CDA: removed
Jan 18 17:01:06 xxxx0 postfix/smtpd[6034]: disconnect from mail-lf1-f49.google.com[209.85.167.49] ehlo=2 starttls=1 mail=1 rcpt=1 bdat=1 quit=1 commands=7

经过更多的努力,我可以将套接字重新定位到 chroot。

相关内容