linux中的邮件服务器
邮件服务在linux系统中应该算是最复杂的一个服务之一,因为其有多个组件,而且功能比较多,所以在配置的时候就有点苦难。下面我介绍一下linux中的邮件服务。
早期在unix主机之间的通信主要使用uucp,但对于小文件尤其是ASCII码的支持并不是很好,后来在其基础上发展了smtp(简单邮件协议)à使用tcp 25端口。其简单的程度是并不对发件人的身份进行验证。
其发送过程是将编辑好的邮件通过本机的smtpd守护进程发送。邮件在发送过程中有信封和信息首部,都含有发件人和收件人,其中信封是用来在网络上传递表示位置的,而首部中的收件人和发件人则是为了收件人回复用,并且记录邮件在发送过程中是否经过垃圾过滤等。
在邮件的发送过程中使用的地址如zly@a.com,这就需要有DNS能够解析a.com,在发送邮件的时候使用的是smtp进程,而服务器是smtpd进程。当服务器接收到邮件如果邮件的目的地址所在的域是自己负责的话则将其放在一个公共的位置:/var/mail/文件夹中 。但将邮件放入这个位置的有个专门的程序如procmail,maildrop等。邮件的用户名在服务器中是专用的虚拟用户。
MUA àMail User Agent 其作用是专门实现邮件的编写和接受的。常用的工具如foxmail,Outlook,Webmail,mail命令。邮件的发送使用的是smtp协议。
MTA àMail Transfer Agent 邮件传送代理,是监听在25号端口上,能够实现邮件收发的一个进程。常用软件如 windows的Exchange、linux中的sendmail,Postfix,Qmail。
MDA àMail Delivery Agent 邮件投寄代理,用户将服务器接受的邮件放到公共的文件夹下。软件如procmail,maildrop。可以实现垃圾邮件过滤,或病毒邮件过滤。
MRA àMail Retrieval Agent 邮件访问代理,用于用户从客户端从服务器接受邮件,使用到的协议是pop3。
MSA àMail Submition Agent 邮件提交代理,用于当服务服务器同时接受太多的发送请求时,将其排成队列,然后按照一定的速度将其提交给MTA。通常在大型的网站中使用。也可以在这里做邮件的检索,过滤垃圾邮件。
所以邮件的发送过程如下:
MUA àMSA àMTA à对方的MTA
接受的过程(通过MUA):
MUA àMRA à到公共位置下载邮件
以上的过程中使用到的协议如下
MUA àMSAàMTA使用smtp协议
MTA à对方的MTA 同样也使用smtp协议
MUA àMRA à到公共位置下载邮件 使用到的协议有pop3(监听110端口)和IMAP4(监听143端口)
这三种协议使用的都是明文传送。同样也可以通过ssl的方式加密。由于smtp需要接力所以smtps不常用,所以常使用的是S/MIME,GPG。pop3àpop3s(tcp995端口)imap4àimaps(tcp993端口)。
在pop3和imap选择中,pop3会从服务器上下载邮件,并删除原来的文件,而imap并不删除服务器上的邮件。
以上是最标准的功能,但是在现在已经很少人使用MUA,大部分的邮件编写和收发都是通过网页的方式,所以在服务器上又添加了一个web服务器,在web服务器中通常使用CGI的程序,通过验证用户的身份然后提供web页面让其收发邮件的。其过程就是只省去了从服务器下载和发送的过程。
由于早期的网络不可靠,为了尽量的使邮件能够发送到对方的主机,都开启了开放式中继,即不是到本机的将帮忙转发。但这样可能被利用,所以后来又增加了
SASL,这是一种协议,Simple Authentication Security Layer简单认证安全层。功能:当客户端发送邮件到服务器,先查看原账号和密码是否是本服务器上的,如果是则将其转发。SASL是个软件,有saslauthd提供的,默认是没有启动的。
为保证过滤垃圾邮件,还要对已经认证过的用户的邮件进行过滤,还有有病毒邮件过滤器,以过滤附件中的病毒
以下是创建linux的mail服务器
1. 创建DNS的的MX记录
2. 创建smtp
3. 部署sasl认证用户
4. 部署web服务器
5. 安装呼叫器,垃圾邮件过滤器
关于其配置文件将在下篇中介绍