Debian和Ubuntu用Exim邮件传输代理取代了sendmail。它是一种组成更简单的系统,但对于邮件负载不重,而且没有特别的邮件系统设计的站点来说,它的特点就是配置更容易。Exim的功能可以和sendmail最常用的功能相对应。
18.15.1 历史
Exim是由剑桥大学(University of Cambridge)的Philip Hazel在1995年编写的,它按照GNU公共许可证来发布。Exim第4版(也叫做exim4)于2002年发布,它现在是Debian和Ubuntu发布的版本。我们根据www.exim.org上的Exim文档了解了有关Exim的详细配置,并且在这里只简要介绍一下它。
18.15.2 Linux上的Exim
和sendmail软件包里的情况一样,Exim里也有一些单独的命令来执行特定的邮件功能。这些命令实际上都是通过以某种命令行标志调用exim来实现的。表18.21列出了这些功能及其对应的exim标志。
表18.21 exim的工具程序(以及对应的exim标志)
|
命 令 |
标 志 |
功 能 |
|
mailq |
-bp |
显示邮件队列 |
|
rsmtp |
-bS |
批处理SMTP连接 |
|
rmail |
-i |
和smail保持兼容a |
|
runq |
-q |
运行邮件队列 |
a.接受以消息里一行上的点(.)来结束的消息。
18.15.3 配置Exim
Exim包含3个逻辑上的组成部分:指挥(director)、路由(router)和传输(transport)。指挥部分处理本地地址—也就是说,在本地域内的地址。路由部分处理远程地址,传输部分执行实际的投递操作。
Exim配置起来很像smail3或者Postfix,它也采用形如keyword = value这样的配置语言。到了Exim4,系统通过/etc/exim4/conf.d下的一组精巧的配置文件来配置。在您加入或者修改了其中的一个配置文件之后,您必须运行update-exim4.conf这个脚本,它会创建/var/lib/exim4/config.autogenerated。这个自动生成的文件供Exim运行的时候使用。
幸好Exim配置文件的文档说明写得好,每个变量的前面都有注释,介绍这个变量能做什么、常用的值是什么、以及如果您没有定义它可能出现什么样的(糟糕)问题。默认的配置文件定义了大约100个变量,但这是一个很大的样板,列举了前面的章节里介绍的sendmail的很多功能。
在我们作为测试床的系统上,我们不得不设置4个变量来启动基本的邮件功能。实际上,那些变量里有两个和隐私问题有关,并不一定需要。下面是这4个变量,我们在旁边写了注释:
qualify_domain = domain-name ### 默认设置为主机名(非完整域名) |
下面,我们从sendmail的角度介绍Exim的几项功能,以便读者能够比较这两种系统的功能,并且决定自己是否想安装真正的sendmail来代替Exim。
18.15.4 Exim和sendmail的相似之处
exim就像sendmail以前(8.12之前)那样,以setuid方式成为root来运行,所以您需要注意打上安全补丁保持更新。Exim的可信用户概念和sendmail的相符,主要用来方便邮递列表的管理,邮递列表的From行一般都要重写。Exim也能让您定义作为系统管理员的用户,他们可以启动队列运行。它默认也允许SMTP的验证命令(VRFY)。
当改动了exim的配置之后,必须用kill命令向exim发送SIGHUP信号。exim把它的进程ID保存在文件/var/spool/exim/exim-daemon.pid里面。它一般把日志记录到/var/log/exim目录下的文件里,但是也可以用syslog。在默认情况下,exim会把日志记录到它自己的文件中,而忽略syslog,虽然syslog.conf配置了几个邮件日志文件,但它们都是空的,而且每天也会轮换和压缩(空文件在压缩后比压缩前更大!)。
Exim允许您把传出的邮件转发给一个聪明的主机,而且允许您在主机和用户两个层面上过滤传入的邮件。它支持虚拟域,而且有一个重试数据库,在功能上类似于sendmail为跟踪难以投递的邮件而保持的主机状态目录。Exim有一个系统范围的(不是逐个用户的)过滤机制,能够过滤微软文件的附件、蠕虫或者病毒等。
Exim包括一项sendmail所没有的好特性,也就是能够识别出别名和转发的循环,并且合理地处理它们。

