Postfix 拒絕尋找新使用者
我最近在我們的 LDAP 目錄中添加了一個新使用者帳戶。但不知何故,Postfix 在發送電子郵件時只是拒絕找到該使用者。
帳戶登錄無處不在。我們的郵件伺服器是具有自己的 LDAP 的專用伺服器,但這只是鏡像主 LDAP。它看起來不像 LDAP 的錯誤。電子郵件目錄已創建,並且條目確實正確顯示在 LDAP 目錄中。但是在登錄時,使用者只會收到“未選擇郵箱”的消息(Webmailer 是 SOGo)。而且這還不夠,當嘗試向該使用者發送電子郵件時,它就無法正常工作,無論是來自 SOGo 還是其他客戶。
日誌說
Apr 30 12:03:14 mail postfix/smtpd[1355]: NOQUEUE: reject: RCPT from localhost[127.0.0.1]: 550 5.1.1 <user@domain.de(opens in new tab)>: Recipient address rejected: User unknown in local recipient table; from=<me@domain.de(opens in new tab)> to=<user@domain.de(opens in new tab)> proto=ESMTP helo=<localhost>
通過將“local_recipient_maps =”行添加到後綴 main.cfg 來禁用本地收件人表時,錯誤更改為
Mai 02 12:59:04 mail postfix/local[8909]: 1EA11100379: to=<user@domain.de(opens in new tab)>, relay=local, delay=0.22, delays=0.13/0.01/0/0.08, dsn=5.1.1, status=bounced (unknown user: "user")
我想不出任何解決這個問題的辦法。由於配置錯誤,我可以找到關於該主題的唯一討論。但關鍵是很長一段時間沒有對配置進行任何更改。唯一改變的是收到更新的包。而那個新使用者目前是我所知道的唯一一個遇到任何問題的人。
關於我們的設置:
Debian 10.4 執行夜間版本的 SOGo 4、postfix 3.4、slapd 2.4.47 和 dovecot 2.3.4.1 和 pigeonhole 0.5.4。
後綴配置:
# See /usr/share/postfix/main.cf.dist for a commented, more complete version # Debian specific: Specifying a file name will cause the first # line of that file to be used as the name. The Debian default # is /etc/mailname. #myorigin = /etc/mailname smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) biff = no # appending .domain is the MUA's job. append_dot_mydomain = no # Uncomment the next line to generate "delayed mail" warnings #delay_warning_time = 4h readme_directory = /usr/share/doc/postfix # TLS parameters smtpd_tls_cert_file=/etc/ssl/certs/mail.domain.de.cert.pem smtpd_tls_key_file=/etc/ssl/private/mail.domain.de.private.pem smtp_tls_CAfile = /etc/ssl/certs/CA.crt smtpd_tls_mandatory_ciphers = high smtpd_tls_mandatory_exclude_ciphers = aNull, MD5 tls_high_cipherlist=!EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:!CAMELLIA256:+AES256:!CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:!CAMELLIA256-SHA:AES256-SHA:!CAMELLIA128-SHA:AES128-SHA smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1 smtpd_use_tls=yes smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtpd_tls_dh1024_param_file = /etc/ssl/private/dhparams.pem smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for # information on enabling SSL in the smtp client. myhostname = mail.domain.de alias_maps = hash:/etc/aliases virtual_alias_maps = mysql:/etc/postfix/mysql-forwards.cf alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = domain.de, mail.domain.de relayhost = smarthost.maindomain.de mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 mailbox_size_limit = 0 message_size_limit = 67108864 mailbox_command = /usr/lib/dovecot/deliver -d $USER recipient_delimiter = + inet_interfaces = all html_directory = /usr/share/doc/postfix/html # Mailman config relay_domains = lists.domain.de transport_maps = hash:/etc/postfix/transport mailman_destination_recipient_limit = 1 relay_recipient_maps = hash:/var/lib/mailman/data/virtual-mailman # disable VRFY and EXPN command as per ITC recommendation disable_vrfy_command = yes # Older configurations combine relay control and spam control. To # use this with Postfix ≥ 2.10 specify "smtpd_relay_restrictions=". smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks smtpd_relay_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination # Configuration for rspamd smtpd_milters=inet:localhost:11332 non_smtpd_milters = inet:localhost:11332 milter_protocol = 6 milter_mail_macros = i {mail_addr} {client_addr} {client_name} {auth_authen} milter_default_action = accept
PS:如果後綴配置看起來很奇怪,我們的郵件伺服器沒有直接連接到網際網路。我們通過組織網路從組織中央伺服器獲取電子郵件。
好的,我現在發現了(非常奇怪的)錯誤。使用者身份驗證由 pam 通過 LDAP 完成。由於某種原因,nslcd 拒絕從本地 LDAP 獲取最新使用者。搜尋 LDAP 直接顯示所有內容,但
id username
對於最新的使用者,剛剛返回“未找到使用者”。我檢查了幾次配置,並將其與我們的桌面 Linux 機器的配置進行了比較。唯一的區別是桌面機器執行的是 Debian 11 testing 而不是 10 stable,並且它使用了主 LDAP。我通過將郵件伺服器上的 nslcd 設置為主 LDAP 然後返回到本地 LDAP 目錄來修復錯誤。現在它甚至可以找到新使用者
id username
,向他們發送電子郵件也沒有問題。非常奇怪的錯誤,但最終很容易修復