关于利用qmail的smtp退信机制对qmail的攻击
时间:2010-08-17 来源:xjc2694
原理: 通过向本地域发送一封邮件 Return-Path:[email protected],RCPT TO:xxx@local_domain(域为本地域,可以绕过rcpthosts验证)。Return-Path和RCPT TO的用户都不存在。
qmail服务器收到邮件后,因为不存在该用户,会向Return-Path的地址发送退信,此信同时会发送给postmaster。远程服务器收到此退信后,因为不存在该用户,于是又发送一封退信到qmail服务器,同时也会向本地服务器的postmaster发送双重退信通知。
解决: 步骤1: 接收用户不存在的邮件,然后删除,这样就不会向远端服务器发送退信了。
在qmail的alias目录下建立.qmail-default文件: 内容为:包含无效指令,但一定要非空 # 或者 #throw messages away undelivered
或者传送到shell,然后丢弃: |>/dev/null
步骤2: 安装反垃圾邮件,在tcpserver这一层将垃圾邮件拒绝掉。
如果使用的是ucspi-tcp 0.88,里面包含rblsmtpd,如果是老的版本,需要单独安装。修改启动脚本,增加“DNSBL”:
/usr/local/bin/tcpserver -v -H -l localhost -c 200 -x /etc/tcp.smtp.cdb \ |
相关:
4.1.5. 扩展地址
qmail 支持用户控制扩展地址. 在基本地址 [email protected] 上扩展的扩展地址为: [email protected] ,用户同样可以接收发往扩展地址的邮件. 在本节其余部分, 我们讨论的范围都是在本地系统上, 所以我们将不再使用"@hostname.domain" 部分.
给用户 username 的邮件传送指令由 ~username/.qmail 文件指定. 对于型如username-extension 的扩展地址的传送指令由用户目录下的~username/.qmail-extension 文件指定.
举一个例子, [email protected] 这个扩展地址的传送将由文件 ~dave/.qmail-lwq 来控制.
扩展地址可以拥有多个字段, 例如 dave-list-qmail 这个扩展地址, 由 ~dave/.qmail-list-qmail 来控制. 在这个例子里面, dave-list-qmai 这个地址被用来订阅 qmail 的邮件列表, ~dave/.qmail-list-qmail 则负责归档这个列表的邮件到单独的邮箱里面.
.qmail 文件可以用-default 后缀进行匹配。 所以 dave-list-qmail 可以由 ~dave/.qmail-list-default 操作. 这个文件可以一对多方式用一个.qmail文件控制所有型如 dave-list-加上任何后缀的地址. 注意 dave-list 不能由 ~dave/.qmail-list-default 控制, 因为在"list"后面没有"-".
qmail 会使用最接近的匹配方式. 例如, qmail在传送一个标志着送给dave-list-qmail这个地址的邮件时, 会按照下面顺序查找.qmail控制文件, 并按照最先匹配的.qmail文件传送这个邮件.
.qmail-list-qmail .qmail-list-default .qmail-default
如果没有找到相匹配的.qmail文件, 传送失败, 并且将邮件反弹给发送者.
关于 .qmail 文件
传送用户邮件通常是由一个或者几个 ".qmail"(发音 dot kyoo mail) 文件控制的. 这些文件位于用户的主目录, 文件名由 .qmail 开头. .qmail 的man 手册页面描述了 .qmail 文件使用方法.
.qmail 文件包括了一个传送指令清单, 每行一个指令. 每行的第一个字符决定了选择那种传送方式.
字符 | 传送类型 | 值 |
# | 无 (注释) | 忽略 |
| | 程序 | 由shell 执行的命令 |
/ 或者 . | mbox邮箱格式 (如果路径最后一个字符不是一个斜杠) |
mbox 的路径名 (包括斜杠"/"或者 点".") |
/ 或者 . | maildir邮箱格式 (如果路径最后一个字符是一个反斜杠) | maildir 的路径名 (包括斜杠"/"或者 点".") |
& | 转发 | 转发邮件的地址 |
字母或者数字 | 转发 |
转发邮件的地址 (包括第一个字符) |
更多详细的可以查看http://www.lifewithqmail.org/LWQ-CN.html