邮件协议
一、SMTP协议
SMTP(简单邮件传输协议,Simple Mail Transfer Protocol)是电子邮件传输的internet标注通信协议,当前协议版本可扩展身份验证、加密等功能。SMTP服务器通常在TCP/25(纯文本)和TCP/587、TCP/465(都是用于加密通信),它用于替代POP3协议。
1、交互过程
+----------+ +----------+
+------+ | | | |
| User |<-->| | SMTP | |
+------+ | Client- |Commands/Replies| Server- |
+------+ | SMTP |<-------------->| SMTP | +------+
| File |<-->| | and Mail | |<-->| File |
|System| | | | | |System|
+------+ +----------+ +----------+ +------+
SMTP client SMTP server
当SMTP客户端有邮件要传输时,它就会建立一个双向的传输通道给SMTP服务器。 SMTP客户端的责任是将邮件信息传输到一个或多个SMTP服务器或报告其失败。
2、SMTP命令
关键词 | 变量 |
---|---|
HELO | 发送端的主机名,标记自己的身份 |
MAIL FROM | 发信人地址 |
RECP TO | 用来表示邮件收件人的地址 |
DATA | 邮件主体,即邮件内容 |
QUIT | 结束会话 |
RSET | 中止会话,任何被存储的发件人、收件人和邮件数据都必须丢弃,并清除所有缓冲区和状态列表 |
VRFY | 要求接收方确认相关参数(如用户或邮箱) |
EXPN | 验证批量给定的邮箱列表是否存在。它也存在于VRFY同样的问题,故而大多数情况下会被禁用 |
HELP | 将服务器有用的信息发送给客户 |
3、SMTP应答
代码 | 说明 |
---|---|
211 | 系统状态或系统帮助响应 |
214 | 帮助信息 |
220 | 服务就绪 |
221 | 服务关闭传输通道 |
250 | 请求的邮件操作已完成 |
251 | 用户不是本地,将被转发 |
354 | 开始邮件输入 |
421 | 服务不可用,正在关闭传输通道 |
450 | 未采取请求操作,邮件不可用(如邮件服务器繁忙) |
500 | 语法错,不能识别命令 |
502 | 命令未被实现 |
551 | 用户不是本地用户。 |
552 | 请求邮件的操作种植,超出存储空间 |
553 | 所请求的动作未执行,邮箱名不允许使用 |
555 | 请求失败(如,没有SMTP服务) |
4、SMTP事务组成
这里有三个步骤对于mail事务,第一步用 MAIL 命令给出发送者的身份,第二步用一个或者多个RCPT命令给出接收者信息,接着用DATA命令给出邮件数据。
第一步是MAIL命令,<reverse-path>包含发送者邮箱( <SP>是空格,<CRLF>是回车换行)
MAIL <SP> FROM:<reverse-path> <CRLF>
这个命令告诉接收者,开始一个新的邮件事务,重置所有的状态表和缓存区,包括接受者信息和邮件数据,<reverse-path>被用于报告错误,如果命令被接受,返回250 OK
第二步是 RCPT命令
RCPT <SP> TO:<forward-path> <CRLF>
这个命令提供一个接收者邮箱,如果被接受返回250 OK,如果不能被识别,返回550 Failure,这个第二步可以被重复多次。
第三步是 DATA命令
DATA <CRLF>
如果被接受,返回354,并认为所有后续行都会邮件数据信息。当收到文本结束符时候,返回250 OK
邮件数据的末尾必须被指明,为了激活命令和回复的对话。通过发送只包含一个英文句号的行,来提示邮件数据结束。
5、SMTP安全扩展
1)SMTP AUTH
SMTP authentication(SMTP 身份验证)是扩展SMTP(ESMTP)的扩展,而扩展SMTP又是SMTP网络协议的扩展。它允许SMTP客户端(即邮件发件人)通过身份验证机制登录到SMTP服务器。通过这种方式,让具有信赖的用户才能通过SMTP服务器发送邮件到相关网络中并进行转发。可用于防止垃圾邮件、开放邮件中继等恶意攻击。
该扩展通过TCP/587进行接收电子邮件,这是属于强制性的。并且该扩展提供嘻嘻了不同安全级别的身份验证机,SMTP服务器可以使用这些机制来检查SMTP客户端的可信度。
-
普通(PLAIN):通过客户端的用户名和密码进行身份验证。两者都以未加密的方式传输,然后以 Base64 字符集进行编码。
-
登录(LOGIN):工作原理与普通类似,但用户名和密码的Base64字符集分两步传输,而不仅仅是一步。
-
CRAM-MD5:普通和登录的替代方案,根据质询-响应原则具有更高级别的安全性。由于垃圾邮件发送者可以从 Base64 字符集中相对快速地解码用户的个人访问数据,因此密码不会通过此机制以代码或纯文本形式传输到服务器。相反,服务器为客户端提供了一种计算任务,该任务只能在密码的帮助下解决。此任务随每次登录而更改,因此垃圾邮件发送者不会滥用以前服务器连接中的数据。
-
其他机制还有GSSAPI、MD5、NTLM等
2)SMTP over SSL/TLS
是SMTP基于SSL/TLS协议志强的一种变种协议,它继承了SSL安全协议的非对称加密的高度安全(基于非堆成算法),可防止邮件泄露。它使用TCP 465端口进行数据交互。
发送计算机或客户端可以配置为三种交互类型:
-
没有TLS:即不使用TLS;
-
不强制TLS:如果可用,请使用TLS;如果没有,可不使用TLS发送邮件;
-
强制TLS:只有使用TLS才能传递电子邮件;
二、POP
POP(Post Office Protocol,邮局协议)是电子邮件客户端用于从邮件服务器检索电子邮件的应用程Internet标准协议,与IMAP一起是最常见的电子邮件检索协议。目前POP3是最常见的版本.
它使用TCP/110端口进行相关数据通信;但是它也可以与SSL/TLS进行联合使用进而保证内容传输安全,此时它的端口是TCP/995。
1、工作模式
POP3服务器启用POP3服务并侦听TCP/110端口,当客户端希望使用POP3进行电子邮件检索时,它会与POP3服务器之间建立TCP连接,连接建立成功,客户端将向POP3发送命令,此时会话进行“授权( authorization)”状态。在随后的邮件事务状态中,客户端和服务器交换命令与响应,直到连接关闭。党客户端发送quit命令时是,会话将进入“更新(update)”状态,POP3服务器将释放在邮件事务状态期间获取的任何资源,并说“再见(goodbye,即中断TCP连接)”
三、IMAP
互联网邮件访问协议(Internet Message Access Protocol,IMAP)是一种标准的电子邮件检索协议,它将电子邮件存储在邮件服务器上,并使收件人能够查看和操作它们。IMAP服务器侦听TCP/143端口,而使用SSL/TLS则运行在TCP/993。
四、不同之处
POP3 和 IMAP 都与电子邮件的接收有关,但与简单邮件传输协议 (SMTP) 不同,后者是一种用于在互联网上传输电子邮件的协议。SMTP 发送电子邮件,邮件处理程序代表收件人接收电子邮件,并使用 POP3 或 IMAP 读取邮件。
五、邮件攻击方式
1、钓鱼邮件
钓鱼邮件是偏向于社工方面进行,通过编写让人感兴趣的恶意邮件,使用户点开该邮件进而引发其他的问题。
2、开放中继
是邮件服务器允许任何人未经验证使用SMTP服务发送电子邮件,那么这就意味着恶意人员可通过该邮件服务器发送垃圾邮件。
3、邮件病毒
通过电子邮件传播恶意病毒。