大致了解了DNS与邮件服务器之间的关系后,接下来我们介绍邮件到底是如何传送到目的邮件主机的。下面我们分成“寄信”与“收信”两个主要的邮件服务器使用方式进行介绍。先说明关于“寄信”的部分。通常我们都是使用桌面计算机来寄信,如果你以Netscape或者Kmail或者OutLook Express来寄信时,信到底是怎么送出去的?

先说明什么是MUA,MTA与MDA,然后说明信件的传送流程。
         MUA(Mail User Agent):顾名思义,MUA就是“邮件用户代理”。邮件需要代理,这是由于通常Client端的计算机无法直接寄信(不然为什么要邮件主机?),所以,需要通过MUA帮我们传递信件,不论是送信还是收信,Client端用户都需要通过各个操作系统提供的MUA才能够使用邮件系统。举个例子,Windows里的OutLook Express、Netscape里的mail功能与KDE里的Kmail都是MUA。MUA主要的功能就是接收邮件主机的电子邮件,并提供用户浏览与编写邮件的功能。

MTA(Mail Transfer Agent):MUA是用在Client端的软件,而MTA是用在邮件主机上的软件,它也是主要的邮件服务器。MTA就是“邮件传送代理”的意思,既然是“传送代理”,那么用户寄信与收信时,都找MTA就对了!因为它负责帮用户传送。基本上,MTA的功能如下。
         接收外部主机寄来的信件:既然是邮件主机,接收信件自然是主要功能,只要这个信件里有MTA内部账号,这封信就会被MTA收下来;
         帮用户发(寄出)信:既然可以收信,自然也可以发信,只要用户具有合法的使用MTA的权力,就可以利用这台MTA主机把信传送出去!不过要注意,MTA会将信件送给目的地的MTA而不是目的地的MUA。不要搞错了!
       曾经有个朋友跟我说,要我传数据给他,而因为他要接收我的信件,所以他的计算机(指的是Windows那个Client端计算机)得一直开着,真是不方便!听到这句话时,我吓了一跳——这个概念是不对的,因为用户使用的是MUA,而信件仅会送达MTA主机上,收、发信件时,都需要通过MTA帮忙处理,所以,用户在使用邮件编辑器“MUA”将数据编辑完毕之后,按下送出,并且成功送到MTA之后,接下来的事情就是MTA的工作了,跟用户的Client端计算机没有关系。         用户收自己的信:用户可以将放置在邮件主机的信件收到自己的个人计算机上。

   MDA(Mail Delivery Agent):“邮件投递代理”主要的功能就是将MTA接收的信件依照信件的流向(送到哪里)将该信件放置到本机账户下的邮件文件中(收件箱),或者再经由MTA将信件送到下个MTA。如果信件的流向是到本机,这个邮件代理的功能就不只是将由MTA传来的邮件放置到每个用户的收件箱,它还可以具有邮件过滤(filtering)与其他相关功能。这很了不起,举两个例子:

   如果你知道某个广告信件的主题都是固定的,例如“AV情色XXX”,你想将这种信件直接丢进垃圾箱,可以通过MDA邮件分析功能,将信件丢弃。
        如果有一天你要出差,可能一个星期碰不到电子邮件,但是你又不想让一些朋友认为你在耍大牌不回信,这时你可以利用MDA的功能,让邮件主机在别人给你发信时自动回复一封,让寄件人知道你在忙碌中。这样的功能是否很不错?不止这些,其他功能后面会再介绍。
         Mailbox:“收件箱”,说穿了就是主机上一个目录下某个人专用来接收信件的文件!举个例子,系统管理员root在默认情况下会有个信箱,默认的文件就是/var/spool/mail/root文件(每个账号都会有一个自己的信箱),然后,当MTA收到root的信时,就会将该信件存到/var/spool/mail/root文件中,用户可以通过程序将这个文件里的信件数据读取出来。

了解了MUA,MTA与MDA之后,下面说说如何将信寄出去。可以分为几个步骤。

Step 1 用户利用MUA寄信到MTA。通常我们使用MUA(例如Outlook express)写信时,要写明几个项:
    发信人与发信网站:必须有这个信息。发信网站就是下面Step 2接收信件的那个MTA;
    收信人与收信网站:以account@e-mail.server的形式给出,其中,account就是该e-mail.server里的账号。      
           在图20-1左上角的那台机器上,也就是“本地客户端使用的电脑”,利用MUA功能(如Outlook express)写好信之后,按下MUA的“发送”按钮,MUA就会依据你所定义的主机地址将信发送到MTA上。

  Step 2  MTA收到信件,交由MDA发送到该账号的MailBox中。如果在Step 1收到的信件中,那个e-mail.server就是MTA自己,此时MTA会将该信件交由MDA处理,将信件放置在收信者的信箱中。

Step 3  MTA将信再转送出去。如果由Step 1发来的信件的收件人并不是MTA的内部账号,那么该信将被再次转送出去!Step 1及Step 3的动作,我们也称为Relay(邮件转发)功能。

 Step 4  远程MTA收到本地MTA发出的邮件。远程MTA会收到我们这台MTA的信件,并将该信件交给它的MDA处理

   Step 5  此时,信件会存放在远程MTA上,等待用户登录读取或下载。

   整个发信流程大致就是这样。这时,你从左上角的MUA将信件寄出之后,最后信件将会存放在右边那台MTA主机里,还没有到达你朋友的计算机(就是右边的MUA计算机),这时就要继续介绍收信的动作。收信过程如图20-2所示。

  远程用户使用的计算机直接连接到它的MTA,向MTA请求查看自己的收件箱是否有信件,而MTA通过MDA去检查,如果有信件,就会将它传送给用户的MUA,同时,根据MUA的不同设置,MTA会选择将该信件从收件箱清除或继续保留!若继续保留,那么下次用户再次接收信件时,保留的信件会再次被下载,因此,通常用户MUA都是默认删除MTA的收件箱中的内容。

linux Email 体系的更多相关文章

  1. Linux中断处理体系结构分析

    Linux中断处理体系结构分析(一) 异常,就是可以打断CPU正常运行流程的一些事情,比如外部中断.未定义指令.试图修改只读的数据.执行swi指令(Software Interrupt Instruc ...

  2. linux安全体系

    一.   硬件.软件选型 确认需求,分析可能面临的安全问题 记录各硬件寿命.保证散热.确保性能冗余 使用商业正版.开源的软件,不从互联网安装系统,从源头保证系统安全 购买专业售后支持 服务器配置双电源 ...

  3. Linux监控体系

    监控体系 zabbix 博客:www.abcdocker.com 微信公众号:abcdocker 笔者QQ:381493251 Abcdocker交流群:454666672 如果遇到什么问题可以进群询 ...

  4. 【LInux01】学习Linux课程体系

    知识 =>技能   需要大量的练习  相当于复盘 要有成就感 在一个领域深挖,再迁移到其他领域 1.两周以后的知识留存率: 主动学习: 动手实践:40% 讲给别人听:70% 写博客:是写教程,便 ...

  5. Linux用户体系和文件权限总结

    一.           Linux系统用户和用户组相关文件 1.  /etc/passwd文件 这个passwd文件是Linux用户信息文件.文件格式说明如下: root:x:0:0:root:/r ...

  6. linux网络体系架构

    原创kylin_zeng:http://blog.csdn.net/kylin_fire_zeng  本文参考国嵌视频教程,再此感谢国嵌教育. 一.协议栈层次对比: 1)网络接口层把数据链路层和物理层 ...

  7. Linux知识体系之磁盘与档案系统管理

    硬盘的物理组成:由许许多多的圆形硬盘盘所组成.宜居硬盘盘能够容纳的数据量,而有所谓的单碟或者多碟. 首先,硬盘里一定会有所谓的磁头(Head)在进行该硬盘上面的读写动作,而磁头是固定在机械手臂上的,机 ...

  8. Linux知识体系之路径属性与目录

    最近在看鸟哥的Linux私房菜,我觉得这本书还是很不错的.这里进行相关的总结. 1.Linux目录权限概念   Linux一般讲目录可存取的方式分为三个类别,分别是owner/group/other, ...

  9. linux知识体系

    0. Linux简介与厂商版本 1. Linux开机启动 2. Linux文件管理 3. Linux的架构 4. Linux命令行与命令 5. Linux文件管理相关命令 6. Linux文本流 7. ...

随机推荐

  1. windows Server 2008 R2 TFS2010的备份

    1.首先要安装一个工具Power Tools,点击安装,然后下一步就可以了. 2.安装完之后重新打开TFS管理控制台 点击Create Backup Plan 点击下一步,它会导航到第一个页面,在这个 ...

  2. JS Range使用整理

    1.获取用户网页选中内容 <p>4月13日消息,据台湾媒体报道,32岁的孙燕姿(Sng Ee Tze)和后天将满34岁的荷兰籍印度尼西亚男友纳迪姆(Nadim Van Der Ros)交往 ...

  3. hyper-v的p2v工具

    1.Disk2vhd v1.64 可以在线p2v http://technet.microsoft.com/en-us/sysinternals/ee656415.aspx 2.物理机转换到HYPER ...

  4. python3用BeautifulSoup抓取a标签

    # -*- coding:utf-8 -*- #python 2.7 #XiaoDeng #http://tieba.baidu.com/p/2460150866 from bs4 import Be ...

  5. JavaScript中的namespace

    <head> <title> New Document </title> <script> var global = window.global||{} ...

  6. 反射简化switch语句

    1. 一个简单工厂类 public class FactoryModule { public ModuleIntf getModule(String moduleType) { ModuleIntf ...

  7. Android 全局弹出版本更新 Dialog 思考和解决办法

    Android 针对版本更新,需要做全局的弹出(需求:版本更新只需要在 App 内全局弹出就可以),思路是使用 AlertDialog ,然后设置 setType 为 TYPE_ALERT_WINDO ...

  8. Spring Boot 2.0 热部署指南

    Spring Boot 2.0 支持热部署,实现方法很简单 Spring Boot 2.0 有几种热重载的选项. 推荐的方法是使用spring-boot-devtools 因为它提供了额外的开发时间功 ...

  9. 自动化CodeReview - ASP.NET Core依赖注入

    自动化CodeReview系列目录 自动化CodeReview - ASP.NET Core依赖注入 自动化CodeReview - ASP.NET Core请求参数验证 我个人比较懒,能自动做的事绝 ...

  10. Python list 常用方法总结

    一,创建列表  只要把逗号分隔的不同的数据项使用方括号([ ])括起来即可 下标(角标,索引)从0开始,最后一个元素的下标可以写-1 list  =  ['1',‘2,‘3’] list = [] 空 ...