尽管虚拟用户已存在,Postfix/Dovecot 设置仍会抛出“用户不存在”

尽管虚拟用户已存在,Postfix/Dovecot 设置仍会抛出“用户不存在”

我已经根据虚拟设置和 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(密件抄送)收件人。这通常在外部内容过滤器之前指定。

这显然行不通。一旦删除,它现在似乎可以工作了。

相关内容