首页 > 代码库 > 第9章 应用层(6)_SMTP和POP3/IMAP协议
第9章 应用层(6)_SMTP和POP3/IMAP协议
7. 电子邮件
7.1 电子邮件发送和接收过程
(1)图解电子邮件的发送
①一个电子邮件系统应具备三个主要组成构件:A用户代理(如Outlook)、B邮件服务器、C邮件发送和接收协议(分别为SMTP和POP3协议)(POP3是邮局协议,Post Office Protocol)
②邮件服务器必须能够同时充当客户和服务器。如当邮件服务器A向另一个邮件服务器B发送邮件时,A就作为SMTP客户,而B是SMTP服务器;反之,当B向A发送邮件时,B就是SMTP客户,A就是SMTP服务器。
(2)发送/接收过程
①发件人打开PC机上的用户代理软件(如Outlook),撰写、编辑邮件,填写对方邮箱并点击“发送”
②outlook使用SMTP协议发给发送方的stmp邮件服务器。
③SMTP服务器收到Outlook发过来的邮件,就把邮件临时存放在邮件缓存队列中,等待发送到接收方的邮件服务器。
④SMTP客户通过DNS解析出sohu.com邮件服务器的地址。
⑤邮件服务器上的SMTP客户每隔一定时间对邮件缓存扫描一次,如果发现邮件,就使用SMTP的25端口与接收方邮件服务器的SMTP服务器建立TCP连接,然后把邮件缓存队列中的邮件依次发送出去。
⑥运行在接收方邮件服务器中的SMTP服务器进程收到邮件后,把邮件放入收件人的用户邮箱中,等待收件人读取。
⑦收件人在打算收信时,就运行PC机中的outlook,使用POP3(或IMAP)协议读取发送给自己的邮件。(注意,POP3服务器和POP3客户之间的箭头表示的是邮件传送的方向,但它们之间的通信是由POP3客户发起的)
7.2 电子邮件信息格式
(1)邮件格式:分为信封和内容两大部分。(邮件内容由首部(header)和主体(body)组成。当用户写好首部后,邮件系统自动地将信封所需的信息提取出来并在信封上)
(2)内容首部各关键字
①“From:”:填写发送人的电子邮件地址
②“To:”:填入一个或多个收件人的电子邮件地址。多个收件人可以写成多行(多个地址用<>隔开,如<abc@sohu.com><def@126.com>)
③“Cc:”:抄送一份副本给某人。如给主管领导写一封邮件,并抄送给财务人员。当主管收到后,答复时可以选择“全部答复”,则发送人和财务人员均可收到。有些系统支持秘密抄送(Bcc关键字),这使发件人将邮件副本抄送给某人,但收件人并不知道,Bcc也称为暗送。
④“Replay-to:”:对方回信所用的地址。该地址可以与发送人发信时的地址不同。
⑤“Date:”:发信日期。可以不填,由系统自动填入。
⑥“Subject:”:邮件主题。注意,Subject和Body之间必须有空行(回车),正文结束标记为“.”
7.3 SMTP协议
(1)SMTP常见命令和应答
命令 |
含义 |
|
应答 |
状态码的含义 |
HELO |
发送方问候收件方,后面是发件人服务器地址或标识。收件方回答OK时标识自己的身份。问候和确认过程表示两台机器可以进行通信,同时状态参数被复位,缓冲区被清空 |
220 |
服务就绪 |
|
|
开始传送邮件,后面跟发件方邮件地址。该命令会清空有关缓冲区,为新的邮件做准备 |
250 |
请求邮件动作正常,完成(HELO、MAIL FROM, RCPT TO、QUIT指令执行成功会返回此信息) |
|
RCPT |
后跟收件人邮箱地址,当有多个收件人时,需要多次使用该命令,每次只能指明一个人。 |
235 |
认证通过 |
|
DATA |
该命令之后的数据作为发送的数据。最后以单独的一行“.”来结束整封邮件。 |
221 |
正在处理 |
|
REST |
用来通知收件方复位,所有己存入缓冲存的收件人数据,发件人数据和待传送数据都必须清除。 |
354 |
开始发送数据,以.结束(DATA指令执行成功会返回此信息) |
|
NOOP |
该命令不影响任何参数,只是要求接收方回答OK,不会影响缓冲区的数据。 |
500 |
语法错误,命令不能识别 |
|
QUIT |
SMTP要求接收方必须回答OK,然后中断传输 |
550 |
命令不能执行,邮箱无效 |
|
|
|
552 |
中断处理:用户超出文件空间 |
(2)邮件交换记录(MX记录)
它指向一个邮件服务器,用于电子邮件系统发送邮件时根据收信人的地址后缀,如abc@sohu.com的后缀为sohu.com)来查找该区域的邮件服务器。
(3)手工查看邮件服务器
(4)利用telnet发送邮件
①使用telnet给dongqing91@sohu.com发送邮件,并抄送给dongqing081@sohu.com
②telnet成功后输入SMTP协议定义的命令和SMTP服务器交互(注意,输入过程出现错误将不能修改!)
7.4 POP3协议和IMAP协议
(1)POP3协议的特点:只要用户从POP服务器读取了邮件,POP服务器就把该邮件删除。
(2)IMAP协议(网际报文存取协议)
①IMAP是一个联机协议。当用户PC上的客户端打开IMAP服务器的邮箱时,用户可以看到邮件的首部。若需要打开某个邮件,则该邮件才传到用户计算机上。
②IMAP最大的好处是用户可以在不同的地方使用不同的计算机随时阅读和处理邮件。
③IMAP还允许收件人只读取邮件中的某个部分(如先下载正文,附件中的视频不下载)
7.5 部署企业内部邮件服务器
(1)安装邮件服务器
①“Windows组件”→勾选“电子邮件服务”(即POP3服务)
②“Windows组件”→双击“Internet信息服务(IIS)” →勾选“SMTP service”
③“Windows组件”→双击“网络服务”→勾选“域名系统(DNS)”
(2)在DNS服务器上添加MX记录
①在DNS服务器上新建正向查找区域:5iedu.net,并在该区域下创建主机记录“mail”,地址指向192.168.80.10,注意记录类型为主机(A)
②在该区域中增加一条MX记录:右击5iedu.net→“新建邮件交换器(MX)”,并在如下对话框中输入邮件服务器名称mail.5iedu.net。
③在WinXP上使用nslookup查找5iedu.net区域的邮件服务器。(注意XP的DNS要设置成192.168.80.20)
(4)为用户创建邮箱
①打开POP3服务管理工具(可管理邮箱和POP3服务),创建“新域”:点击“新域”→“添加域”→输入5iedu.net,该域名就是用户邮箱后缀。
②选中刚创建的域→“添加邮箱”→输入邮箱名“admin”和密码,同时勾选“为此邮箱创建关联的用户”→确定(注意下列的提示很重要!),注意本例使用明文身份验证!
③按同样的方法创建其他邮箱(如teaching@5iedu.com)
(5)配置邮件客户端收/发邮件
①在XP1机用outlook,在菜单栏的“工具”→“帐号”→“添加”→“邮件”
②然后在显示名中输入admin→在电子邮件地址中输入“admin@5iedu.net”→接收服务器和发送邮件器中均填入“mail.5iedu.com”
③接着在Internet mail登录中会要求填入帐号和密码,这步很关键。由于本例采用的是明文验证,因此帐号名为admin@5iedu.net(注意,如果是安全密码验证身份,则填入admin即可!)。最后按同样的方法在XP2机上配置邮件teaching@5iedu.net,这时就可以admin@5iedu.net互相收发邮件。
7.6 配置内网邮件服务器与Internet可以互相收/发邮件
(1)配置SMTP服务允许向Internet发送电子邮件
①打开IIS,展开“默认SMTP虚拟服务器”→“新建”→“域”,选择“远程”→在域名中填写“*.com”(这意味着该SMTP服务器会将所有com结尾的电子邮件转发到Internet)。
②右键“*.com”域→选中“允许将传入邮件中断到此域”和“使用DNS以发送到此域”。
③测试:在xp2的outlook客户端写一封邮件给abc@sohu.com。
(2)从Internet向内网服务器发送邮件
①在Internet上注册一个域名(5iedu.net),添加mail主机(A)记录,地址指定内网的公网地址。同时添加邮件交换记录(MX记录)
②在内网的路由器上,将TCP的25端口映射到内网的SMTP服务器。这样给5iedu.net发送的邮件便能到达内网的SMTP服务器。内网的计算机使用的是内网的DNS解析到内网的SMTP服务器。Internet的计算机是通过Internet上的DNS解析并通过端口映射找到内网的SMTP服务器
③注意,如果SMTP服务器是VMware中的一台主机时,还需要将宿主机的25端口映射到SMTP服务器的25端口,方法是“VMware”→“编辑”菜单→“虚拟网络编辑器”→选择“VMnet8”→“NAT设置”→添加端口转发)。
第9章 应用层(6)_SMTP和POP3/IMAP协议