我想通过虚拟邮箱收到的电子邮件运行脚本。 我希望在虚拟邮箱目录中使用.forward来做到这一点,但似乎并没有执行脚本。
这个想法是通过munpack提取附件到另一个目录,但只有当发送到该邮箱。
邮件服务器是Postfix。
我之前使用过的一个选项是定义你自己的交付包装(我使用maildrop实际交付 – 但这应该与任何工作),那么你可以在那里做你的东西。 在master.cf是这样的:
maildrop unix - nn - - pipe flags=Rhu user=vmail:vmail argv=/usr/bin/maildrop-wrapper -d ${user}@${nexthop} -f ${sender} -A X-Delivery:maildrop
在maildrop包装,做你的东西,然后只是调用真正的maildrop:
#!/bin/bash #do your stuff #and/or: exec /usr/bin/maildrop $@
你可以在调用maildrop之前或之后运行它, 重要的注意事项 :脚本将通过stdin接收邮件,所以如果你打算稍后将它传递给maildrop(上面的例子没有这样做),你将不得不缓冲它。 我可能会推荐使用perl,因为这里有更多的邮件处理库,而不是裸机。
编辑:如果你只想为单个用户这样做,那么这是矫枉过正,看看maildrop – 特别是有关“外部命令”通过反引号的部分。 使用所需的规则为此用户定义一个maildroprc。