其中"<<<"表示sendmail服务接收到的信息,而">>>"则表示sendmail服务向客户端发送的信息。如果邮件客户端直接和sendmail服务会话,那么在客户端的smtp会话中所记录的文本信息应该和/tmp/smtp.sessions一致。我们可以利用这个特点来检测邮件代理的存在。

让我们用一个例子来说明。

/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

200898 <<< X-Priority: 3^M

200898 <<< X-MSMail-Priority: Normal^M

200898 <<< X-Mailer: Microsoft Outlook Express 6.00.2800.1506^M

200898 <<< X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1506^M

200898 <<< ^M

200898 <<< test^M

200898 <<< ^M

200898 <<< ^M

200898 <<< .^M

200898 >>> 250 2.0.0 jA1GVM5200898 Message accepted for delivery

邮件客户端软件的记录:

SMTP: 10:38:54 [rx] 220 marshak.austin.ibm.com ESMTP Sendmail Tue, 1 Nov 2005 10:40:03 -0600

SMTP: 10:38:54 [tx] HELO IBM8370FEC6B24

SMTP: 10:38:54 [rx] 250 marshak.austin.ibm.com Hello [9.53.167.160], pleased to meet you

SMTP: 10:38:54 [tx] RSET

SMTP: 10:38:54 [rx] 250 2.0.0 Reset state

SMTP: 10:38:54 [tx] MAIL FROM:

SMTP: 10:38:54 [rx] 250 2.1.0 ... Sender ok

SMTP: 10:38:54 [tx] RCPT TO:

SMTP: 10:38:54 [rx] 250 2.1.5 ... Recipient ok

SMTP: 10:38:54 [tx] DATA

SMTP: 10:38:54 [rx] 354 Please start mail input.

SMTP: 10:38:54 [tx]

SMTP: 10:38:54 [rx] 250 Mail queued for delivery.

我们可以看到,在要求客户端输入邮件信息时,sendmail发出的信息是“354 Enter mail, end with "." on a line by itself”,而邮件客户端收到的信息是“354 Please start mail input.”。由此可知有邮件代理程序存在于邮件客户端与sendmail之间。

如果您的邮件客户端不支持记录smtp会话的功能,您可以采用以下两种方法:

1、使用支持smtp会话记录的客户端进行测试;

2、使用telnet命令连接到sendmail服务器的25端口,手工输入HELO,MAIL FROM,RCPT TO,DATA等命令。

通过文章,我们知道了如何在Sendmail环境中检测是否存在邮件代理,希望对大家有所帮助!


相关内容