器]。优先级是一个整数,数值越小优先级越高。第一个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发送邮件时,如果经过设定的时间后仍然未能将信件投递到目的主机,它将
返回一个错误信息并且休息一段时间,然后重新试图投递,如果连续多次失败,sendma
il最终将放弃投递并将错误信息投递给postmaster用户。在许多机器上,postmaster用
户是root用户的一个别名(参考下面关于别名的内容),你应该将它设置为邮件的实际
管理员的用户名。
上面说的基本就是sendmail的工作方式,然而仍然有一个很让人迷惑的东西,就是所
谓‘信封地址’。简单地说,当sendmail向目标地址发信的时候,它并不是直接用你的
信件内容发送,相反,它依赖于你给它的命令。例如,你可能会用mail程序向某个地址
这样发信:
$mail someone@somedomain.com
To:other@otherdomain.com
Subject:test mail
test
.
那么,当sendmail发信的时候,它是向someone@somedomain.com发信而不是other@ot
herdomain.com。相应地,如果你想向两个人发信,例如你在outlook里面写上:‘投递
给user1@a.com,抄送user2@b.com’,那么sendmail应该怎么做?直接同时向两个地址
发信吗?否,它试图构造两个包装(称为信封),每个包装上只列出一个投递地址,各
投递一次。虽然邮件正文的头部仍然包含两个地址,但是sendmail不会看它。
7.1.2 sendmail的配置
sendmail是一个极为复杂的程序,其行为主要地依赖于在UNIX界‘臭名昭著’的/etc
/sendmail.cf配置文件。实际上,我怀疑会有谁真的从头去写一个sendmail.cf文件。一
般来说,我们总是用m4宏处理来书写sendmail.cf。实际上,m4程序几乎和sendmail.cf
一样复杂,不过,通常我们只需要关心一些比较重要的部分。
要使用宏处理程序,必须确定你已经安装了m4和sendmail-cf这样两个软件包,我们这
里讨论的是sendmail版本8.9.3,缺省下,sendmail-cf安装在/usr/lib/sendmail-cf目
录下。
我们首先从构造一个简单的可以使用的sendmail.cf文件开始,首先建立这样一个文件
,称为sendmail.mc,并将其拷贝到/usr/lib/sendmail-cf/cf目录下:
include(`../m4/cf.m4')
define(`confDEF_USER_ID',``8:12'')
OSTYPE(`linux')
FEATURE(redirect)
FEATURE(always_add_domain)
FEATURE(use_cw_file)
FEATURE(local_procmail)
MAILER(procmail)
MAILER(smtp)
注意里面的正反引号,而且不能随便加入空格。
然后,用m4程序可以生成一个sendmail.cf:
m4 sendmail.mc > /etc/sendmail.cf
接下来,启动sendmail程序:
killall sendmail
sendmail –bd –q15m
你会发现现在你可以在这台主机上发送电子邮件了。
一般情况下,我们可以象这样用m4程序生成sendmail.cf,通过更改模板来改变sendm
ail.cf的内容。一个mc模板文件通常可以包含几个段落:
divert
通常总是设置为divert(-1)让m4在输出中去掉一些垃圾。
OSTYPE
定义使用的操作系统类型,当然在我们的情况下就是linux,但是一定要注意m4程序中
引号的用法,一个反引号和一个正引号才代表把对应的东西括起来。
define
定义一些全局设置,对于Linux系统,设置了OSTYPE之后,可以定义下面的一些全局
如果您对本文有任何疑问或者建议,请到讨论区发表您的意见:
>>
论坛入口 <<
上一篇:
SSH使用指南
下一篇:
SSL中间人攻击
【文章评论】
【收藏本文】
【推荐好友】
【打印本文】
【我要投稿】 【论坛讨论】