当前位置: 首页 > 工具软件 > SPSmtpGate > 使用案例 >

SPSmtpGate: SMTP 反垃圾邮件网关

宦宏爽
2023-12-01
SPSmtpGate 是一个反垃圾邮件网关,支持 Sendmail 8 的 Milter 协议,采用透明 smtp proxy 的模式。Milter 协议由 Sendmail 公司提出,在 Sendmail 和 Postfix 中都有实现。目前开源的 Milter 模块非常丰富,如果搭配的好,这些 milter 可以有效地拦截垃圾邮件。借助于 SPSmtpGate ,SendMail/Postfix 之外的其他 MTA 也可以方便地利用这些 Milter 模块。

[url]http://code.google.com/p/spsmtpgate/[/url]
[url]http://spsmtpgate.googlecode.com/files/spsmtpgate-0.1.src.tar.gz[/url]

SPSmtpGate 部署在 Internet 和本地 MTA 之间。系统结构如下图所示。


[code]
---------------
| |
| Milter |
| |
---------------
/|\
|
|
------------- --------------- -------------
| | | | | |
| Internet | -----> | SPSmtpGate | -----> | Local MTA |
| | | | | |
------------- --------------- -------------

[/code]

由于采用了透明 proxy 的模式,对于原有的系统影响非常小,只需要修改少量的配置。
如果 SPSmtpGate 和 Local MTA 部署在同一台机器,那么修改 Local MTA 的配置,使得它使用 25 之外的端口,比如 2025 端口;然后由 SPSmtpGate 来接管 25 端口,同时修改 SPSmtpGate 的配置文件,把 Local MTA 作为 backend 。

SPSmtpGate 使用的配置文件
[code]
[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"
[/code]

通常需要修改 [Backend] 和 [MailFilter] 这两个配置节。
1)首先修改 Server0 这里的内容,指向具体的 MTA 主机和端口
2)其次修改 MailFilter 的内容,指向具体的 Milter 模块。Milter 的配置内容采用 Sendmail 的格式。

[code]
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 代表分钟。

[/code]
 类似资料: