简单邮件传输协议(SMTP)是一种标准通信协议,用于在业务网络和Internet上发送电子邮件。 SMTP最初是在20世纪80年代早期开发的,并且仍然是全球使用最流行的协议之一。
电子邮件软件最常使用SMTP进行发送,使用邮局协议3(POP3)或Internet邮件访问协议(IMAP)协议来接收邮件。尽管它的时代已经存在,但在主流使用中并没有真正替代SMTP。
SMTP如何工作
所有现代邮件客户端程序都支持SMTP。电子邮件客户端中维护的SMTP设置包括SMTP服务器的IP地址(以及用于接收电子邮件的POP或IMAP服务器的地址)。基于Web的客户端在其配置中嵌入SMTP服务器的地址,而PC客户端提供允许用户指定自己选择的服务器的SMTP设置。
物理SMTP服务器可能专用于仅为服务电子邮件流量提供服务,但通常至少与POP3和其他代理服务器功能相结合。
SMTP在TCP / IP之上运行,并使用TCP端口号25进行标准通信。为了改进SMTP并帮助打击Internet上的垃圾邮件,标准组还设计了TCP端口587来支持协议的某些方面。一些Web电子邮件服务(如Gmail)使用非官方TCP端口465进行SMTP。
SMTP命令
SMTP标准定义了一组命令 - 在请求信息时将客户端邮件发送到邮件服务器的特定消息类型的名称。最常用的命令是:
- HELO和EHLO - 在客户端和服务器之间启动新协议会话的命令。 EHLO命令请求它们使用它支持的任何可选SMTP扩展进行响应
- 邮件 - 发起发送电子邮件的命令
- RCPT - 为正在准备的当前消息的接收者提供一个电子邮件地址的命令
- 数据 - 指示电子邮件消息传输开始的命令。此命令启动一系列一个或多个后续消息,每个消息都包含一条消息。序列中的最后一条消息为空(仅包含句点(。)作为终止字符)以表示电子邮件的结尾。
- RSET - 在发送电子邮件的过程中(发出MAIL命令后),如果遇到错误,SMTP连接的任何一端都可以重置连接
- NOOP - 一个空(“无操作”)消息,设计为一种ping,用于检查会话另一端的响应性
- 放弃 - 终止协议会话
这些命令的接收者回复成功或失败代码编号。
SMTP问题
SMTP缺乏内置的安全功能。互联网垃圾邮件发送者过去通过生成大量垃圾邮件并通过开放的SMTP服务器传送来启用SNMP。多年来,防垃圾邮件的防护已经有所改进,但并非万无一失。此外,SMTP不会阻止垃圾邮件发送者设置(通过MAIL命令)虚假的“发件人:”电子邮件地址。