精华内容
下载资源
问答
  • SMTP协议

    2016-04-20 20:36:21
    SMTP协议

    这里写图片描述
    SMTP协议

    展开全文
  • smtp协议

    千次阅读 2018-05-20 16:15:25
    SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件 时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程 只要几分钟。SMTP服务器则是遵循SMTP协议...
    基本概念

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件
    的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件
    时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程
    只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。SMTP
    是一种TCP协议支持的提供可靠且有效电子邮件传输的应用层协议。

    • 工作过程

    首先,运行在发送端邮件服务器主机上的SMTP客户,发起建立一个到运行在接收端邮件服务器主机上的
    SMTP服务器端口号25之间的TCP连接。如果接收邮件服务器当前不在工作,SMTP客户就等待一段时间后再
    尝试建立该连接。

    2、SMTP命令和应答

    这里写图片描述
    SMTP使用一些命令和应答,在MTA客户和MTA服务器之间进行之间传输报文。如下图所示,为SMTP主要的命令和应答:
    这里写图片描述

    3、邮件报文的封装和报文格式

    SMTP协议可以将互联网邮件报文封装在邮件对象中。SMTP协议的邮件对象由两个部分组成:信封和内容。

    • 信封实际上是一种SMTP命令。
    • 邮件报文是邮件对象中的内容,它又有首部和主体两个部分。
      如下图就是一个邮件对象的组成的示例:
      这里写图片描述

    下面是写进了RFC文档的对报文格式的定义:

    
     1. 所有报文都是由ASCII码组成
     2. 报文由报文行组成,各行之间用回车(CR)、换行(LF)符分隔
     3. 报文的长度不能超过998个字符
     4. 报文行的长度≤78个字符之内(不包括回车换行符)
     5. 报文中可包括多个首部字段和首部内容
     6. 报文可包括一个主体,主体必须用一个空行与其首部分隔
     7. 除非需要使用回车与换行符,否则报文中不使用回车与换行符
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    4、邮件报文的传送过程

    • 连接建立
    SMTP客户和SMTP服务器首先要建立TCP连接。
    
     1. 从客户端使用熟知端口号25建立与服务器的TCP连接,SMTP服务器向该客户送回应答码220,并且还为客户端提供了服务器的域名
     2. 客户端收到应答码后,发送HELO命令,启动客户端和服务器之间的SMTP会话。该客户端发送的HELO用来向服务器提供客户端的标识信息
     3. 服务器端回应应答码250,通知客户端:请求建立邮件服务会话已经实现
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    -报文发送

    在SMTP客户与SMTP服务器之间的连接建立之后,发信的用户就可以与一个或多个收信人交换邮件报文了。
    
     1. 客户用“MAIL FROM”向服务器报告发信人的邮箱与域名
     2. 服务器向客户回应应答码“250”,代表请求命令完成
     3. 客户用“RCPT TO”命令向服务器报告收信人的邮箱与域名
     4. 服务器向客户回应应答码“250”,代表请求命令完成
     5. 客户用“DTAT”命令对报文的传送进行初始化
     6. 服务器回应“354”,表示可以进行邮件输入了
     7. 客户用连续的行向服务器传送报文的内容,每行以两字符的行结束标识(CR与LF)终止。报文以只有一个“.”的行结束
     8. 服务器向客户回应应答码“250”,代表请求命令完成
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 连接终止
    报文发送完毕后终止本次SMTP会话。
    
     - 客户端发送“QUIT”命令
     - 服务器收到命令后,回应应答码“221”,并结束会话
    
    • 1
    • 2
    • 3
    • 4
    • 5

    下面,我们模拟上述三个步骤,对下面这个邮件报文进行传输:
    这里写图片描述

    • 建立连接
      这里写图片描述
    • 传输报文
      这里写图片描述
    • 终止连接
      这里写图片描述

    5、SMTP协议的扩展协议:MIME

    MIME不属于一个邮件传输协议,它只是对SMTP的一个扩展,不能替代SMTP协议,至于为啥要替换SMTP了。主要是因为SMTP协议在传输报文时,只能够传输7位的ASCII格式的报文,不支持那些不使用7位ASCII格式的语种,同时它也不支持语音和视频数据的传输,因此我们需要一个辅助性协议帮忙传输报文,它就是MIME。

    MIME协议定义了5种头部,用来加在原始的STMP头部,以便定义参数的转换。他们分别是:

    
     1. MIME-Version:MIME版本
     2. Content-Type:内容类型
     3. Content-Tansfer-Encoding:内容传输编码
     4. Content-ID:内容标识
     5. Content-Description:内容描述
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    如下图所示,就是一个MIME邮件报文格式:
    这里写图片描述

    展开全文
  • SMTP 协议

    2018-12-28 20:41:57
    Simple Mail Transfer Protocol 简称 SMTP协议 ,SMTP使用TCP的25号端口,如果采用SSL加密传输,使用TCP端口465.SMTP客户端一般只能用来发送消息,如果想要获取服务器的邮箱内容,需要用到POP3或者IMAP协议。...

    1.简介

    Simple Mail Transfer Protocol 简称 SMTP协议 ,SMTP使用TCP的25号端口,如果采用SSL加密传输,使用TCP端口465.SMTP客户端一般只能用来发送消息,如果想要获取服务器的邮箱内容,需要用到POP3或者IMAP协议。

    2.原理

    当发送者想要发送邮件时,邮件发送者与邮件接受者建立通信,邮件发送者发送SMTP给邮件接受者,接收者接收到邮箱会回复。
    建立通道后( <SP> :空格 <CRLF> 换行)
    发送者发送MAIL命令,指定发送者的邮箱
    S: MAIL <SP> FROM: <Sender Address> <CRLF>
    接收者如果接收命令返回 250 OK
    发送者发送RCPT命令,指定接收者的邮箱
    S: RCPT <SP> TO: <Receiver Address> <CRLF>
    接收者如果接收命令返回 250 OK
    发送者发送DATA命令,指定接收者的邮箱
    S: DATA <CRLF>
    如果被接受,返回354,并认为所有后续行都会邮件数据信息。客户端连续的行向服务器传送报文的内容,每行以两字符的行结束标识(CR与LF)终止。报文以只有一个“.”的行结束

    3.SMTP用telnet发送消息的步骤

    • S:telnet smtp.163.com 25 建立通信

    • R:220 163.com Anti-spam GT for Coremail System (163com[20141201])

    • S:ehlo xxx@163.com

    • R:
      250-mail
      250-PIPELINING
      250-AUTH LOGIN PLAIN
      250-AUTH=LOGIN PLAIN
      250-coremail 1Uxr2xKj7kG0xkI17xGrU7I0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UrMIJLrUCa0xDrUUUUj
      250-STARTTLS
      250 8BITMIME

    • S:auth login

    • R:334 dXNlcm5hbWU6 输入账号

    • S:xxxx base64加密

    • R:334 UGFzc3dvcmQ6 输入密码

    • S:xxxx base64加密

    • S: mail from:xxx@163.com

    • R:250 OK

    • S: rcpt to:xxx@xxx.com

    • R:250 OK

    • S:data

    • R:354 End data with <CR><LF>.<CR><LF>

    • S:
      from:xxx@163.com
      to:xxx@xxx.com
      subject:balabala

      body

      . 结束符

    • R: 250 OK

    展开全文
  • 易语言简单SMTP协议源码,简单SMTP协议,等待数据,发送字符,断开,BASE64编码
  • 协议基础:SMTP:使用Telnet学习SMTP协议

    万次阅读 多人点赞 2018-07-30 20:05:50
    SMTP是简单邮件传输协议的缩写,这篇文章将通过如何使用telnet命令发生邮件结合RFC文档来学习一下SMTP协议的基础知识。 OSI模型 &amp;amp;amp;amp; SMTP SMTP vs POP3 &amp;amp;amp;amp; IMAP SMTP和...

    SMTP是简单邮件传输协议(Simple Mail Transfer Protocol)的缩写,这篇文章将通过如何使用telnet命令发生邮件结合RFC文档来学习一下SMTP协议的基础知识。

    OSI模型 & SMTP

    根据OSI7层或者5层的模型不同,各层常见的协议信息如下:
    这里写图片描述

    其实协议众多,这里借用一张来源与网络的整理结果用于展示OSI7层模型的常见协议的信息,包括应用层的SMTP/POP3/IMAP4

    这里写图片描述

    SMTP vs POP3 & IMAP4

    这里写图片描述
    SMTP和POP3以及IMAP都是用来做什么的,简单的来说,smtp主要负责发,pop3和imap主要负责收。
    一封邮件的发&收的流程是通过SMTP进行发送,使用POP3或者IMAP4进行接收的。
    这里写图片描述

    SMTP RFC文档

    SMTP的RFC初始版本是RFC 821,以下列出了SMTP相关的一部分RFC变化的列表

    RFC版本 时间 说明 URL
    RFC 821 1982/08 初始版本 https://tools.ietf.org/html/rfc821
    RFC 974 1986/01 域名系统需求和实现相关 https://tools.ietf.org/html/rfc974
    RFC 1035 1987/11 域名系统需求和实现相关 https://tools.ietf.org/html/rfc1035
    RFC 1869 1995/11 ESMTP规格扩展 https://tools.ietf.org/html/rfc1869
    RFC 2841 2001/04 - https://tools.ietf.org/html/rfc2841
    RFC 5321 2008/10 - https://tools.ietf.org/html/rfc5321

    SMTP模型

    参看RFC5321,可以了解到SMTP的模型如下:
    这里写图片描述

    常用指令

    SMTP中包含一些基本的命令用于客户端和服务器端进行交互,现列出一些常见的指令:

    指令 说明
    HELO 与服务器确认,通知其客户端使用的机器名称,一般邮件服务器不做限定
    AUTH 使用AUTH LOGIN与服务器进行登录验证
    MAIL FROM 发件人信息,填写与认证信息不同往往被定位为垃圾邮件或恶意邮件
    RCPT TO 收信人地址
    DATA 输入邮件基本信息
    FROM 邮件基本信息:发信人显示信息(此处可以伪造身份,但是非常容易被识别)
    FROM 邮件基本信息:服务器收件人显示信息
    SUBJECT 邮件基本信息:邮件标题,不填写也往往容易被定位为垃圾邮件
    QUIT 断开链接

    常见指令返回码说明

    返回码 说明
    220 服务就绪
    250 请求动作成功完成
    235 认证通过
    221 处理中
    354 发送开始,往往与data指令结合
    500 指令错误
    550 命令无法执行

    基本流程

    SMTP客户端与SMTP服务器端一个常见的流程如下所示:

    Created with Raphaël 2.1.2SMTP客户端SMTP客户端SMTP服务器端SMTP服务器端HELO 机器名(SMTP服务器,这是我的机器名)250 OK我要登录:输入用户名/密码AUTH LOGIN334 返回码(eg:dXNlcm5hbWU6)邮箱登录名的base64编码334 返回码(eg:UGFzc3dvcmQ6)登录密码base64编码235 Authentication successful设定发信人地址MAIL FROM:<发信人地址eg:devopsadmin@163.com>250 Mail OK设定收信人地址RCPT TO:<收信人地址eg:liumiaocn@outlook.com>250 Mail OK我要写信了DATA354 End data with <CR><LF>.<CR><LF>设定From/To/Subject/信件内容,最后以.结束好的,给你发信250 Mail OK

    TELNET

    使用telnet可以使用SMTP指令与服务器端进行交互,不同的OS telnet的安装不同,比如:

    操作系统 安装方式
    CENTOS yum install telnet
    MacOS brew install telnet
    Alpine apk add busybox-extras(Alpine 3.7版本以后,之前包含在busybox中)

    验证

    这里使用163的免费信箱进行mail发送试验,信息如下:

    项目 说明
    发送方 devopsadmin@163.com
    接收方 liumiaocn@outlook.com
    邮件标题 confirm information

    邮件内容

    Hi, Michael
    
    I got your message.
    Looking forward to meeting you.
    
    Thanks & Best Regards.

    操作日志

    [root@platform ~]# telnet smtp.163.com 25
    Trying 123.125.50.134...
    Connected to smtp.163.com.
    Escape character is '^]'.
    220 163.com Anti-spam GT for Coremail System (163com[20141201])
    HELO liumiao
    250 OK
    AUTH LOGIN
    334 dXNlcm5hbWU6
    ZGV2b3BzYWRtaW4=
    334 UGFzc3dvcmQ6
    密码的base64编码
    235 Authentication successful
    MAIL FROM:<devopsadmin@163.com>
    250 Mail OK
    RCPT TO:<liumiaocn@outlook.com>
    250 Mail OK
    DATA
    354 End data with <CR><LF>.<CR><LF>
    FROM: devopsadmin@163.com
    To: liumiaocn@outlook.com
    Subject: confirm information
    Hi, Michael
    
    I got your message.
    Looking forward to meeting you.
    
    Thanks & Best Regards.
    .
    250 Mail OK queued as smtp4,DtGowAAHhSrBwV5bL3XJAA--.5571S2 1532936690
    Connection closed by foreign host.
    [root@platform ~]#

    邮件接收

    这里写图片描述

    操作说明

    注意事项

    输入AUTH LOGIN之后需要输入用户名和密码进行登录,登录时注意如下事项

    • 登录名称为@之前的内容的base64编码,比如devopsadmin@163.com为devopsadmin的base64编码
    • base64编码基本等于明码,但是使用的过程中请注意是否包含回测换行符号,比如devopsadmin的base64编码生成:echo -n “devopsadmin” |base64
    • 密码不是邮箱的密码,网易的话专门还有一个密码,请注意
    • 邮件发送往往服务器端需要做设定,请确认相关的邮件服务器
    • 垃圾邮件不同的邮件系统判断标准不同,一般正确将全部信息填完基本没有问题

    base64编码的换行

    请注意看一下如下代码包含换行与否的情况,认证通不过的时候,请注意检查

    [root@platform ~]# echo -n "devopsadmin" |base64
    ZGV2b3BzYWRtaW4=
    [root@platform ~]# echo "ZGV2b3BzYWRtaW4=" |base64 -d
    devopsadmin[root@platform ~]# 
    [root@platform ~]# 
    [root@platform ~]# echo "devopsadmin" |base64
    ZGV2b3BzYWRtaW4K
    [root@platform ~]# echo "ZGV2b3BzYWRtaW4K" |base64 -d
    devopsadmin
    [root@platform ~]# 

    DATA段

    DATA段为mail的正文,在这里还可以设定FROM/TO,有些人会在这里试图改变设定来攥改发信的地址,比如那些垃圾邮件的发送者,基本上邮件系统都会在这里做防护。比如163的邮箱,反垃圾邮件的策略如下,对伪造邮件头或者其他方式的欺骗性手段都会进行判断:

    
    1、收件人事先没有提出要求或者同意接收且无法拒收的;
    
    2、使用或包括无效的或伪造的邮件头;
    
    3、使用或包括伪造的、无效的或者不存在的域名;
    
    4、利用任何技术伪造、隐藏或掩盖传输路径来源的识别信息;
    
    5、使用任何方式生成欺骗性地址信息;
    
    6、在没有获得第三方许可的情况下使用、中继或通过第三方的互联网设备;
    
    7、主题行或内容包含错误、误导或虚假的信息;
    
    8、违反了国家相关法律规定和网易服务条款。

    比如DATA部分的FROM/TO/Subject等不正常设定,你很容易会收到包含554 DT:SPM的信息:

    554 DT:SPM 163 smtp4,DtGowABXwXYYqF5bzXrBAA--.5359S2 1532930131,please see http://mail.163.com/help/help_spam_16.htm?ip=61.152.164.43&hostid=smtp4&time=1532930131

    以下为网易免费邮箱关于垃圾邮件相关的错误码:

      •554 DT:SPM 发送的邮件内容包含了未被许可的信息,或被系统识别为垃圾邮件。请检查是否有用户发送病毒或者垃圾邮件;
      •554 DT:SUM 信封发件人和信头发件人不匹配;
      •554 IP is rejected, smtp auth error limit exceed 该IP验证失败次数过多,被临时禁止连接。请检查验证信息设置;
      •554 HL:IHU 发信IP因发送垃圾邮件或存在异常的连接行为,被暂时挂起。请检测发信IP在历史上的发信情况和发信程序是否存在异常;
      •554 HL:IPBIP不在网易允许的发送地址列表里;
      •554 MI:STC 发件人当天内累计邮件数量超过限制,当天不再接受该发件人的投信。请降低发信频率;
      •554 MI:SPB 此用户不在网易允许的发信用户列表里;
      •554 IP in blacklist 该IP不在网易允许的发送地址列表里。

    PS:技术不是用来发送垃圾邮件或者欺骗性的邮件的,而且很多免费的资源往往本身具有公益性质,请不要利用别人没有关闭的门窗让互联网变得更加污浊,学习的时候也请给自己发信不要打扰别人。

    参考文档

    https://tools.ietf.org/html/rfc5321
    http://help.163.com/09/1224/14/5RAB4VK500753VB8.html?servCode=6010330
    http://help.163.com/09/1224/17/5RAJ4LMH00753VB8.html

    展开全文
  • SMTP协议介绍

    万次阅读 多人点赞 2017-04-03 17:13:46
    1、SMTP介绍 ...SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件 时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程 只要几分钟。SMTP服务器则
  • 易语言Smtp协议应答机制源码,Smtp协议应答机制,数据到达,上线事件,取中间,pq完整解码,十六进制文本到字节集,UTF8转GBK,BASE64解码
  • Smtp协议应答机制.rar

    2020-04-05 12:41:01
    Smtp协议应答机制.rar
  • SMTP协议简介

    2016-04-07 14:22:00
    SMTP协议简介
  • SMTP协议分析

    千次阅读 2017-07-19 18:06:22
    SMTP协议分析 第1章.  SMTP概述 1.1.  SMTP在邮件通信中的位置 SMTP,即简单邮件传送协议,所对应RFC文档为RFC821。同http等多数应用层协议一样,它工作在C/S模式下,用来实现因特网上的邮件传送。SMTP在整个...
  • 以课件形式讲述SMTP协议和POP3协议,并分析数据
  • smtp协议与pop3协议

    千次阅读 2015-02-08 16:21:47
    最近一直想不通,SMTP协议和POP3协议各自的作用,在网上找了一个自以为最直观的。  SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,546
精华内容 4,618
关键字:

smtp协议