收到郵件後執行指令

收到郵件後執行指令

我該如何設定 Postfix 在收到發送到給定地址/使用者名稱的電子郵件或包含某些文字的電子郵件時執行命令?

答案1

沒有任何方法可以匹配文本,但您可以將所有訊息轉發到程式的某個位址。

您需要將別名新增至系統別名檔案(通常是 /etc/postfix/aliases)或使用者的 .forward 檔案中。第一個選項具有更好的靈活性,因為您可以為實際上未對應到帳戶的位址設定別名。

別名應該是這樣的

|/usr/local/bin/command

您應該提供完整路徑,因為您不知道它將在其中執行的上下文。

如果你的程式以 67 退出,那麼這將以未知用戶的身份退回該訊息,0 將丟棄該訊息。將重試其他任何操作,直到訊息逾時並退回。

請注意安全性 - 您基本上允許互聯網上的任何人在您的系統上運行程序,因此不要信任用戶輸入,並在使用之前對其進行清理。

答案2

我已經有一段時間沒有經常使用 Postfix 了,但是 IIRC 它通常與相當基本的 MDA 捆綁在一起,但這仍然可以理解用戶主目錄中的 .forward 文件,您需要閱讀文檔和您的 postfix 配置查找MDA 的配置。

所有 MDA(恕我直言)的父親是 procmail。您可以在 main.cf 中用 procmail 取代目前的 MDA - 請參閱http://www.postfix.org/faq.html#procmail

Procmail 讀取使用者主目錄中的檔案以決定如何處理訊息。這不僅僅是一個設定檔——它更像是一種程式語言。它當然能夠滿足您的要求。

C。

相關內容