带有反垃圾邮件的 Posftix 配置

带有反垃圾邮件的 Posftix 配置

我有带有反垃圾邮件功能的 Postfix,当反垃圾邮件功能向 Postfix 返回状态 554(垃圾邮件)时,邮件会被退回给发件人。

有没有办法决定后缀 554 的另一个操作,例如拒绝。

另一个问题是:是否可以查找发件人的域并根据域决定是否退回或拒绝(查看某些域列表)。

谢谢。

答案1

确保在 main.cf 中正确设置了收件人地图,否则您可能会出现反向散射。至少这样弹回就不会那么令人反感。

为了拒绝消息,请在 main.cf 中添加一个条目,例如:

smtpd_recipient_restrictions = permit_mynetworks,
    # permit_sasl_authenticated,
    reject_non_fqdn_sender,
    reject_non_fqdn_recipient, 
    reject_unknown_sender_domain,
    reject_unlisted_recipient,          # !!! should strictly enforce relay_recipient_maps 
    reject_unknown_recipient_domain,    # less strict, probably redundant on most configurations
    reject_unauth_pipelining,
    reject_unauth_destination, 
    reject_invalid_hostname,
    reject_non_fqdn_hostname,
    # check_policy_service unix:private/spf-policy, 
    reject_multi_recipient_bounce

其中一些后续检查(例如拒绝 non_fqdn_hostname)是可取的,但在 LAN 环境中可能会出现问题或无用;permit_mynetworks 应该允许您解决这个问题。它们位于最后,因为检查 DNS 可能会占用大量 CPU。SPF 和 SASL 身份验证是可取的,但您没有说明是否使用它们。

postconf 配置

为了进行更细粒度的控制并回答您的第二个问题,请使用后缀标头检查。main.cf 得到如下一行:

header_checks = regexp:/etc/postfix/header_checks

然后 /etc/postfix/header_checks 会获取各种正则表达式

/^From: "spammer/                                               REJECT
/^Received: from .*\.pubye\.com \(.*\.pubye\.com \[.*\]\)/      REJECT

除了 REJECT 之外,您还可以执行 DISCARD,这样它将被接受,然后被丢弃。例如,要丢弃 C 类发送者:

/^Received: from .* \[104\.140\.32\..*/                         DISCARD

您可能需要使用 dovecot 的 SIEVE 或 Courier 的 maildrop 或其他工具将垃圾邮件过滤到垃圾文件夹,而不是直接拒绝。

相关内容