E-mail邮件协议的概述
扫描二维码
随时随地手机看文章
认识E-mail协议:
一、E-mail的发送与接收涉及两个协议:
1、简单邮件传递协议(SMTP):负责传递邮件,是TCP/IP系列的协议.
2、邮政协议(POP3):接收互联网上的邮件.
3、这里主要讲解SMTP协议,POP3协议在上面的链接中.
二、工作原理:
1、客户端发送程序-->SMTP1服务器(源SMTP)-->通过DNS服务寻找目标SMTP服务器-->SMTP2服务器与建立连接并传送邮件-->POP3服务器-->放入接收者电子信箱中并通知接收者。
2、通常情况下,个人用户不是直接接收电子邮件,是由ISP(如:smtp.qq.com)的(SMTP服务器)主机负责接收电子邮件,再通知个人用户。
路径:个人用户主机-->SMTP的主机-->SMTP目标服务器-->收件人的SMTP主机-->POP3服务器-->通知收件人.
3、一般大公司专门有一台SMTP服务器机器用来处理邮件.
三、关于ISP(互联网服务提供商):
1、ISP的主机充当着邮局的作用,管理众多用户的电子信箱,每个用户的电子邮箱实际上就是它的账号名。
2、由于每个电子邮箱都要占据ISP的硬盘空间,所以邮件数量是有限的。
四、关于互联网邮件系统:
1、每一台互联网PC在运行邮件程序(QQ邮箱)时,可自动确保邮件以标准格式选址和传送,这个程序称为“传送受理程序”.
2、“传送受理程序”遵守SMTP协议向外界发送邮件.
3、大多数“传送受理程序”都在后台运行,UNIX称它为sendmail的智能程序.
电子邮件:
一、分为三个部分:
1)信头(主题、收件人、发件人)
2)信体(内容)
3)签名区
二、国际上常见的电子邮件格式:
From:发信人地址 to:收信人地址 Subject:主题 content:内容 结束标志 签名区
三、电子邮件地址通用格式:用户标识字符串@域名(123@qq.com)
四、邮件结构:
(1)From:user1@domain1.com //发信人 (2) To:user2@domain1.com //收件人 (3)Subject:Hello,World //主题 (4)Date:Thu,1 Apr 2017. 14:00:00 GMT//时间日期 (5)Hi,Jack //内容部分 (6)空行 (7)How Are You? (8)... (9)Thanks (10)Aaron
信头:
在传输过程中,邮件被打包成一个数据结构,邮件的传输是根据信头上的信息进行传输的。
举例说明信封在传递过程中信头的变化:
步骤一:客户端程序发送邮件时:
From:123@126.com
To:456@qq.com
Date:Thu,1 Apr 2017. 14:00:00 GMT
X-mailer:Sendmail 8.9.0
Subject:Hello,World
步骤二:smtp.qq.com指向的SMTP服务器接收此邮件后,在信头上增加一条以下内容:
Received:from 发信人主机名.126.com (发信人主机名.126.com [发件人IP地址]) by smtp.126.com (8.8.5) id 004A21;Tue,Mar 18 1998 15:3 7:24 GMT
From:123@126.com
To:456@qq.com
Date:Thu,1 Apr 2017. 14:00:00 GMT
X-mailer:Sendmail 8.9.0
Subject:Hello,World
步骤三:QQ的SMTP服务器将邮件存储下来,等待收件人阅读,再次增加两条以下的内容:
Received:from smtp.126.com (smtp.126.com [1.1.1.0]) bysmtp.qq.com (8.8.5/8.7.2) with ESMTP id LAA20869;Tue,Mar 18 1998 15:3 7:44 GMT
Received:from 发信人主机名.126.com (发信人主机名.126.com [发件人IP地址]) by smtp.126.com (8.8.5) id 004A21;Tue,Mar 18 1998 15:3 7:24 GMT
From:123@126.com
To:456@qq.com
Date:Thu,1 Apr 2017. 14:00:00 GMT
Message-Id:
拿步骤三来解释以上的含义说明:
1、Received:from smtp.126.com (smtp.126.com [1.1.1.0]):
说明了是在smtp.126.com的SMTP服务器上接收来的邮件,SMTP服务器IP地址为1.1.1.0,真实名字为smtp.126.com
2、by smtp.qq.com (8.8.5/8.7.2) with ESMTP id LAA20869:
接收方为smtp.qq.com,使用的sendmail(传送受理程序)的版本:8.8.5/8.7.2,邮件编号为ESMTP id LAA20869
3、Tue,Mar 18 1998 15:3 7:44 GMT:接收时间
4、Message-Id域:发送方SMTP服务器赋给这封邮件的编号,这个编号会始终跟随该电子邮件
SMTP协议原理:
一、简易概述:
1、提供高效、可靠的邮件传输,可通过不同网络的主机接力式传送.
2、TCP/IP系列的协议.
3、使用的监听端口号:25
二、主要功能:
1、将邮件从客户端传送至SMTP服务器.
2、将邮件从SMTP服务器传送至另外一个SMTP服务器上.
3、分为两个工作模式:发送SMTP、接收SMTP.
三、工作过程:
接到客户端的邮件请求后,判断是否为发送给本地SMTP服务器用户的邮件,如果是,直接投送到用户邮件中.否则向域名服务DNS查询远端SMTP服务器的MX记录, 查询到后,与远端SMTP服务器建立连接,相互交互发送SMTP命令,本地SMTP服务器发送MAIL命令指明邮件发送者,远端SMTP服务器则返回OK应答,本地SMTP服务器再发送RCPT命令确认邮件是否已接收到,远端SMTP服务器接收成功则返回OK应答,反之则会返回拒绝接收应答(但不终止连接), 双方重复多次,当远端SMTP服务器收到全部邮件后会接收到特别的序列,如果远端SMTP服务器成功处理了邮件,则返回OK应答.
关于MX记录:邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据,收信人的地址后缀来定位邮件服务器.
关于CNAME记录(规范名字):将多个名字(域名)映射到同一台计算机.
关于A记录:IP地址
四、SMTP命令与三位数字响应码描述:
1、SMTP命令和三位数字响应码基于ASCII字符集,并以CR和LF符(CR为r、FL为n)结束.
2、三位数字响应码为三位数字代码,每一个数字代码表示一个返回状态.
五、发信步骤:(以登录QQ邮箱进行发信为例)
1、连接QQ的SMTP服务器,通常端口为25 //2开始,每一个命令都要接收一个服务器响应码 2、编辑邮件内容和标题格式: "From:rn" //仅用于显示在邮件上的说明发件人(一般与实际发件人的邮箱号一致才行) "To:rn"(以;分割) //仅用于显示在邮件上的说明一个或多个收件人(随意) "Subject:主题rnrn" //邮件标题 "内容" //邮件内容 3、发送EHLO命令标明身份 4、发送STARTTLS命令标明使用安全传输层协议(TLS) 5、发送AUTH LOGIN命令使用邮箱登录 6、上传QQ账号和邮箱密钥(Base64编码) 7、发送MAIL FROM命令指定发件人,就是当前QQ邮箱. 8、发送RCPT TO命令指定一个或多个收件人 9、发送DATA命令准备开始发送邮件内容 10、发送内容,内容以rn.rn结束 11、发送QUIT命令退出
(具体编写2017年QQ邮件发信请看:http://blog.csdn.net/aaron133/article/details/78363844)
六、列举一些SMTP命令:
(注意:每条命令以rn结尾,每发送一条SMTP命令,要接收一个服务器数字回应码)
1、EHLO命令:
发送格式:EHLO 主机名或发送者SMTP服务器名rn
作用:向服务器标明用户身份
2、STARTTLS命令:
发送格式:STARTTLS arn
作用:这是使用QQ邮箱时,需要的,这是我根据服务器反馈的错误回应码,知道的命令,我理解的不太透彻,应该为开启安全传输层协议(TLS),a字符是随便加的,因为他需要后面跟一些字符串才能成功.
3、AUTH LOGIN命令:
发送格式:AUTH LOGINrn
作用:邮箱认证,发送该命令后应依次先发送邮箱账号,后发送密码(账号密码均使用Base64编码)发送前,需要将账号密码字符串转换为Base64编码,而且账号和密码结尾必须添加上:rn
关于Base64编码:http://blog.csdn.net/aaron133/article/details/78352525
简单转换Base64编码的函数:http://blog.csdn.net/aaron133/article/details/78363844
4、MAIL FROM命令:
发送格式:MAIL FROM:
作用:指定发件人
5、RCPT TO命令:
发送格式:RCPT TO:
作用:指定一个或多个收件人,指定多人时,要多次发送RCPT TO命令.
6、DATA命令:
发送格式:DATArn
作用:表示准备开始发送邮件内容,发送此命令后,接着应发送邮件内容,内容必须以rn.rn作为结束标记.
7、QUIT命令:
发送格式:QUITrn
作用:退出命令
七、列举一些三位数字响应码:
(第一位数字为2,表示命令成功)
(第一位数字为5,表示命令失败)
(第一位数字为3,表示命令未完成)
1、211 系统状态或系统帮助响应
2、214 帮助信息
3、220
八、补充说明:
1、360会报告有第三方软件在使用邮箱发件.
2、SMTP命令中的HELO命令和EHLO命令是不同的,HELO命令是普通SMTP,不需要身份认证就可以使用MAIL FROM命令,然后发送伪造发送者的邮件,而现在大多数为ESMTP(SMTP扩展),是带有身份验证的.