文章目录 邮件传输过程邮件的传输流程Webmail使用邮件客户端收发邮件邮件服务器各组件关系图 SMTP协议SMTP命令SMTP应答码SMTP传输流程图电子邮件的信息格式MIME邮件报文示例 POP3协议POP3命令POP3连接POP3客户和服务器会话例
邮件传输过程 邮件的传输流程
通常,一封电子邮件的发送需要经过用户代理、客户端邮件服务器和服务端邮件服务器等三个程序的参与,并使用邮件传输协议(SMTP,POP3或IMAP)来发送和获取邮件Webmail 电子邮件从A发送到客户服务器是使用HTTP协议。两个邮件服务器之间的传送使用SMTP。邮件从服务端邮件服务器传送到B是使用HTTP协议。
使用邮件客户端收发邮件
电子邮件从A发送到客户服务器是使用SMTP协议。连个邮件服务器之间的传送使用SMTP。B从服务端邮件服务器获取邮件使用POP3或IMAP协议。常见的邮件客户端有Foxmail,Outlook,Express等。
SMTP协议 SMTP使用客户/服务器方式,负责发送邮件的SMTP进程是SMTP客户,而负责接收邮件的SMTP进程是SMTP服务器,当两个进程建立了TCP连接后,电子邮件就能通过该标准准确无误地传输。SMTP协议是基于文本的协议,通过SMTP发送地电子邮件都是普通文本格式的,不支持声音、图像等非文本信息,但可以通过MIME标准将此类信息进行编码后再通过SMTP传输SMTP规定了14条命令和21种应答信息。每条命令用4个字母组成,而每一种应答信息一般只有一行信息,由一个3位数字的代码开始 SMTP命令
SMTP简捷,命令很少,常用的只有以下的8条命令,这些命令由客户端发送请求给服务端
命令描述HELO用于启动邮件传输过程MAIL FROM用于标识发言人,为收信者回复时可用的电子邮件地址RCPT TO用于标识单个接收人,在MAIL命令后面可以有多个RCPT命令DATAQUIT用于终止客户端与服务器之间的连接RSET用于中止当前的邮件事务并使两端复位VRFY用于验证指定的用户/邮箱是否存在,即验证接收方地址是否正确NOOP空操作命令SMTP应答码每一条SMTP命令都会返回一条SMTP响应,有服务端返回给客户端
代码描述211系统状态或系统帮助响应214帮助信息220服务准备就绪221关闭连接250请求操作就绪251非本地用户,转发到354开始邮件输入,以.结束421服务不可用450操作未执行:邮箱忙451操作中止:本地错误452操作未执行:存储空间不足500命令不可识别或语法错501参数语法错502命令不支持503命令顺序错504命令参数不支持550操作未执行:邮箱不可用551非本地用户,请尝试552操作中止:存储空间不足553操作未执行:邮箱名不正确554传输失败SMTP传输流程图 电子邮件的信息格式每一封电子邮件的结构格式为:
报文头(Header)
分隔邮件头与邮件体的空行
报文体(Body)
报文头是一些控制信息,它是由一系列的头字段组成,每个头字段的结构格式是:
字段名(field-name): 字段体(field-body)
包括收方和发方的地址,发送时间等,常用的头字段有:
Date域:记录邮件发送日期(本地主机的日期和时间);
Subject域:邮件主题;
From域:发信人邮件地址;
To域:收信人邮件地址;
…
报文体是用户邮件内容,由用户自由撰写。但SMTP只支持传输7位ASCII码的英文字符,有很大局限性,后来邮件系统就扩展了MIME
在POP3中,客户端与服务器连接时有三种处理状态
身份验证状态事务处理状态更新状态 当客户端连接到服务器的110端口,并建立起TCP连接后,即进入身份验证状态,需要使用USER和PASS命令将用户名和密码提供给服务器。通过身份验证之后,即转入事务处理状态,这时客户端可以发送POP3命令进行相应操作,服务器会接收命令并做出响应。操作完成之后,客户端发出QUIT命令,则进入更新状态,服务器确认用户的操作,更新邮件存储区,同时关闭客户端与服务器之间的连接 POP3客户和服务器会话例 S:<在TCP端口110等待连接>C:<打开TCP连接> -telnet<服务器域名>110S:+OK oarpop3serverreadyC:USER your_useridS:+OK your_useridiswelcomehereC:PASS your_passwordS:+OKyour_userid’s maildrophas2messages (320octets)S:.C:STATS:+OK <邮件数量><总大小>C:RETR 2S:+OK 200octetsS:报文2的内容S:.C:DELE 2S:+OK message2deleted.......