Sendmail环境中检测是否存在邮件代理的小技巧(1)


我们知道邮件代理有可能是是善意的,也有可能是恶意的,我们如何在Sendmail环境中检测和排除邮件代理带本身的影响呢,请看下文介绍。

作为广泛应用的邮件服务器软件,sendmail需要和各种smtp的客户端软件打交道。在这些smtp客户端软件中,有些软件是真正的邮件软件,比如Microsoft Outlook Express;有些是有着特殊目的的应用程序,比如Norton Antivirus。

有些应用程序会截断邮件客户端和sendmail的连接,以“邮件代理”的形式接收客户端的数据,对数据进行处理(比如Norton Antivirus使用这种方式来扫描外出邮件中的病毒),然后转发给sendmail。

这种“邮件代理”程序可能是善意的也可能是恶意的。但是,当sendmail和邮件客户端软件的通信出现问题的时候,应该首先着手检测此类“邮件代理”程序是否存在以便进一步排除它们的影响。

sendmail服务程序具有记录smtp会话的功能,大部分邮件客户端软件也有类似的功能。我们可以通过对比服务器和客户端上的会话记录来判断邮件代理程序是否存在。

首先,您需要用 -X参数运行sendmail:

#startsrc -s sendmail -a"-bd -q 30m -X /tmp/smtp.sessions"

注意:

在一个生产环境中,-X参数可能会产生大量的日志信息。请只在进行测试或故障排除时使用-X参数。

一个典型的客户机-服务器smtp会话会被这样地记录在/tmp/smtp.sessions中:

127184 >>> 220 marshak.austin.ibm.com ESMTP Sendmail Tue, 1 Nov 2005 10:31:22 -0600

127184 <<< HELO IBM8370FEC6B24^M

127184 >>> 250 marshak.austin.ibm.com Hello [9.53.167.160], pleased to meet you

127184 <<< MAIL FROM: ^M

200898 >>> 250 2.1.0 ... Sender ok

200898 <<< RCPT TO: ^M

200898 >>> 250 2.1.5 ... Recipient ok

200898 <<< DATA^M

200898 >>> 354 Enter mail, end with "." on a line by itself

200898 <<< Message-ID: <000f01c5df01$88a95fd0$a0a73509@austin.ibm.com>^M

200898 <<< From: "internship test" ^M

200898 <<< To: ^M

200898 <<< Subject: test^M

200898 <<< Date: Tue, 1 Nov 2005 10:29:06 -0600^M


相关内容