第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记录)
②将连接internet网的25号端口(TCP)映射物理主机的25端口上(注意,要关掉物理主机的Windows防火墙)。
③将物理主机的25号端口转发给内网SMTP服务器(放在VMnet8网络中的Win2003虚拟机)。方法是“VMware”→“编辑”菜单→“虚拟网络编辑器”→选择“VMnet8”→“NAT设置”→添加端口转发)。
④登录sohu邮箱,并发送一封邮件给admin@5iedu.net,测试是否可以从Internet发邮件到内网的邮件服务器。(说明:Internet的计算机是通过Internet上的DNS解析和端口映射找到内网的SMTP服务器。因此可以发送邮件到内网SMTP服务器中。同理,内网的计算机使用的是内网的DNS解析,所以可将内网邮件发往Internet。)
第9章 应用层(6)_SMTP和POP3/IMAP协议的更多相关文章
- 企业邮箱在Android(安卓)系统手机上POP3/IMAP协议的设置方法
此处以三星(系统版本4.4.2)为例,介绍下使用安卓系统自带的客户端如何设置pop/imap协议方式方法 以下我们将使用test@zhuyuming.so 为测试案例,请您操作时更换成您自己的邮箱账号 ...
- [A Top-Down Approach][第二章 应用层]
[A Top-Down Approach][第二章 应用层] 标签(空格分隔): 未分类 网络应用是计算机网络存在的理由 首先从定义几个关键的应用层概念开始 应用程序所需要的网络服务,客户和服务器,进 ...
- 邮件协议POP3/IMAP/SMTP服务的区别
2016年09月09日 09時51分 wanglinqiang整理 通过网上查找的资料和自己的总结完成了下面的文章,看完之后相信大家对这三种协议会有更深入的理解.如有错误的地方望指正. POP3 PO ...
- PostFix使用dovecot支持POP3/IMAP收信
PostFix只能够收发邮件,以及使用SMTP发送邮件,想要使用POP3/IMAP收信的话必须装其他软件,本文通过配置dovecot让邮件服务器支持POP3/IMAP收信.POP3/IMAP是一种收信 ...
- 邮箱基础协议:SMTP/POP3/IMAP
目录 电子邮件的组成:信封.首部和正文 邮件基础协议 SMTP SMTP 指令 使用 Telnet 模拟 SMTP 发送邮件 POP3 POP3 的生命周期 IMAP 标志消息属性 状态和流程图 IM ...
- 设置POP3/SMTP协议 手机绑定邮箱
例如设置企业邮箱 一.设置POP3/SMTP协议,意思是代收邮件致本地POP3接收邮件服务器:pop.qiye.qq.comSMTP发送邮件服务器:smtp.qiye.qq.com二.设置IMAP/S ...
- 常用电子邮件协议服务POP3/IMAP/SMTP/Exchange
标题: 常用电子邮件协议服务POP3/IMAP/SMTP/Exchange 作者: 梦幻之心星 347369787@QQ.com 标签: [电子邮件, 服务, 协议] 目录: [客户端] 日期: 20 ...
- 《计算机网络 自顶向下方法》 第2章 应用层 Part1
常见的应用层协议有哪些? HTTP(HyperText Transfer Protocol):超文本传输协议 FTP(File Transfer Protocol):文件传输协议 SMTP(Sim ...
- 第六章 应用层(DNS和http协议详解)
序言 这是计算机网络基础的最后一篇博文了,大体的从物理层到最上层的应用层做了一个大概的了解,花了也有快1个月的时间了,在本章结尾会给你们我学习该课程的视频资料,我希望能帮到所有想学习想提高自己技术的同 ...
随机推荐
- apache常用配置文件讲解
apache 的httpd.conf常用配置说明 # ServerRoot: The top of the directory tree under which the server's # conf ...
- C/S架构程序多种类服务器之间实现单点登录
(一) 在项目开发的过程中,经常会出现这样的情况:我们的产品包括很多,以QQ举例,如登陆.好友下载.群下载.网络硬盘.QQ游戏.QQ音乐等,总不能要求用户每次输入用户名.密码吧,为解决这个问题,高手提 ...
- 实现一个函数,可以左旋字符串中的k个字符
ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDAB ABCD BACD BCAD BCDA CBDA CDBA CDAB 发现规律: 如果左旋一个字符则可以将第一个字符依次与后面的字符交 ...
- 一、搭建Django,建立第一个demo
一. 1.安装好Python(我用的最新版2.7.15),配置环境变量,并且安装好对应的Django版本(pip install django),在Python安装目录下的Scropts下会多出dja ...
- CSS vertical-algin的使用
一.什么vertical-algin vertical的意思就是垂直,algin是对齐的意思,连起来就是“垂直对齐方式”,接下来看看vertical-algin有哪些属性,打开浏览器一看 vertic ...
- dockerfile创建php容器(安装memcached、redis、gd、xdebug扩展)
dockerfile创建php容器(含有memcached.redis.gd.xdebug扩展) 代码如下: FROM php:7.2-fpm COPY redis-3.1.6.tgz /home/r ...
- java 迭代
迭代器的作用是提供一种方法对一个容器对象中的各个元素进行访问,而又不暴露该对象容器的内部细节. java中的很多容器都实现了Iterable接口,容器中的元素都是可以遍历的. 如下例,list容器中存 ...
- Go thrift使用举例
thrift 最初是 facebook 开发使用的 rpc 通信框架,后来贡献给了 apache 基金会,出来得比较早,几乎支持所有的后端语言,使用非常广泛,是不可不知的一个网络框架. 和 grpc ...
- C#:decimal的去0显示
public static string DecimalToString(decimal d) { return d.ToString("#0.######"); } 后面的0会给 ...
- 升级ambari、HDP版本(ambari 2.1升级到2.4、HDP2.3升级到2.5)
转载自:http://blog.csdn.net/levy_cui/article/details/52461377 官方升级版本说明 http://docs.hortonworks.com/HDPD ...