我正在寻找更换我们目前使用的外部smtp提供商与内部安装。 它应该处理以下情况:
某些地址应该被转发到Gmail地址; 我们希望继续使用Gmail作为我们的主要电子邮件界面。
其他地址应该是pop / imap邮箱。
其他地址将以编程方式处理:他们将启动各种任务,获取日志logging等。这些地址应该启动一个进程处理电子邮件地址,或应存储在一个易于处理的格式。
它还应该可以通过域密钥,spf以及允许电子邮件发送所需的其他任何东西来很容易地进行configuration。
我在遥远的过去使用过sendmail。 看来postfix和exim是这几天推荐的选项。 我的主要问题是:什么是最好的select和设置的地址转发到Gmail和编程访问? procmail仍然是要走的路,还是有更好的select这些天?
我们正在使用linux / ubuntu服务器。
后缀是坚实的,支持良好,易于configuration。 你所描述的所有东西都是相当常规的。
对于编程的东西,你必须知道程序/脚本将作为UID运行。
例如,对于后缀,从/ etc / aliases(或任何其他根拥有的别名文件)运行的脚本将作为“nobody”用户运行。
postfix能够拥有多个别名文件,并且(这里是好的部分)从别名文件运行的程序将作为拥有该文件的用户运行(除root之外 – 如前所述,由root拥有的别名文件以无人运行)。
如果您需要以root身份运行邮件脚本,那么最简单的方法(如果您安装了sudo)是configurationsudo以允许“nobody”以root用户的身份运行而不需要密码,并从运行的包装脚本运行它它与sudo。
注意:无论何时从邮件触发脚本,您都必须记住,数据(即邮件)来自不受信任的来源(互联网)….所以使用来自正文或标题的数据是非常不安全的参数由脚本执行的命令。 这与在CGI脚本中信任用户提供的数据基本上是相同的问题 – 只是不这样做。 例如,如果用户提供的数据是“…无害的数据…; rm -rf /”,那么考虑一下写得不好的脚本可以做什么。 你可能会认为检查分号等明显的东西很容易,但是还有很多非显而易见的事情需要检查,你只需要设置自己的因为你不可能想到或抓住所有人。 更安全地完全消除安全风险,仅仅是不信任用户提供的数据。
无论脚本运行的是什么UID都是很重要的,但是当它以root身份运行时,这一点尤为重要。
最后,要回答你的直接问题之一,procmail仍然是你想要做的一个有用的工具。 maildrop和其他类似的程序也是如此。 把procmail等当作parsing正文和头文件的专门工具来决定做什么,所以你不必在脚本中拥有所有的parsing代码。 编写你的脚本只是做它的工作,并使用procmail来决定何时应该运行脚本。 例如,您可以创build一个名为“mailjobs”的新用户,该用户拥有自己的主目录和.procmailrc文件。 然后创build将邮件转发给该用户的别名。 然后mailjobs的.procmailrc将检查X-Original-To头来决定运行哪个脚本。
exim和postfix都可以做你所需要的,最好的build议是select一个最容易使用和/或最熟悉的。
至于处理向gmail和脚本的转发,最好的方法是使用全局别名文件 (通常保存在/ etc / aliases或/ etc / mail / aliases中)。