&">nbsp; sendmail应用广泛而且灵活,它有多种工作方式,能充当多种角色。sendmail可以作为邮件路由器、SMTP客户程序和SMTP服务程序。不过,它不执行最终的邮件投递。
sendmail的主要角色是充当一个邮件路由器。即通过它获取信件、检查收件人地址并确定发送信件的最好路径。sendmail是如何来执行这一任务呢?
sendmail可以确定它自己的一些信息,例如当前的时间和它运行所在的主机名,但它的大部分智能是由用户(“邮件管理员”)通过配置文件sendmail.cf的形式来提供的。这个配置文件确切地告诉sendmail如何来处理各类邮件,它非常灵活和强大,并且乍看起来似乎难于理解。
但是,正像上面介绍的那样,V8 sendmail具有一套模块化的配置文件构造块,大多数站点都能够利用这些模块轻易地构造出配置文件,并且还包括许多示例。
像前面提到的那样,sendmail可以作为一个MTA运行,因为它理解SMTP协议(V8 sendmail还理解ESMTP)。由于SMTP是一个面向连接的协议,因此客户程序和服务程序(也称为发送器和接收器)总是存在。SMTP客户程序可以向SMTP服务程序投递信件,SMTP服务程序将不断地监听计算机的SMTP端口。sendmail可以是一个SMTP客户程序,也可以是一个SMTP服务程序。当sendmail被MUA运行时,它成为一个SMTP客户程序,并把客户端SMTP通知给SMTP服务程序(不必是另一个sendmail程序);当系统引导并且sendmail以守护进程模式启动时,它不停地运行,为新发来的邮件监听着SMTP端口,这时sendmail就是一个服务程序了。
sendmail所不做的一件事情是邮件的最终投递。sendmail把这一任务留给了其他程序。sendmail是一个大型的、复杂的、利用超级用户权限运行的程序,因此需要有一些方法来解决安全性的问题,有关安全性的问题在sendmail的过去已经发生过许多次。邮件投递的额外复杂性是sendmail有待解决的最后一个问题。