邮件传输过程、MUA、MTA、MDA
MUA | outlook、thunderbird、Mac Mail、mutt |
MTA | sendmail、postfix |
MDA | procmail、dropmail |
MRA | dovecot |
MUA(Mail User Agent):“邮件用户代理”MUA是用在客户端的软件,客户端的计算机无法直接收发邮件,需要通过MUA传递信件,通过各个操作系统提供的MUA才能够使用邮件系统。MUA主要的功能就是接收邮件主机的电子邮件,并提供用户浏览与编写邮件的功能。
MTA(Mail Transfer Agent):MTA是用在邮件主机上的软件,主要的邮件服务器。MTA就是“邮件传送代理”,负责用户寄信与收信,MTA的功能:
- 接收外部主机寄来的信件:既然是邮件主机,接收信件自然是主要功能,只要这个信件里有MTA内部账号,这封信就会被MTA收下来;
- 帮用户发(寄出)信:利用这台MTA主机把信传送出去!不过要注意,MTA会将信件送给目的地的MTA而不是目的地的MUA。
用户收自己的信:用户可以将放置在邮件主机的信件收到自己的个人计算机上。
MDA(Mail Delivery Agent):“邮件投递代理”将MTA接收的信件依照信件的流向(送到哪里)将该信件放置到本机账户下的邮件文件中(收件箱),或者再经由MTA将信件送到下个MTA。如果信件的流向是到本机,这个邮件代理的功能就不只是将由MTA传来的邮件放置到每个用户的收件箱,它还可以具有邮件过滤(filtering),可以通过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;
- 收信人与收信网站:以er的形式给出,其中,account就是该e-mail.server里的账号。
- “本地客户端使用的电脑”,利用MUA功能(如Outlook express)写好信之后,按下MUA的“发送”按钮,MUA就会依据你所定义的主机地址将信发送到MTA上。
Step 2 :MTA收到信件,分两种情况
- 将信件放置在收信者的信箱中。 如果在Step 1收到的信件中,那个e-mail.server就是MTA自己,此时MTA会将该信件交由MDA处理,将信件放置在收信者的信箱中。
- MTA将信再转送出去。如果由Step 1发来的信件的收件人并不是MTA的内部账号,那么该信将被再次转送出去!Step 1及Step 2的动作,我们也称为Relay(邮件转发)功能。
Step 3: 远程MTA收到本地MTA发出的邮件。远程MTA会收到我们这台MTA的信件,并将该信件交给它的MDA处理(Step4),此时,信件会存放在远程MTA上,等待用户登录读取或下载。
Step4: 远程用户使用的计算机直接连接到它的MTA,向MTA请求查看自己的收件箱是否有信件,而MTA通过MDA去检查,如果有信件,就会将它传送给用户的MUA。
同时,根据MUA的不同设置,MTA会选择将该信件从收件箱清除或继续保留!若继续保留,那么下次用户再次接收信件时,保留的信件会再次被下载,因此,通常用户MUA都是默认删除MTA的收件箱中的内容。
其它相关协议:
MRA(Mail Receive Agent)负责实现IMAP与POP3协议,与MUA进行交互;
SMTP(Simple Mail Transfer Protocol)传输发送邮件所使用的标准协议;
IMAP(Internet Message Access Protocol)接收邮件使用的标准协议之一;
POP3(Post Office Protocol 3) 接收邮件使用的标准协议之一。