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

請注意,我沒有測試此程式碼,它可能不會立即工作。您可以在互聯網上找到其他範例。

相關內容