我正在尝试使用 php 脚本过滤电子邮件,我想要做的是当电子邮件符合一组规则时将其处理到数据库中。
该规则将使用 PHP 字符串数组来制定,并使用 str_replace 或 preg_replace。
我找到了这个教程,但是当我运行它时,邮件服务器只能接受电子邮件,但我无法登录并再检查我的邮件,我认为脚本正在吞噬一切并有效地使服务器陷入黑洞,所以这是一个部分解决方案,但不完整。
我所处的阶段是,我可以执行脚本,它会在需要时运行并写入数据库,但电子邮件不会到达收件箱,而且也没有人可以登录查看电子邮件,所以我认为脚本会阻止除接收电子邮件和立即退出之外的任何操作,所以对于只想根据规则引擎将电子邮件过滤/克隆到数据库中的真实电子邮件服务器来说,它没有用。
现在,要么是我编写了错误的过滤器,要么是我遗漏了某些功能,如果脚本被禁用,这些功能可以让电子邮件继续进入它应该被放入的收件箱。我想这就是我遗漏的部分。
请注意:该脚本必须使用 PHP 运行,因此不需要替代解决方案。我已经知道该链接:www.postfix.org/FILTER_README.html 并且我已经阅读过它,但是我不知道如何将其转换为实际工作的 PHP 脚本。似乎我总是在某个时候陷入困境,所以我对那些给我这个链接并告诉我应该阅读它的人也不感兴趣。
我之所以这么说,是因为我在这里读过很多问题,通常都以那个链接或替代解决方案结束,这些都没有帮助,所以如果你的答案是其中之一,请不要回复,除非你想帮助我解决我的具体问题,否则我不感兴趣,我不想浪费你的时间。
答案1
我不想详细讨论您所引用的文章中存在的所有问题,而是直接切入正题。
它是一种非常强大的语言,允许您做各种各样的事情,尤其是将电子邮件复制到邮箱并通过脚本传输它们(包括 PHP - 您只需从 stdin 读取,写入 stdout)。
设置起来并不困难,而且它使这类任务变得简单。但是,如果您希望围绕它构建复杂的系统,您可能需要阅读 Martin McCarthy 的有关 procmail 的书。
答案2
你不断被指向 FILTER_README,因为它包含你的答案。你可能已经阅读过它,但并不理解它。
您链接的教程故意阻止消息传递(甚至是这么说的)。
为了从过滤器传递消息,您必须通过调用 sendmail(8) 命令将其重新传递给 Postfix。FILTER_README 中对此有明确说明,其中的示例脚本甚至展示了如何完成此操作。