首页 > 其他分享 >SMTP 协议

SMTP 协议

时间:2023-12-14 10:11:49浏览次数:20  
标签:协议 xxx SMTP 发送 命令 服务器 邮件

SMTP 是简单传输协议(Simple Mail Transfer Protocol) 的缩写,它是用于在网络上传输邮件的一种协议。SMTP 协议是目前互联网上主要用来发送邮件的协议之一,其设计目的是使发送邮件的过程尽可能的简单,从而使大多数计算机系统都能支持。

    SMTP 协议的几重要概念和功能:

  1. 邮件传输代理
  2. 邮件队列,邮件服务按一定规则顺序将邮件排列入队,即使在网络中断等待发送的邮件也不会丢失
  3. 邮件认证,邮件服务器通过验证AUTH 命令的身份信息确定用户是否合法,主要验证方式有PLAIN、LOGIN、CRAM-MD5、OAuth等
  4. 邮件转发和中继,SMTP 协议允许邮件服务器转发邮件到其他的邮件服务器,在实际部署使用场景中有些服务器是不是能直接与要发送的目标邮件服务器直接通信,此时蹭的转发和中继就很重要

SMTP 命令

EHLO {s}

连接建立成功后,服务器会立即发出问候220 xxx Server Ready 之类的用语,以220 开关。客户端在收到问候信息时应该发出EHLO 来询问服务支持的扩展,与之相关系还有HELO命令,现在大多主流的邮件服务器已经不再支持了。命令中的{s}是客户端表明自己的身份的标识,以便后面安全服务来验证来源的合法性。邮件服务返回250 xxx表明服务器接受了命令

STARTTLS

在一些旧的客户端中还会存在着一些非TLS的连接,这些连接如果在连接建立后还要实现TLS通信那么就该使用该命令来完成TLS的过程,邮件服务返回250 xxx表明服务器接受了命令

AUTH

授权命令,主要介绍两种常的授权验证方式

  1. PLAIN <mail-parameters> "<pass>"        一组用户名/邮箱及密码的Base64字符串。
  2. LOGIN

    LOGIN 方式有点特殊,邮件服务器在收到LOING后通过 334 xxx来告诉客户端发送用户名/邮箱及密码操作

MAIL FROM: <reverse-path> [SP <mail-parameters>]

该命令是表明发送邮件的发件的邮箱信息,目前一些主流的邮件服器还会再加一组Size 表示邮件数据的大小(byte),邮件服务返回250 xxx表明服务器接受了命令

RCPT TO: <forward-path> [SP <RCPT-parameters>]

该命令是指明邮件要发送到哪些目标邮箱,该命令客户端连接可能多次调用。邮件服务返回250 xxx表明服务器接受了命令

DATA

邮件服务器在接收到该命令后,在完成接收邮件数据准备就绪后要,返回 354 xxx 表明已经就绪

客户再发出邮件数据,邮件数据以<CRLF>.<CRLF>结尾表示完成数据的发送

邮件服务返回250 xxx表明服务器接收邮件数据完成

REST

重置当前连接的所有信息,表明客户端要重新发起新的发送邮件。原则上一次连接只发送一份邮件数据,主流邮件服务器会在接收完成DATA后主动自动断开当前连接。但如果服务器允许支持的,也可以通过该命令在调用QUIT之前再次发送邮件。

NOOP

连接心跳命令,防止连接断开

QUIT

客户完成邮件发送任务可以通过QUIT命令,表明已经完成邮件发送工作,服务器会自动断开当前连接

标签:协议,xxx,SMTP,发送,命令,服务器,邮件
From: https://www.cnblogs.com/BlueEye/p/17900554.html

相关文章

  • Unity3D UDP协议怎样通过应用层来实现可靠性
    Unity3D是一款流行的游戏开发引擎,它提供了丰富的网络功能来支持多人游戏。其中,UDP(UserDatagramProtocol)是一种无连接的传输协议,它提供了高效的数据传输,但不保证数据的可靠性。本文将介绍如何通过应用层来实现UDP协议的可靠性,并给出技术详解和代码实现。对啦!这里有个游戏开发交......
  • [转]cryptoJs DES_CBC_Pkcs7 转成 Java(对称加密早期协议"DES"现已不安全,仅用于老项
    原文地址:cryptoJsDES_CBC_Pkcs7转成Java-唯学而知-博客园前端DES加密:importcryptoJsfrom'crypto-js';//DES加密functionencrypt(message,key,iv){//字符串转16进制constkeyHex=cryptoJs.enc.Utf8.parse(key);constivHex=cryptoJs.enc.U......
  • 如何查看 接上的USB 是不是3.0的协议。
    问题:确定我是用的USB是3.0.这里有一个前提,就是,这个USB口既有USB2.0又有USB3.0,并且开发板Linux系统,在驱动中都使能了。并且这个USB的U盘也是既支持USB2.0也支持USB3.0的。原理图如下: 测试方法:  ......
  • 【干货】SSH安全协议介绍
    原创:厦门微思网络SSH(SecureShell,安全外壳)是一种网络安全协议,通过加密和认证机制实现安全的访问和文件传输等业务。传统远程登录和文件传输方式,例如Telnet、FTP,使用明文传输数据,存在很多的安全隐患。随着人们对网络安全的重视,这些方式已经慢慢不被接受。SSH协议通过对网络数据进行......
  • 【Python小随笔】 Grpc协议的使用
    定义接口//test.protosyntax="proto3";optioncc_generic_services=true;serviceGreeter{//第一个接口rpcOne(OneRequest)returns(OneResponse){}//第二个接口rpcTwo(TwoRequest)returns(TwoResponse){}}//第1个接口请求值messageOn......
  • 高级计算机网络课程结课论文——《5G AKA协议安全性分析综述》
    AbstractInaneraofrapiddevelopmentofthenationaleconomy,variouselectronicproductsandmultimediatechnologieshaveemerged.Asaformofdigitalmedia,digitalvideohasbeenwidelyappliedinvariousfields,bringingjoyandconveniencetopeop......
  • 什么是POP3、SMTP及IMAP?SMTP服务器?
    POP3、SMTP和IMAP是用于电子邮件传输和访问的三种不同协议。它们分别负责电子邮件的接收(POP3)、发送(SMTP)和远程访问(IMAP)。下面是对每个协议的简要解释:POP3(PostOfficeProtocolversion3):POP3是一种用于接收电子邮件的协议。它允许用户从服务器上下载并存储邮件到本地设备,通常在......
  • 使用HTTP协议在Linux上进行API调用
    在Linux系统上使用HTTP协议进行API调用是一种常见的操作,有时候我们需要调用一些外部API来获取数据或者进行自动化操作。下面是一个使用HTTP协议在Linux上进行API调用的代码示例,希望能够帮助你更好地理解这个过程。首先,我们需要使用curl命令行工具来发送HTTP请求。在终端中输入以下......
  • SPI通信协议总结
    我们将讨论最常见协议的基础:串行外设接口(SerialPeripheralInterface,SPI)SPI,I2C和UART比USB,以太网,蓝牙和WiFi等协议要慢很多,但它们更简单,使用的硬件和系统资源也更少。SPI,I2C和UART非常适用于微控制器之间以及不需要传输大量高速数据的微控制器与传感器之间的通信。串行通信 ......
  • Socket.D 网络应用协议,v2.1.6 发布
    有用户说,“Socket.D之于Socket,尤如Vue之于Js、Mvc之于Http”与其它协议的简单对比对比项目socket.dhttpwebsocketrsocketsocket.io发消息(Qos0)有无有有有发送并请求(Qos1)有有无有无发送并订阅有无无有无答复或响应有有无有无......