在实际应用中,管理员可能会偶尔遇到无法发送邮件,或者无法正常收取邮件的情况,发生这种状况的时候,您可以参考以下方法,对服务器进行命令行方式的探测。
以下命令都是在Windows命令提示符窗口下完成的,所以在操作之前,必须打开命令提示符窗口,在“开始”菜单-->运行中输入: cmd 回车后,就进入了命令提示符模式。
在要对目标邮件服务器进行探测的时候,必须先知道对方的收件服务器IP地址,所以必须先通过nslookup命令查找得到对方邮件服务器的mx记录指向的主机。操作如下:
比如我现在要探测通过我当前所在机器 是否可以给163.com发送邮件:
一般来说,如果是你的邮件服务器不能发送到目标的主机,进行指令测试的时候,必须在你的邮件服务器上打开命令窗口进行测试,而不是你的工作计算机,因为在连接对方服务器的时候,对方服务器会要判断你的IP地址和你的域名是否对应,显然,如果你用的是工作机去连接的话,大多数情况下是会被对方邮件服务器中断连接的。
首先,先获得163.com的任意一个SMTP收信服务器地址 (蓝色部分为输入的命令):
C:\>nslookup
Default Server: vassun2.macau.ctm.net
Address: 202.175.3.8
> set type=mx
> 163.com
Server: vassun2.macau.ctm.net
Address: 202.175.3.8
Non-authoritative answer:
163.com MX preference = 50, mail exchanger = mx.mail.163.com <---- 这个即为163.com的收信地址
163.com nameserver = ns3.nease.net
163.com nameserver = ns.nease.net
ns.nease.net internet address = 202.106.185.75
ns3.nease.net internet address = 220.181.28.3
接下来,我们就可以按照以下命令对服务器 mx.mail.163.com 进行探测了。
如果要探测或测试其他的邮件服务器,用同样的方法和过程都可以测试。
注:以下的操作,在命令提示符下,如果进入了telnet的网络连接状态,输入的指令在windows 2000或以下的版本下不会回显出来(windows2003的命令提示可以显示),建议将指令先整理好放在记事本当中,然后逐条指令复制,对着已经连接上的CMD命令提示符窗口点击右键(一般对着命令提示符点击右键就可以粘贴剪贴板的数据),就可以将复制到剪贴板的所有内容粘贴到命令提示符窗口上(粘贴过来的字符一般也没有显示)。





命令行方式发送邮件
[ 蓝色部分为输入的命令,黑色为服务器的回应,绿色为操作注释说明 ]
C:\>telnet mx.mail.163.com 25
220 163.com Coremail SMTP(Anti Spam) System
HELO hunan.com.cn [ 此处输入的是HELO名,一般情况下是邮件后缀名(域名) ]
250 OK
MAIL FROM:<[email]admin@hunan.com.cn[/email]> [ 发件人地址指令 ]
250 Mail OK
RCPT TO:<[email]sd179@163.com[/email]> [ 收件人地址指令 ]
250 Mail OK
DATA [ 进入发邮件正文数据状态指令 ]
354 End data with <CR><LF>.<CR><LF>
(可以随意输入一些内容或者也可以输入以下内容)
From: "hunan.com.cn postmaster" <[email]admin@hunan.com.cn[/email]>
To: "[email]sd179@163.com[/email]"
Subject: =?gb2312?B?ztLU2rLiytTE4w==?=
Date: Mon, 14 Apr 2003 11:03:36 +0800
MIME-Version: 1.0
Content-Type: multipart/alternative;
boundary="----=_NextPart_000_0016_01C30275.811BAE50"
X-Priority: 3
X-MSMail-Priority: Normal
X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4910.0300
This is a multi-part message in MIME format.
------=_NextPart_000_0016_01C30275.811BAE50
Content-Type: text/plain;
charset="gb2312"
Content-Transfer-Encoding: base64
c2tmamFzZg0KweO148DWttO1xNK70KnKssO0uOjU2g0K
------=_NextPart_000_0016_01C30275.811BAE50
Content-Type: text/html;
charset="gb2312"
Content-Transfer-Encoding: base64
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuM
CBUcmFuc2l0aW9uYWwvL0VOIj4NCjxIVE1MPjxIRUFEPg0KPE1FVEEgY2
9udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWdiMjMxMiIgaHR0cC1lcXV
pdj1Db250ZW50LVR5cGU+DQo8TUVUQSBjb250ZW50PSJNU0hUTUwgNS4w
MC4zNTAyLjUzOTAiIG5hbWU9R0VORVJBVE9SPg0KPFNUWUxFPjwvU1RZT
EU+DQo8L0hFQUQ+DQo8Qk9EWSBiZ0NvbG9yPSNmZmZmZmY+DQo8RElWPj
xGT05UIHNpemU9Mj5za2ZqYXNmPC9GT05UPjwvRElWPg0KPERJVj48Rk9
OVCBzaXplPTI+weO148DWttO1xNK70KnKssO0uOjU2jwvRk9OVD48L0RJ
Vj48L0JPRFk+PC9IVE1MPg0K
------=_NextPart_000_0016_01C30275.811BAE50--
. [在此输入 回车 . 回车 ]
250 OK aMAZAPuU8kNXMAIA.28499S2
以上为完整的手工登录163的发信服务器,并且发送一份简单邮件的过程,其中蓝色的为手工输入部分,底下的邮件内容可以在把以上内容复制到剪贴板后,直接在命令提示符窗口直接点击鼠标右键即可。

如果以上步骤能正常处理到最后,一般邮件发送就成功了。 如果出现问题,中途一般会发生错误提示。
以mx.mail.163.com为例,发生错误后,一般在输入 回车 点 回车 的结束指令后,会提示:
450 Requested action not taken:mx8, aMAZAPuU8kNXMAIA.28499S2, please try again,SCORE
或者类似的其他错误信息,但一般情况下,错误一般在DATA指令输入之前就会发生,如sina.com的邮件服务器,如果你的IP地址和HELO名不对应,在RCPT TO指令输入的时候就会提示错误信息并中断连接。一般来说,如果命令提示符直接发信操作都出现问题,不管什么类型的邮件服务器,都会和手工操作一样,发生同样的发信故障。这个提示的错误信息,就是一般在回退信中看到的错误信息了,具体的错误信息说明,可以通过英文字面意思或者参考 典型引起错误退信的原因 的相关章节。