postfix 拒绝特定收件人的来信

postfix 拒绝特定收件人的来信

我管理一个基于 Postfix 的电子邮件服务器,该服务器有过去和当前电子邮件的副本。一些用户已经离开,但他们的电子邮件历史记录需要保留并可访问。在目前的情况下,发送给那些已经离开的用户的任何电子邮件仍可正常接收。我想阻止发送到这些帐户的任何新电子邮件。我可以看到使用 smtpd_restriction_classes 来实现这一点的方法。我是否必须将所有用户都包含在 check_recipient_access 哈希表中,还是可以只包含我想阻止的那些帐户?

smtpd_restriction_classes = restrictive, permissive
restrictive = DEFER
permissive = permit
check_recipient_access = hash:/etc/postfix/recipient_access

/etc/postfix/recipient_access:
    [email protected]  restrictive
    [email protected] restrictive

答案1

看来这种阻止是永久性的。如果您使用DEFER,Postfix 将发送临时错误代码450,导致发送 MTA 稍后重试。从RFC 5321, 4.2.1& 4.2.2:

4yz 瞬态否定完成答复

命令未被接受,请求的操作未发生。但是,错误情况是暂时的,可以再次请求操作。发送方应返回到命令序列的开头(如果有)。当两个不同的站点(接收方和发送方 SMTP 代理)必须就解释达成一致时,很难为“瞬时”赋予含义。此类别中的每个回复可能具有不同的时间值,但 SMTP 客户端应该重试。

450  Requested mail action not taken: mailbox unavailable (e.g.,
   mailbox busy or temporarily blocked for policy reasons)

550  Requested action not taken: mailbox unavailable (e.g., mailbox
   not found, no access, or command rejected for policy reasons)

我会使用错误代码550,默认永久REJECT存在access_map_reject_code= 554

然后,它check_recipient_access不再单独起作用,而是在smtpd_recipient_restrictions

smtpd_recipient_restrictions =
    permit_mynetworks,
    . . .
    check_recipient_access hash:/etc/postfix/recipient_access,
    . . .

除了错误代码之外,您还可以使用自定义的、可读的信息性错误消息:

/etc/postfix/recipient_access:
    [email protected]   550  Mailbox doesn't exist. See https://example.com/contact
    [email protected]  550  Mary no longer works at Example Ltd. Contact Jason, instead.

因为它是一个hash:数据库,所以请永远记住postmap /etc/postfix/recipient_access

相关内容