E-mail邮件协议的概述
认识E-mail协议:
SMTP邮箱发信(QQ邮箱为例):http://blog.csdn.net/aaron133/article/details/78363844
POP3邮箱收信(163邮箱为例):http://blog.csdn.net/aaron133/article/details/78413701
一、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:<123854854423-43534534@smtp.126.com>
X-mailer:Sendmail 8.9.0
Subject:Hello,World
拿步骤三来解释以上的含义说明:
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:<账号@域名.com>\r\n" //仅用于显示在邮件上的说明发件人(一般与实际发件人的邮箱号一致才行)"To:<账号@域名.com>\r\n"(以;分割) //仅用于显示在邮件上的说明一个或多个收件人(随意)"Subject:主题\r\n\r\n" //邮件标题"内容" //邮件内容3、发送EHLO命令标明身份4、发送STARTTLS命令标明使用安全传输层协议(TLS)5、发送AUTH LOGIN命令使用邮箱登录6、上传QQ账号和邮箱密钥(Base64编码)7、发送MAIL FROM命令指定发件人,就是当前QQ邮箱.8、发送RCPT TO命令指定一个或多个收件人9、发送DATA命令准备开始发送邮件内容10、发送内容,内容以\r\n.\r\n结束11、发送QUIT命令退出
(具体编写2017年QQ邮件发信请看:http://blog.csdn.net/aaron133/article/details/78363844)
六、列举一些SMTP命令:
(注意:每条命令以\r\n结尾,每发送一条SMTP命令,要接收一个服务器数字回应码)
1、EHLO命令:
发送格式:EHLO 主机名或发送者SMTP服务器名\r\n
作用:向服务器标明用户身份
2、STARTTLS命令:
发送格式:STARTTLS a\r\n
作用:这是使用QQ邮箱时,需要的,这是我根据服务器反馈的错误回应码,知道的命令,我理解的不太透彻,应该为开启安全传输层协议(TLS),a字符是随便加的,因为他需要后面跟一些字符串才能成功.
3、AUTH LOGIN命令:
发送格式:AUTH LOGIN\r\n
作用:邮箱认证,发送该命令后应依次先发送邮箱账号,后发送密码(账号密码均使用Base64编码)发送前,需要将账号密码字符串转换为Base64编码,而且账号和密码结尾必须添加上:\r\n
关于Base64编码:http://blog.csdn.net/aaron133/article/details/78352525
简单转换Base64编码的函数:http://blog.csdn.net/aaron133/article/details/78363844
4、MAIL FROM命令:
发送格式:MAIL FROM: <邮箱账号@××.com>\r\n
作用:指定发件人
5、RCPT TO命令:
发送格式:RCPT TO:<邮箱账号@××.com>\r\n
作用:指定一个或多个收件人,指定多人时,要多次发送RCPT TO命令.
6、DATA命令:
发送格式:DATA\r\n
作用:表示准备开始发送邮件内容,发送此命令后,接着应发送邮件内容,内容必须以\r\n.\r\n作为结束标记.
7、QUIT命令:
发送格式:QUIT\r\n
作用:退出命令
七、列举一些三位数字响应码:
(第一位数字为2,表示命令成功)
(第一位数字为5,表示命令失败)
(第一位数字为3,表示命令未完成)
1、211 系统状态或系统帮助响应
2、214 帮助信息
3、220 <domain>服务就绪
4、221 <domain>服务关闭
5、250 要求的邮件操作完成
6、251 用户非本地,将转发向<forward-path>
7、354 开始邮件输入,以“.”结束
8、421 <domain>服务未就绪,关闭传输信道
9、450 要求的邮件未完成,邮箱不可用
10、451 放弃要求的操作;处理过程中出错
11、452 系统存储不足,要求的操作未执行
12、501 参数格式错误
13、502 命令不可实现
14、503 错误的命令序列
15、504 命令参数不可实现
16、553 邮箱名不可用,要求的操作未执行
17、550 要求的邮件未完成,邮箱不可用
18、552 过量的存储分配,要求的操作未执行
29、551 用户非本地,请尝试<forward-path>
20、552 过量的存储分配,要求的操作未执行
21、554 操作失败
更多三位数字响应码查看:http://cn.evo-mailserver.com.tw/support/smtp_error_code.php
八、补充说明:
1、360会报告有第三方软件在使用邮箱发件.
2、SMTP命令中的HELO命令和EHLO命令是不同的,HELO命令是普通SMTP,不需要身份认证就可以使用MAIL FROM命令,然后发送伪造发送者的邮件,而现在大多数为ESMTP(SMTP扩展),是带有身份验证的.
3、使用SMTP协议QQ邮箱发信例子:http://blog.csdn.net/aaron133/article/details/78363844
E-mail邮件协议的概述相关推荐
- java Mail imap协议获取到得邮件文件夹名称
java Mail imap协议获取到得邮件文件夹名称 Imap协议 QQ imap.qq.com 端口:143 获取得邮件 Folder[] list 中 1.其他文件夹 2.INBOX 3.Sen ...
- 邮件服务器SMTP概述
邮件服务器 最近由于涉及到邮件服务器相关内容的工作,并且需要进行部分的协议转发的工作故了解一下邮件服务器的协议.当前选择应用较为广泛的SMTP的邮件协议. SMTP协议概述 SMTP全称是Simple ...
- 协议分析---TCP/IP协议和邮件协议
协议分析-TCP/IP协议和邮件协议 一.TCP/IP 1.TCP/IP参考模型概述 1.1 常见不同层使用的协议 应用层:Telnet.FTP.TFTP.SNMP.HTTP.SMTP.NFS.D ...
- Java Mail 邮件发送(一):入门Demo
本文首发于简书,Java Mail 邮件发送(一):Demo 上周公司的项目要求开发邮件发送功能.自己在网上跟着教程边学边做了一下午,现在基本开发完成了.由于一个同事也想看下该怎么写,顺便学习下.所以 ...
- 邮件协议(SMTP)性能测试总结(Foxmail邮箱)
https://www.cnblogs.com/luihengk/p/6102095.html 先介绍一下邮件协议SMTP的工作机制(连接和发送过程),用wireshark工具抓包进行分析,如下: S ...
- [PHP] MIME邮件协议的multipart类型
邮件协议中的三种情况,对应下面的三种类型 multipart/mixed可以包含附件. multipart/related可以包含内嵌资源. multipart/alternative 纯文本与超文本 ...
- Linux mail 邮件发送
Linux mail 邮件介绍 在Linux系统下我们可以通过"mail"命令,发送邮件,在运维中通常我们它来实现邮件告警. 安装 (方案1) 一.安装邮件服务 yum insta ...
- 网安学习(二十五)HTTP协议、HTTS、邮件协议
一.HTTP协议 1.概念 HTTP(超文本传输协议)是用于在万维网服务器上传输超文本(HTML)到本地浏览器的传输协议 基于TCP/IP(HTML文件.图片.查询结构等) 2.万维网服务 采用C/S ...
- 邮件协议(POP3、IMAP、SMTP)
1.常见的邮件协议有POP3.IMAP.SMTP 1.1 POP3:全名为"Post Office Protocol - Version 3",即 邮局协议版本3.是TCP/IP协 ...
最新文章
- python爬虫requests json与字典对象互相转换
- 深入理解.net服务器控件
- NLog日志写文件的一个性能问题
- Spring初始化机制
- 善用assert函数
- Uncaught TypeError: undefined is not a function
- PostgreSQL 优化器入门
- 基于matlab的微分例题,matlab程序设计常微分方程编程例题答案数学.doc
- 对文本简单加密解密算法
- con 元器件符号_multisim元器件符号速查
- 网络诊断显示“DNS服务器可能不可用”
- Androidapk安装流程之adb安装
- csv逗号分割不兼容 解决_excel保存为csv 不兼容的功能
- 贪婪洞窟2服务器维护,《贪婪洞窟2》停服维护更新内容介绍 24日停机维护更新哪些内容...
- 手机银行APP评测系列:天津银行持续优化手机银行用户体验,但仍需加强细节提升
- Vivado仿真小技巧,让所有模块的波形都可以显示
- 聚焦“共同富裕”,盛世昊通主题会议落实履行社会责任的政策
- java 外文翻译_计算机 java 外文翻译 外文文献 英文文献
- SpringBoot学习(六)——springboot整合后台模板
- cadence CIS 库建立--建立自己维护的CIS数据库