当 Postfix 收到发送到给定地址/用户名的电子邮件或包含某些文本的电子邮件时,如何设置它执行命令?
答案1
没有任何方法可以匹配文本,但您可以将所有消息转发到程序的地址。
您需要将别名添加到系统别名文件(通常是 /etc/postfix/aliases)或用户的 .forward 文件中。第一种选择具有更好的灵活性,因为您可以为实际上未映射到帐户的地址设置别名。
别名应该是这样的
|/usr/local/bin/command
您应该给出完整的路径,因为您不知道它将在什么上下文中执行。
如果您的程序以 67 退出,那么这将以未知用户的身份退回该消息,0 将丢弃该消息。任何其他操作都将重试,直到消息超时并退回。
注意安全 - 您基本上允许互联网上的任何人在您的系统上运行程序,所以不要相信用户输入,并在使用前对其进行清理。
答案2
我已经有一段时间没有使用过 Postfix 了,但据我所知,它通常与一个相当基本的 MDA 捆绑在一起,但它仍然可以理解用户主目录中的 .forward 文件,您需要阅读文档和您的 postfix 配置来找到配置了什么 MDA。
所有 MDA 的鼻祖(在我看来)都是 procmail。您可以在 main.cf 中用 procmail 替换当前 MDA - 请参阅http://www.postfix.org/faq.html#procmail
Procmail 读取用户主目录中的文件来确定如何处理消息。这不仅仅是一个配置文件 - 它更像是一种编程语言。它肯定能够满足您的要求。
C。