邮件收发流程解析_第1页
邮件收发流程解析_第2页
邮件收发流程解析_第3页
邮件收发流程解析_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

邮件收发流程解析本文打算详细分析一封邮件从发件人发出邮件到收件人收到邮件的过程,讲述该过程涉及到的各种知识,为初步接触邮件系统的系统管理员深入学习邮件服务器配置和反垃圾邮件软件或者硬件的配置打下扎实的基础。发件人公司MAIL服务器发件人公司DMS服务器收件人公司DMS发件人公司MAIL服务器发件人公司DMS服务器收件人公司DMS服务器行=1收件人公司一MAIU^器亍审-DNS査询DNS査询匚~——C)会话IMAP

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

协商的加密算法加密命令;发件人公司邮局服务器响应发件人邮件客户端,告诉发件人邮件客户端身份验证的结果;发件人邮件客户端向发件人公司邮局服务器发送命令MAILFROM:<发件人邮箱>,告诉邮局服务器发件人的邮箱地址;发件人公司邮局服务器响应发件人邮件客户端;发件人邮件客户端向发件人公司邮局服务器发送命令RCPTTO:<收件人邮箱>,告诉邮局服务器收件人的邮箱地址;发件人公司邮局服务器判断邮件客户端是否位于自己负责为其转发邮件的IP地址段内,或者客户端是否通过了SMTP身份验证,如果该客户端在自己负责的IP地址段内,或者通过SMTP身份验证,那么允许该客户端发送外部邮件,反之如果该客户端既不在自己负责的IP地址段内,又没有通过SMTP身份验证,那么发件人公司邮局服务器会认为该发件人邮件客户端是一台外部邮件服务器,试图通过它发送邮件,那么它会判断RCPTTO命令的参数收件人邮箱是否是本地邮箱,如果是,则允许发送,如果是外部邮箱,则拒绝发送,并用判断的结果响应发件人邮件客户端;o.发件人邮件客户端向发件人公司邮局服务器发送命令DATA,要求发送邮件;o.p.发件人公司邮局服务器响应发件人邮件客户端;q.发件人邮件客户端向发件人公司邮局服务器发送邮件;p.发件人公司邮局服务器响应发件人邮件客户端;q.发件人邮件客户端向发件人公司邮局服务器发送邮件;SoiorceDestirLation.FrotocolInfo898988989898989SoiorceDestirLation.FrotocolInfo898988989898989898998TCP4泾asmtpLSYN」Seq=0亦n=£55M51_朗=0MSM4E098989989898989898988TCPTCPSMTPSMTPTUPSMTPSMTPSMTPSMTPSMTPSMTPSMTPSMTPSMTPSMTPSMTPSMTPSMTPSMTPSMTPsmtp>4733[5YN,ACK]5eq=0Ack=lWin=5840Len=0MS5=14524733>srntp[ack]Seq=lAck=lWin=65535Len=0Response:220mai"I■门etworkbench■匸匚miesmtpreadycrirnmand:匚hi_osinogrid-zoukejsrntp>4733[ACK]Seq=40Ack:=23Win=5840Len=0Response '" ''Command:ResponseCommand:ResponseCommand:Responsecommand:Responsecommand:Responsecommand:Responsedatafragment,361bytesDATAfragment,1452'250-mai1.networkbench.comAUTHLOGIN334VXN1cm5hbWU6ern91a2pAc21ub2dyaWQuY29t334UGFZC3dvcmQ6erntqa'w235MAIL250RCPT50Data542・0・0Authenticaticmsuccessfu"lFROM:<zoukjf^sinogr1d・corn>2・1・0sender<zouknogr1d・com>okto:<dupyi&s1nogrid.corn>2・丄・5尺已匚厲pient<dupyi&sinogrid・corn>okC~local')Enterrnai1?endwithCRLF■匸RLFbytes8192・1昭・2.498989SMTPSMTPSMTPResponse:2502.0.0command:quitResponse:2212.0.0487a0fb3-00007b5bMessageacceptedfordeliveSMTPclosingconnectionr.发件人公司邮局服务器响应发件人邮件客户端,告诉其邮件已经接收了,然后关闭连接r.SMTP会话发件人公司邮件服务器分析刚收到的邮件,取出其“收件人邮箱”部分(比如,zoukj@),并分离出收件人邮箱的域名();发件人公司邮件服务器执行DNS查询,查询类别为MX,查找这个域的邮件服务器的IP地址(可以用nslookup命令模拟:nslookup-ype=mx);收件人公司的DNS服务器将本公司的邮件服务器列表都返回给发件人公司邮件服务器;发件人公司邮件服务器分析获得的收件人公司邮件服务器列表,找出优先级最高的邮件服务器,试图与其建立TCP连接,如果优先级最高的邮件服务器有多个,那么就轮流使用,如果不能与优先级高的邮件服务器建立连接,则跟优先级次高的服务器建立连接,以此类推。注意:MX查询的返回值,形如 MXpreference=20,mailexchanger=其中的那个数值越低,则该记录对应的邮件服务器的优先级就越高。如果收件人公司邮件服务器配置了根据发件邮件服务器的IP地址来过滤垃圾邮件,那么它会将发件人公司邮件服务器的IP地址跟自己的黑白名单进行匹配,如果发件人公司邮件服务器的IP在黑名单里面,那么它可能会拒绝发件人公司邮件服务器的连接;发件人公司邮件服务器向收件人公司邮件服务器发送命令HELO<发件人公司邮件服务器域名〉或者EHLO<发件人公司邮件服务器域名>,表明自己的身份;收件人公司邮件服务器响应;发件人公司邮件服务器取出试图发送的邮件的“发件人邮箱”,向收件人公司邮件服务器发送命令MAILFROM:<发件人邮箱>;收件人公司邮件服务器如果配置了DNS反向查询验证,那么它会这样做:首先他执行一个PTR类型的DNS查询(根据IP查找域名),查找出发件人公司邮件服务器的域名,然后执行一个MX类型的DNS查询(根据域名查找负责该域的邮件服务器列表),查找出负责“发件人邮箱”所在域的邮件的邮件服务器列表,判断发件人公司邮件服务器的域名是否在这个列表里面。如果PTR类型的DNS查询失败了(例如我们没有配置DNS反向查询,这个需要向ISP申请,由他们来做),或者域名不在列表里面,那么收件人公司邮件服务器会拒绝接收邮件,终止会话。反之,如果两个条件都满足了,那么以“OK”响应发件人公司邮件服务器。发件人邮件服务器向收件人公司邮局服务器发送命令RCPTTO:<收件人邮箱>,告诉收件人邮件服务器收件人的邮箱地址;收件人公司邮局服务器判断该“收件人邮箱”地址(比如zoukj@)是否属于自己负责投递的域的邮箱地址(这些域在配置邮件服务器的时候写到相应配置文件里面),如果收件人公司邮件服务器配置了收件人地址验证的话,它还会去验证该地址是否存在,如果不是自己负责的域或者地址不存在,那么它会提示发件人公司邮件服务器。反之,以“OK”响应发件人公司邮件服务器。发件人公司邮件服务器向收件人公司邮件服务器发送命令DATA命令,请求发送邮件;收件人公司邮局服务器响应发件人公司邮件服务器;发件人公司邮件服务器向收件人公司邮件服务器发送邮件;o•收件人公司邮局服务器响应发件人公司邮件服务器发送命令QUIT,终止会话。七吕]mail,25 &20ImssTrendMicroInterScanMessagingSecLii'itySuiteSun,13Jul200822:51:17+0800helo250ImssHello[?]mailfrom:zoukjPsinogi'250soukj(?:SenderOk1'cptto:hLiilP250huilPlL:RecipientOkdata354Imss:Senddatanou.Terminatewithhello,liuhui.Imss:Messageacceptedfordeliueryquit221Imssclosingconnection.Goodbye*POP3/IMAP会话

通常情况下,邮件服务器软件,比如sendmail,qmail,postfix,称之为MTA(邮件发送代理),只负责为本地邮件用户向外发送邮件和接收外部发给本地邮件用户的邮件并将外来邮件投递到本地邮件用户的邮箱里面,并不包含让用户通过邮件客户端软件读取自己在邮件服务器上的邮箱里面的邮件的功能,即POP3或者IMAP服务。用户只能通过命令行,在邮件服务器上查看自己邮箱里面的邮件,很不方便。所以,在搭建邮件服务器的时候,我们需要另外安装POP3或者IMAP服务器,以方便用户通过邮件客户端方便地收发邮件;邮件接收流程如下:收件人点击邮件客户端的“接收”按钮;邮件客户端根据发件人先前的配置(POP3/IMAP服务器【收件人公司邮局服务器】域名或者IP地址,和收件人用来向POP3/IMAP服务器表明身份的用户名和密码),建立到收件人公司邮局服务器110号端口(POP3)或者445端口(IMAP)的TCP连接;收件人公司邮局服务器响应收件人邮件客户端,表明自己已经准备就绪,可以接收命令。收件人邮件客户端向收件人公司邮局服务器发送命令USER<用户名>;收件人公司邮局服务器响应收件人邮件客户端,请求发送密码;收件人邮件客户端向收件人公司邮局服务器发送命令PASS<密码>;收件人公司邮局服务器验证收件人邮件客户端发送的用户名和密码,并把验证结果通知收件人邮件客户端,如果验证失败,则断开连接;通常情况下,我们可以将邮件服务器配置为根据邮件服务器本机上的帐户来验证用户身份,或者根据外部用户数据库来验证,比如LDAP等等。收件人邮件客户端向收件人公司邮局服务器发送邮件操作命令,比如STAT,UIDL,LIST;收件人邮件客户端向收件人公司邮局服务器发送命令QUIT,中止会话;5218. 0.15.985218. 0.15.98218.20.15.58218.20.15.98218.20.15.9890.15.9890.15.985218. 0.15.9821S.20.15.9S9218.20.15.58TCPsaris>P°P3L5YN」5eq=0W1n=65535Len=0M5S=14609TUPpop3>saris[SYN,ACK]Seq=QAck=lWin=5840Len=0MSS=145221S.2・0.15.98T匚P勺廿花>P°P3[ack]Seq=l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论