- 论坛徽章:
- 0
|
SPSmtpGate 是一个反垃圾邮件网关,支持 Sendmail 8 的 Milter 协议,采用透明 smtp proxy 的模式。Milter 协议由 Sendmail 公司提出,在 Sendmail 和 Postfix 中都有实现。目前开源的 Milter 模块非常丰富,如果搭配的好,这些 milter 可以有效地拦截垃圾邮件。借助于 SPSmtpGate ,SendMail/Postfix 之外的其他 MTA 也可以方便地利用这些 Milter 模块。
http://code.google.com/p/spsmtpgate/
http://spsmtpgate.googlecode.com/files/spsmtpgate-0.1.src.tar.gz
SPSmtpGate 部署在 Internet 和本地 MTA 之间。系统结构如下图所示。
- ---------------
- | |
- | Milter |
- | |
- ---------------
- /|\
- |
- |
- ------------- --------------- -----------------
- | | | | | |
- | Internet | -----> | SPSmtpGate | -----> | Local MTA |
- | | | | | |
- ------------- --------------- -----------------
复制代码
由于采用了透明 proxy 的模式,对于原有的系统影响非常小,只需要修改少量的配置。
如果 SPSmtpGate 和 Local MTA 部署在同一台机器,那么修改 Local MTA 的配置,使得它使用 25 之外的端口,比如 2025 端口;然后由 SPSmtpGate 来接管 25 端口,同时修改 SPSmtpGate 的配置文件,把 Local MTA 作为 backend 。
SPSmtpGate 使用的配置文件
- [Server] ; spsmtpgate 的一些控制参数
- MaxConnections = 1024 ; 最大并发连接数
- SocketTimeout = 600 ; 和 internet 上其他主机通信的超时时间
- MaxThreads = 128 ; 最多使用的线程数
- MaxReqQueueSize = 128 ; 最大的队列长度
- [Backend] ; 后端 MTA 的相关信息
- ConnectTimeout = 5 ; 连接超时时间
- ConnectRetry = 3 ; 连接重试次数
- SocketTimeout = 10 ; socket 通信超时时间
- ServerCount = 1 ; 有多少台后端 MTA 可用
- Server0 = 127.0.0.1:2025 10 ; 第一台可用的后端 MTA
- [MailFilter] ; milter 模块的相关信息
- Filter0 = "S=inet:1111@127.0.0.1, T=C:5s;S:10s;R:10s;E:1m"
复制代码
通常需要修改 [Backend] 和 [MailFilter] 这两个配置节。
1)首先修改 Server0 这里的内容,指向具体的 MTA 主机和端口
2)其次修改 MailFilter 的内容,指向具体的 Milter 模块。Milter 的配置内容采用 Sendmail 的格式。
- S=inet:1111@127.0.0.1, F=T, T=C:5s;S:10s;R:10s;E:1m
- S= 表示 Milter 的连接端口,可以使用 local:/var/run/f1.sock 或者 inet:1111@127.0.0.1 的方式。
- F= 表示应用以下哪个标志:
- R 如果过滤器不可用,那么拒绝连接。
- T 如果过滤器不可用,那么使连接临时失效。
- 通过为 T= 指定一个值,可以覆盖缺省超时值。等式 T= 使用以下字段:
- C 连接到过滤器的超时值
- S 将信息从 MTA 发送到过滤器的超时值。
- R 从过滤器读取应答的超时值。
- E 向过滤器发送消息结束通知与等待最终确认之间的总超时值。
- 如以上示例中所示,每个超时之间的分隔符是分号(;),每个等式之间的分隔符是逗号(,)。
- 缺省的超时值如下:
- T=C:0m;S:10s;R:10s;E:5m
- 其中 s 代表秒,m 代表分钟。
复制代码
[ 本帖最后由 iunknown 于 2009-4-16 22:16 编辑 ] |
|