Postfix
Postfix 中 Mailman 的早期郵件拒絕
我在一台機器上安裝了 Postfix,這是唯一的最終郵件目的地:
- 機器的主機名 (
mail.example.org
) 和localhost
- 郵遞員名單上
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
目前,mail for
lists.example.org
是通過以下transport_maps
設置路由到 Mailman 的:
lists.example.org mailman:
這是可行的,但這意味著如果一封電子郵件被發送到一個未知列表,則該郵件會被 Postfix 接受,然後在 Mailman 處理時被退回。出於幾個原因——特別是減少反向散射和儘早拒絕郵件——我希望 Postfix 在看到
RCPT TO
匹配@lists.example.org
且不對應於 Mailman 列表時立即拒絕郵件。我想我可以通過創建一個包含所有 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 的郵件的方式),那也可以實現我想要的。
提前致謝。:-)
我花了一段時間才開始這樣做,但我遵循的步驟是:
$mydestination
從中刪除relay_domains
。- 將所有 Mailman 別名的列表添加到名為
/etc/postfixo/relay_recipient_maps
.- 補充:
relay_recipient_maps = hash:/etc/postfix/relay_recipient_maps
到main.cf
現在,作為初始 SMTP 事務的一部分,在任何垃圾郵件檢查完成之前以及在郵件移交給 Mailman 之前,發送到不存在列表的電子郵件都會被拒絕。