2009-11-22 28 views
5

我正在編寫一個Web應用程序,它需要接收用戶內部電子郵件地址的電子郵件,讓管理員批准它們,然後轉發到相應用戶的外部郵箱。Postfix message received hook

我已經安裝並配置了郵件接收任務的postfix。它使用虛擬電子郵件地址,以及存儲用戶電子郵件地址的現有數據庫。本地電子郵件存儲是maildir,我使用postfix的虛擬MDA。

基本上,我想在每次收到新消息時執行一個腳本,並且對於哪個用戶(maildir消息ID也會非常有幫助)。然後我可以從python代碼中讀取消息(python有一個用於maildir消息框的模塊)並將其插入到數據庫中。 我能想到的三種方式來做到這一點:

  • 迭代用戶maildirs和檢查 如果有任何新的消息,但它是無效的大量用戶。
  • 使用dbmail,然後檢查數據庫中是否有新消息(這會更快,但我必須從頭開始配置所有內容)。此外,現有的用戶數據表不能使用。
  • 在maildrop/virtual上寫一個包裝以保存db和maildir中的消息,但是我需要一種方法來檢查接收到的消息是否有效,並通過real MDA來成功保存。

任何建議表示讚賞!

回答

5

爲了迴應我自己的問題,我使用了帶有在管道中設置的X標記的postfix content_filter,並手動處理接收地址和消息。由於我不需要訪問maildir中的消息,所以這種方法對我來說很好。

8

/etc/aliases文件中,您可以指定一個程序,每次用戶收到郵件時都會執行該程序。該程序通過stdin獲取郵件。所以你不必輪詢,你的程序會立即運行。

+0

這將是不錯的方法,但我使用虛擬中繼機制。 – fest 2009-11-22 12:33:22