Unix/Linux 系统自动化管理: 邮件系统篇

本文是 Unix/Linux 系统管理自动化系列中的一篇,主要讲述邮件系统的配置,以及如何利用 Perl 脚本来实现电子邮件的自动发送。本文内容包括邮件传输代理 (MTA) 在 AIX 和 LINUX 系统中的具体配置,如何通过 sendmail 发送邮件,以及如何接收局域网内的用户邮件。

在 UNIX/Linux 系统的自动化管理中,利用脚本自动发送邮件的功能对系统监控的工作来说是非常重要的。系统管理人员可以利用 cron 或者 RMC 来创建监控脚本,一旦触发条件被满足,操作系统就会自动创建电子邮件,将相关的状态信息发送到指定的邮箱。通过电子邮件系统,系统管理人员就能够及时得获取被管理系统的状态,进而采取相应的措施。这种方式可以显著地节省系统管理人员的工作强度,并能够提高系统的可维护性。

Unix/Linux 邮件系统组成简介

在传统的 UNIX 和 Linux 系统中,电子邮件系统的主要组成部分包括邮件用户代理 (MUA -- mail user agent)、邮件传输代理(MTA -- mail transfer agent)、邮件提交代理 (MSA -- mail submission agent)、邮件投递代理 (MDA -- mail delivery agent) 和邮件访问代理 (MAA -- mail access agent)。在日常工作中,系统管理人员经常接触的主要有邮件用户代理 (MUA) 和邮件传输代理 (MTA)。在 AIX 系统中,一个典型的邮件系统如图 1 所示。


图 1. 邮件系统示意图
Unix/Linux 系统自动化管理: 邮件系统篇

邮件用户代理(MUA)是一个用来读写 mail 的程序,实际上就是邮件系统的客户端程序。它提供了阅读,发送和接受电子邮件的用户接口。最常用的邮件用户代理有 mutt,mail,elm,pine,它们都是随基本系统安装的 <font face="Courier New">简单邮件应用程序</font>

邮件传输代理(MTA)是一个在两个主机之间或者本地同一主机内传送邮件的程序,它负责邮件的存储和转发,并决定传送邮件到目的地的路线。UNIX/Linux 系统的标准 MTA 是 sendmail,其他的 MTA 还有 qmail, exim 和微软的 Exchange。MTA 会监视用户代理的请求,根据电子邮件的目标地址找出对应的邮件服务器,在服务器之间传输邮件并将接收到的邮件进行缓冲。

邮件投递代理(MDA)通常被 MTA 用来投递邮件到接收者的邮箱中。它能够从 MTA 接收邮件,并根据指定的规则来进行本地投递;它可以把邮件投递到本地用户、邮件列表、文件或者应用程序。UNIX/Linux 系统中常用的 MDA 包括 maildrop、procmail、postfix 和 delivermail 等。Postfix 用一个或多个 MDA 来递送邮件 , procmail 是另外一个有名的 MDA.

邮件提交代理(MSA)负责消息发送之前的所有必须完成的准备工作和错误检测。MSA 就如同在 MUA 和 MTA 之间的一个头脑清醒的检测人员,它会对所有的主机名和从 MUA 得到的信息头等信息进行检测。

MAA 邮件访问代理(MAA)将用户连接到邮件系统,并通过 POP 或 IMAP 协议来收取邮件。UNIX/Linux 系统中,常用的 MAA 有 UW-IMAP、Cyrus-IMAP、COURIER-IMAP 等;当邮件向目的地址进行传输时,一旦源地址和目的地址都不是本地系统,那么本地系统就会作为邮件的中继。

对于大多数邮件用户来说,利用邮件客户端来接收、查看和发送电子邮件是最常用的功能。接收和查看邮件比较简单,但是电子邮件的发送则相对复杂。在下面的章节里面,本文将根据不同的操作系统来具体介绍如何配置邮件服务器。