Sendmail的特点
优点
Sendmail是发展历史悠久的MTA,当前的版本是8.10.2。当然,Sendmail在可移植性、稳定性及确保没有bug方面有一定的保证。但是Internet上有很多帖子都是关于如何攻击Sendmail的,这对于管理员来说是一个噩梦。Sendmail在发展过程中产生了一批经验丰富的Sendmail管理员,并且Sendmail有大量完整的文档资料,除了Sendmail的宝典《O'Reilly's Sendmail》(Bryan Costales和Eric Allman撰写)以外,网络上有大量的tutorial、FAQ和其他的资源。这些大量的文档对于很好的利用Sendmail的各种特色功能是非常重要的。Sendmail当前来说是一个最成熟的MTA。
缺点
1.安全性
Sendmail在过去的版本中出现过很多安全漏洞,所以使管理员不得不赶快升级版本。而且Sendmail的流行也使其成为攻击的目标。
另外一个问题是Sendmail一般缺省配置都具有最小的安全特性,从而使Sendmail往往容易被攻击。
目前对于Sendmail邮件服务器,阻止邮件攻击的方法有两种。一种是升级高版本的服务器软件,利用软件自身的安全功能。第二种就是采用第三方软件,利用其诸如动态中继验证控制功能来实现。
解决方法有:
(1)编译Sendmail时的安全考虑
要利用Sendmail 8.9.3的阻止邮件攻击功能,就必须在系统编译时对相关参数进行设置,并借助相关的软件包。目前主要就是利用Berkeley DB数据库的功能,Berkeley DB包可以从相关站点上下载,并需要预先编译好。然后将Berkeley DB的相关参数写进Sendmail的有关文件中。
(2)相关文件的配置
正确编译好Sendmail是邮件服务器安全控制的基础,而真正的安全设置主要还是利用相关文件进行的。这种包含控制语句的文件主要是access和relay-domains。
access是邮件安全控制的主要数据库文件,在该文件中可以按照特定的格式将需要控制的域名、IP地址或目标邮件地址,以及相应的动作值写入。然后使用makemap命令生成access.db文件(#makemap hash access.db < access),从而使服务器允许或屏蔽邮件中继和邮件轰炸。
(3)版本号的修改
对于一台邮件服务器,可以通过远程的25端口telnet命令来获取服务器的版本信息。如:“telnet Sendmail服务器主机25”就可以查看Sendmail的当前版本。为了防止一些恶意的查看版本信息操作,Sendmail提供了可以对显示的版本进行修改的操作。
在Sendmail.cf文件中有一句“SmtpGreetingMessage=$j Sendmail $V/$Z; $b”的语句,其中$V/$Z就是版本信息,正常情况下由该参数显示的版本信息为Sendmail本身的版本。如果要设定成管理员给定的版本信息,只需将该参数改掉,然后加入你所希望的信息即可。例如:当把这句改成“SmtpGreeting Message=$j Sendmail 0.0/0.0; $b”,重启Sendmail服务,则Sendmail的版本就会变成“Sendmail 0.0”。从而达到隐蔽版本信息的目的。
以上是Sendmail 8.9.3本身带有的安全功能设置,通过这些安全设置可以大大加强服务器安全性能。但是在防止邮件中继和邮件炸弹的设置时,如何确定哪些目标地址是需阻止中继的,哪些又是允许中继的,似乎只能通过管理员对日志文件的分析和观测,或者在发现了安全问题后才能确定。因此这种安全控制还仅是事后控制,并且对相关文件修改后还必须重新启动服务器。如要实现事先动态安全控制还需要采用其他方法。
(4)动态中继验证控制
DRAC(Dynamic Relay Authorization Control)动态中继验证控制是专门为邮件服务器设计的一个服务器端软件(),它可以安装在一台SMTP服务器上,并同时为多个邮件服务器提供动态中继验证服务。DRAC主要通过自动获取和动态更新中继验证数据库中的信息来允许合法pop3或IMap用户使用邮件服务器,从而有效地控制邮件炸弹和非法的邮件中继。DRAC的原理就是利用pop3或IMap服务器固有的功能来获取用户名、密码和客户机IP地址等信息,并将这些信息及时映像到验证数据库中,供SMTP服务器调用,同时在经过一段时间以后(缺省为30分钟),其验证信息将自动失效,需要用户重新输入验证信息。这样不仅可以保证合法的pop3或IMap用户能够正常使用邮件服务器,也可以阻止任何非注册用户(包括本地)利用邮件服务器来发送邮件。这种邮件安全控制常常被称为:“邮件服务之前的pop验证”(POP-before-SMTP)。
2.效率问题
传统的UNIX系统下的电子邮件系统由于设计所能承受的用户数有限,其系统结构存在一定的缺陷,难以承受大用户量的访问。比如:
◆将用户信息存放于/etc/passwd文件中,在大用户量的情况下认证效率将会大大降低。
◆邮件存放通常在/var/mail目录下面,每个人的邮件是一个文件,用户数多则邮件文件就多。而在UNIX系统中,同一级目录中的文件超过一定数量后,文件系统运转效率将会大大降低。
◆由于每一个用户的多封邮件都位于同一个文件中,所以如果在用户取信过程中出现网络异常,则很容易引起邮箱的死锁。
上述问题大大限制了Sendmail邮件系统在用户数量较大情况下的应用。另外,如果完全以系统用户做为邮件系统的用户也存在严重的安全隐患。
因此,如果要适应大容量的需要,必须从邮件系统体系结构上,特别是邮件存贮方式和用户认证方式上进行改进,使之在大用户量的情况下仍旧保持良好的性能。
Qmail的特点
优点
安全——Qmail将E-mail处理过程分为多个分过程,尽量避免以root用户身份运行。同时Qmail也禁止对特权用户(root、daemon等)直接发信。
可靠——Qmail的直接投递保证了E-mail在投递过程中不会丢失。Qmail同时支持新的更可靠的信箱格式—Maildir,保证系统在突然崩溃情况下不至破坏整个信箱。
高效——运行在奔腾的BSD上,Qmail每天可以轻松地投递20万封电子邮件。
简单——Qmail要比其他的Internet Mail系统小得多。它通过统一的转发机制完成Forwarding、Alias和Maillist等功能, Qmail使用简单高效队列来处理投递。Qmail-SMTPD可以由Inetd启动,节省了一定资源。
缺点
1.代码结构不好。
2.不是完全遵从标准,它不支持DSN。
3.不遵从支持7bit系统标准,而每次都发送8bit。若邮件接收一方不能处理这种情况,就会出现邮件乱码的情况。
Sendmail与Qmail的比较
MTA |
成熟性 |
安全性 |
特色 |
性能 |
Sendmail兼容性 |
模块化设计 |
Qmail |
中 |
中 |
中 |
中 |
支持 |
是 |
Sendmail |
高 |
低 |
中 |
低 |
支持 |
否 |
企业邮件问题突显
企业在使用电子邮件时存在着大量的问题,归纳起来主要有以下几点:
1.用户计算机运用水平不高,对基本设置不了解,造成错误。在日常工作中,部分企业员工计算机基本知识不够,应用水平低,包括上网浏览、收发电子邮件都存在着不同程度的障碍。
2.电子邮件系统资金投入与维护成本的影响。建立自己企业的电子邮件系统,需要购买专门的电子邮件系统软件,需要专业系统管理员来配置和维护。如果技术力量不够,系统出现问题时还会影响工作的开展。在软件和硬件方面的投资额也比较大,这些都影响着企业建立自己的电子邮件系统。
3.无专业邮件服务提供商为企业服务,客户服务水平不高。有45.45%的企业把电子邮件系统建立在虚拟主机服务提供商的服务器上,而虚拟主机提供商在技术实力和解决问题等诸多方面都不尽如人意,落后的客户服务水平制约了企业电子邮件的广泛运用。