19.18.14
15 Exim邮件系统
Debian 和UbuntuLinux用Exim邮件传输代理取代了sendmail。它是一种组成更简单的系统,但对于邮件负载不重,而且没有特别的邮件系统设计的站点来说,它的特点就是配置更容易。Exim的功能可以和sendmail最常用的功能相对应。
19.18.1415.1
历史
Exim是由剑桥大学(University of Cambridge)的Philip Hazel在1995年编写的,它按照GNU公共许可证来发布。Exim第4版(也叫做exim4)于2002年发布,它现在是Debian和Ubuntu发布的版本。我们根据www.exim.org上的Exim文档了解了有关Exim的详细配置,并且在这里只简要介绍一下Debian上带的Exim版本它。
19.18.1415.2
DebianLinux上的Exim
Debian把它带的Exim装成和使用sendmail有几分相像;不过,/usr/sbin/sendmail和/usr/lib/sendmail都是指向exim这个二进制文件的链接,而man
sendmail得到的却是exim的man手册页。exim所能理解的命令行标志和sendmail的相符,所以用-bm或者-bs标志显式调用sendmail的用户代理仍然可以把exim作为下层的邮件传输代理正确执行。
和sendmail软件包里的情况一样,DebianExim也提供了一些单独的命令来执行特定的邮件功能里也有一些单独的命令来执行特定的邮件功能。这些命令实际上都是通过以特定的命令行标志调用这些命令实际上都是通过以某种命令行标志调用exim来实现的。表19.18.213列出了这些功能及其对应的exim标志。
表19.18.213 Debian的exim邮件工具程序的工具程序(以及对应的exim标志)
|
命 令 |
标 志 |
功 能 |
|
mailq |
-bp |
显示邮件队列 |
|
rsmtp |
-bS |
批处理SMTP连接 |
|
rmail |
-i |
和smail保持兼容a |
|
runq |
-q |
运行邮件队列 |
a.接受以消息里一行上的点(.)来结束的消息。
19.18.1415.3
配置Exim
Exim包含3个逻辑上的组成部分:指挥(director)、路由(router)和传输(transport)。指挥部分处理本地地址—也就是说,在本地域内的地址。路由部分处理远程地址,传输部分执行实际的投递操作。
Exim配置起来很像smail3或者Postfix,它也采用形如keyword = value这样的配置语言。到了Exim4,系统通过/etc/exim4/conf.d下的一组精巧的配置文件来配置。Debian带有一个Perl脚本,通过先向您提问题,然后按照您做出的回答构造Exim配置文件/etc/exim.conf的方式来帮助您配置Exim。在您加入或者修改了其中的一个配置文件之后,您必须运行update-exim4.conf这个脚本,它会创建/var/lib/exim4/config.autogenerated。这个自动生成的文件供Exim运行的时候使用。
遗憾的是,有几个默认值会配置您的邮件系统认为您的主机名是个顶级域。不用说,这样做是无法工作的。即便是传出的邮件也会受到影响,因为发件人的地址看起来就像是user@host,由于垃圾邮件问题的缘故,大多数邮件系统都会拒收发件人的电子邮件地址不全的邮件(也就是说,它们拒收里面一个点也没有的地址)。要让邮件系统能够正常运行,您必须手工编辑exim.conf文件,或者运行eximconfig为您自己改正原来一开始的配置。
幸好Exim配置文件的文档说明写得非常好,每个变量的前面都有注释,介绍这个变量能做什么、常用的值是什么、以及如果您没有定义它可能出现什么样的(糟糕)问题。默认的配置文件exim.conf文件定义了大约100个变量,但这是一个很大的样板,调用了前面的章节里介绍的列举了前面的章节里介绍的sendmail的很多功能。
在我们作为测试床的系统上,我们不得不设置4个变量来启动基本的邮件功能。实际上,那些变量里有两个和隐私问题有关,并不一定需要。下面是这4个变量,我们在旁边写了注释:。
qualify_domain = domain-name ### 默认设置为主机名(非完整域名)
local_domains = localhost:domain-name
smtp_verify = false ### 默认为on,off禁用SMTP VRFY
modemask = 002 ### 默认值为022,每个用户一个组
.
我们不再深入介绍配置Exim的细节,而是要告诉读者,他们可以参考在sysadmin.oreilly.com/news.exim_0701.html上由Exim的作者写的一篇好文章,以及/usr/doc/exim(在您安装操作系统的时候要包括exim-doc这个软件包)以及前面提到的其他资源。
real sendmail instead
of Exim下面,我们从sendmail的角度介绍Exim的几项功能,以便读者能够比较这两种系统的功能,并且决定自己是否想安装真正的sendmail来代替Exim。
19.18.1415.4
Exim和sendmail的相似之处
exim就像sendmail以前(8.12之前)那样,以setuidroot方式成为rootsetuid来运行,所以您需要注意打上安全补丁保持更新。Exim的可信用户概念和sendmail的相符,主要用来帮助管理邮件列表主要用来方便邮递列表的管理,有点列表的邮递列表的From行一般都要重写。Exim也能让您定义作为系统管理员的管理用户,他们可以启动队列运行。它默认也允许SMTP的验证命令(VRFY)。
当改动了exim的配置之后,必须用kill命令向exim发送SIGHUP信号。exim把它的进程ID保存在文件/var/spool/exim/exim-daemon.pid里面。它一般把日志记录到/var/log/exim目录下的文件里,但是也可以用syslog。在默认情况下,Debian带的exim会把日志记录到它自己的文件中,而忽略syslog,虽然syslog.conf配置了几个邮件日志文件,但它们都是空的,而且每天也会轮换和压缩(空文件在压缩后比压缩前更大!)。
Exim不能理解UUCP的地址。它可以配置成能够接受“百分号扩展”的寻址方式,但默认情况下是不理解的。
Exim permits forwarding
of outgoing mail to a smart host and filtering of inbound
mail at both the host and
user levels. It supports virtual domains and has a retry
database similar in functionality to sendmail’s
host status directory for keeping
track of difficult
deliveries. A system-wide (not per-user) filtering mechanism can
screen for Microsoft
attachments, worms, or viruses.
Exim允许您把传出的邮件转发给一个聪明的主机,而且允许您在主机和用户两个层面上过滤传入的邮件。它支持虚拟域,而且有一个重试数据库,在功能上类似于sendmail为跟踪难以投递的邮件而保持的主机状态目录。Exim有一个系统范围的(不是逐个用户的)过滤机制,能够过滤Microsoft微软文件的附件、蠕虫、或者病毒等。
Exim可以使用实时的黑洞列表,但是它们的URL却是旧的;您需要把路径从vix.com改为mail-abuse.org。
Exim包括一项sendmail所没有的好特性,也就是能够识别出别名和转发的循环,并且合理地处理它们。
最后,man -k exim会举出几种有用的工具,能帮助保持邮件系统的有条不紊。






