Sendmail第一章 概论1.概论 设想您曾经使用笔和纸,给远方的朋友写信,您写完信后签上自己的名字、然后折起信纸塞入信封,接着您在信封左上处写上您朋友的地址,左下角写上您的地址,在右上角贴上邮票,这时您就可以将其寄出去了。电子邮件E-Mail的整个使用过程与写信十分相似,只是使用电脑替代了纸和笔。 邮局负责运送装在真实信封里的真实信件,而sendmail则用来传送装在电子信封里的电子信件。如果您的朋友(邮件接收者)离您很近(在同一台主机上),那么整个邮件传递过程只与一个邮局有关(运行在本地的sendmail)。如果您的朋友离您很远,那么邮件会从本地邮局(运行在本地的sendmail)传送到远端邮局(运行在远处的sendmail)。虽然sendmail在许多方面都与邮局类似,但以下方面却比邮局强大得多: 1.邮件传送时间只需几秒,而不是几天; 2.地址改变十分方便,邮件可以发往世界任一角落; 3.主机地址是动态查寻的,因此,主机可以移动、改名,邮件还可以传送成功; 4.邮件能够发往不同类型的网络(如UUCP和BITNET),日夜兼程地工作。 在此我们将sendmail与邮局作了一个类比,这个类比并不一定能用在所有的细节中。但这个类比将会较好地在本章中帮助我们阐述sendmail。 1.1 MUA 对 MTA 一个邮件用户代理(MUA)是一个让用户接收、阅读、回复、处理电子邮件的程序。例如,UNIX中的/bin/mail程序、mailx程序、自由软件中的musb、elm、mb以及商业软件中的Zmail等就是一个MUA。绝大多数的MUA运行在单机上。MUA一般都仅仅处理邮件传输 ,在本书中,将不涉及MUA。 一个邮件传输代理(MTA)是一个专门用于在主机间传递邮件的程序,类似于邮局。通常,主机中仅有一个MTA程序存在。Sendmail就是一个MTA程序。其他的还有:MMDF、Smail 3.x和Zmailer等,而在本书中,我们只讨论sendmail。 1.2 为什么sendmail如此复杂 在同一台主机上为不同用户传递邮件这一功能对于sendmail来说是微不足道的,所有的卖主提供的sendmail和缺省配置文件都能完成这一功能。当然,我们需要更多的功能,这些需求使得sendmail变得更加先进和复杂,相应的,其配置文件也变得更加复杂。例如:当一台主机与Internet相连时,sendmail可以使用DNS系统(域名信息系统)将主机名翻译成IP地址。如果需要在UUCP网络上使用,则sendmail还需要运行uux程序。 Sendmail程序需要在多种不同主机间传递邮件,因此,配置文件必须设计得十分灵活。这个概念就是允许同一个二进制程序能在多种主机上使用,而配置文件能够根据具体的情况定制。这种机制使得sendmail变得复杂起来。 设想,当邮件需要转发给一个特定的的用户,sendmail程序将基于配置文件选择恰当的转发方法。这样的选择过程一般可分为以下步骤: 1.如果收信人与发信人在同一台主机上,使用/bin/mail程序分发; 2.如果收信人的主机是与发送者的主机用UUCP网络相连的话,就使用uux发送邮件; 3.如果收信人的主机是在Internet上,那么发送者主机通过Internet发送邮件; 4.否则,信件必须通过其他网络传输,并且可能被丢弃。 1.3 三个重要的部分 sendmail程序实际上由好几个部分组成,包括程序、文件、目录以及其所提供的服务。而配置文件是最基础的,用来定义其它几个部分的位置与行为,以及它们的规则与重写地址。一个队列目录缓存所有的邮件直到它被发送。还有一个别名文件为用户提供类似邮件列表的服务。 1.3.1 配置文件 配置文件中包含了sendmail完成工作所需的所有信息。同时需要提供一些例如文件位置、权限、操作模式等信息。 重写规则和规则设置也包含在配置文件中。转发信件时需要这些信息用来将一个地址转换成另一个。这也许是在配置文件中最容易使人混淆的部分。由于配置文件在设计上主要考虑使得sendmail能更快地读取和分析,所以规则使人看起来感觉很神秘:
而最复杂的常常却是最简洁的。如:以“R”开头的每一行,标明是一个重写(rewrite)规则。“$+”表达式用来匹配地址中的一个或多个部分。随着经验的增长,这样的表达式(实际上配置文件中的所有表达式都是)很快就变成很有意义的表达式。 1.3.2 队列 并不是所有的邮件都能马上被转发,当转发被延迟,sendmail必须能将其存起来,以后再传输。Sendmail队列是一个缓存未能及时转发的邮件的目录。在以下情况下,邮件被缓存到队列中去: 1.当接收主机不可达或关闭,这时邮件将在接收主机重新服务时再转发; 2.当一个邮件有多个收信人时,其中一些可能可以成功地发送,而可能有一些不成功,这些不成功的邮件将以后再转发; 3.当一个邮件十分昂贵时,这些信件可以缓存起来,到网络速率到适合的情况再发送; 4.当邮件的安全性十分重要时,sendmail程序可以配置成将所有的邮件缓存,这样,能以最小的丢失风险发送。 1.3.3 别名和邮件列表 别名允许发向一个地址的邮件重定向到另外一个地址中。同时也允许邮件附加到文件或管道中去,这也是邮件列表的建设基础。别名的核心是aliases文件(经常存成数据库文件格式,以提供快速的查找)。别名也可以用于让单个用户在用户主目录调用forward。 1.4 手动运行sendmail 绝大部分用户不直接运行sendmail,他们一般使用一种MUA程序处理邮件信息。这些MUA程序其中是暗中调了sendmail程序,快速地发送邮件信息。Sendmail神秘地在后台照料着所有要发送的邮件。 虽然如此,用户完全可以去运行,就象其它系统管理员一下,通过这个方法发现并解决邮件问题。 以下是一个手动运行sendmail的例子: 1)首先,创建一个名叫sendstuff的文件,并写入: 上一篇:Linux组网入门(2):FTP服务器 下一篇:Sendmail第二章 获取Sendmail v8 更多相关文章
|
推荐文章
精彩文章
|