Sendmail环境中检测是否存在邮件代理的小技巧(1)(2)
其中"<<<"表示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环境中检测是否存在邮件代理,希望对大家有所帮助!
评论暂时关闭