目前运行的 MTA 是在 Postfix 的一个很古老的版本上修改而来,再加上长期以来断断续续打了不少补丁,原始代码和修改代码纠缠太深,以至于很难把这些修改合并到最新的 Postfix 版本上;这次 MTA 改造的目标就是不修改 Postfix 任何代码,完全通过 Postfix 所支持的接口或协议实现需要的特性,这样以后可以跟着 Postfix 进行同步升级。
首先要解决的就是收件人地址查询的机制。
Postfix 支持一大票查询表(lookup table)格式,包括什么 unix、nis、bdb、cdb、ldap、mysql、pqsql 等等,但是对搜狐来说,能用的只有 tcp_table。
简单地说,tcp_table 只是一个面向网络连接的协议描述,可以用它来封装任何形式、任何目标的用户查询。只可惜 Postfix 一直没有对它提供正式的支持,需要打开 SNAPSHOT 定义才能获得这个功能。
为了提高性能,可以在实现 tcp_table 的 daemon 里面加入用户名查询的缓存,以及连接用户名数据库的连接池。还要说的是,这个 daemon 很适合用 Python 来实现,:)
评论
正好我的公司最近要实现按条件查询不同的table,没办法找
正好我的公司最近要实现按条件查询不同的table,没办法找来找去只有tcp_table能实现。别的表都不好添加自己的逻辑。网上有一些perl的sample,不过我还是用python实现比较有把握。
现在我们全面在用 tcp_table
现在我们全面在用 tcp_table