邮件收发详解

转自:http://wenku.baidu.com/view/a1f729ea6294dd88d0d26b23.html

 

件收流程解析

    本文打算详细分析一封邮件从发件人发出邮件到收件人收到邮件的过程,讲述该过程涉及到的各种知识,为初步接触邮件系统的系统管理员深入学习邮件服务器配置和反垃圾邮件软件或者硬件的配置打下扎实的基础。

 

1 SMTP
a. 发件人在自己的邮件客户端(比如outlook,foxmail等等,称之为MUA【邮件用户  代理】)写邮件,完成后,按“发送”按钮;
b. 发件人邮件客户端根据发件人先前的配置(SMTP 服务器【发件人公司邮局服务器】 域名或者IP地址,如果发送邮件需要身份验证的话,还有发件人用来向SMTP服务器  表明身份的用户名和密码),建立到发件人公司邮局服务器25号端口的TCP连接;
c. 发件人邮件客户端向发件人公司邮局服务器发送命令 HELO <件人主机名> 或者   EHLO <件人主机名>,向发件人公司邮局服务器表明自己的身份;
d. 发件人公司邮局服务器响应发件人邮件客户端,如果该邮件服务器配置了SMTP身份 验证的话,还会把自己支持的身份验证加密算法返回给发件人邮件客户端;
     注意:邮件服务器可以通过两种方式来限定能够通过它发送邮件的邮件客户端, 防止自己被当成开放中转(open relay),被用来发送垃圾邮件:
        一种是通过 IP 地址来限定,比如把该邮件服务器负责发送邮件的客户端电脑的IP地址段写到邮件服务器的相应配置文件里;
    另外一种就是通过配置SMTP身份验证来限制,只有通过身份验证的客户端才能通过它来发送邮件;

e. 如果邮件服务器使用SMTP身份验证来限制邮件客户端,那么发件人邮件客户端向发件人公司邮局服务器发送命令 AUTH <件人件客选择的加密算法>,把自己选择的算法发送给发件人公司邮局服务器,否则,转到步骤k;

f. 发件人公司邮局服务器响应发件人邮件客户端,并用双方协商的加密算法加密响应数据;

g. 发件人邮件客户端向发件人公司邮局服务器发送命令 USER <件人用>,并用双方协商的加密算法加密命令;

h. 发件人公司邮局服务器响应发件人邮件客户端,并用双方协商的加密算法加密响应数据;

i. 发件人邮件客户端向发件人公司邮局服务器发送命令 PASS <件人密>,并用双方协商的加密算法加密命令;

j. 发件人公司邮局服务器响应发件人邮件客户端,告诉发件人邮件客户端身份验证的结果;

k. 发件人邮件客户端向发件人公司邮局服务器发送命令 MAIL FROM: <件人>,告诉邮局服务器发件人的邮箱地址;

l. 发件人公司邮局服务器响应发件人邮件客户端;

m. 发件人邮件客户端向发件人公司邮局服务器发送命令 RCPT TO: <收件人>,告诉邮局服务器收件人的邮箱地址;

n. 发件人公司邮局服务器判断邮件客户端是否位于自己负责为其转发邮件的IP地址段内,或者客户端是否通过了SMTP身份验证,如果该客户端在自己负责的IP地址段内,或者通过SMTP身份验证,那么允许该客户端发送外部邮件,反之如果该客户端既不在自己负责的IP地址段内,又没有通过SMTP身份验证,那么发件人公司邮局服务器会认为该发件人邮件客户端是一台外部邮件服务器,试图通过它发送邮件,那么它会判断RCPT TO 命令的参数收件人是否是本地邮箱,如果是,则允许发送,如果是外部邮箱,则拒绝发送,并用判断的结果响应发件人邮件客户端;

o. 发件人邮件客户端向发件人公司邮局服务器发送命令 DATA,要求发送邮件;

p. 发件人公司邮局服务器响应发件人邮件客户端;

q. 发件人邮件客户端向发件人公司邮局服务器发送邮件;

      r. 发件人公司邮局服务器响应发件人邮件客户端,告诉其邮件已经接收了,然后关闭连接。

     

 

 

 

 

 

2 SMTP
a. 发件人公司邮件服务器分析刚收到的邮件,取出其“收件人邮箱”部分(比如, zoukj@sinogrid.com),并分离出收件人邮箱的域名sinogrid.com);
b. 发件人公司邮件服务器执行DNS查询,查询类别为MX,查找sinogrid.com 这个域的 邮件服务器的IP地址(可以用nslookup命令模拟:nslookup –type=mx sinogrid.com);
c. 收件人公司的DNS服务器将本公司的邮件服务器列表都返回给发件人公司邮件服务器;
d. 发件人公司邮件服务器分析获得的收件人公司邮件服务器列表,找出优先级最高的 邮件服务器,试图与其建立TCP连接,如果优先级最高的邮件服务器有多个,那么就轮流使用,如果不能与优先级高的邮件服务器建立连接,则跟优先级次高的服务器 建立连接,以此类推。
   注意:MX 查询的返回值,形如 sinogrid.com   MX preference = 20,mail exchanger  = mail.sinogrid.com  其中的那个数值越低,则该记录对应的邮件服务器的优先级就越高。
e. 如果收件人公司邮件服务器配置了根据发件邮件服务器的IP地址来过滤垃圾邮件,那么它会将发件人公司邮件服务器的IP地址跟自己的黑白名单进行匹配,如果发件人公司邮件服务器的IP在黑名单里面,那么它可能会拒绝发件人公司邮件服务器的连接;
f. 发件人公司邮件服务器向收件人公司邮件服务器发送命令 HELO <发件人公司邮件服务器域名> 或者EHLO <发件人公司邮件服务器域名>,表明自己的身份;
g. 收件人公司邮件服务器响应;
h. 发件人公司邮件服务器取出试图发送的邮件的“发件人邮箱”,向收件人公司邮件服务器发送命令 MAIL FROM: <发件人邮箱>;
i. 收件人公司邮件服务器如果配置了DNS反向查询验证,那么它会这样做:
  首先他执行一个 PTR 类型的DNS查询(根据IP查找域名),查找出发件人公司邮件服务器的域名,然后执行一个 MX 类型的DNS查询(根据域名查找负责该域的邮件服务器列表),查找出负责“发件人邮箱”所在域的邮件的邮件服务器列表,判断发件人公司邮件服务器的域名是否在这个列表里面。如果PTR 类型的DNS查询失败了(例如我们没有配置DNS反向查询,这个需要向ISP申请,由他们来做),或者域名不在列表里面,那么收件人公司邮件服务器会拒绝接收邮件,终止会话。反之,如果两个条件都满足了,那么以“OK”响应发件人公司邮件服务器。
j. 发件人邮件服务器向收件人公司邮局服务器发送命令 RCPT TO: <收件人>,告诉收件人邮件服务器收件人的邮箱地址;
k. 收件人公司邮局服务器判断该“收件人”地址(比如zoukj@sinogrid.com)是否属于自己负责投递的域的邮箱地址(这些域在配置邮件服务器的时候写到相应配置文件里面),如果收件人公司邮件服务器配置了收件人地址验证的话,它还会去验证该地址是否存在,如果不是自己负责的域或者地址不存在,那么它会提示发件人公司邮件服务器。反之,以“OK”响应发件人公司邮件服务器。
l. 发件人公司邮件服务器向收件人公司邮件服务器发送命令 DATA 命令,请求发送邮件;
m. 收件人公司邮局服务器响应发件人公司邮件服务器;
n. 发件人公司邮件服务器向收件人公司邮件服务器发送邮件;
o. 收件人公司邮局服务器响应发件人公司邮件服务器发送命令 QUIT,终止会话。

 

 

3 POP3/IMAP
通常情况下,邮件服务器软件,比如sendmail,qmail,postfix,称之为MTA(邮件发送代理),只负责为本地邮件用户向外发送邮件和接收外部发给本地邮件用户的邮件并将外来邮件投递到本地邮件用户的邮箱里面,并不包含让用户通过邮件客户端软件读取自己在邮件服务器上的邮箱里面的邮件的功能,即POP3或者IMAP服务。用户只能通过命令行,在邮件服务器上查看自己邮箱里面的邮件,很不方便。所以,在搭建邮件服务器的时候,我们需要另外安装POP3或者IMAP服务器,以方便用户通过邮件客户端方便地收发邮件;
邮件接收流程如下:
a. 收件人点击邮件客户端的“接收”按钮;
b. 邮件客户端根据发件人先前的配置(POP3/IMAP 服务器【收件人公司邮局服务器】 域名或者IP地址,和收件人用来向POP3/IMAP服务器表明身份的用户名和密码),建立到收件人公司邮局服务器110号端口(POP3)或者445端口(IMAP)的TCP连接;

c. 收件人公司邮局服务器响应收件人邮件客户端,表明自己已经准备就绪,可以接收命令。

d. 收件人邮件客户端向收件人公司邮局服务器发送命令 USER <>

e. 收件人公司邮局服务器响应收件人邮件客户端,请求发送密码;

f. 收件人邮件客户端向收件人公司邮局服务器发送命令 PASS <>

g. 收件人公司邮局服务器验证收件人邮件客户端发送的用户名和密码,并把验证结果通知收件人邮件客户端,如果验证失败,则断开连接;

      通常情况下,我们可以将邮件服务器配置为根据邮件服务器本机上的帐户来验证用户身份,或者根据外部用户数据库来验证,比如LDAP等等。

h. 收件人邮件客户端向收件人公司邮局服务器发送邮件操作命令,比如STAT,UIDL,LIST;

i. 收件人邮件客户端向收件人公司邮局服务器发送命令 QUIT,中止会话;

 

 

4总结
      一台配置得当的邮件服务器,本身已经包含了多种防垃圾邮件技术。一旦我们理解并掌 握了邮件收发的整个流程,不管是配置邮件服务器,还是配置防垃圾邮件网关,我们都能够做到不但知道要做什么,而且知道为什么要那样做。

在 Exchange 环境中抑制和阻止通过电子邮件传输的病毒 7 在 Exchange Server 2003 中抑制和阻止电子邮件病毒:推荐的操作和配置 7 了解恶意软件和 Microsoft 安全布告 8 台式机客户端的配置 8 配置 Windows 防火墙或其他个人防火墙软件 9 执行相应的步骤以保护 Outlook 10 Outlook 中的附件阻止功能 10 对象模型保护 10 保护 Outlook Web Access 11 Outlook Web Access 中的附件阻止功能 12 Internet Explorer 安全区域配置 12 最终用户知识培训 13 Exchange 服务器配置 14 在 SMTP 网关或邮箱服务器上部署防病毒软件 14 限制对 SMTP 的匿名访问 15 匿名中继 15 匿名 SMTP 访问 16 在 Exchange Server 2003 中抑制和阻止电子邮件病毒:可选配置 17 锁定 TCP 端口 25 17 使用 IPSec 锁定 TCP 端口 25 17 如何创建阻止 TCP 25 IPSec 策略 18 开始之前 18 步骤 19 如何创建基本组策略对象 19 开始之前 19 步骤 19 如何创建 IPSec 筛选列表 20 开始之前 20 步骤 20 如何创建入站 SMTP 筛选列表 20 开始之前 20 步骤 20 详细信息 21 如何创建出站 SMTP 筛选列表 21 开始之前 21 步骤 22 详细信息 22 如何创建阻止操作 22 开始之前 23 步骤 23 如何创建并分配 IPSec 策略 23 开始之前 23 步骤 24 如何分配 IPSec 策略 25 开始之前 25 步骤 25 如何在其他组织单位上应用现有 IPSec 策略 25 开始之前 26 步骤 26 禁止不安全的 Outlook 版本访问 Exchange 26 运行 Internet Security and Acceleration Server SMTP 筛选器 28 使用限定的通讯组 28 Exchange Server:病毒攻击发生时应采取的措施 29 了解 Windows 防火墙的“无例外打开”模式功能 29 清理 Exchange 环境 30 阻止 Internet 邮件流 31 合并面向 Internet 的 Exchange 服务器 31 如何在 Exchange 连接器上停止邮件流 31 开始之前 32 步骤 32 详细信息 32 阻止内部邮件流 32 隔离和清理受感染的服务器 32 禁止用户访问 Exchange 33 清理邮件传递基础结构 33 如何停止或重新启动队列中所有邮件的传输 34 步骤 34 详细信息 34 如何查找和删除 SMTP 队列中的特定邮件 34 步骤 35 应用防病毒软件更新 35 清理用户工作站 36 重建用户对邮箱的访问权限 36 重建邮件流连接 36 如何在 Exchange 连接器上重建邮件流 36 步骤 36 详细信息 36 Copyright 37
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值