一、怎么用telnet 测试邮件发送过程
1、1既然是使用telnet来进行测试.那么就需要打开CMD命令行窗口了
2、2使用telnet mail.domain.com 25(换成您自己的服务器地址)的命令连接收件人的服务器。
3、3返回下面的220信息表示状态正常,可以进行下一步的测试。(如果显示不通,检查服务器端口是否对外开放)
4、4下一步进行验证一下域名,输入EHLO mail.domain.com<这个域名需要根据实际的情况而定>
5、再进行验证发件人的邮箱地址,From头 MAIL From:<cs@domain.com>这个是测试的地址,具体的以实际的发件人地址而定
6、再进行验证收件人的邮箱地址.返回的Recipient ok,表示正常.
7、发件人,收件人的地址均验证完毕,可以准备发送邮件了,DATA命令,表示准备开始发送邮件内容,返回的信息,在邮件最后,单独输入.,然后并回车,表示邮件的结束。
8、8下面直接输入邮件test_email<这个仅只是一个测试,不是合格的邮件内容.可能会被一些邮件服务器屏蔽.正规的内容有完整的邮件格式.>,然后再新一行输入.回车。返回250 OK,表示成功。
二、收发电子邮件通常用到的协议是
收发电子邮件通常采用的协议是POP3和smTP协议。
POP3,全名为“Post Office Protocol- Version 3”,即“邮局协议版本3”。是TCP/IP协议族中的一员,由RFC1939定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。提供了SSL加密的POP3协议被称为POP3S。
POP协议支持“离线”邮件处理。其具体过程是:邮件发送到服务器上,电子邮件客户端调用邮件客户机程序以连接服务器,并下载所有未阅读的电子邮件。这种离线访问模式是一种存储转发服务,将邮件从邮件服务器端送到个人终端机器上,一般是PC机或 MAC。
一旦邮件发送到 PC机或MAC上,邮件服务器上的邮件将会被删除。但目前的POP3邮件服务器大都可以“只下载邮件,服务器端并不删除”,也就是改进的POP3协议。
简单邮件传输协议(Simple Mail Transfer Protocol,smTP)是在Internet传输email的事实标准。
smTP是一个相对简单的基于文本的协议。在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确认是存在的),然后消息文本会被传输。可以很简单地通过telnet程序来测试一个smTP服务器。smTP使用TCP端口25。要为一个给定的域名决定一个smTP服务器,需要使用MX(Mail eXchange)DNS。
电子邮件在Internet上发送和接收的原理可以很形象地用我们日常生活中邮寄包裹来形容:当我们要寄一个包裹时,我们首先要找到任何一个有这项业务的邮局,在填写完收件人姓名、地址等等之后包裹就寄出而到了收件人所在地的邮局,那么对方取包裹的时候就必须去这个邮局才能取出。
同样的,当我们发送电子邮件时,这封邮件是由邮件发送服务器(任何一个都可以)发出,并根据收信人的地址判断对方的邮件接收服务器而将这封信发送到该服务器上,收信人要收取邮件也只能访问这个服务器才能完成。
smTP是维护传输秩序、规定邮件服务器之间进行哪些工作的协议,它的目标是可靠、高效地传送电子邮件。smTP独立于传送子系统,并且能够接力传送邮件。
smTP基于以下的通信模型:根据用户的邮件请求,发送方smTP建立与接收方smTP之间的双向通道。接收方smTP可以是最终接收者,也可以是中间传送者。发送方smTP产生并发送smTP命令,接收方smTP向发送方smTP返回响应信息。
连接建立后,发送方smTP发送MAIL命令指明发信人,如果接收方smTP认可,则返回OK应答。发送方smTP再发送RCPT命令指明收信人,如果接收方smTP也认可,则再次返回OK应答;否则将给予拒绝应答(但不中止整个邮件的发送操作)。
当有多个收信人时,双方将如此重复多次。这一过程结束后,发送方smTP开始发送邮件内容,并以一个特别序列作为终止。如果接收方smTP成功处理了邮件,则返回OK应答。
对于需要接力转发的情况,如果一个smTP服务器接受了转发任务,但后来却发现由于转发路径不正确或者其他原因无法发送该邮件,那么它必须发送一个“邮件无法递送”的消息给最初发送该信的smTP服务器。
为防止因该消息可能发送失败而导致报错消息在两台smTP服务器之间循环发送的情况,可以将该消息的回退路径置空。
要在因特网的一个比较小的节点上维护一个消息传输系统(MTS,Message Transport System)是不现实的。例如,一台工作站可能没有足够的资源允许smTP服务器及相关的本地邮件传送系统驻留且持续运行。同样的,要求一台个人计算机长时间连接在IP网络上的开销也是巨大的,有时甚至是做不到的。
尽管如此,允许在这样小的节点上管理邮件常常是很有用的,并且它们通常能够支持一个可以用来管理邮件的用户代理。为满足这一需要,可以让那些能够支持MTS的节点为这些小节点提供邮件存储功能。
POP3就是用于提供这样一种实用的方式来动态访问存储在邮件服务器上的电子邮件的。一般来说,就是指允许用户主机连接到服务器上,以取回那些服务器为它暂存的邮件。POP3不提供对邮件更强大的管理功能,通常在邮件被下载后就被删除。更多的管理功能则由IMAP4来实现。
邮件服务器通过侦听TCP的110端口开始POP3服务。当用户主机需要使用POP3服务时,就与服务器主机建立TCP连接。当连接建立后,服务器发送一个表示已准备好的确认消息,然后双方交替发送命令和响应,以取得邮件,这一过程一直持续到连接终止。
一条POP3指令由一个与大小写无关的命令和一些参数组成。命令和参数都使用可打印的ASCII字符,中间用空格隔开。命令一般为3~4个字母,而参数却可以长达40个字符。
因特网报文访问协议第4版本(IMAP4)
IMAP4提供了在远程邮件服务器上管理邮件的手段,它能为用户提供有选择地从邮件服务器接收邮件、基于服务器的信息处理和共享信箱等功能。
IMAP4使用户可以在邮件服务器上建立任意层次结构的保存邮件的文件夹,并且可以灵活地在文件夹之间移动邮件,随心所欲地组织自己的信箱,而POP3只能在本地依靠用户代理的支持来实现这些功能。
如果用户代理支持,那么IMAP4甚至还可以实现选择性下载附件的功能,假设一封电子邮件中含有5个附件,用户可以选择下载其中的2个,而不是所有。
与POP3类似,IMAP4仅提供面向用户的邮件收发服务。邮件在因特网上的收发还是依靠smTP服务器来完成。
电子邮件地址的格式由三部分组成。第一部分“USER”代表用户信箱的账号,对于同一个邮件接收服务器来说,这个账号必须是唯一的;第二部分“@”是分隔符;第三部分是用户信箱的邮件接收服务器域名,用以标志其所在的位置。
参考资料来源:百度百科-电子邮件
三、如何使用telnet进行smtp邮件发送
=========先计算BASE64编码的用户名密码,认证登录需要用到===========
[crazywill@localhost crazywill]$ perl-MMIME::Base64-e'print encode_base64("crazywill");'
[crazywill@localhost crazywill]$ perl-MMIME::Base64-e'print encode_base64("mypassword");'
======================开始smTP发信操作==========================
[crazywill@localhost crazywill]$ telnet smtp.163.com 25#telnet登录25端口
Escape character is'^]'.
220 163.com Coremail smTP(Anti Spam) System
535 Error: authentication failed#直接用户名密码不能登录
235 Authentication successful#使用Base64编码则成功登录
MAIL FROM:<test@163.com>#邮件发送方
553 You are not authorized to send mail, authentication is required#不可伪造发送邮件
MAIL FROM:<crazywill@163.com>#邮件发送方
RCPT TO:<crazywill@163.com>#邮件的接收方,若有多个收件人,则重复这一语句多次。
TO: crazywill@163.com#此处的TO,FROM,等内容,可以随便造假:)可以骗人但骗不了懂得查看邮件源码的。
test, just a test.#邮件正文内容,与Header部分空一行开始写
.#邮件写完,以一个句点加回车结果。
250 Mail OK queued as smtp10,wKjADQ2ApxRnnqBE0CWaEw==.38326S3#返回250表示发送成功。
NOOP#空语句,不执行任何操作,一般用来保持和服务器连接,不要掉线
221 Closing connection. Good bye.
Connection closed by foreign host.
[crazywill@localhost crazywill]$
======================开始POP3收信操作==========================
[crazywill@localhost crazywill]$ telnet pop.163.com 110#telnet登录110端口
Escape character is'^]'.
+OK Welcome to coremail Mail Pop3 Server(163com[20050206])
+OK 254 message(s)[27676669 byte(s)]
TOP 254 0#查看指定邮件的邮件头,0表示查看整个邮件头,其它正整数表示限制返回多少行。
Received: from smtp.63.com(unknown [58.252.70.158])
by smtp5(Coremail) with smTP id wKjREDrA9gIfFqlEjCnRAg==.29062S4;
Mon, 03 Jul 2006 21:07:18+0800(CST)
FROM: cccc@163.com#这里即前面发信时伪造的一个假发送人信息,平时正常操作只显示这个。
SUBJECT: test by telnet/smtp#邮件主题
Message-Id:<44A91687.0E6F6C.07562>
Date: Mon, 3 Jul 2006 21:07:19+0800(CST)
Sender: crazywill@163.com#这里是真正的发送人,不可伪造。
Received: from smtp.63.com(unknown [58.252.70.158])
by smtp5(Coremail) with smTP id wKjREDrA9gIfFqlEjCnRAg==.29062S4;
Mon, 03 Jul 2006 21:07:18+0800(CST)
Message-Id:<44A91687.0E6F6C.07562>
Date: Mon, 3 Jul 2006 21:07:19+0800(CST)
Connection closed by foreign host.
[crazywill@localhost crazywill]$
===============================================================
ANSWER:(此答案由SnifferPro监听OUTLOOK发送多人邮件分析出来的)
同一封信发送/抄送给多人,在MAIL FROM:<...>后,多次使用 RCPT TO:<...>
每次一个邮件地址,需要发给多少人就 RCPT TO多少次。
在DATA里面写的CC,BCC,TO,等信息只起显示作用,与实际发送人接收人无关。
CC与BCC的差别:同样都是RCPT TO指定收件人,但是邮件客户端程序,不会将BCC的收件人写到DATA要传送的数据里。
OK,关于telnet 发邮件和telnet smtp发邮件的内容到此结束了,希望对大家有所帮助。