背景及要求
我找到了许多与该主题相关的参考文档和问答帖子,但我无法找出设计的关键领域。
我想拒绝基于自定义分析算法的入站电子邮件 - 只是我有一个执行分析的 python 脚本,并且我目前正在通过将其作为 Gnome Evolution 的邮件过滤器调用来进行测试。这一切似乎或多或少都按预期进行。 python 中的返回码与 Evolutions 邮件过滤系统的解释似乎有一些细微差别,但在其他方面是可操作的。
在这个阶段,除了必须是开源的之外,不与任何技术或系统绑定。理想情况下,它应该在 Debian(或 Ubuntu)上运行,因此 Postfix 似乎是最合适的。
问题领域
我一直在研究网关等(例如 Postfix),以便设计一个在更自主的级别上工作的集成 - 并防止需要浪费时间过滤收件箱中的电子邮件。我可以看到队列过滤器之前的轻量级(例如这里)我可以看到如何从这些钩子调用脚本,例如这里,但不会从脚本获取任何返回代码。
我在文档中似乎找不到的是如何将脚本中的结果代码/返回代码应用到 Postfix,以便它确定是否允许或拒绝该消息。
请注意,该解决方案依赖于能够拒绝电子邮件,而不是丢弃它(不幸的是,由于某些原因我无法进入这里)。我想到了一个 cron 作业,它检查从添加到队列的电子邮件中收集的整理数据项列表,并自动将更多过滤器附加到 Postfix 配置中。这只能解决部分问题,并且意味着即使没有新电子邮件,服务器上也会运行某些内容。
长话短说所以我的问题是:
- 如何从 MTA 调用脚本并获取脚本/调用结果?例如打电话
scan.py
并得到 a0
或1
返回 - 我应该在文档中参考 Postfix(或其他类似的开源系统)中的什么机制,然后将此结果绑定到操作?
答案1
这可能可以通过将脚本设置为 milter 来实现 - 请参阅 MILTER_README。但这可能是一项不平凡的任务。也许值得看看其他人是否已经实现了足够好的东西来满足您的目的,例如这里。