SMTP服务器通讯模型 |
SMTP协议是TCP/IP协议族中的一员,主要对如何将电子邮件从发送方地址传送到接收方地址,也即是对传输的规则做了规定。SMTP协议的通信模型并不复杂,主要工作集中在发送SMTP和接收SMTP上:首先针对用户发出的邮件请求,由发送SMTP建立一条连接到接收SMTP的双工通讯链路,这里的接收SMTP是相对于发送SMTP而言的,实际上它既可以是最终的接收者也可以是中间传送者。发送SMTP负责向接收SMTP发送SMTP命令,而接收SMTP则负责接收并反馈应答。 1.SMTP协议的命令和应答 从前面的通讯模型可以看出SMTP协议在发送SMTP和接收SMTP之间的会话是靠发送SMTP的SMTP命令和接收SMTP反馈的应答来完成的。在通讯链路建立后,发送SMTP发送MAIL命令指令邮件发送者,若接收SMTP此时可以接收邮件则作出OK的应答,然后发送SMTP继续发出RCPT命令以确认邮件是否收到,如果接收到就作出OK的应答,否则就发出拒绝接收应答,但这并不会对整个邮件操作造成影响。双方如此反复多次,直至邮件处理完毕。SMTP协议共包含10个SMTP命令,列表如下: 2.SMTP命令命令说明 HELLO<domain><CRLF>;识别发送方到接收SMTP的一个HELLO命令 MAILFROM:<reverse-path><CRLF><reverse-path>;为发送者地址。此命令告诉接收方一个新邮件发送的开始,并对所有的状态和缓冲区进行初始化。此命令开始一个邮件传输处理,最终完成将邮件数据传送到一个或多个邮箱中。 RCPTTO:<forward-path><CRLF><forward-path>;标识各个邮件接收者的地址 DATA<CRLF> 接收SMTP将把其后的行为看作邮件数据去处理,以<CRLF>.<CRLF>;标识数据的结尾。 REST<CRLF>;退出/复位当前的邮件传输 NOOP<CRLF>;要求接收SMTP仅做OK应答。(用于测试) QUIT<CRLF>;要求接收SMTP返回一个OK应答并关闭传输。 VRFY<string><CRLF>;验证指定的邮箱是否存在,由于安全因素,服务器多禁止此命令。 EXPN<string><CRLF>;验证给定的邮箱列表是否存在,扩充邮箱列表,也常禁止使用。 HELP<CRLF>;查询服务器支持什么命令。 本文由专业服务器租用——陆零网络()提供。 |