问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

SMTP协议详解:从基础概念到安全升级

创作时间:
作者:
@小白创作中心

SMTP协议详解:从基础概念到安全升级

引用
CSDN
1.
https://blog.csdn.net/nonagontech/article/details/143895691

SMTP(简单邮件传输协议)是互联网上电子邮件系统的基础协议之一,它定义了邮件如何从发送方传输到接收方的规则。本文将详细介绍SMTP协议的工作原理、相关技术名词以及其安全性升级版本STARTTLS,帮助读者全面了解这一重要的邮件传输机制。

一、简介

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。

SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,我们就可以把Email寄到收信人的服务器上了,整个过程只要几分钟。

SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转你发出的电子邮件。

二、SMTP协议原始命令码和工作原理

  • SMTP是工作在两种情况下:一是电子邮件从客户机传输到服务器;二是从某一个服务器传输到另一个服务器

  • SMTP是个请求/响应协议,命令和响应都是基于ASCII文本,并以CR和LF符结束。响应包括一个表示返回状态的三位数字代码

  • SMTP在TCP协议25号端口监听连接请求

  • 连接和发送过程:

  1. 建立TCP连接

  2. 客户端发送HELO命令以标识发件人自己的身份,然后客户端发送MAIL命令服务器端正希望以OK作为响应,表明准备接收

  3. 客户端发送RCPT命令,以标识该电子邮件的计划接收人,可以有多个RCPT行服务器端则表示是否愿意为收件人接受邮件

  4. 协商结束,发送邮件,用命令DATA发送

  5. 以.表示结束输入内容一起发送出去

  6. 结束此次发送,用QUIT命令退出。

  • 另外两个命令:

VRFY---用于验证给定的用户邮箱是否存在,以及接收关于该用户的详细信息。EXPN---用于扩充邮件列表。

  • 邮件路由过程:

SMTP服务器基于‘域名服务DNS中计划收件人的域名来路由电子邮件。SMTP服务器基于DNS中的MX记录来路由电子邮件,MX记录注册了域名和相关的SMTP中继主机,属于该域的电子邮件都应向该主机发送。若SMTP服务器mail.abc.com收到一封信要发到shuser@sh.abc.com

  1. Sendmail请求DNS给出主机sh.abc.com的CNAME记录,如有,假若CNAME到shmail.abc.com,则再次请求shmail.abc.com的CNAME记录,直到没有为止

  2. 假定被CNAME到shmail.abc.com,然后sendmail请求@abc.com域的DNS给出shmail.abc.com的MX记录,shmailMX5shmail.abc.com10shmail2.abc.com

  3. Sendmail最后请求DNS给出shmail.abc.com的A记录,即IP地址,若返回值为1.2.3.4

  4. Sendmail与1.2.3.4连接,传送这封给shuser@sh.abc.com的信到1.2.3.4这台服务器的SMTP后台程序

三、SMTP相关名词

3.1 MX

Mail Exchanger的缩写是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器。

优先级

MX优先级在只存在一条MX记录的时候没有意义。

当您的域名解析记录中存在多条MX记录的时候,邮件发送方的服务器会优先把邮件投递到MX优先级数字最小的服务器,当此服务器出现故障无法接收邮件的时候,发送方的服务器会自动选择下一个优先级最小的服务器,直到邮件投递成功,或者所有服务器都无法投递产生无法投递的错误。

检查MX记录是否存在的方法

进行DNS MX记录查询的一个非常有用的工具是nslookup,可以使用它来查询DNS中的各种记录信息。可以在Windows的命令行下直接运行nslookup进入一个交互模式,在这里能查询各种类型的DNS数据。

DNS的名字解析数据可以有各种不同的类型,有设置这个zone的参数的SOA类型数据,有设置名字对应的IP地址的A类型数据,有设置邮件交换的MX类型数据。这些不同类型的数据均可以通过nslookup的交互模式来查询,在查询过程中可以使用 set type命令设置相应的查询类型。

使用命令查询域名的MX。

  
nslookup -qt = MX 域名  

3.2 CNAME

CNAME即别名记录,这种记录允许您将多个名字映射到同一台计算机。

例如:“mail.域名” cname 指向“qiye.aliyun.com”或“mail.mxhichina.com”,您就可以使用“mail.域名”形式来访问阿里邮箱登录页面。

3.3 SPF

SPF是(Sender Policy Framework)的缩写,一种以IP地址认证电子邮件发件人身份的技术,是非常高效的垃圾邮件解决方案

接收邮件方会首先检查域名的SPF记录,来确定发件人的IP地址是否被包含在SPF记录里面,如果在,就认为是一封正确的邮件,否则会认为是一封伪造的邮件进行退回。

阿里邮箱TXT记录值

"v=spf1 include:spf.mxhichina.com -all"或“v=spf1 include:spf.qiye.aliyun.com -all”

设置邮箱的SPF记录

为了提升邮箱发送至外域邮箱的成功率,建议您给自己的邮箱域名设置一条TXT记录 。

3.4 DKIM

SPF 记录只是验证的其中一部分。第二部分就是新增CNAME ,拥有双重验证,提高邮件到达率。

大多数 ISP 业者使用 SPF 以及 DKIM 来验证来信。如果邮件未验证,很有可能会被移到垃圾信箱、垃圾收件夹或者过滤掉。

DKIM(域名密钥识别邮件标准)允许组织承担传送电子邮件讯息的责任。这个组织可能是主要的寄件人,也有可能是这个讯息的来源,也就是所谓的识别符号。这组识别符号的发送评等承担发送绩效的成功与否。

DKIM 最后会透过加密金钥的方式验证域名。

简单来说

接收方会自动验证透过我们平台发送邮件的 DKIM 。验证寄件人的 DKIM 可以帮助邮件通过 SPF 过滤器。如果您使用自己的发信域名,我们建议您使用新增 CNAME,体验 DKIM 验证带来的益处。

这样您的域名信息会显示在邮件头,其他的寄件人使用相同的 IP 地址发送邮件,也不会影响您的发送评等。

您可以从下面范例里的邮件头看到已发布到发信域名的 CNAME ,代表邮件是通过邮件服务器发送的,不过,收件人只会看到您的邮件域名。

3.5 域名解析生效时间

全球有很多的互联网节点与 DNS 服务器,在设置域名解析记录后,将此结果同步至全球各个DNS服务器,这一过程所需要的时间即为解析生效时间。

域名解析记录生效的时间可以分为如下三种情况(以云解析DNS为例):

  • 新增解析记录生效时间,使用云解析DNS新增解析记录,实时生效。

  • 修改解析记录生效时间,使用云解析DNS解析修改解析记录,最终生效时间取决于各地运营商的DNS服务器缓存刷新时间(各地ISP的DNS上缓存了修改前的解析记录,不会实时更新),一般情况下等同于您之前设置解析时的 TTL 时间。例如你之前的解析设置中TTL值为10分钟,修改解析后将在10分钟内实现全球生效。

  • 修改DNS后,设置解析记录生效时间,如修改了DNS地址后使用云解析DNS修改解析记录,最终生效时间同样取决于各地运营商的DNS服务器缓存刷新时间。但各地DNS的刷新时间不一致,且刷新时间较长,导致解析在全球生效时间需要24~48 小时。.com等国际域名需要 48 小时,.cn 等国内域名需要24小时。

四、STARTTLS

STARTTLS,是一种明文通信协议的扩展,能够让明文的通信连线直接成为加密连线(使用SSL或TLS加密),而不需要使用另一个特别的端口来进行加密通信,属于机会性加密

电子邮件客户端和服务器之间的连接提供了两种使用 TLS 保护的方法:

  • 隐性 TLS 从一开始就对连接进行加密并在单独的端口上运行

  • STARTTLS 提供了一种将现有未加密连接升级到 TLS 的机制

有时 STARTTLS 被视为一种机会加密模式,仅在可用时提供 TLS 保护。这很容易受到降级攻击。但是,现代电子邮件客户端通常期望强制执行 STARTTLS,并且在启用时,不可能进行未加密的通信。

众所周知,SMTPS(端口465上的显式SSL)在1998年已被弃用,因此SMTP STARTTLS是适用的,它可以在任何端口上工作,尽管587通常用于提交。

与SMTPS相比,SMTP STARTTLS的一个优点是它可以与同一端口上的非加密流量共存,因此您可以连接到不安全的端口(例如25),然后发送STARTTLS命令,然后从该点开始已被加密,您通常可以放心使用AUTH PLAIN登录之类的内容。

AWS SES 流程图

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号