2014-02-20 58 views
1

我正在構建需要發送和接收電子郵件的應用程序。在python應用程序(無IMAP或POP3)中發送和接收電子郵件

但是我不希望有一個獨立的電子郵件服務器(或使用IMAP和POP3),因爲我需要創建/刪除/在飛行管理收件箱,沒有電子郵件收件箱密碼等

我有一個電子郵件存儲數據庫,我可以通過使用自定義smtpd服務器接收電子郵件,替換postfix。但是,這樣我就無法通過postfix發送郵件(使用smtplib,通過端口25連接到後綴併發送電子郵件)

任何解決此問題的解決方案?如何使用自定義smtp服務器發送電子郵件?我可以配置postfix將所有傳入的電子郵件轉發到運行在另一個端口上的自定義smtp服務器,並且仍然使用端口25上的postfix發送電子郵件?

感謝您的時間

回答

3

通過使用自定義的SMTP服務器,運行在不經意間產生的安全漏洞或違反以某種方式SMTP協議的風險。有很多很棒的SMTP服務器(Postfix,exim,sendmail ......),這聽起來對我來說不是一個好的選擇。

我能想到解決這個問題的最簡單方法是使用Postfix來中繼入站和出站電子郵件。 可以將入站電子郵件配置爲傳送到應用程序,並且可以將出站電子郵件配置爲由Postfix直接傳遞或通過其他服務器傳遞。

這樣,您可以使用能夠解析RFC822兼容消息文件的應用程序來代替自定義SMTP服務器。這比完成同樣的事情要好,但是必須實施SMTP協議。

如果您需要接收大量的消息,這種方法可能無法很好地擴展 - 每條消息都會fork + exec一個新進程。如果這是一個需求,一個好的方法是讓自定義的SMTP服務器來完成這項工作,但讓Postfix轉發它的消息 - 然後您將從解析器前的Postfix架構中受益。

假設你遵循管道將消息發送到應用程序的方法,你只需要在後綴做的是

  1. 配置後綴的alias_maps「參數來尋找這樣的地圖:

    alias_maps = hash:/etc/aliases, hash:/etc/postfix/app-aliases 
    
  2. 然後,配置在地圖上,以管的消息發送到每個地址轉換成一個應用程序:

    test:   "|/usr/local/bin/your-app" 
    
  3. 像往常一樣,不要忘了$ postalias app-aliases

這將使發送到[email protected]消息被輸送進/usr/local/bin/your-app,其充當電子郵件網關到應用程序。

+0

同時,通過直接從郵件傳輸代理入站隊列中獲取電子郵件,這個應用程序也應該做到這一點。我會檢查兩種選擇,看看哪個更好。 – Isidoro

+1

看起來更像是一個掃描儀模塊而不是MDA。你可能會更好地服務於[procmail](http://www.procmail。org /)或[maildrop](http://www.courier-mta.org/maildrop/)。 –

相關問題