热门关键字:  ubuntu  分区  Fedora  linux系统进程  函数

当前位置 :| 主页>Linux教程>软件应用>

sendmail大全

来源: 作者: 时间:2007-03-24 Tag: 点击:
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,以此类推。


相关文章:
QT之1(PC机上搭建环境及应用)
安装wine
解决安装CentOS5之后,vi不显示颜色的问题
linux控制台下的一个好东西-splitvt
Vmware-server目标主机积极拒绝,无法连接
vmware server 1.0.6 for linux相关命令
逐步设置vim C/C++语法高亮显示和自动缩进
在VM虚拟机器Linux下安裝VMware Tool的方法
玩了一下compiz-fusion
BMP-Beep Media Player
VIM 文件编码识别与乱码处理(一)
VIM 文件编码识别与乱码处理(二
VI技巧
让firefox 支持 amule (ed2k 协议)
为CentOS 5.1中的Firefox 1.5安装Flash插件……
vi 在编辑某文件时,在该文件内查找东西用何命令?
Freebsd + wine1.1.9 + 国元网上证券交易(通达信
emacs 代码补全功能
安装drupal-6.2和简体中文语言包
谈 Linux GNU 实用工具兼容性
Linux 文件压缩工具指南 一些免费和实用工具的评
Emacs 基础知识
介绍 Emacs 的编辑环境
在 Emacs 中编辑文本
生活在Emacs中
生活在emacs中2
生活在Emacs中3
Linux命令行性能检测工具
Linux下Expect配置
生活在Emacs中4