如何通过程序过滤消息内容,然后将其转发到另一个地址?

如何通过程序过滤消息内容,然后将其转发到另一个地址?

在 qmail 中,您可以将其放在 .forward 文件中:

|/usr/local/bin/myfilter | forward [email protected]

这会将整个消息(包括标题)通过管道传输到程序myfilter,然后将打印到其标准输出的消息转发到[电子邮件保护]

但是,Exim 没有forward程序,并且通常会忽略管道传输的输出。

如何使用 Exim .forward 文件做到这一点?

答案1

通过管道传输程序输出sendmail。Exim 安装了该程序自己的实现。

|sh -c '/usr/local/bin/myfilter | /usr/sbin/sendmail -i [email protected]'

笔记:

  • 您必须使用sh- Exim 将直接执行指示的程序,而不是通过 qmail 之类的 shell。需要一个 shell 来解析|运算符。
  • 指定的完整路径sendmail,因为在处理文件时,它/usr/sbin/可能不会位于PATHExim 所运行的用户的路径中.forward
  • 不要使用-tsendmail 标志。

相关内容