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

Postfix配置咨询:如何实现拒收特定发件人邮件同时留存邮件作为证据

Postfix配置咨询:如何实现拒收特定发件人邮件同时留存邮件作为证据

嘿,这个需求完全可以实现!既留存骚扰邮件当证据,又给对方发退信来劝退,下面给你一步步拆解具体的配置方法:

核心思路

通过虚拟别名转发,把特定发件人的邮件同时送到两个目的地:一个是你的真实收件箱(留存证据),另一个是专门用来触发退信的虚拟地址(给对方返回投递失败的提示)。

具体配置步骤

1. 标记需要拦截的特定发件人

首先创建一个文件用来记录骚扰者的邮箱地址,比如/etc/postfix/spammer_list,内容格式如下:

spammer@example.com OK

把spammer@example.com替换成实际的骚扰者邮箱,每个地址一行。然后执行命令生成哈希表:

postmap /etc/postfix/spammer_list

2. 配置虚拟别名,实现邮件双转发

编辑你的虚拟用户表(比如/etc/postfix/virtual或者你正在用的virt-user-table),添加以下规则:

# 正常邮件只投递到你的真实收件箱
you@yourdomain.com you@yourdomain.com

# 仅针对骚扰者的邮件,同时转发到真实收件箱和退信虚拟地址
/^(you@yourdomain.com)$/i ${1}, bounce-spammer@yourdomain.com, if=${lookup{$sender_address}hash:/etc/postfix/spammer_list}

把you@yourdomain.com替换成你的实际收件邮箱,bounce-spammer@yourdomain.com是我们用来触发退信的虚拟地址(可以随便命名,只要是你域名下的有效虚拟地址就行)。

然后更新虚拟别名的哈希表:

postmap /etc/postfix/virtual

3. 配置退信虚拟地址的行为

现在需要让bounce-spammer@yourdomain.com这个地址收到邮件时,自动返回一个永久投递失败的退信给发件人。我们可以用Postfix的transport_maps来实现:

  • 创建/etc/postfix/transport文件,添加一行:

    bounce-spammer@yourdomain.com error:5.1.1 User unknown
    

    这里的5.1.1是标准的“收件人不存在”错误码,会让对方的邮箱服务器认为你的地址无效,从而停止投递。你也可以换成其他合适的错误码,比如5.7.0(投递失败)。

  • 生成transport的哈希表:

    postmap /etc/postfix/transport
    
  • 确保你的main.cf配置文件中包含以下参数(如果没有就添加):

    transport_maps = hash:/etc/postfix/transport
    virtual_alias_maps = hash:/etc/postfix/virtual  # 或者你实际的virt-user-table路径
    

4. 重启Postfix使配置生效

最后执行命令重启Postfix服务:

systemctl restart postfix

验证效果

现在可以用骚扰者的邮箱发一封测试邮件到你的地址:

  • 你会在真实收件箱收到这封邮件(留存证据)
  • 骚扰者会收到一封来自你邮箱服务器的退信,提示“收件人不存在”或类似的投递失败信息

注意事项

  • 确保你的Postfix服务器没有开启bounce_queue_lifetime过短的设置,避免退信被过早丢弃
  • 如果你用的是虚拟化邮箱(比如配合Dovecot),要保证虚拟别名的配置优先级正确,不会影响正常邮件投递

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 09:19:05