Postfix

Postfix 中 Mailman 的早期郵件拒絕

  • March 27, 2016

我在一台機器上安裝了 Postfix,這是唯一的最終郵件目的地:

  1. 機器的主機名 ( mail.example.org) 和localhost
  2. 郵遞員名單上lists.example.org
  3. 多個虛擬域

中的相關設置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 forlists.example.org是通過以下transport_maps設置路由到 Mailman 的:

lists.example.org mailman:

這是可行的,但這意味著如果一封電子郵件被發送到一個未知列表,則該郵件會被 Postfix 接受,然後在 Mailman 處理時被退回。出於幾個原因——特別是減少反向散射和儘早拒絕郵件——我希望 Postfix 在看到RCPT TO匹配@lists.example.org且不對應於 Mailman 列表時立即拒絕郵件。

我想我可以通過創建一個包含所有 Mailman 列表別名的文件並將其指定relay_recipient_mapsmain.cf. 但是,我的理解是這relay_recipient_maps適用於relay_domains,並且我不希望$mydestination地址受到影響。

所以我的兩個相關問題是:

  1. $mydestination我應該從中刪除relay_domains嗎?如果我這樣做了,我現有的別名會繼續工作嗎?
  2. 如果relay_domains設置為lists.example.org,會relay_recipient_maps達到我想要的結果嗎?

或者,如果 Postfix 有辦法在接受郵件進行投遞之前查詢 Mailman 並獲得響應(可能使用隊列前過濾器 - 這就是我處理髮送給 SpamAssassin 的郵件的方式),那也可以實現我想要的。

提前致謝。:-)

我花了一段時間才開始這樣做,但我遵循的步驟是:

  1. $mydestination從中刪除relay_domains
  2. 將所有 Mailman 別名的列表添加到名為/etc/postfixo/relay_recipient_maps.
  3. 補充:relay_recipient_maps = hash:/etc/postfix/relay_recipient_mapsmain.cf

現在,作為初始 SMTP 事務的一部分,在任何垃圾郵件檢查完成之前以及在郵件移交給 Mailman 之前,發送到不存在列表的電子郵件都會被拒絕。

引用自:https://serverfault.com/questions/735559