Postfix MTA 由几个组件/服务组成,它们协同工作以执行邮件传递和接收的不同阶段;这些包括 smtp 守护进程、拾取和清理过程、队列管理器、smtp 服务、管道/生成/虚拟/重写...和其他(包括自定义组件的可能性)。
Postfix 还提供了几种类型的钩子,允许它与外部软件集成,例如策略服务器、过滤器、反弹处理程序、记录器和身份验证机制;这些钩子可以连接到传递过程的不同组件/阶段,并且可以通过(至少)IPC、网络、数据库、几种类型的平面文件或预定义协议(例如 milter)进行通信。
一个古老且非常有限的例子如下:这页。
我的问题:
是否有人可以访问描述这些钩子、钩子可以与之交互的组件/交付阶段以及支持的通信方法的资源?或者更有可能的是,各种 Postfix 组件及其支持的钩子/方法的文档?
例如:
鉴于要求“如果收件人主 MX 服务器与“shadysmtpd”匹配,则根据列表检查收件人地址;如果匹配,则终止 SMTP 连接,恕不另行通知“。
我的软件需要 1) 集成到 SMTP 流程的适当部分,2) 使用某种方法执行地址检查(TCP 映射服务器?正则表达式?mysql?),以及 3) 执行所需的操作(终止连接)。
此外,可能有几种方法可以实现这一点,另一个要求是找到最适合的方法(例如:网络服务器可能比平面文件查找更快;或者,如果大量邮件可能受到此检查的影响,则应尽早在邮件过程中执行)。
真实示例:
这一项政策策略服务器(根据用户定义的规则对地址进行检查)被设计为一个独立的 TCP 服务器,它挂接到 Postfix 内部的smtpd
通过指令“check_policy_service inet:127.0.0.1:10001
' 在里面 'smtpd_client_restrictions
'配置选项。
这意味着,当 Postfix 第一次收到要传递的邮件时,它将创建到策略服务器地址:端口的 TCP 连接,以确定客户端是否被允许从该服务器发送邮件(除了该选项中定义的任何其他限制/限制查找方法);将根据服务器的响应采取适当的操作。
笔记:
1)Postfix 架构页面用 ascii art 描述了一些这方面的信息;我所希望的是提炼、浓缩的参考资料。
2) 如果我有任何错误,请纠正我;材料堆积如山,而我只是一个人;)
谢谢!
答案1
这里有一张非常古老的流程图:http://www.postfix.org/big-picture.gif
http://www.postfix.org/documentation.html您正在寻找 SMTP 中继/访问控制和内容检查下的文档(所有这些文档)。
我很乐意提供具体的建议,但文档是一个相当好的总结。
对于上面给出的示例查询,您可以实现自定义策略服务器。请参阅http://www.postfix.org/SMTPD_POLICY_README.html举些例子。