如何将电子邮件路由到脚本

我想要做的就是设置一个地址,例如:[email protected],它将接收到的任何邮件,并将完整的信息作为STDIN运行到shell脚本中。 我似乎无法得到这个工作,虽然。 试了几个解决scheme,包括这一个:

我如何将一些电子邮件路由到Postfix中的脚本?

但我的设置有点不同。 我有Postfix / Dovecot / MySQL设置,所以所有电子邮件都由Dovecot处理,Postfix从MySQL读取它的地图。 无论我添加到master.cf似乎没有工作。 SpamAssassin在那里有一条线,工作正常。 我卡住了!

编辑:我真的希望人们会仔细阅读之前downvoting我的问题。 我用我的别名地图MySQL,所以/ etc /别名不起作用,我已经尝试了,当然。

很明显,道格拉斯·兰德(Douglas Land)的答案是有一点补充的。
假设你只有main.cf中的$ mydestination的localhost.localdomain。
然后添加一个虚拟别名:

[email protected] -> [email protected] 

在main.cf中,您将需要:

 alias_maps=hash:/etc/aliases 

然后添加到/ etc / aliases:

 somelocaluser: "|/your/script/here" 

newaliases + postfix重新加载,你很好去。

我会用Procmail。 我们用这个parsing各种邮件给工作者脚本和IRC机器人的通知。

这里是一个如何处理电子邮件的例子 。 http://linuxgazette.net/issue14/procmail.html

相关简短的例子在这里做的简单:

  1. 例如,创build一个名为handler的本地用户。

  2. 转到handler的主目录并创build一个名为.procmailrc的文件,其中包含:

 :0 | $HOME/bin/my.script 

这将通过STDIN将整个入站电子邮件传递给脚本$HOME/bin/my.script

当我第一次尝试将电子邮件传递给脚本时,这里也是我使用Procmail获得帮助的地方: 如何使用procmail将消息传入variables

您可以通过/etc/aliasespipe道input脚本,RE:

 foo: "|/your/script/here" 

修改/etc/aliases然后运行newaliases并重新加载后缀进程。

我会检查筛是否支持pipe道脚本。 Dovecot支持sieve脚本。

作为替代scheme,你可以使用“procmail”作为后缀dovecot之间的MDA。 Procmail可以pipe道到脚本。

(说我不知道​​为什么道格拉斯土地的答案不起作用,mysql作为后端不应该做一个不同?!)“

没有提到的东西是,你可以使用多个查询表 (用逗号或空格分隔):

 virtual_alias_maps = mysql:/etc/postfix/mysql-virtual.cf alias_maps = mysql:/etc/postfix/mysql-aliases.cf hash:/etc/aliases 

第一个(virtual_alias_maps)将search电子邮件并返回用户名(例如:[email protected] – > info1234)。

然后,第二个(alias_maps)将在数据库中search用户名,如果没有find,将在/ etc / aliases中进行search。 这样,您仍然可以在MySQL中pipe理别名,并将脚本设置在/ etc / aliases中,而不需要将“@ localhost.localdomain”附加到本地用户。

要testing您的设置是否正确,请使用:

 postmap -q [email protected] mysql:/etc/postfix/mysql-virtual.cf postmap -q info1234 mysql:/etc/postfix/mysql-aliases.cf hash:/etc/aliases 

在MySQL中使用带有别名的本地帐户:

在我的自定义设置之一,我只使用本地帐户的用户和MySQL别名。 所以这是我如何设置它:

 virtual_alias_maps = hash:/etc/postfix/vusers smtpd_sender_login_maps = hash:/etc/postfix/vusers virtual_alias_domains = /etc/postfix/vhosts alias_maps = mysql:/etc/postfix/mysql-aliases.cf hash:/etc/aliases 

正如你所看到的,随时随地混合你想要的。