【IT168 服务器学院】在Linux下有许多软件包可以实现标准的邮件服务。UNIX/Linux的电子邮件系统模型基本可分为邮件传递代理MTA,邮件存储和获取代理MSA,以及邮件客户代理MUA三大模块。虽然也有一些特殊的邮件应用程序无法确切归入上述分类。下面我们就Linux邮件服务做一概述。
1、邮件传递代理-MTA
在Linux下的邮件传递代理包括sendmail,该系统几乎在任何UNIX平台上都有相应的版本;还有D.J. Bernstein的qmail以及Wietse Venema的Postfix系统。它们负责接收并转递邮件。这听起来很简单,实际上设置可能相当复杂。在邮件策略管理时需要设置一系列的路由和伪装选项,而许多功能是由语言编程实现的,用以过滤或者修改中继消息的头信息。此外邮件路由和寻址邮件存储信箱的过程包含了复杂的与各种目录服务交互操作,这些目录服务可能包括DNS,密码文件,NIS, LDAP别名/数据库管理文件,以及各种的通用数据库系统。
如今的MTA还要实现反垃圾邮件功能,控制邮件头的to和from地址格式,达到允许或者限制特定域名或者地址范围目的,以上主要是通过修改存取控制表和规则实现。这一过程通常包括查询数据表或者目录服务,例如Paul Vixie的实时黑洞列表程序RBL,邮件滥用预防系统MAPS,以及同类的Dorkslayer/ORBS系统。MTA一直在不断增强之中,以实现加强的策略控制以及反病毒和反蠕虫等功能。
在大多数情况下,安装和设置MTA系统比较容易,不过强大的功能的实现是以高度复杂性为代价的。如果你所在的机构选择定制的MTA来满足特定的路由,体系,安全性和反垃圾邮件等要求,就需要更加复杂的设置选项,配置包括设计并处理MTA和各种子系统如LDAP、DNS服务器之间的复杂关系。 2、邮件存储和获取代理MSA
一旦安装并设置完成了MTA,通常还需要对MSA系统进行同样的配置过程。如今大多数机构并不直接将邮件传送到桌面客户系统,而是将邮件存储到服务器,让用户通过POP或者IMAP来读取各自的邮件。
邮件存储的管理有许多种协议,但如今最常用的是POP3和IMAP4。对于MTA来说,由一些程序,或者称之为Daemon来实现相应协议的服务。大多数MSA可以与通用的MTA交互,此外这些系统还包含加锁或者其他安全机制,使得多个MSA可以并行工作而不发生冲突。
这意味着一些用户可以通过POP协议获取邮件而同时其余一些用户可以使用IMAP协议,而另外一些用户可以登录系统,使用本地MUA例如pine,mutt或elm处理邮件。单独用户也可以从一种存取协议切换到另一种,而并不需要系统管理员的干预。聪明的用户甚至可以越过通常的MSA/MUA服务,而使用通常的UNIX命令如cp、mv和ftp或者远程同步rsync来随意处置他们的邮件。对普通用户来说这有些艰涩,但该方法有时可以用来方便地修复崩溃了的邮箱系统。
在一个已经安装了Linux系统机器上设置POP服务相当容易,甚至不需要什么操作。通常POP Daemon在最初的Linux操作系统安装时已经设立。而如果POP daemon被禁止,可以在/etc/inetd.conf文件中去掉相应行的注释,并重新启动Daemon服务即可。
类似的,IMAP也是如此。POP通常将邮件转递到客户端并从服务器上移除,而IMAP允许用户将邮件存贮在服务器端的文件夹中,而客户端的拷贝是缓存或者工作副本,这样做需要更多的服务器存储空间,却可以让IT部门集中在服务器端进行备份和恢复,并让客户端保持相当的灵活性和安全性。IMAP也可以设置成象POP那样在客户端读取后就删除服务器端的邮件,从操作上讲,两者并没有什么不同。两种服务都由inetd来控制,或可称其为网络分发服务,相当于Linux的“传达接待员”。
POP或IMAP可以经年累月的不间歇地运行。无需特殊关照,默默地为成百上千个用户和邮箱服务。不过有时邮件回复系统会犯些愚蠢的错误,或者有些邮件软件产生了一些bug,这就需要系统管理员介入,解决某些系统故障,清除一些邮件碎片和垃圾。
例如,有的用户的pop系统可能崩溃,通常是由于客户收到了太大的邮件附件所致。过大的附件文件超过了磁盘空间限制,解决方法是利用shell命令,利用uudecode解码附件,并存储到该用户的home目录。也可以设计一些小脚本程序来处理邮件,重新恢复用户的邮箱系统。通常UNIX下的mbox是简单的文本文件,qmail邮件存储在含有单个小文本文件的目录中。一个胜任的系统管理员完全可以轻而易举的实现上述操作。也就是说,你所遇到的大多数与MSA和MTA有关的问题可以通过文本编辑器和常用的UNIX过滤器和应用程序加以解决。 3、邮件客户代理MUA
邮件客户代理MUA种类繁多,而且如雨后春笋,层出不穷,各有千秋。大都符合POP和IMAP协议。这也包括微软的Outlook系列。在Linux下,许多人使用fetchmail抓取邮件并保存在本地邮箱。然后使用任何一种邮件客户代理MUA,比如elm,pine,mutt,MH/exmh,EMACS的rmail,vmail,mh-e,gnus以及大量的带有GUI界面的如Balsa, Mahogany等来处理邮件。也有众多Linux用户选择使用Netscape Communicator内置的邮件客户端。
4、另类的Linux邮件应用
在Linux和UNIX下,也有许多工具诸如procmail,vacation,biff,和fetchmail等,不能划归到MTA,MSA,MUA的分类中。这里做另类简介。
promail经常被用作“本地递送代理”和邮件处理代理。它通常用来过滤发送给最终收信人的传送信息部分。允许用户编写脚本程序实现对某些特定邮件的自动发文,拒绝,恢复或者转寄功能。也可以用作处理邮箱,或者作为常规的电子邮件编程语言和程序库。
vacation是一个收信后自动回复邮件的早期简单应用。最初用来提醒通信者收信人正在度假,这一功能完全可以通过两行简单的procmail命令实现。
biff可用来通知用户有邮件到达。在图形界面GUI下,也有几款类似的应用,可以通过显示图标,动画,播放音乐或者语音提示表达邮件事件。还可以通过各种后台的MSA协议实现biff信息在整个网络上的中继传递。
总之,Linux下的邮件服务是方便灵活,强大而复杂的。只要精心规划,悉心设计,细心配置,完全可以搭建出高效而免费的多功能电子邮件系统平台