队列后的后缀不起作用

队列后的后缀不起作用

我正在尝试使用 postfix after 队列。基本上,我想看看我是否可以修改外发电子邮件。(我对收到的电子邮件一点也不感兴趣)。我做了以下事情(基于http://www.postfix.org/FILTER_README.html):

  1. 在 aws 上启动 ec2(ubuntu 16.04)
  2. 安装 postfix
  3. 使用用户过滤器创建过滤器
  4. 修改 master.cf,添加 -o content_filter=filter:dummy

    smtp inet n - y - - smtpd -o content_filter=filter:dummy

  5. 在master.cf文件末尾添加过滤服务定义

    过滤器 unix - nn - 10 管道标志=Rq 用户=过滤器 null_sender= argv=/home/ubuntu/run_filter.sh -f ${sender} -- ${recipient}

  6. 使用发送电子邮件

    echo“ hello world”| mail -s“第二条消息”[电子邮件保护]

但过滤器并未被调用。电子邮件未经任何更改就被发送出去。

似乎我遗漏了一些非常基本的东西。如果有人能帮忙,谢谢!

答案1

可能是您php.ini没有引用 sendmail 的正确路径。

您可以检查您的php.ini文件或 apache 日志来确认这一点。

或者,您也可以使用绝对路径:

echo "Subject: test" | /usr/sbin/sendmail [email protected]

您也可以从命令行确认注册的路径:

which sendmail

祝你好运 :)

答案2

我可能错了,因为我不知道您的具体设置,但我认为这mail不会通过 发送消息smtp。您可以检查 postfix 日志,查看您的消息是否通过postfix/smtpd或 通过接收postfix/pickup

我认为您可以配置邮件以使用 smtp,这取决于mail您安装的内容(mailx、nail 等)。

答案3

这个答案并不能直接回答你的问题,但从长远来看可以给你更多帮助。

当我希望应用程序执行某项操作时,我会使用诸如stracetcpdump/ wiresharkperf、之类的跟踪工具systemtap

在您的情况下,因为我希望mail通过 TCP 或至少 Unix 套接字连接来发送电子邮件,所以我会在 下运行它strace

echo "hello world" | strace -f -e network mail -s "second message" [email protected]

-f= 也遵循子进程。

-e network= 仅跟踪与网络相关的系统调用。您可以使用它-e file来查看使用了哪些文件。有关更多详细信息,请参阅strace(1)手册页

相关内容