![尽管虚拟用户已存在,Postfix/Dovecot 设置仍会抛出“用户不存在”](https://linux22.com/image/782001/%E5%B0%BD%E7%AE%A1%E8%99%9A%E6%8B%9F%E7%94%A8%E6%88%B7%E5%B7%B2%E5%AD%98%E5%9C%A8%EF%BC%8CPostfix%2FDovecot%20%E8%AE%BE%E7%BD%AE%E4%BB%8D%E4%BC%9A%E6%8A%9B%E5%87%BA%E2%80%9C%E7%94%A8%E6%88%B7%E4%B8%8D%E5%AD%98%E5%9C%A8%E2%80%9D.png)
我已经根据虚拟设置和 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(密件抄送)收件人。这通常在外部内容过滤器之前指定。
这显然行不通。一旦删除,它现在似乎可以工作了。