我正在使用 mailman3,遇到了这个问题:mailman3、Web 界面以及 hyperkitty 都是使用 mailman-bundler 安装的。我已将规定的 postfix 配置添加到main.cf
:
recipient_delimiter = +
unknown_local_recipient_reject_code = 550
owner_request_special = no
transport_maps = hash:/path/to/var/data/postfix_lmtp
local_recipient_maps = hash:/path/to/var/data/postfix_lmtp
relay_domains = hash:/path/to/var/data/postfix_domains
列出的文件是全球可读的,因此不应该存在权限问题。我可以通过 Web 界面成功创建域/列表,但当我尝试向列表地址发送邮件时,邮件被拒绝,并显示以下消息:
Recipient address rejected: User unknown in virtual mailbox table
此 postfix 安装通常使用 来virtual_transport
向 dovecot 投递邮件。相应的配置如下:
virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf
local_recipient_maps = $virtual_mailbox_maps
这是基于优秀的两小时内让您的电子邮件通过 NSA 防护指导。
现在,这个 StackOverflow 问题声称virtual_transport
和transport_maps
不能很好地协同工作,尽管我在后缀文档中找不到任何可以验证这一说法的内容。作者已经解决了他们的问题,只使用transport_maps
对我来说似乎不是一个选择。
请注意,我还收到一条警告,local_recipient_maps
mailman3 中的选项会覆盖 dovecot 交付中先前的定义。可以通过在一行中指定两个值来解决此问题,如下所示:
local_recipient_maps = $virtual_mailbox_maps hash:/path/to/var/data/postfix_lmtp
但这并不能解决问题。有人有什么想法或经验可以解决这个问题吗?我意识到 mailman3 仍然被认为是新的。这就是我使用它的原因。
答案1
我已经搞清楚了。事实证明,链接的 StackOverflow 问题中的说法是错误的。确实可以将virtual_transport
和transport_maps
一起使用。我的问题是,用于确定的 SQL 查询virtual_mailbox_maps
自然只会1
在数据库中定义邮箱时返回。一旦该检查失败,消息就会被拒绝。
-- from: mysql-virtual-mailbox-maps.cf
query = SELECT 1 FROM virtual_users WHERE name = 'name = '%s'
将 mailman3 映射添加到virtual_mailbox_maps
设置中解决了我的问题。这是我的工作配置:
virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf hash:/path/to/var/data/postfix_lmtp
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf
local_recipient_maps = hash:/path/to/var/data/postfix_lmtp mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
transport_maps = hash:/path/to/var/data/postfix_lmtp
它设置virtual_transport
为默认transport_maps
到 dovecot 但允许通过将列表地址映射到 mailman 本地传输来覆盖它。