我在一台机器上安装了 Postfix,它是以下邮件的唯一最终目的地:
- 机器的主机名(
mail.example.org
)和localhost
- Mailman 列表
lists.example.org
- 多个虚拟域
相关设置main.cf
为:
myhostname = mail.example.org
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $myhostname
mydestination = localhost, $myorigin
relay_domains = $mydestination, lists.example.org
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
# Virtual domains
virtual_mailbox_base = /var/mail/vhosts
virtual_mailbox_domains = hash:/etc/postfix/virtual_domains
virtual_mailbox_maps = hash:/etc/postfix/virtual_mailboxes
virtual_alias_maps = hash:/etc/postfix/virtual_aliases
virtual_minimum_uid = 100
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
# mailman configuration
mailman_destination_recipient_limit = 1
transport_maps = hash:/etc/postfix/transport
smtpd_relay_restrictions = permit_mynetworks,
reject_invalid_hostname,
reject_unknown_sender_domain,
reject_unknown_recipient_domain,
reject_unauth_destination,
reject_unlisted_recipient,
reject_rbl_client zen.spamhaus.org,
permit
目前,邮件lists.example.org
通过以下设置路由到 Mailman transport_maps
:
lists.example.org mailman:
这可行,但这意味着如果将电子邮件发送到未知列表,则 Postfix 会接受该邮件,然后在 Mailman 处理时将其退回。出于多种原因(尤其是减少反向散射和尽早拒绝邮件),我希望 Postfix 在看到与Mailman 列表RCPT TO
匹配但不对应的邮件时立即拒绝邮件。@lists.example.org
我认为我可以通过创建一个包含所有 Mailman 列表别名的文件并将其指定为来实现此结果relay_recipient_maps
。main.cf
但是,我的理解是relay_recipient_maps
适用于relay_domains
,并且我不希望$mydestination
地址受到影响。
所以我的两个相关问题是:
- 我是否应该
$mydestination
从中删除relay_domains
?如果删除的话,我现有的别名还能继续起作用吗? - 如果
relay_domains
设置为lists.example.org
,会relay_recipient_maps
达到我想要的结果吗?
或者,如果 Postfix 有办法在接受邮件进行投递之前查询 Mailman 并获得响应(也许使用队列前过滤器 - 这是我处理发送给 SpamAssassin 的邮件的方式),那也能实现我想要的效果。
提前致谢。 :-)
答案1
我花了一段时间才完成这个任务,但我遵循的步骤如下:
$mydestination
从......中去除relay_domains
。- 将所有 Mailman 别名的列表添加到名为 的散列文件中
/etc/postfixo/relay_recipient_maps
。 - 添加
relay_recipient_maps = hash:/etc/postfix/relay_recipient_maps
到main.cf
在进行任何垃圾邮件检查之前以及将邮件交给 Mailman 之前,发送到不存在列表的电子邮件现在作为初始 SMTP 事务的一部分被拒绝。