Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

sendmail大全

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

器]。优先级是一个整数,数值越小优先级越高。第一个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中间人攻击

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号