人们在Internet上最常使用的就是电子邮件,很多企业用户也经常使用电子邮件系统.在Unix系统中,SenDMAil是应用最广的电子邮件服务器.本文将比较详细地介绍如何建立一个Sendmail电子邮件服务器,以满足企业的基本需求.
一.Sendmail的工作模式Sendmail是最重要的邮件传输代理程序.理解电子邮件的工作模式是非常重要的.一般情况下,电子邮件系统可分为用户代理、传输代理和投递代理几个部分.用户代理用来接受用户的指令,将用户的信件传送至信件传输代理,如Outlook Express和Foxmail等.而投递代理则从信件传输代理取得信件传送至最终用户的邮箱,如Procmail.
当用户试图发送一封电子邮件的时候,他并不能直接将信件发送到对方的机器上,用户代理必须试图去寻找一个信件传输代理,把邮件提交给它.信件传输代理得到了邮件后,首先将它保存在自身的缓冲队列中,然后,根据邮件的目标地址,信件传输代理程序将找到应该对这个目标地址负责的邮件传输代理服务器,再通过网络将邮件传送给它.对方的服务器接收到邮件之后,将其缓冲存储在本地,直到电子邮件的接收者查看自己的电子信箱.
显然,邮件传输是从服务器到服务器的,而且每个用户必须拥有服务器上存储信息的空间(称为信箱)才能接受邮件(发送邮件不受这个限制).可以看到,一个邮件传输代理的主要工作是监视用户代理的请求,根据电子邮件的目标地址找出对应的邮件服务器,将信件在服务器之间传输并且将接收到的邮件缓冲或者 提交给最终投递程序. 有许多程序可以作为信件传输代理.在Unix系统中,Sendmail是其中应用最广泛的一个,它是一个免费软件,可以支持数千甚至更多的用户,而且占用的系统资源相当少.不过,Sendmail的配置十分复杂,因此,也有人使用另外的一些工具,如Qmail或Postfix等等.
当Sendmail程序得到一封待发送的邮件的时候,它需要根据目标地址确定将信件投递给对应的服务器,这是通过DNS服务实现的.例如一封邮件的目标地址是ideal@linuxaid.com.cn,那么Sendmail首先确定这个地址是用户名(ideal)+机器名(linuxaid.com.cn)的格式,然后,通过查询DNS来确定需要把信件投递给某个服务器.
DNS数据中,与电子邮件相关的是信件交换(Message eXchange,MX)记录,例如在linuxaid.com.cn这个域的dns数据文件中有如下设置:
IN MX 10 mailIN MX 20 mail1mail IN A 202.99.11.120mail1 IN A 202.99.11.121显然,在DNS中说明linuxaid.com.cn有2个MX服务器,于是,Sendmai