2009-09-21 74 views
1

我想通過電子郵件從人員/設備收集某些信息。這些電子郵件絕不會傳遞給任何人,而只是在服務器上處理。收到的電子郵件將被處理 - 一些簡單地被刪除,大部分被存儲(在數據庫中),根據特定條件,附件可能被存儲或不被存儲(但從未被執行)。有限功能服務器的安全隱患

我已經使用現有的MTA軟件進行了調查,並得出結論認爲,這將是矯枉過正,並且創造出的複雜性遠高於此目的所必需的。

如果我要寫我自己的MTA軟件,我需要實現一個相當有限的功能子集 - 字面上足以接收電子郵件,不發送任何。我會盡可能減少實際的MTA軟件以減少維護量。因此,在MTA軟件收到電子郵件後,它會將其(完整)傳遞給第二塊軟件來執行處理。

電子郵件只是簡單地存儲,由發件人和他們特別允許的任何人在Web UI中檢索。某些附件將被存儲,但從未在服務器上執行,並且只能由原始電子郵件的發件人和他們提名的其他人訪問。

我對網絡安全的世界瞭解甚少 - 有了這樣一個有限的服務器,我是否開放了一種潛在的方式?我想這個問題的答案總是肯定的 - 但是我保證安全,安全但功能齊全的MTA軟件(如Postfix)的安全性不高?

如果我還沒有具體或足夠清楚,請讓我知道,謝謝!

(該服務器將是Linux的,有可能的Ubuntu。軟件最有可能用C#編寫單聲道,可能是Python或混合(C#服務器,Python的處理)下)

@·洛 我已經花了過去3天探索使用現有軟件的選項,似乎我的最佳解決方案是Postfix> Procmail>我自己的處理。 Postfix是一個完整的MTA解決方案,它需要很多配置才能接近我想要的 - 複雜性主要是配置問題,讓第三方軟件一起工作確實能夠實現我的出價。我敢肯定,熟悉配置郵件服務器和管理nix服務器的人通常會有更容易的時間,但正如我所看到的,定製解決方案不會是一個巨大的項目 - 我唯一真正關心的就是安全性。

此外,關於矯枉過正 - 我需要Postfix的一個非常有限的子集,我所看到的大部分配置都試圖禁用某些行爲。在很多方面,我寧願使用成熟,穩定的Postfix來處理我自己的解決方案,但是我覺得已經投入的時間本可以用來更有效地編寫專門用於該任務的東西。

+1

爲什麼現有的郵件傳輸軟件「過度殺傷」?使用現有的經過驗證的解決方案有什麼問題?它會創造什麼「複雜性」? – 2009-09-21 10:30:56

+0

我花了3天時間探索使用現有軟件的選項,看來我的最佳解決方案是Postfix> Procmail>我自己的處理。Postfix是一個完整的MTA解決方案,它需要很多配置才能接近我想要的 - 複雜性主要是配置問題,讓第三方軟件一起工作確實能夠實現我的出價。我相信有人精通配置郵件服務器和管理nix服務器通常會有更容易的時間,但是正如我所看到的那樣,自定義解決方案不會是一個巨大的項目 - 我唯一擔心的就是安全性 – Richter 2009-09-21 10:45:51

回答

1

如果我可以假設您收集的數據不敏感,那麼加密/隱私因此是不必要的,我認爲編寫自己的服務器的風險很小,特別是如果您遵循PaulG的建議將服務器置於防火牆DMZ。

根據你的描述,我沒有把你的服務器想象成MTA;相反,它是一個恰好講SMTP的文件傳輸服務器。讓我們看一個假設的會議和討論一些問題:

[Client connects to your server] 
< 220 Welcome message from your.server.com 
> HELO someclient.com 
< 250 your.server.com 
> MAIL From: [email protected] 
< 250 OK 
> RCPT To: [email protected]_ignored.com 
< 250 OK 
> DATA 
< 254 End data with <CR><LF>.<CR><LF> 
> client sends data here 
> . 
< 250 OK 
> QUIT 
< 221 Bye 
[Close connection] 

事情要考慮:

  • 安全的問題呢? (您是否需要防範垃圾郵件?您是否需要驗證客戶端,發件人或收件人?)如果答案爲「否」,則可以忽略遵循HELOMAILRCPT的所有內容,並無條件發送250響應。

  • 您可以將DATA.之間的所有內容轉儲到文件中進行處理。您可能需要限制大小,如果數據是純文本,處理將更容易:不是MIME - 或Base64 - 編碼,沒有附件。

  • 您的服務器將需要異常處理:它應該正常響應超時,協議錯誤和過早斷開連接。

  • 如果控制消息的內容,您可以通過將你的數據之間的一些種類的BEGIN和END線和追加saltedhash執行簡單的身份驗證和驗證。處理日期時,忽略BEGIN/END行之外的所有內容並驗證散列值。

  • 最後,我竟然說,後綴可能實際上引入比它解決更多的安全問題。憑藉其所有功能和靈活性,您確實需要了解如何正確配置它,而錯誤配置可能會將您的服務器變成垃圾郵件中繼。

祝您好運 - 請讓我們知道您選擇哪種解決方案!

+0

抱歉,延遲在回覆 - 回到大學,讓我的論文和作業離開地面,這讓我大部分時間都沒有了。 我從來沒有想過這種方式,但基本上是的,我想你可以說我使用SMTP作爲文件傳輸機制。你的最後一點是我對Postfix的最大問題,因爲我沒有使用它或類似軟件的經驗,而且它的大量功能和配置讓我厭倦了自己去做這件事。 我很欣賞所有的答案 - 他們都非常有幫助,但我會去自己去。 – Richter 2009-11-05 09:38:52

2

我沒有看到太多的問題。我會把MTA放在嚴格防火的DMZ之內。例如,數據庫將位於另一個盒子的DMZ之外。

無論您使用的是商業郵件服務器還是定製的郵件服務器,DMZ的這種使用都是很好的做法。如果定製內置是更實際的選擇,那麼你是正確的路徑

1

除非你有經驗編寫服務器軟件,我會簡單地使用Postfix作爲MTA,並使用它提供的任何接口處理消息(而不是讓它通過SMTP將郵件轉發到您的應用程序。

我會避免編寫一個新的自定義MTA,這是另一個必須實現和保護的層。

不要小看:

1-安全的複雜性,特別是如果你不是在這方面有經驗的攻擊。

2-可能的系統壽命。現在看起來似乎不值得攻擊,但如果它被擱置了10年......怎麼辦?