
我已經根據虛擬設定和 LMTP 傳輸的文件配置了 Postfix 和 Dovecot:
https://www.postfix.org/VIRTUAL_README.html
/usr/local/etc/postfix/main.cf:
virtual_transport = lmtp:unix:/path/name/to/socket
virtual_mailbox_domains = example.com example2.com
virtual_mailbox_maps = hash:/usr/local/etc/postfix/vmailbox
virtual_alias_maps = hash:/usr/local/etc/postfix/virtual
/usr/local/etc/postfix/vmailbox:
[email protected] whatever
[email protected] whatever
/usr/local/etc/postfix/virtual:
[email protected] [email protected]
/usr/local/etc/dovecot/users:
[email protected]:{SHA512-CRYPT}$6$/kTQFQ[...]/::::::userdb_quota_rule=*:storage=2048M
[email protected]:{SHA512-CRYPT}$6$/kTQFQ[...]/::::::userdb_quota_rule=*:storage=2048M
如果我從外部位址發送電子郵件,它會被接受並透過 LMTP 正確傳輸。一般來說,一切都如預期進行。
在這個例子中,當我從以下地址發送電子郵件時[電子郵件受保護]透過經過驗證的 SMTP 提交至[電子郵件受保護],它總是拋出:
<[email protected]>: host mx.example.com[private/dovecot-lmtp] said: 550 5.1.1
<[email protected]> User doesn't exist: [email protected] (in reply
to RCPT TO command)
我知道該錯誤是由 Dovecot 的 LMTP 引發的。我不明白的是,為什麼一切都可以從未經身份驗證的外部地址運行,但在我自己發送經過身份驗證的地址時卻不起作用。
我很感謝任何指點。如果需要更多配置數據,請告訴我,我會添加它。
答案1
在 Postfix 中master.cf
有一個我不記得做過的設定:
-o receive_override_options=no_address_mappings
根據 Postfix 文檔,這正如其名稱所示:
停用規範位址對映、虛擬別名映射擴充、位址偽裝和自動 BCC(密件副本)收件者。這通常是在外部內容過濾器之前指定的。
這顯然行不通。一旦刪除,它現在似乎可以工作了。