Dovecot 不被 Postfix 用作 LDA
我嘗試使用 Postfix、Dovecot 和 LDAP 在 Ubuntu 上設置郵件伺服器。到目前為止,我可以使用 Postfix 發送和接收郵件,並且可以使用 LDAP 使用者通過 telnet(埠 143)連接到 Dovecot。
作為下一步,我想按照 R. Hildebrandt 和 PB Koetter 的 Postfix 一書中的建議將 Dovecot 配置為我的 LDA。到目前為止,Postfix 嘗試使用本地守護程序將郵件傳遞給本地收件人。
到目前為止,我配置了以下內容(實際域由example.com替換):
在/etc/dovecot/conf.d/15-lda.conf中啟動 dovecot 傳遞:
protocol lda { postmaster_address = postmaster@example.com } service auth { unix_listener auth-master { mode = 0600 user = vmail } }
在/etc/postfix/master.cf中設置 dovecot :
dovecot unix - n n - - pipe flags=ODRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -e -f ${sender} -d ${recipient}
在/etc/postfix/main.cf中配置虛擬傳輸:
virtual_transport = dovecot dovecot_destination_recipient_limit = 1
當我發出命令時,
echo foo | /usr/sbin/sendmail -f ttester@dtvvolleyball.de ttester@dtvvolleyball.de
我收到以下日誌輸出:postfix/qmgr[25582]: 2AA0060E36: from=<ttester@example.com>, size=272, nrcpt=1 (queue active) postfix/local[26102]: 2AA0060E36: to=<ttester@example.com>, relay=local, delay=0.01, delays=0.01/0/0/0, dsn=5.1.1, status=bounced (unknown user: "ttester")
使用者
ttester
存在於 LDAP 樹中並且可以被 Dovecot 找到。例如,如果我deliver
手動發出命令,則會發送郵件。但是,僅當 a不指定域時:/usr/lib/dovecot/deliver -e -f ttester@example.com -d ttester
總結一下這個問題,我懷疑由於某種原因 Postfix 沒有將傳遞委託給 Dovecot。非常感謝任何幫助。
提前致謝!
這是
postconf -n
產生的結果:alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases append_dot_mydomain = no biff = no config_directory = /etc/postfix inet_interfaces = all mailbox_command = procmail -a "$EXTENSION" mailbox_size_limit = 0 mydestination = $mydomain, $myhostname, localhost, localhost.$mydomain myhostname = mail.example.com mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 myorigin = /etc/mailname readme_directory = no recipient_delimiter = + relayhost = smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) smtpd_data_restrictions = reject_multi_recipient_bounce smtpd_helo_required = yes smtpd_recipient_restrictions = reject_non_fqdn_recipient reject_non_fqdn_sender reject_unknown_recipient_domain reject_unknown_sender_domain permit_mynetworks reject_sender_login_mismatch reject_unauth_destination check_recipient_access hash:/etc/postfix/roleaccount_exceptions reject_multi_recipient_bounce reject_non_fqdn_helo_hostname reject_invalid_helo_hostname check_helo_access pcre:/etc/postfix/helo_checks check_sender_mx_access cidr:/etc/postfix/bogus_mx permit smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtpd_use_tls = yes virtual_transport = dovecot
Postfix 將使用地址類來確定發送電子郵件的域類及其傳輸方式。
根據您的
postconf
輸出,$domain
/example.com
列在 中mydestination
,因此它將使用本地地址類並使用$local_transport
參數 (runpostconf local_transport
) 來傳遞電子郵件。這就是
virtual_transport
後綴忽略的原因。建議的解決方案是從 mydestination 中刪除 $mydomain 並將其放入virtual_mailbox_domains
.