検索しましたが、答えが見つからず、アイデアも尽きています。postfix と dovecot について十分な知識がないため、構成を解析したり、このエラーの原因を理解したりできません。
warning: SASL: Connect to /var/spool/postfix/private/auth failed: No such file or directory
fatal: no SASL authentication mechanisms
SASL を使用して外部クライアント (例: Thunderbird) から postfix に接続できません。明らかな原因であることを期待していますが、わかりません。
/var/spool/postfix/private/auth
存在します。所有者はpostfixです。Dovecotはユーザーとしてpostfixを使用するように設定されていますDovecot が実行中で、リッスンしています:
unix 2 [ ACC ] STREAM LISTENING 241906 12768/dovecot /var/spool/postfix/private/auth
postconf -n
出力:alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases append_dot_mydomain = no biff = no broken_sasl_auth_clients = yes compatibility_level = 2 inet_interfaces = all inet_protocols = all local_recipient_maps = $virtual_mailbox_maps local_transport = virtual mailbox_size_limit = 0 milter_default_action = accept milter_protocol = 2 mydestination = $myhostname, my-server.my-server.com, my-server, localhost.localdomain, localhost myhostname = my-server mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 myorigin = /etc/mailname non_smtpd_milters = inet:localhost:12301 readme_directory = no recipient_delimiter = + relay_domains = $mydestination, proxy:pgsql:/etc/postfix/pgsql/relay_domains.cf relayhost = smtp_sasl_auth_enable = yes smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) smtpd_milters = inet:localhost:12301 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination smtpd_sasl_auth_enable = yes smtpd_sasl_authenticated_header = yes smtpd_sasl_path = /var/spool/postfix/private/auth smtpd_sasl_security_options = noanonymous smtpd_sasl_type = dovecot smtpd_tls_cert_file = /etc/letsencrypt/live/mail.my-server.com/fullchain.pem smtpd_tls_key_file = /etc/letsencrypt/live/mail.my-server.com/privkey.pem smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtpd_use_tls = yes virtual_alias_maps = proxy:pgsql:/etc/postfix/sql/psql_virtual_alias_maps.cf, proxy:pgsql:/etc/postfix/sql/psql_virtual_alias_domain_maps.cf, proxy:pgsql:/etc/postfix/sql/psql_virtual_alias_domain_catchall_maps.cf virtual_gid_maps = static:113 virtual_mailbox_base = /var/mail/vmail virtual_mailbox_domains = proxy:pgsql:/etc/postfix/sql/psql_virtual_domains_maps.cf virtual_mailbox_limit = 512000000 virtual_mailbox_maps = proxy:pgsql:/etc/postfix/sql/psql_virtual_mailbox_maps.cf, proxy:pgsql:/etc/postfix/sql/psql_virtual_alias_domain_mailbox_maps.cf virtual_minimum_uid = 113 virtual_transport = virtual virtual_uid_maps = static:113
dovecot -n
出力:# 2.2.33.2 (d6601f4ec): /etc/dovecot/dovecot.conf # Pigeonhole version 0.4.21 (92477967) # OS: Linux 4.15.0-66-generic x86_64 Ubuntu 18.04.3 LTS ext4 auth_mechanisms = plain login first_valid_uid = 113 log_path = /var/log/dovecot.log login_greeting = My Mail Server mail_location = maildir:/var/mail/vmail/%u/ mail_max_userip_connections = 50 mail_plugins = " zlib" 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 Spam { special_use = \Junk } mailbox Trash { special_use = \Trash } prefix = type = private } passdb { driver = pam } passdb { args = /etc/dovecot/dovecot-sql.conf driver = sql } plugin { zlib_save = gz zlib_save_level = 6 } protocols = imap pop3 service auth { group = postfix unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0666 user = postfix } unix_listener auth-userdb { group = postfix mode = 0666 user = postfix } user = postfix } service imap-login { inet_listener imaps { port = 993 ssl = yes } } service imap { executable = imap } ssl_cert = </etc/letsencrypt/live/mail.my-server.com/fullchain.pem ssl_client_ca_dir = /etc/ssl/certs ssl_key = # hidden, use -P to show it userdb { driver = passwd } userdb { args = /etc/dovecot/dovecot-sql.conf driver = sql } protocol imap { mail_plugins = " zlib imap_zlib" }
答え1
Debian などの一部のディストリビューションでは、postfix はデフォルトで chroot で実行されます。chroot は見かけ上のルート ディレクトリを変更するため、postfix はユーザーと同じようにファイル システムを認識しません。/var/spool/postfix/private/auth
ファイルが存在し、そのファイルが postfix によって所有されているにもかかわらず、 postfix がファイル システムを認識しないのは、このためです。
chroot なしで postfix を実行したい場合は、 を編集して、関連する各項目 (私の場合はすべて) に対して/etc/postfix/master.cf
chroot 列を明示的に に設定します。暗黙のデフォルトを使用する場合でも、一部のディストリビューションのメンテナーによって変更されたコンパイル デフォルトが原因で、chroot が引き続き発生する可能性があることに注意してください。n
-
/etc/postfix/マスター.cf:
# =============================================================
# service type private unpriv chroot wakeup maxproc command
# (yes) (yes) (yes) (never) (100)
# =============================================================
smtp inet n - n - - smtpd
chroot 操作を希望する場合は、chroot 用に posfix を準備するためのドキュメントを参照してください。基本構成README#chroot_setup