当前位置

技术

技术

Authentication War(续)

继 Yahoo 发布 BBAuth 将近一年之后(Authentication War),Windows Live ID Web Authentication SDK 也发布

和一年前相比,现在 Google Data API 可以说是全面开花,不再仅限于 Calendar 了

命运真是奇妙,去年我还在感叹没有机会在 CERNET 里面部署一套认证库,现在竟然又坐在了一个可能实现该服务的位置上。:)

不过 SOHU Passport 暂时的任务还是在内部打通,攘外必先安内。

不晓得网易和新浪有没有类似的计划。

Topic: 

Milter 协议

milter 是个好东东,但不知道出于什么样阴暗的心理,sendmail 的家伙们居然一直没有把这么重要的协议整理出正式的文档。开发者要么去使用 libmilter 函数库,要么老老实实去啃代码吧。

libmilter 应该说也实现的不错,而且还有 python binding,但它自己实现了一个事件循环,让现在酷爱 Twisted 的俺稍稍有些不爽。

感谢为 Milter 写 Perl 模块的程序员,也随代码同时提供了一封非官方的 milter protocol 说明。在这份文档的帮助下,很快就在 Twisted 框架下实现了 Milter Server 的骨架,大概 200 行代码吧。

Milter 协议最核心的就是:所有的 packet 都是首先 4 个字节表示接下来数据的长度,然后分析数据即可。另外就是在实践中发现一次 recv 中出现了两个甚至更多的 packet,协议分析需要注意。

另: twisted 2.5 的 epoll 似乎 memory leak 的厉害,本来想建议用 gc module 来试着解决的,结果换回缺省的 selectreactor 就好了

--Update--
milter protocol 说明文档目前搜索到的地址在:http://cpansearch.perl.org/src/AVAR/Sendmail-PMilter-1.00/doc/milter-pro...

Firefox 3 Alpha7

今天从 Burning Edge 上看到了最新 Alpha7 加入的新特性,包括了 showModalDialog/showModelessDialog 以及 Cross-site XMLHttpRequest 这样重量级的功能。

Firefox3/Schedule 来看 Alpha7 就是 gecko feature freeze 了,那么可以认为 Firefox 3 的重要变化都在这里

从 B-S 开发的角度来说,我认为 Firefox/Gecko 已经是当前最先进的平台了;如果是开发企业应用的话,完全可以把应用绑定在 Firefox 3 上!!难道在企业桌面上部署 Firefox 比部署 .Net Framework 麻烦很多么?

Topic: 

装了 VirtualBox

不知道为什么,办公用机上跑 VMware Player 总是有问题,几乎是一运行就崩溃。没有一个可自由玩弄的开发环境,是非常不爽的事情;最近在 Postfix 上的一些研究,都是回家后完成的。

昨天无意中看到了对 VirtualBox 的介绍,于是试用了一下。性能还不错,反正在安装 debian etch 的过程中感觉不到和 VMware 有什么差别。如果你也碰到了和我一样的 VMware 故障,那么强烈推荐试试它。

和 VMware Player 对比优势如下:
1. VirtualBox 可自由下载版本是按 GPL 发布的,准确的说应该称为 VirtualBox Open Source Edition
2. 图形管理界面,包括创建虚拟机,还有中文语言界面。

当然问题也有:
1. 网络连接好麻烦,必须以命令行模式操作(操作步骤隐藏在 PDF 格式的用户手册中);而且必须停止虚拟机运行操作才有效果。当然 VMware 虽然自动化,可是擅自安装上的两个网络接口估计也挺让普通用户迷惑;另外访问 VirtualBox 的 NAT 虚拟机是通过配置端口转发来实现的,这样从别的机器也能访问我的 NAT 虚拟机了,貌似 VMware 就做不到这一点了。
2. 可能还是不够稳定或虚拟的还是不够好(相比较于 VMware),反正我若是使用网络安装,进行了一段时间后就停下来了,不晓得为什么。不过安装成功后的 apt-get 倒是从来没有出过错。anyway,在我的办公机器上总是比 VMware 稳定多了

Topic: 

Postfix 之 Milter

在整三年前,我负责亿邮反垃圾邮件网关的开发,在辛苦 Patch MTA 的同时,感到处理 SMTP 业务的代码和实现过滤的部分耦合的太紧密,而同时别的小组也在根据客户的需求时不时的修改 MTA 程序,这样长期下去势必会造成代码的不统一和高昂的维护成本。当时就开始设想一种 MTA 和 AntiSpam Engine 之间的通信机制,这样我们两个团队可以并行的高效开发,可惜在此方面一直没有琢磨太清楚,即使知道了 Milter 这个名次也没能把两个东西想到一起去,很快到了 04 年 9 月份我就离开了这个项目,也没有机会继续深入,实在是很遗憾。

Milter 就是一个 MTA 和 Filter 通信的协议。MTA 在会话的各个阶段不断把从客户端来的信息(IP、并发连接数)和数据传给 Filter,然后再根据 Filter 返回的结果返回给客户端,甚至修改信件内容!

Sendmail 不但定义了 Milter 协议,而且提供了 libmilter,它封装了一个多线程 Milter Daemon 的常规流程,帮助开发人员把更多精力放在实现过滤上。

使用 Milter 还有一个好处,就是能实现 before-queue 的过滤。这意味着我们能在 SMTP 会话处理阶段就把垃圾邮件拒绝,而不是接受下来后再弹回。

Postfix 2.4 对 Milter 已经支持的很完善,而且它还可以配置多个 Milter 的过滤,我们可以把网上那些开源的 Milter 和我们自己的 Milter 混合在一起实现更全面的防护。

这里透露一个信息:如果反垃圾邮件厂商希望在搜狐这里做测试,那提供一个 Milter 而不是 Gateway 我可是会给加分的,:)
因为要实现自定义白名单功能的话,Gateway 显然有潜在的问题。

另一方面我们也正在计划开发 SMTP-Milter,就是把防垃圾邮件网关封装成一个标准的 Milter Daemon(很奇怪,我满世界找了一圈,没有找到有这样的开源项目)。但这样也给 Gateway 提出了要求——首先是要能做到 before-queue 的过滤,另外就是最好能实现 Postfix 的 XCLIENT 扩展,如果你有自己的一套 IP 黑名单或者 HELO/EHLO 过滤机制的话。

加上 Postfix 之 tcp_tablePostfix 之 Dovecot Authencication Protocol,我们针对 Postfix 的开发就只包括这三方面,这是不是简单的有些难以置信?

Postfix 之 Dovecot Authencication Protocol

接前文 Postfix 之 tcp_table

和用户账户查询类似的一个应用就是用户身份认证。当然如果只是为了部署 MX 的话可以不考虑此点,但很多情况下我们还是需要给 SMTP 客户端用户一个连接上来认证后发信的方案

Postfix 没有内置任何形式的认证支持,必须通过第三方 SASL 服务才能达到这个目的。Postfix 2.4 支持两种认证服务,一类是链接 Cyrus-SASL 库来使用,另一类则是透过 Dovecot Authentication Protocol,连接一个 UNIX Socket 服务去认证。

虽然 Cyrus 在邮件领域更加有名,但我认为采取 Dovecot Authentication Protocol 去连接一个 Daemon 是一种更清晰的方案,编译部署也免去很多麻烦。

和 tcp_table server 一样,这个 Daemon 我们也是用 Python 完成的,为了方便描述,以后在团队内还是称之为 DAP server 吧。

Postfix 之 tcp_table

目前运行的 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 来实现,:)

今日发现

http://ftp.apnic.net/stats/apnic/delegated-apnic-latest (将近1M的文本文件) 就可以得到亚太地区的 IP 分配详情...大概是详细到各个 CIDR 的分配时间。

CN 的 IPv4 分配目前共有 1252 条记录,从里面简单分类一下,倒是很容易把省份都挑出来,虽然不如纯真IP牛,但做个天气预报什么的还是没有问题的。

BTW: 说到纯真IP,突然觉得它的运作很类似 wiki。

Topic: 

今日发现

1. safari 3.0.2 beta 发布。不但中文显示好了,搜狐通行证的登陆框也不再 crash 了。

搜狐通行证在 safari 3.0 beta 下崩溃的问题害我担心了好多天,还以为所有 Mac 用户都是这个体验呢,后来问了霍炬 知道 Safari 2 没有问题才放下心来。

2. 从 IEBlog 上看到一堆 IE 的 Web 开发工具列表,里面提到一个免费的工具 Web Development Helper,包括 HTTP Traffic 功能,强烈推荐!

不过介绍的工具没有包括 sohu 开发人员用的比较多的 HttpWatch,莫非我们至out了???

3. 亨利转会巴塞罗那!!!!阿森纳前景暗淡....祝亨利能在西甲获得成功。

Topic: 
订阅 RSS - 技术