第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个月的时间了,在本章结尾会给你们我学习该课程的视频资料,我希望能帮到所有想学习想提高自己技术的同 ...
随机推荐
- Compoxure example 应用说明
Compoxure 官方提供了一个demo应用,包含了cache,error,layout 等功能 环境准备 demo 使用docker-compose 运行 clone 代码 git clone h ...
- Modern Data Lake with Minio : Part 1
转自:https://blog.minio.io/modern-data-lake-with-minio-part-1-716a49499533 Modern data lakes are now b ...
- 区块链 blockchain
区块链是去中心化的记账方式.没有中心,安全,高效.区块链是属于分布式计算的一种.是一种数据库. 区块链不是什么比特币,xx币.而是比特币他们用了区块链的技术. 区块链具有去中心化.无须中心信任.不可篡 ...
- Jmeter的NON-GUI模式
一般来讲,Jmeter执行压测,都是用Jmeter的命令模式,脚本调试好, 测试脚本能够大大缩减所需要的系统资源. 1.1命令介绍: jmeter -n -t <testplan filenam ...
- C# 线程:定时器的使用
转载请注明出处:http://www.cnblogs.com/KeenLeung/p/3911556.html Timer类:设置一个定时器,定时执行用户指定的函数. 定时器启动后,系统将自动建立一个 ...
- react 知识点2
从 render 函数可以看出来,组件内部是通过 this.props 的方式获取到组件的参数的,如果 this.props 里面有需要的属性我们就采用相应的属性,没有的话就用默认的属性. 那么怎么把 ...
- Docker无法启动问题
启动Docker出现如下错误: PolicyKit daemon disconnected from the bus.We are no longer a registered authenticat ...
- Eureka的高可用
问题: 现在Eureka和Client是1对1,但是Eureka挂了,就不能用了. 如何解决呢,创建多个Erurka.并且Eureka进行相互注册.如下图 怎么相互注册呢 1. 创建两个Eureka ...
- 银行卡所属公司判断 参考自https://blog.csdn.net/well2049/article/details/79429130
在网上找到了一个银行卡的验证,通过阿里的支付宝接口进行校验,能够准确识别是否存在,归属行,卡号类型是储蓄卡(DC)还是信用卡(CC). 接口api:需要传入的2个参数,卡号cardNo和cardBin ...
- 【转】C# XML序列化去掉XML默认的命名空间及声明头
http://blog.csdn.net/aoshilang2249/article/details/44860155 重点: XmlSerializerNamespaces namespaces = ...