有限功能服务器的安全含义

时间:2009-09-21 10:08:44

标签: security email smtp mta

我想通过电子邮件从人/设备收集某些信息。这些电子邮件永远不会传递给任何人,而只是在服务器上处理。接收的电子邮件将被处理 - 一些只是丢弃,大多数存储(在数据库中),附件可能存储也可能不存储(但从未执行),具体取决于某些条件。

我已经使用现有的MTA软件进行了调查,并得出结论认为这样做太过分了,并且造成了远远超出此目的所需的复杂性。

如果我要编写自己的MTA软件,我需要实现一个相当有限的功能子集 - 足以接收电子邮件,不发送任何内容。我会保持实际的MTA软件尽可能薄,以尽量减少维护量。因此,在MTA软件收到电子邮件后,它会将其(完整地)传递给执行处理的第二个软件。

电子邮件只是存储,由发件人和他们特别允许的任何其他人在Web UI中检索。某些附件将被存储,但从未在服务器上执行,并且只能由原始电子邮件的发件人和他们提名的其他人访问。

我对网络安全的世界知之甚少 - 如此有限的服务器,我开辟了一条潜在的方式吗?我想这个问题的答案总是肯定的 - 但是我用一个维护良好,安全但功能齐全的MTA软件(如Postfix)安全吗?

如果我没有具体或清楚,请告诉我,谢谢!

(服务器将是Linux,可能是Ubuntu。很可能是用Mono编写的C#软件,可能是Python或混合(C#服务器,Python处理))

@ S. Lott 我花了3天时间探索使用现有软件的选项,看来我的最佳解决方案是Postfix> Procmail>我自己的处理。 Postfix是一个完整的MTA解决方案,它采用了大量配置来接近我想要的东西 - 复杂性主要是配置问题,让第三方软件协同工作做我的竞标。我确信有人精通配置邮件服务器和管理nix服务器通常会有更简单的时间,但正如我所看到的那样,自定义解决方案不会是一个庞大的项目 - 我唯一真正关心的是安全性。

同样关于矫枉过正 - 我需要Postfix所做的非常有限的子集,而我所看到的大部分配置都试图禁用某些行为。在许多方面,我宁愿使用成熟,稳定的Postfix而不是我自己的解决方案,但我觉得已经投入的时间可以更有效地用于编写专门用于任务的东西。

3 个答案:

答案 0 :(得分:2)

我没有看到太多问题。我会把MTA放在一个严格防火墙的DMZ里面。例如,数据库将位于另一个盒子的DMZ之外。

无论您使用的是商业邮件服务器还是定制的邮件服务器,都可以使用DMZ。如果定制是更实用的选择那么你就走在了正确的道路上

答案 1 :(得分:1)

除非您有编写服务器软件的经验,否则我只需使用Postfix作为MTA,并使用它提供的任何接口处理消息(而不是让它通过SMTP将邮件转发到您的应用程序。

我会避免编写新的自定义MTA,这只是您必须实现和保护的另一个层。

不要低估:

1-安全的复杂性,特别是如果您没有在该区域受到攻击的经历。

2-系统可能的寿命。它现在看起来似乎不值得攻击,但如果它被搁置了10年又会怎样......?

答案 2 :(得分: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: address@ignored.com
< 250 OK
> RCPT To: another_address@also_ignored.com
< 250 OK
> DATA
< 254 End data with <CR><LF>.<CR><LF>
> client sends data here
> .
< 250 OK
> QUIT
< 221 Bye
[Close connection]

要考虑的事情:

  • 安全是一个问题吗? (您是否需要防范垃圾邮件?您是否需要验证客户端,发件人或收件人?)如果答案为“否”,您可以忽略HELOMAIL之后的所有内容,以及RCPT并无条件发送250回复。

  • 您可以将DATA.之间的所有内容转储到文件中进行处理。您可能希望限制大小,如果数据是纯文本,则处理会更容易:不是MIME - 或Base64 - 编码,没有附件。

  • 您的服务器需要异常处理:它应该优雅地响应超时,协议错误和过早断开连接。

  • 如果您控制邮件内容,则可以通过在某些BEGIN和END行之间放置数据并附加salted hash来执行简单的身份验证和验证。处理日期时,请忽略BEGIN / END行以外的所有内容并验证哈希值。

  • 最后,我甚至说postfix实际上可能引入比解决的更多安全问题。凭借其所有功能和灵活性,您确实需要了解如何正确配置它,错误配置可以将您的服务器变成垃圾邮件中继。

祝您好运 - 请告诉我们您选择的解决方案!