2024年4月2日发(作者:)

用Linux作邮件服务器

2008-07-28 17:30:31

在Internet上,E-mail是用户之间交往沟通的最佳方式。通过电子邮件,可以为Linux

系统开拓新的空间,增强与外界的联系。已经证明,电子邮件是Internet上使用最多的应

用程序,甚至比WWW的使用还要多。本章介绍如何为Linux系统安装、配置E-mail软件。

1 Linux E-mail软件简介

Linux中的E-mail软件系统分为两大类:MUA(邮件用户代理)和MTA(邮件传送代

理)。MUA的功能是为用户提供读写邮件的界面,而MTA的作用则是处理邮件的收发工作。

换言之,用户可以通过MUA写信、读信,利用MTA收信、发信。

最常用的电子邮件MTA系统是sendmail,它由加州大学开发,其最新版本是8.9;另

一个常见的MTA程序是smail,它由Curt Noll和Ronald Karr联合开发,也已经发布了几个

版本。

值得注意的是,与其他大型软件包一样,sendmail也有自己的一些缺陷。虽然引起

sendmail失败或系统崩溃的错误已基本上被排除,但提供root访问权限的安全性漏洞仍然

时有发现。如果配置不当,sendmail有可能为“黑客”提供可乘之机。为了安全起见,用户最

好定期访问计算机紧急反应小组(CERT,www.cert.org)的网页,加入它的邮递列表,

或者阅读由它主持的网络讨论组(ce)来了解由它发出的安全性通知。

电子邮件的MUA系统目前很多,大约有十几种,其中最常见是:mail和elm。

2 sendmail及其配置

本节介绍如何安装和配置sendmail程序,不过在开始深入研究这些详细内容之前,先

介绍SMTP协议以及域名系统(DNS)对E-mail在Internet上传输的影响。

2.1 SMTP

SMTP是简单邮件传输协议的简称,是Internet上传输邮件的既定标准方式。sendmail

的基础协议正是SMTP。sendmail程序提供为Linux支持SMTP连接所需的服务。

要了解sendmail所做的各种不同工作,需要掌握有关互联网协议的一些知识。所谓协

议就是硬件和软件进行通信所遵守的标准。协议通常分为不同的层次,高层的协议利用低层

的协议作为基础。例如,互联网协议(IP)在网络之间发送和接受数据包,但不必创建诸如

SMTP和其他高层协议所使用的端到端(PPP)的连接;建立在IP之上的传输控制协议(TCP)

提供了被Telnet和SMTP程序所使用的面向连接的服务;总而言之,TCP/IP为互联网提供

了基本的网络服务,例如文件传输协议(FTP)和SMTP的高层协议,都建立在TCP/IP之

上。协议分层的优点在于,执行SMTP或FTP协议的程序不必知道与传送数据包和连接其

他主机有关的任何内容,因为它们可以使用TCP/IP提供的服务来完成。即执行高层协议的

程序不必关心低层协议的具体细节。

SMTP定义了在互联网上交换E-mail的方式,因此软件版本和硬件环境对交换邮件的

程序来说并不重要,只要这两个程序都正确地执行SMTP协议,它们就可以交换邮件。

下面介绍一个使用的SMTP协议的例子:位于的用户li正在向位于

的zhang发送邮件。

以下为引用的内容:

$ sendmail-v zhang@

zhang@...Connecting to

Trying 123.45.ected

SMTP ready at Sun,14 Nov 1999 18:56:22-0500

220 ESMTP spoken here

>>>HELO

250 Hello [123.45.67.2],pleased to meet you

>>>MAIL From:〈li@〉

250〈li@...Sender ok

>>>RCPT To:〈zhang@〉

250〈zhang@)...Recipient ok

>>>DATA

354 Enter mail,end with"." on a line by itself

>>>.

250 SAA08680 Message accepted for delivery

>>>QUIT

221 closing connection

zhang@...Sent

S

上面的第一行是直接调用Sendmail的一种命令格式,而不是利用用户所喜欢的邮件用

户代理MUA(例如elm或mail)来执行这一任务。这里-v选项告诉sendmail使用冗余模式

显示SMTP对话。其余行显示的是SMTP客户机和服务器进行的交谈。以>>>开始的行表

示的是位于处的客户机(寄件人),紧跟其后的行是位于

处的服务器(收件人)的答复。以220开始的第一行是最初连接之后SMTP服务器对自己

进行的声明,它给出了自己的主机名以及日期和时间;第二行用来告诉客户机该服务器能够