Postfix:退回收到的电子邮件,但仍可发送

Postfix:退回收到的电子邮件,但仍可发送

我运行自己的邮件服务器,但有人给我发了“垃圾邮件”。为了阻止这个人再给我发邮件,我想退回收到的邮件(基于他的电子邮件地址)。但我仍然希望邮件能够送达,因为它可能成为网络骚扰的“证据”。

我的想法是将收到的电子邮件发送到两个帐户(在 virt-user-table 中)。一个帐户接受电子邮件,另一个帐户通过发送失败的电子邮件将其退回。

可以这样做吗?我该如何在 Postfix 中进行设置?

先感谢您。

答案1

基本上,您不希望邮件在这里被退回,但对于某些发件人,您的服务器仍应生成额外的消息。

您可以编写一个脚本来构建一条消息,好像退回(例如创建“假退回”),并进行安排,以便来自该发件人的消息触发此脚本,此外即可正常发货。

其中一种方法是设置always_bcc某个别名,并且该别名的目标应该是脚本路径以管道为前缀,因此脚本将运行并输入要解析的消息。消息将出现在 stdin 中。然后脚本可以解析消息,检查发件人地址,然后成功退出,不执行任何操作或创建虚假退回。由于这只是消息的额外接收者,因此它不会改变标准邮件接收路径;邮件仍将传递给其最初目的地。但请确保脚本总是成功存在(例如,从未因任何非零错误代码而失败),否则发送者将要有真正的弹性,相当神秘。

另外/etc/aliases

bcc_script: |/usr/local/bin/bcc_script.py

newaliases(编辑此文件后不要忘记运行)。

另外/etc/postfix/main.cf

always_bcc = bcc_script

将会/usr/local/bin/bcc_script.py以类似这样的方式开始:

#!/bin/env python3

import sys, email

try:
    msg = email.message_from_bytes(sys.stdin.read()) 

    if msg['From'] != '[email protected]':
        sys.exit(0)

    # creating of the fake bounce here
    ...

except Exception:
    pass
    # do nothing, fail silently to avoid bounces if the code above throws runtime error

请注意,我尚未测试此代码,因此它可能无法立即工作。您可以在互联网上找到其他示例。

相关内容