什么是MUA、MTA、MDA以及信件如何送达

搞懂电子邮件的工作原理,其实就像拆解一个接力赛跑。整个过程离不开三个关键角色:MUA、MTA和MDA。

先说说MUA,也就是邮件用户袋里。它就是你电脑上用来收信和发信的那个软件,比如大家熟悉的Outlook Express。它是你与邮件世界直接对话的窗口。

那么,信件在路上是怎么“跑”的呢?这就轮到MTA,也就是邮件传输袋里出场了。你可以把它理解成邮局的中转站,或者干脆就叫它邮件服务器。无论是你要寄出的信,还是别人寄给你的信,都得经过它来传递。它的工作主要有三块:第一,判断并发送你寄出的信(是内部邮件就直接转交,是外部邮件就发往目的地的MTA);第二,接收从外部主机发来的信件;第三,乖乖等着你的MUA把属于你的信取走。

信件到了目的地的“邮局”后,最后一步交给谁?那就是MDA,邮件投递袋里。它的任务很专一:负责把MTA接收下来的信件,准确无误地分拣并投递到各个用户的专属邮箱里,等着主人来取。

理清了这三个角色,一封邮件的旅程就清晰了。我们一步步来看:

Step 1. 旅程开始,寄件人通过自己电脑上的MUA软件,把信发出,第一站就是抵达自己的MTA服务器

Step 2. 本地的MTA收到信,如果发现收件人是自家服务器的用户,就会立刻交给MDA,由MDA派送到对应的邮件信箱。

Step 3. 如果收件人是外部用户,本地MTA就会扮演起“发件员”的角色,准备把这封信转送到对方的MTA去。

Step 4. 远端的MTA服务器收到了这封来自外部的信件。

Step 5. 远端MTA确认收件人是自己的用户后,同样交由自家的MDA处理,投递到收件人的信箱中静候。

Step 6. 旅程终点,收件人打开自己的MUA软件,从服务器邮箱里把信下载到本地电脑,整个过程圆满完成。

贰、使用的通讯协定

这套流程能顺畅运行,背后离不开标准通讯协定的支持。简单来说:

1. 寄信:无论是从MUA到MTA,还是MTA之间的对话,用的基本都是SMTP协定,默认走25号端口。你可以把它理解为邮件的“发货语言”。

2. 收信:当用户想从服务器取回邮件时,最常用的协定是POP3,端口号是110。这时,MUA就会使用POP3这种“取货语言”连接到MTA,把信件读取下来。

参、认识Relay与认证机制

看到这里,你可能会发现一个问题:在上面的第三步,MTA只要发现信不是寄给自家用户的,就会帮忙转发出去。这岂不是意味着,任何人都能借用你的邮件服务器来发信?

没错,如果不管控,你的服务器就会变成所谓的“开放式中继(Open Relay)”。这后果可不太妙——服务器资源很快会被垃圾邮件占满,网路带宽被拖慢,更严重的是,你的服务器IP很快会被其他主流邮件服务器拉入黑名单,拒绝往来。

所以,必须关上这扇随意的大门。常见的做法是只允许本机或可信的IP位址使用中继功能。但这样一来,新问题又出现了:对于需要出差的业务员,或者在不同地点办公的用户来说,一旦IP不在白名单内,就无法通过公司服务器发信了,非常不便。

如何兼顾安全与便利?答案就是引入“邮件认证机制”。

这套机制的核心,是在MTA发送邮件这个环节,增加一道身份核验。具体来说,就是采用SMTP认证。当MUA向MTA发出寄信请求时,MTA会要求寄件人提供帐号和密码进行验证。只有认证通过,才允许借助这台服务器向外发信。这样一来,用户无论身在何处,只要密码无误,都能安全地使用邮件服务,完美解决了移动办公的难题。

肆、安装套件

理论说完,我们来点实际的。在Fedora Core 2系统上搭建一个具备认证功能的邮件服务器,主要会用到cyrus-sasl、dovecot和postfix这几个套件。好在系统通常已经内置了它们,我们主要进行配置。

一、cyrus-sasl安装及设定:

首先,确认一下cyrus-sasl是否已经安装:

# rpm –qa | grep cyrus-sasl

cyrus-sasl-2.1.18-2

接着,修改它的SMTP守护进程配置文件:

# vi /usr/lib/sasl2/smtpd.conf

将内容改为:

pwcheck_method: saslauthd

mech_list: plain login

配置完成后,重新启动服务并测试认证功能是否正常:

# /etc/init.d/saslauthd restart

# /usr/sbin/testsaslauthd –u 你的帐号 –p ‘你的密码’

看到返回“0: OK “Success.””就表示成功了。

二、dovecot (imap、pop3)安装及设定:

dovecot负责提供POP3/IMAP收信服务。同样先检查安装:

#rpm –qa | grep dovecot

dovecot-0.99.10.5-0.FC2

然后,在配置文件中启用pop3和imap协议:

# vi /etc/dovecot.conf

protocols = pop3 imap

重启服务后,可以通过telnet本地110端口来测试POP3服务是否就绪:

# /etc/init.d/dovecot restart

# telnet localhost 110

连接成功后,依次输入“user 你的帐号”和“pass 你的密码”,如果返回“+OK Logged in.”,说明收信服务配置正确。

三、postfix安装及设定:

postfix是这里的主角——MTA服务器。首先确认安装:

# rpm -qa | grep postfix

postfix-2.0.18-4

进行关键配置,主要是编辑主配置文件:

# vi /etc/postfix/main.cf

需要调整和增加以下几项(具体操作是找到对应行修改或取消注释):

1. 将只监听本机的限制注释掉:#inet_interfaces = localhost

2. 设定可接收邮件的目的地:mydestination = $myhostname, localhost.$mydomain, $mydomain

3. 增加SASL认证相关的系列参数,这是实现发信验证的关键:

smtpd_sasl_auth_enable = yes

smtpd_delay_reject = yes

smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated permit_auth_destination reject

smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated

broken_sasl_auth_clients = yes

smtpd_sasl_security_options = noanonymous

配置完成后,停用旧有的sendmail服务,启动postfix,并把它加入开机自启动:

# /etc/init.d/sendmail stop

# /etc/init.d/postfix start

# chkconfig --add postfix

最后,别忘了用ntsysv工具,在服务列表里确保postfix被选中,而sendmail被取消,这样下次开机才会默认运行postfix。

怎么验证SASL认证功能真的在postfix上启用了呢?有个简单的测试方法:

# telnet localhost 25

连接成功后,输入命令:ehlo localhost

仔细观察服务器的回应。如果配置无误,你会在返回的信息中看到类似这样的两行:

250-AUTH LOGIN PLAIN

250-AUTH=LOGIN PLAIN

这两行表明了Postfix现在支持的认证类型,看到了它们,就恭喜你,SASL认证已经成功搭载。

四、测试你的Outlook Express是不是能正常收发信件

所有服务器端配置妥当后,最后一步就是在客户端(如Outlook Express)进行测试了。添加邮件帐户时,填入正确的服务器地址、帐号和密码。这里有个关键点必须注意:在发信服务器的设置里,一定要勾选“我的服务器要求身份验证”。这个选项正是对应我们前面辛苦配置的SMTP认证机制,不勾选,邮件可就寄不出去了。

按照这个流程走一遍,一个具备基本收发和认证功能的邮件服务器就搭建完成了。

本文转载于:https://www.jb51.net/os/Fedora/1400.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。