简单邮件传输协议 (SMTP)
电子邮件正在成为当今互联网上最有价值的服务之一。大多数互联网系统使用 SMTP 作为一种将邮件从一个用户传输到另一个用户的方法。 SMTP 是一种推送协议,用于发送邮件,而 POP(邮局协议)或 IMAP(互联网消息访问协议)用于在接收方检索这些电子邮件。
SMTP 基础知识
SMTP 是一种应用层协议。想要发送邮件的客户端打开一个到 SMTP 服务器的 TCP 连接,然后通过该连接发送邮件。 SMTP 服务器是一种永远在线的侦听模式。一旦它侦听来自任何客户端的 TCP 连接,SMTP 进程就会通过端口 25 发起连接。成功建立 TCP 连接后,客户端进程会立即发送邮件。
SMTP 协议
SMTP 模型有两种类型:
- 端到端方法
- 存储转发方法
端到端模型用于不同组织之间的通信,而存储和转发方法用于组织内部。想要发送邮件的 SMTP 客户端将直接联系目标主机 SMTP,以便将邮件发送到目标。 SMTP 服务器会将邮件保留给它自己,直到它被成功复制到接收者的 SMTP。
客户端 SMTP 是发起会话的那个,所以我们称它为客户端 SMTP,而服务器 SMTP 是响应会话请求的那个,所以我们称它为接收者 SMTP。客户端 SMTP 将启动会话,接收者 SMTP 将响应请求。
SMTP系统模型
在 SMTP 模型中,用户与用户代理 (UA) 打交道,例如 Microsoft Outlook、Netscape、Mozilla 等。为了使用 TCP 交换邮件,使用了 MTA。发送邮件的用户不必处理 MTA,因为设置本地 MTA 是系统管理员的责任。 MTA 维护一个小邮件队列,以便在收件人不可用的情况下安排重复发送邮件。 MTA 将邮件传递到邮箱,然后用户代理可以下载信息。
SMTP-client 和 SMTP-server 都应该有 2 个组件:
- 用户代理 (UA)
- 本地 MTA
发送方和接收方之间的通信:
发件人的用户代理准备邮件并将其发送到 MTA。 MTA 的职责是将邮件通过网络传输到收件人的 MTA。要发送邮件,系统必须有一个客户端 MTA,而要接收邮件,系统必须有一个服务器 MTA。
发送电子邮件:
邮件由客户端和服务器之间的一系列请求和响应消息发送。发送的消息由标头和正文组成。空行用于终止邮件头,空行之后的所有内容都被视为消息的正文,这是一个 ASCII字符序列。消息正文包含收据读取的实际信息。
接收电子邮件:
服务器端的用户代理在特定时间间隔检查邮箱。如果收到任何信息,它会通知用户该邮件。当用户尝试阅读邮件时,它会显示一个电子邮件列表,其中包含邮箱中每封邮件的简短描述。通过选择任何一个邮件用户可以在终端上查看其内容。
一些 SMTP 命令:
- HELO – 向服务器标识客户端,完全限定域名,每个会话仅发送一次
- MAIL – 发起消息传输,发起者的完全限定域
- RCPT – 在 MAIL 之后,标识收件人,通常是收件人的完全限定名称,对于多个收件人,每个收件人使用一个 RCPT
- DATA——逐行发送数据