You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postfix与Rspamd配置:禁用退信邮件(Non-Delivery Notification)

Postfix与Rspamd配置:禁用退信邮件(Non-Delivery Notification)

看起来你现在遇到的问题是,当Rspamd拦截垃圾邮件后,Postfix会自动给发件人发送非送达通知(也就是常说的退信),而你希望直接拒绝垃圾邮件、不生成退信对吧?结合你的Postfix 3.8.1+Rspamd 3.6环境,我给你几个靠谱的解决办法,你可以根据实际情况挑合适的用:

方案一:针对所有被过滤的邮件禁用退信(简单粗暴型)

如果想彻底禁止Postfix发送任何退信通知,可以直接修改Postfix主配置文件/etc/postfix/main.cf,添加或调整以下参数:

# 禁用退信通知收件人
bounce_notice_recipient =
# 同时禁用错误通知收件人(可选)
error_notice_recipient =

修改后执行postfix reload让配置生效。

注意:这个方法会禁用所有退信,包括合法邮件投递失败的通知,如果你需要保留合法邮件的退信提醒,不建议用这个方案。

方案二:让Rspamd在SMTP会话阶段直接拒绝(推荐给外部邮件场景)

如果是外部发来的垃圾邮件,我们可以让Rspamd在SMTP会话的DATA阶段就拒绝邮件,这样Postfix会直接把错误返回给发送方的邮件服务器,不会生成退信。

首先确保你已经在Postfix的main.cf中配置了SMTP阶段的Milter:

smtpd_milters = inet:127.0.0.1:11332
non_smtpd_milters = inet:127.0.0.1:11332
milter_default_action = accept

然后在Rspamd的配置文件(比如local.d/actions.conf)中,确保垃圾邮件的动作设置为reject:

reject {
  score = 15; # 这里的分数对应你的垃圾邮件阈值,根据自己的实际配置调整
}

修改后重启Rspamd和Postfix,这样外部发来的垃圾邮件会在SMTP阶段被直接拒绝,不会触发退信。

方案三:针对本地提交的垃圾邮件禁用退信(解决你的测试场景)

你的测试是用sendmail本地提交邮件,这类邮件走Postfix的pickup服务,会经过non_smtpd_milters处理。如果想让这类垃圾邮件被拦截后不生成退信,有两种方式:

方式A:调整Postfix的cleanup服务

编辑/etc/postfix/master.cf,找到cleanup服务的配置行,添加-o bounce_notice_recipient=参数:

cleanup   unix  n       -       n       -       0       cleanup
    -o bounce_notice_recipient=

保存后执行postfix reload,这样所有在cleanup阶段被Milter拒绝的邮件(包括本地提交的垃圾邮件)都不会生成退信。

方式B:在Rspamd中直接丢弃本地垃圾邮件

在Rspamd的local.d/actions.conf中添加以下配置:

discard {
  condition = "mail_from_local && rspamd_score > 15";
}

这个配置会让Rspamd直接丢弃本地发件人提交的、分数超过阈值的垃圾邮件,Postfix不会生成退信。

备注:内容来源于stack exchange,提问作者user2690527

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 10:33:17