Postfix

Postfix 拒絕尋找新使用者

  • June 9, 2020

我最近在我們的 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,向他們發送電子郵件也沒有問題。非常奇怪的錯誤,但最終很容易修復

引用自:https://unix.stackexchange.com/questions/587648