我在 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 中的条目已经存在,因为我目前有其他功能传输)。此传输与其他传输之间的区别在于,其他传输匹配主机名,但这是唯一匹配特定地址的传输。当在此地址收到电子邮件时,它不会通过此传输重定向,而是通过当没有匹配时使用的默认传输。
这是正确的做法吗?如果是,我遗漏了什么?如果不是,我应该考虑哪些其他选择?
答案1
我怀疑您遇到的问题是传输表中命令的语法。
[email protected] vtimer:
请注意,行尾的“:”用于建议使用传输方式,但您的示例中缺少该符号。
我处理类似要求的方式是在 /etc/aliases 中使用管道设置用户到脚本 -
用户名:“| 将电子邮件输入到管道的命令”
我设置了一个 virtual_alias_maps 条目,然后在 main.cf 文件中使用以下行设置传输图
[电子邮件保护] 当地的:
因此该用户被视为本地系统用户。
我认为这比在 master.cf 文件中创建条目更容易、更灵活。