邮件服务器基础
邮件服务器:
基于TCP/IP的电子邮件传输协议有:
(1),SMTP:(Simple Mail Transmission Protocol)简单邮件传输协议
SMTP是Internet上传输电子邮件的标准协议,用于提交和传送电子表邮件,规定了主机之间传输电子邮件的标准交换格式和邮件在链路层上的传输机制。
SMTP是用于把邮件从客户端传输到服务器端,使用的是TCP的25号端口建立连接。
(2),POP3:(Post Office Procotol)邮局协议,3代表的是第3版本
POP3协议提供了对电子邮件进行远程存取,它允许用户的邮箱位于某个邮件服务器上,并允许用户从它的个人计算机对邮箱的内容进行存取。
POP3使用的是TCP的110端口
(3),IMAP4(Internet Mail Access Protocol)互联网邮件访问协议
IMAP和POP协议一样,都是用于邮件的收发IMAP比POP协议更适用,它是POP3的替代品。使用IMAP时,用户可以有选择的下载电子邮件,因此,它更为复杂。
IMAP使用的是TCP协议的143端口
邮件传输所需要的组件:
MUA:(Mail User Agent)邮件用户代理
提供给用户邮件编辑界面,帮用户传送邮件到邮件主机,是用户客户端工具。
常见的MUA工具:
Outlook Express
Outlook
Foxmail
Thunderbird
mutt
MTA:(Mail Transfer Agent)邮件传输代理
帮用户将邮件寄出,相当于一部传送机。
功能有:
(1),收受邮件:将来自于其他主机的邮件收下来,使用的是SMTP协议
(2),转递邮件:如果收到的邮件不是本机的邮件,且该邮件符合使用MTA的权力,该MTA就会将邮件转发至相应的主机上
常见的MTA工具:
Sendmail :安全性不好,效率低 Exim 类似于Sendmail
qmail:轻量级,高效率
postfix:(IBM)模块化设计,安全性极佳,开源
courier
Exchange Server(AD),必须整合到windows的活动目录里才能运行
Lotus Notes Domino
MDA:(Mail Delivery Agent)邮件投递代理
事实上,MDA是挂在MTA底下的一个小程序,主要功能是分析MTA所收到的邮件内容等数据,来决定该邮件的去向。
常见的MDA工具:
procmail: sengmail自带
maildrop:courier自带(可以自动过滤垃圾邮件,功能很强大)
MRA:(Mail Retrival Agent)邮件检索代理
MRA可以让用户通过远程连接来下载并检索自己的邮件,这一步用到的协议是POP3或IPAM4
常见的MRA工具:
dovecot
courier-imap
cyrus-imap
具体流程如图示:
解析:本地端用户想要发送邮件,就要取得MTA的权限,即我们通常所说的向MTA注册一个账号和密码。在MUA上编写好邮件后,可以传送至本地的MTA,MTA会根据邮件上的信息判断邮件的去向,如果邮件是发送给自己的用户的,它就会通过MDA将邮件送到自己的Mailbox里了(这里的Mailbox相当于我们的邮箱);如果不是发送给本机用户的,而且邮件信息符合转发的条件,那么MTA就会通过MDA将邮件送达到远端用户的MTA上,远端MTA就会透过MDA发送至相应用户的邮箱,远端用户就可以通过MRA检索并下载自己的邮件了。
Relay与认证机制的重要性:
当你需要MTA帮你将邮件邮寄到下一个MTA时,这个过程我们就称作Relay(邮件转发),试想一下,如果所有的邮件都可以由你的主机转发,那么你的主机就会出现资源被占用、垃圾邮件横生的问题,所以我们要通过一种机制来避免这种情况的发生。
第一种:基于IP认证,看该发送者的ip是否是允许中继的地址
第二种:提供给用户一个专用的账号和密码,通过让用户登陆来验证用户的来源。
由于个人IP不是一个固定的地址,所以基于ip认证还有很多不便的地方,所以现在基本上都是基于账号和密码来进行认证用户的身份的。但是我们知道在发送邮件的过程中,SMTP协议本身是没有认证能力的,如果想要让其有认证的功能,我们还要引入一种协议:SASL
SASL:Simple Authentication Secure Layer 简单认证安全层
SASL能够附加在本身不具备认证能力的协议上提供其认证能力,它本身是不具备认证功能的,如果想要其实现认证功能,需要调用其他认证机制如:login plain md5等。
它有一款软件是:sasl,它的一个程序是:cyrus-sasl,启动这个程序后运行一个服务进程是:saslauthd;另外在sasl的基础上,还进一步扩展了sasl的认证库:courier-authlib.
有了这一系列认证机制,邮件传输就可以基于web来实现了。
对于一个邮件服务器来说,必须有能够收发邮件的客户端smtp和服务器端smtpd,以及还有支持邮件传送的MTA,支持投递邮件的MDA,和能够检索下载自己邮件的MRA。
注:用户发送邮件用到的协议是STMP
用户接受邮件用到的协议是POP3
(两个流程不是同一个协议哦,要记得!!)
下面借鉴一下老师提供的流程图来解析一下webmail的收发过程:
Extmail是一个可实现web登陆认证的一个程序,它要去mysql中进行身份认证(这一过程实际上也要通过Courier-authlib这个机制来认证的),用户通过身份验证,postfix要通过Cyrus-SASL这个函数库,并结合Courier-authlib对发送方进行认证,通过检索Mysql数据库进行认证,以此来判断收件人所在的域是否是自己负责的域,然后判断自己是否要为其中继邮件!
这就是邮件服务器工作的流程了,接下来一篇文章会介绍邮件服务器整体配置过程,可以参考下哦~^_^
转载于:https://blog.51cto.com/90112526/1049482