我在 Ubuntu 上运行带有 Postfix、Amavisd 和通过 MySQL 的虚拟用户的邮件服务器。我希望在收到电子邮件后通过外部脚本传输电子邮件正文,但仅限于一个特定的电子邮件收件人。我开始解决这个问题的方法是在 master.cf 中创建一个名为“vtimer”的新传输:
vtimer unix - n n - - pipe
flags=Fq user=vmail argv=/opt/vacationtimer.php ${recipient}
然后我在传输文件中创建了一个新条目:
[email protected] vtimer
最后,我postmap
在传输文件上运行并重新启动 Postfix(main.cf 中的条目已经存在,因为我目前还有其他功能传输)。此传输与其他传输之间的区别在于其他传输匹配主机名,但这是唯一匹配特定地址的传输。当在此地址收到电子邮件时,它不会通过此传输重定向,而是通过在没有匹配时使用的默认电子邮件。
这是解决这个问题的正确方法吗?如果是这样,我错过了什么?如果没有,我应该考虑哪些其他选项?
我怀疑您遇到的问题是传输表中命令的语法。
请注意该行末尾的“:”以建议使用的传输,并且在您的示例中缺少。
我处理类似要求的方式是在 /etc/aliases 中设置用户,并通过管道连接到脚本 -
用户名:“| 将电子邮件传送到的命令”
我设置了一个 virtual_alias_maps 条目,然后在 main.cf 文件中使用以下行设置了一个传输映射
用户名@domainname.co.nz 本地:
因此该用户被视为本地系统用户。
我认为这比在 master.cf 文件中创建条目更容易、更灵活。