认识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邮件协议的概述相关推荐

  1. java Mail imap协议获取到得邮件文件夹名称

    java Mail imap协议获取到得邮件文件夹名称 Imap协议 QQ imap.qq.com 端口:143 获取得邮件 Folder[] list 中 1.其他文件夹 2.INBOX 3.Sen ...

  2. 邮件服务器SMTP概述

    邮件服务器 最近由于涉及到邮件服务器相关内容的工作,并且需要进行部分的协议转发的工作故了解一下邮件服务器的协议.当前选择应用较为广泛的SMTP的邮件协议. SMTP协议概述 SMTP全称是Simple ...

  3. 协议分析---TCP/IP协议和邮件协议

    协议分析-TCP/IP协议和邮件协议 一.TCP/IP 1.TCP/IP参考模型概述 1.1 常见不同层使用的协议   应用层:Telnet.FTP.TFTP.SNMP.HTTP.SMTP.NFS.D ...

  4. Java Mail 邮件发送(一):入门Demo

    本文首发于简书,Java Mail 邮件发送(一):Demo 上周公司的项目要求开发邮件发送功能.自己在网上跟着教程边学边做了一下午,现在基本开发完成了.由于一个同事也想看下该怎么写,顺便学习下.所以 ...

  5. 邮件协议(SMTP)性能测试总结(Foxmail邮箱)

    https://www.cnblogs.com/luihengk/p/6102095.html 先介绍一下邮件协议SMTP的工作机制(连接和发送过程),用wireshark工具抓包进行分析,如下: S ...

  6. [PHP] MIME邮件协议的multipart类型

    邮件协议中的三种情况,对应下面的三种类型 multipart/mixed可以包含附件. multipart/related可以包含内嵌资源. multipart/alternative 纯文本与超文本 ...

  7. Linux mail 邮件发送

    Linux mail 邮件介绍 在Linux系统下我们可以通过"mail"命令,发送邮件,在运维中通常我们它来实现邮件告警. 安装 (方案1) 一.安装邮件服务 yum insta ...

  8. 网安学习(二十五)HTTP协议、HTTS、邮件协议

    一.HTTP协议 1.概念 HTTP(超文本传输协议)是用于在万维网服务器上传输超文本(HTML)到本地浏览器的传输协议 基于TCP/IP(HTML文件.图片.查询结构等) 2.万维网服务 采用C/S ...

  9. 邮件协议(POP3、IMAP、SMTP)

    1.常见的邮件协议有POP3.IMAP.SMTP 1.1 POP3:全名为"Post Office Protocol - Version 3",即 邮局协议版本3.是TCP/IP协 ...

最新文章

  1. python爬虫requests json与字典对象互相转换
  2. 深入理解.net服务器控件
  3. NLog日志写文件的一个性能问题
  4. Spring初始化机制
  5. 善用assert函数
  6. Uncaught TypeError: undefined is not a function
  7. PostgreSQL 优化器入门
  8. 基于matlab的微分例题,matlab程序设计常微分方程编程例题答案数学.doc
  9. 对文本简单加密解密算法
  10. con 元器件符号_multisim元器件符号速查
  11. 网络诊断显示“DNS服务器可能不可用”
  12. Androidapk安装流程之adb安装
  13. csv逗号分割不兼容 解决_excel保存为csv 不兼容的功能
  14. 贪婪洞窟2服务器维护,《贪婪洞窟2》停服维护更新内容介绍 24日停机维护更新哪些内容...
  15. 手机银行APP评测系列:天津银行持续优化手机银行用户体验,但仍需加强细节提升
  16. Vivado仿真小技巧,让所有模块的波形都可以显示
  17. 聚焦“共同富裕”,盛世昊通主题会议落实履行社会责任的政策
  18. java 外文翻译_计算机 java 外文翻译 外文文献 英文文献
  19. SpringBoot学习(六)——springboot整合后台模板
  20. cadence CIS 库建立--建立自己维护的CIS数据库

热门文章

  1. 余承东再会张近东 战略合作升级点燃818第一把火
  2. 三维数学基础之坐标系、向量、矩阵
  3. 【LigerUI实战】Grid弹出编辑popup
  4. Codesys如何控制高创驱动器数字IO输出的通断
  5. Mac Git下载和安装(解释了Git安装包无法直接安装问题)
  6. LaTeX 段落和换行
  7. MATLAB Latex中如何实现换行
  8. 黑马程序员祝大家新春快乐,兔年大吉!(内含红包封面)
  9. setTimeout是否阻塞
  10. 【转】HTML网页中插入视频各种方法