我想要做的就是设置一个地址,例如:[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
相关简短的例子在这里做的简单:
例如,创build一个名为handler的本地用户。
转到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
正如你所看到的,随时随地混合你想要的。