sendmail大全Web服务器教程
|
| 论文作者:佚名 论文来源:不详 论文发布时间:2006-6-18 22:35:21 论文发布人:chjchjchj |
减小字体
增大字体
摘要:sendmail大全 本章要点:
本章讨论电子邮件服务的基本概念及其配置、管理。
本章具体包括以下内容。
邮件传送的基本过程
sendmail的配置
邮件服务的一些特殊功能
qmail的简单介绍
7.1 sendmail 和SMTP
7.1.1 smtp和邮件传输代理
sendmail是最重要的邮件传输代理程序。理解电子邮件的工作模式是非常重要的。一 般情况下,我们把电子邮件程序分解成用户代理,传输代理和投递代理。
用户代理用来接受用户输入的指令,将用户给出的信件报文传送至信件传输代理。而 投递代理则从信件传输代理取得信件传送至最终用户的邮箱。显然,最终用户只能看到 用户投递代理。
当用户试图发送一封电子邮件的时候,他并不能直接将信件发送到对方的机器上,用 户代理必须试图去寻找一个信件传输代理,把邮件提交给它。
信件传输代理得到了邮件后,首先将它保存在自身的缓冲队列中,然后,根据邮件的 目标地址,信件传输代理程序将找到应该对这个目标地址负责的邮件传输代理服务器, 并且通过网络将邮件传送给它。对方的服务器接收到邮件之后,将其缓冲存储在本地, 直到电子邮件的接收者察看自己的电子信箱。
显然,邮件传输是从服务器到服务器的,而且每个用户必须拥有服务器上存储信息的 空间(称为信箱)才能接受邮件。(发送邮件不受这个限制)
可以看到,一个邮件传输代理的主要工作是监视用户代理的请求,根据电子邮件的目 标地址找出对应的邮件服务器,将信件在服务器之间传输并且将接收到的邮件缓冲或者 提交给最终投递程序。
有许多的程序可以作为信件传输代理,但是sendmail是其中最重要的一个,事实证明 它可以支持数千甚至更多的用户,而且占用的系统资源相当少。不过,sendmail的配置 十分复杂,因此,也有人使用另外的一些工具,如qmail。当然,基 于Windows NT的Exchange Server和NetScape Message Server也是这种产品的例子。
无论什么产品,它们必须支持同样的规范,如信件传输的报文格式,监听的端口等等 。一般来说,系统管理员并不需要了解信件传输的命令标准,用户代理会生成正确的命 令。但是,了解其他一些信息是重要的。
信件传输代理运行在25端口接受请求,当接受用户的请求时,它不需要了解用户的真 实身份,或者说不需要身份验证。因此用户不需要提交用户口令就可以发出电子邮件, 这意味着任何用户都可以冒充成另外一个用户发出假的电子邮件,这是电子邮件设计的 一个基础,无法消除。(关于这一点目前有一点说明。许多基于UNIX的系统运行indent d,可以记录客户机器上的用户的登录名字。不过,这个功能实际上用处不大,毕竟大部 分人不会用UNIX/Linux作为他的个人机器)。
当sendmail程序得到一封待发送的邮件的时候,它需要根据目标地址确定将信件投递 给那一个服务器,这是通过DNS服务实现的。例如,有一封邮件的目标地址是someone@y ahoo.com,那么,sendmail首先确定这个地址是用户名(someone)+机器名(yahoo.co m)的格式,然后,通过查询DNS来确定需要把信件投递给某个服务器。
DNS数据中,与电子邮件相关的是MX记录,这可以在查询DNS时设置查询类型为mx来得 到:
[wanghy@mail ~]$ nslookup
Default Server: www.asnc.edu.cn
Address: 202.199.248.2
set q=mx
yahoo.com
Server: www.asnc.edu.cn
Address: 202.199.248.2
Non-authoritative answer:
yahoo.com preference = 0, mail exchanger = mx1.mail.yahoo.com
yahoo.com preference = 1, mail exchanger = mx2.mail.yahoo.com
mx1.mail.yahoo.com internet address = 128.11.68.225
mx2.mail.yahoo.com internet address = 128.11.68.217
显然,在DNS中说明yahoo.com有两个信件交换(MX)服务器,于是,sendmail试图将 邮件发送给两者之一。一般来说,排在前面的的MX服务器的优先级别比较高,因此服务 器将试图连接mx1.mail.yahoo.com的25端口,试图将信件报文转发给它。如果成功,你 的smtp服务器的任务就完成了,在这以后的任务,将由mx1.mail.yahoo.com来完成。在 一般的情况下,mx交换器会自动把信件内容转交给目标主机,不过,也存在这样的情况 ,目标主机(比如yahoo.com)可能并不存在,或者不执行smtp服务,而是由其mx交换器 来执行信件的管理,这时候,最终的信件将保存在mx机器上,直到用户来察看它。
可以简单地在DNS记录中用MX关键字设置信件交换,例如,在我们的设置中:
@ IN SOA openlab.asnc.edu.cn. wanghy.openlab.asnc.edu.cn. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS openlab.asnc.edu.cn.
IN MX 10 mail.asnc.edu.cn.
IN MX 20 mail2.asnc.edu.cn.
openlab IN A 202.199.248.6
openlab IN MX 10 mail2.asnc.edu.cn.
mail IN A 202.199.248.11
www IN A 202.199.248.2
mail2 IN A 202.199.248.177
这里面定义了三个MX记录,MX记录的规则是[机器名/域名] IN MX [优先级] [服务 器]。优先级是一个整数,数值越小优先级越高。第一个IN MX 10 mail.asnc.edu.cn.因 为没有机器名,使用来自named.conf的缺省后缀,就是asnc.edu.cn,这个定义也就是让 所有some@asnc.edu.cn的信件传送到mail.asnc.edu.cn。IN MX 20 mail2.asnc.edu.cn .的概念差不多,只是其优先数为20,也就是说只有当mail.asnc.edu.cn拒绝接受(比如 ,服务器忙或者当机)的时候,信件才会投递到mail2.asnc.edu.cn。openlab IN MX 1 0 mail2.asnc.edu.cn.定义凡是someone@openlab.asnc.edu.cn的信件要发送到mail2.a snc.edu.cn,以此类推。
MX记录可以使得整个子域内的用户使用同样的邮件主机和传输代理,另外,如果你的 主机不 姨痪了,那么信件可以暂时存储在你的信件 换主机上,直到你自己的机器恢 复为止。比如说,mail.yourdomain.com是一台smtp主机,而mx2.yourdomain.com是另外 一个smtp主机,你希望在mail.yourdomain.com正常的时候直接由其自身收发邮件,而万 一mail崩溃,mx2为它暂时存储一段时间的邮件直到mail恢复正常工作-这是常见的设置 ,那么,你需要把mail以比较高的优先数设置成自己的信件交换主机,而mx2作为一个优 先数较低的信件交换主机,也就是,在你的DNS配置文件中,应该这样配置:
mail IN MX 0 mail
IN MX 10 mx2
如果DNS查询无法找出对某个地址的MX记录(通常因为对方没有信件交换主机),那么 sendmail将是试图直接与对方的主机(来自邮件地址)对话并且发送邮件。例如,test@ openlab.asnc.edu.cn在DNS中没有对应的MX记录,因此sendmail在确定MX交换器失败后 ,将从DNS取得对方的IP地址并直接和对方对话试图发送邮件。
sendmail发送邮件时,如果经过设定的时间后仍然未能将信件投递到目的主机,它将 返回一个错误信息并且休息一段时间,然后重新试图投递,
|
|
|
|
|
|
|
| ∷相关技术评论 |
(评论内容只代表网友观点,与本站立场无关!) [查看发表评论...] | |
|
|
| |
站内广告 |
| |
|
站内搜索 |
| |
栏目导航 |
| |
|
|
本月热门 |
| |
|
|
本日热门 |
| |
|
|
|