在debian上设置一个邮件服务器,将其redirect到一个parsing器脚本

我有一个运行在Debian上的服务器(example.com),它没有configuration为接收电子邮件(至less我从来没有做过任何努力)。 根据我的理解,我只需要创build一个指向example.com的MX DNS条目即可接收邮件。

现在,一旦我收到电子邮件,我希望头+身体pipe道到一个脚本(可能会去),将parsing的内容,并将其添加到数据库)。

我听说我可以使用procmail,但这是我需要的吗? 我不需要设置一些能够接收来自MX路由的电子邮件吗?

PS:它看起来像后缀在我的服务器上运行(后做一个PS辅助),是我的MDA? 这是我必须configuration添加一些procmail魔术吗?

如果Postfixconfiguration正确,它将知道如何运行Procmail开箱即用。 只需创build一个简单的.procmailrc文件并发送一条消息。 详细的指导,例如http://www.iki.fi/era/mail/procmail-debug.html,但在你花时间回答这个问题之前,请仔细阅读。 最后一段build议你不要。

你不需要绝对需要Procmail。 我相信你可以configurationPostfix直接写入你的Go程序。 但是,除非您的程序具有极强的抗失效性,否则Procmail提供了一个安全脚手架,至less在开发过程中可以作为安全networking使用。

要将用户帐户[email protected]的每封邮件的副本作为goprogram标准input,帐户所有者的/home/you/.procmailrc只需要

 # If goprogram is in a nonstandard directory, # add it to PATH PATH=$HOME/go/bin:$PATH :0c | goprogram 

显然,请确保您有权执行goprogram ,并且您的PATH包含安装它的目录。 (你可以很明显的将pipe道连接到/path/to/goprogram并保持PATH /path/to/goprogram ,但是如果事情变得不平凡的话,你应该避免乱抛垃圾给.procmailrc并且在shell中使用硬编码的path,就像Procmail默认的PATH列表/bin:/usr/bin:/usr/local/bin等许多标准的系统级位置)

c标志导致Procmail把它当作次要目的地,所以每个消息也将被写入默认的收件箱/var/mail/you (或者也许是用户主目录中的Maildir )。 一旦你确信你的goprogram不会丢失邮件(testing磁盘满了,内存不足等),你可以取出c ,也许最终直接从Postfix master.cf运行,并摆脱Procmail和Unix用户帐户you赞成一个虚拟用户。

从技术上讲,Postfix是你的MTA和MSA; 它知道如何使用Procmail(或Maildrop,或其他一些替代品)作为MDA。 为了获得MXlogging,您需要MX指向的主机上的MTA。 一个正确configuration的Postfix只需要被告知哪个域名应该接受入站stream量(基本上是myoriginrelay_domains ,但是应该准备好作为主MX

如果你不熟悉这个领域,你应该避免运行你自己的邮件服务器。 例如Amazon SES允许您轻松地在每封邮件中运行您的脚本,而无需担心稳定,安全的电子邮件服务的相当大的pipe理负担和高的学习曲线。