通过使用自定义SMTP服务器,您可能会无意中创建安全漏洞或在某种程度上违反了SMTP协议。有这么多很棒的SMTP服务器(Postfix,exim,sendmail…),这听起来不是一个好的选择。在
我能想到的解决这个问题的最简单的方法是使用Postfix中继入站和出站电子邮件。
入站电子邮件可以配置为通过管道传输到应用程序,出站电子邮件可以配置为通过Postfix传递,可以直接发送,也可以通过其他服务器转发。在
这样,您就可以使用能够解析RFC822兼容消息文件的应用程序,而不是自定义的SMTP服务器。这比做完全相同的事情要好,但是却有实现SMTP协议的开销。在
如果您需要接收大量的消息,这种方法可能无法很好地扩展—每个消息都将fork+exec一个新的进程。如果这是一个要求,一个好的方法是保留一个自定义的SMTP服务器来完成这项工作,但是让Postfix将消息转发给它,这样您就可以在解析器前面从Postfix的体系结构中获益。在
假设您遵循将消息管道化到应用程序的方法,那么在Postfix中您需要做的就是配置Postfix的^{}'参数以查找这样的映射:alias_maps = hash:/etc/aliases, hash:/etc/postfix/app-aliases
然后,配置映射,将发送到每个地址的消息管道发送到应用程序中:test: "|/usr/local/bin/your-app"
像往常一样,别忘了$ postalias app-aliases。
这将使发送到test@yourdomain的消息通过管道传输到/usr/local/bin/your-app,它充当应用程序的电子邮件网关。在