[建议]由三少爷讲sendmail,请斑竹们支持!

发表于:2007-06-09来源:作者:点击数: 标签:
三少爷,请你也倒倒脑袋里的好东西,:)。 ohwwj 回复于:2002-06-06 13:19:35 好是好,操作少讲,多讲原理更好,最好连qmail一起介绍了,^_^ 嘿嘿~~~~~~ mmmmn 回复于:2002-06-06 13:20:02 为什么还有不同意的选项??? 段誉 回复于:2002-06-06 13:24:59 给

三少爷,请你也倒倒脑袋里的好东西,:)。
  

 ohwwj 回复于:2002-06-06 13:19:35
好是好,操作少讲,多讲原理更好,最好连qmail一起介绍了,^_^
嘿嘿~~~~~~

 mmmmn 回复于:2002-06-06 13:20:02
为什么还有不同意的选项???

 段誉 回复于:2002-06-06 13:24:59
给三少爷自己留的,:):)
 

 北极星 回复于:2002-06-06 13:25:26
是的,介绍一下吧qmail

 段誉 回复于:2002-06-06 13:27:20
好像boycw对qmail比较熟悉一些。
 

 白虹 回复于:2002-06-06 13:30:27
up up!

 ultra-guest 回复于:2002-06-06 13:49:46
多么美好的事情啊。。
免费讲座啊!!!

大家快来报名了!!!

 bear 回复于:2002-06-06 14:19:39
很公平,“三少爷”也有投票的权利,但是跟没有差不多。
等待中。

 三少爷 回复于:2002-06-06 14:25:17
不是我不愿意为论坛出力呀,实在是sendmail.cf的配置太复杂,没法说呀,如果笼统的讲又没意思。。。

 段誉 回复于:2002-06-06 14:44:48
这样好了,我们出题目,你来回答,怎么样?这样,即可以免去了一些繁琐的内容(你想偷懒的内容,xixi),又可以满足大家的要求,岂不是两全其美。

题目一、新系统安装完毕之后如何配置,使sendmail能够正常的收发邮件,需要配置哪些文件?如何配置?
题目二、关于alises的用法,详细说明之。
题目三、如何拒绝垃圾邮件,请说明其中的技巧。
题目四、请大家踊跃补充!!!

附录:我可以整理这个贴子的全部回贴,做成个FAQ,也算是给大家尽我绵薄之力,:)。

 

 ultra-guest 回复于:2002-06-06 14:45:02
讲了,你可以分成100课时啊。

慢慢来吗。别着急。总比一点不讲要好吧?

 sql2000 回复于:2002-06-06 15:02:48
我好羡慕你呀,三少爷!这么多人同意你讲。我就是没那么高的水平,要不然一定和你争争。讲课不仅大家受益,而且自己也会有很不错的提高(我的体会)。
三少爷,你就别推辞了。什么难呀,复杂呀,都不是理由。考验你的时候到了!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
任何事情,如果你想做,就会找一个办法;如果你不想做,就会找一个借口。

 bear 回复于:2002-06-06 15:54:28
先哲说:“深入的了解,从备课开始”。呵呵:)

 三少爷 回复于:2002-06-06 16:03:02
算是sendmail第一讲吧。。。讲课不是FAQ,好多都是枯燥无味的内容,也没新意,实在是不好玩。。。。

solaris的sendmail属于自带的,一般如果你安装的solaris的版本较新,则sendmail的版本也会较新,本节的主要内容是讲述怎么使用solaris自带的sendmail快速建立一个邮件服务器-----结果也没讲完,哈哈,对需要升级、编译以及一些高级用法,留在猴年马月讲吧。。。
第一步,首先先了解sendmail
sendmail的启动文档一般是/etc/init.d/sendmail,我们通过他可以清楚的了解sendmail 使用的几个文档。
# cd /etc/init.d/
# more sendmail
通过这个文档我可以清楚的看到几个相关文件:
/usr/lib/sendmail       实际运行的执行文件
/etc/mail/sendmail.cf  主配置文件
/var/spool/mqueue 邮件队列
/etc/default/sendmail  初始变量设置文件等等。
运行机制简单的说就是由/etc/init.d/sendmail启动/usr/lib/sendmail,/usr/lib/sendmail加载/etc/mail/sendmail.cf里面关于sendmail的设置。

#!/sbin/sh
#
# Copyright (c) 1992, 1995, 1997 - 2000 by Sun Microsystems, Inc.
# All rights reserved.
#
#ident  "@(#)sendmail   1.16    00/09/06 SMI"

ERRMSG1='WARNING: /var/mail is NFS-mounted without setting actimeo=0,'
ERRMSG2='this can cause mailbox locking and access problems.'

case "$1" in
'start')
        if [ -f /usr/lib/sendmail -a -f /etc/mail/sendmail.cf ]; then
                if [ ! -d /var/spool/mqueue ]; then
                        /usr/bin/mkdir -m 0750 /var/spool/mqueue
                        /usr/bin/chown root:bin /var/spool/mqueue
                fi
                MODE="-bd"
                if [ -f /etc/default/sendmail ]; then
                        . /etc/default/sendmail
                fi

                if [ -z "$QUEUEINTERVAL" ]; then
                        QUEUEINTERVAL="15m"
                fi
                case $QUEUEINTERVAL in
                        *s | *m | *h | *d | *w) ;;
                        *)  QUEUEINTERVAL="15m" ;;
                esac
                if [ $QUEUEINTERVAL -le 0 ]; then
                        QUEUEINTERVAL="15m"
                fi
                /usr/lib/sendmail $MODE -q$QUEUEINTERVAL $OPTIONS &

                for i in $ETRN_HOSTS; do
                        SERVER=`echo $i | /usr/bin/sed -e 's/:.*$//'`
                        CLIENTS=`echo $i | /usr/bin/sed -n -e 's/,/ /g' \
                            -e '/:/s/^.*://p'`
                        /usr/sbin/etrn $SERVER $CLIENTS >/dev/null 2>&1 &
                done
        fi

        if /usr/bin/nawk 'BEGIN{s = 1}
            $2 == "/var/mail" && $3 == "nfs" && $4 !~ /actimeo=0/ &&
            $4 !~ /noac/{s = 0} END{exit s}' /etc/mnttab; then

                /usr/bin/logger -p mail.crit "$ERRMSG1"
                /usr/bin/logger -p mail.crit "$ERRMSG2"
        fi
        ;;

'stop')
        /usr/bin/pkill -x -u 0 sendmail
        ;;

*)
        echo "Usage: $0 { start | stop }"
        exit 1
        ;;
esac
exit 0

第二步 sendmail.cf的配置---这里只粗略介绍。
/etc/mail/sendmail.cf这个文件一般不要修改,其配置规则简单介绍如下:
sendmail.cf文件通常由若干个节组成,以下是常见的节名:

 Local Information  定义有关个人主机的信息 
 General Macros  定义有关本地网络的宏 
 Classes  定义用于特殊邮件传输程序的主机名群或域名群 
 Version Number  标识sendmail.cf文件的版本号 
 Special Macros  定义由sendmail所用的一些特殊的宏 
 Option  定义sendmail选项 
 Message Precedence  定义sendmail所用的各种消息的优先级值 
 Trusted Users  定义在发送邮件时可忽略发送者地址的用户 
 Format of Headers  定义sendmail插入的邮件首部格式 
 Rewriting Rules  定义用于重写邮件地址的规则 
 Mailers  定义sendmail用来调用邮件传输程序的指令 
 Ruleset Zero  定义一组称为Ruleset Zero的特殊重写规则 
 Machine-dependent part  of Ruleset Zero  定义与配置相关的Ruleset Zero部分 

  sendmail.cf命令从每一行的第一格开始,#开头的表示注释,第一个字符表示指令,以下是每个指令的意义:

  设定组态文件sendmail.cf的版本 

  指定一个MTA 

  定义宏x的值为value 

  重写lhs为rhs 

  开始一个规则集合 

  定义类别宏 

  文件定义类别 

  设定sendmail.cf选项 

  定义标头 

  优先权设定 

  信任的用户 

  具有键值的数据库 

  重设环境变量 

  扩充负载的支持 


  命令D用来定义宏,然后该宏就可以被sendmail.cf文件中的其他配置命令和sendmail程序自身调用。宏的名字可以是任何单个的ASCII字符,以下是sendmail中所有的内部宏:

a
  RFCs822格式的原始日期   
b
  RFCs822格式的当前日期   
c
  Hop计数   
d
  UNIX格式的日期   
e
  SMTP数据项信息   
f
  “来自”地址的发送者   
g
  相对于接收者的发送者的地址   
h
  接收主机   
i
  队列标识   
j
  节点的正式域名 
l
  UNIX的行格式 
n
  用于错误信息中的名字 
o
  地址中的操作符集合 
p
  sendmail的PID   
q
  默认的发送者地址格式 
r
  所用的协议   
s
  发送者主机名   
t
  当前时间的数值表示   
u
  接收方用户   
v
  sendmail的版本号   
w
  该节点的主机名   
x
  发送者全名   
z
  接收者宿主目录   

  命令O给sendmail的选项赋值。赋给选项的值可以是字符,整数,布耳值或时间间隔值。每个选项都在sendmail中进行了定义。以下是sendmail中所有选项的含义和用法:

选项名:用法:解释 
A
 Afile
  指定别名文件的名字 
a
 aN
  为@:@等待N分钟,然后重建别名文件 
B
 Bc
  定义空代替字符 
c
 c
  将邮件队列排队以等待邮件传输程序 
D
 D
  重建别名数据库 
db
 db
  以后台方式传输 
di
 di
  交互式传输 
dq
 dq
  在下一个队列运行时传输 
ee
 ee
  邮递错误信息,总是返回退出状态0 
em
 em
  邮回错误信息 
ep
 ep
  打印错误信息 
eq
 eq
  仅返回退出状态,无错误信息 
ew
 ew
  写回退出状态 
f
 f
  保持UNIX风格的From行 
g
 gn
  设置邮件传输程序默认的GroupID为n 
H
 Hfile
  定义SMTP帮助文件的名字 
I
 I
  使用BIND名字服务器来解析所用的名字 
i
 i
  忽略入局信息中的点 
L
 Ln
  设置日志级别为n 
M
 Mxval
  设置宏x的值为val 
m
 m
  同时发往自身 
N
 Nnet
  定义宿主网络名 
o
 o
  接受旧格式首部 
Q
 Q
  定义队列目录名 
q
 qn
  定义用于决定何时排队任务的因子n 
r
 rt
  设置用于超时的内部时间间隔t 
S
 Sfile
  定义统计日志文件名 
s
 s
  在试图传输前总是创建队列文件 
T
 Tt
  设置排队超时为t 
u
 un
  设置邮件传输程序默认的UserID为n 
v
 v
  以冗余方式运行 
W
 Wpass
  定义用于远程调试的口令 
X
 X1
  如果平均负载超过1则拒绝SMTP连接 
x
 x1
  如果平均负载超过1则排队邮件 
Y
 Y
  在不同的进程中传输每个排队邮件 
y
 yn
  每个接收者作业时间优先级差为n 
Z
 Zn
  每次运行时减少n个作业优先级 
z
 zn
  同前缀一起决定邮件优先级 

  地址重写是sendmail的核心部分,它的作用是分析来自邮件程序的电子邮件的地址,并将它们重写成邮件传输程序所需要的格式。
规则集是一组可以由数字引用的相关重写规则。Sn命令标志一个规则集的开始,其中n是这个规则集的编号,其范围从0~29。其中0~4号规则集是被sendmail直接调用的,它们的说明如下:
 
0
  在规则集3之后调用,它将生成一个三元组:<传输程序,接收方主机,接 收用户名> 
1
  用于消息中所有发送者地址 
2
  用于消息中所有接收者地址 
3
  最大和最复杂的规则集,也是用于地址的第一个规则集,将地址转化成正 规形式,即:local-part@host.domain 
4
  用于消息中所有地址并将内部地址转换成外部地址形式 

地址重写规则由命令R定义,其格式如下:
   Rlhs   rhs   comment 

  lhs,rsh和comment这三个字段之间用tab隔开。重写规则将输入地址与lhs进行匹配,如果成功,就按照rhs进行重写。重写后的结果再次与lhs匹配,如果成功,就再次按照rhs进行重写,直到结果不再与rhs匹配。

第三步 一般配置---先针对段愚的提问:
sendmail别名
  别名是sendmail最重要的功能之一。它在aliases中定义。aliases文件的位置由sendmail.cf中的选项A指定,一般位于/etc/mail目录中。aliases是一个文本文件,其中每一行的格式如下:
   alias:recipeint[,recipeint,...] 
  其中alias为邮件中地址的名字,recipient为邮件目的地址的名字。邮件目的地址名可以有很多,每个之间用逗号符隔开。下面介绍别名的几种主要用法:
  保护登陆帐号
    许多网络黑客进攻网络计算机的第一步是获取目标机上合法用户的帐号,而电子邮件帐号一般和登陆帐号相同,这就使黑客有机可乘。但是可以用别名来保护合法用户的帐号。如一位合法用户的登陆帐号为mmmmmn,而他的电子邮件帐号可以是tiaozao。只要在别名文件中加入“tiaozao:mmmmmn”就可以达到这一目的。
  电子邮件转发
    如果想要将发给mmmmmn用户的电子邮件自动转发给root用户,只需在别名文件中加入“mmmmmn:root”。又如用户mmmmmn离开这个单位。从安全角度上讲应该将他的用户帐号删除。但是由于他不可能马上将新的电子邮件帐号通知所有人,所以希望将他原来的电子邮件帐号保留一段时间。这只要在别名文件中加入“mmmmmn:新的电子邮件地址”。
   邮件列表的实现
    别名最重要的功能就是实现邮件列表。通过它可以实现填写一个接收者地址而将信发给许多人。例如在主机上设置一个邮件列表boycw,包括mmmmmn,bear,joy 和peng。只需在别名文件中加入:
    boycw:mmmmmn,bear,joe,peng
    owner_boycw:mmmmmn
  当接收者是boycw时,信会自动发给mmmmmn,bear,joy和peng。当发送邮件给boycw时如果出错,将把错误信息发给mmmmmn。

access 的用法,对付垃圾邮件,以及进行权限控制
关于access的用法在http://www.fanqiang.com/a6/b3/20010724/1000011015.html已经讲的很清楚了,我补充点如下:--好象8.10版以后的才能使用次功能。
主要是增加了LHS 部分的变量内容 
新增的变量为:
       Connect:        connection information (${client_addr}, ${client_name}) 
       From:           sender 
       To:             recipient 

很容易理解,举例如下: 

       From:spammer@some.dom   REJECT 
       To:friend.domain        RELAY 
       Connect:friend.domain   OK 
       Connect:from.domain     RELAY 
       From:good@another.dom   OK 
       From:another.dom        REJECT 

 da8vid 回复于:2002-06-06 16:13:47
三少爷,请继续呀!!!!实在是太好了!

 bear 回复于:2002-06-06 16:14:24
手脚好快呀!!
谢谢!!

 daemonix 回复于:2002-06-06 16:41:45
呵呵,真是快枪手啊,佩服佩服~~~

 我是水 回复于:2002-06-06 16:46:06
再讲讲邮件认证吧!

 mmmmn 回复于:2002-06-06 17:13:09
不好,讲参数的太多了,我不喜欢。那些都是可以查的!
具体应该从理论入手!
还有,应该讲一些经验的东西,还有例子!

 段誉 回复于:2002-06-06 17:25:51
最好是在常用的参数后面加上例子,这样会理解的更好一些。
 

 pech 回复于:2002-06-06 18:31:39
厉害,随手道来。

 josephxd 回复于:2002-06-07 08:18:26
讲实际工作中要用到的东西,

 it 回复于:2002-06-07 15:05:45
好,希望大家向三少爷一样..多给大家一个学习的环境

 sunboy 回复于:2002-06-08 16:34:36
嗯,rules不用讲了,太繁了,只有自己看。详细讲讲test模式吧

 dtedu 回复于:2002-06-09 07:38:44
我提出一个建议,根据我以前的培训经验,先少讲理论,讲一个原理,通俗一些,然后举实例!根据实例讲更说明问题,然后进行详细的分析过程。最后对常见的问题给以总结作以补充也可以触类旁通,有关与SENDMAIL相关的东东全部拿出,象有关WEBMAIL的程序与SENDMAIL的结合,QMAIL等。来个全面的接触与实践!会不会更好?。让各位练习,再提出遇到的不同问题。我想这样能不能有更大的提高呵?我绝对的支持“三少爷”

 dtedu 回复于:2002-06-09 07:46:27
楼上的SUNBOY,你发贴数为101篇,可倾斜角的金钱是3326呵!实在是高呵!

 sunboy 回复于:2002-06-09 09:50:33
呵呵,我上班天天挂在上面的,估计是这缘故吧,邮件重写规则只有自己看了,让三少写的话太累了,谈点实际应用中常见的问题吧

 windowsnt 回复于:2002-06-09 10:01:53
sendmail没有前途

 peng 回复于:2002-06-10 10:53:17
能讲讲solaris+sasl!

 段誉 回复于:2002-06-10 13:28:08
[这个贴子最后由段誉在 2002/06/11 01:53pm 编辑]

三少爷些的文章已经整理完毕,放在这里:[url=http://www.wway.net/ay/docs/sendmail_toc.html][color=#008000]Sendmail管理[/color][/url],请大家参考,并指出问题。
 

 fish2002 回复于:2002-06-11 10:10:10
最好能举个实例,这样更容易理解

 friendgxm 回复于:2002-06-29 11:14:33
sendmail,qmail,postfix那一个比较好,sendmail是不是安全性能不太好,另外sendmail认证如何作,请三少爷把自己配的sendmail文件贴出来,和大家共享,各位以为如何呀

 friendgxm 回复于:2002-06-29 11:18:48
三少爷是哪里人呀,咱们没准还是老乡呢

 peng 回复于:2002-06-30 13:02:32
  能不能讲一讲怎样安装sendmail..不是系统自带的怎样安装啊,要是用sasl库做认证怎么配啊!solaris自带的sendmail版本太低了。:(

 fq22fq 回复于:2002-06-30 13:41:35
段誉也是个快枪手嘛,动作也很快!!!

 YT 回复于:2002-12-07 22:51:33
[这个贴子最后由YT在 2002/12/07 10:52pm 编辑]

倒,偶来晚了。。。。
下面还有吗?

期待!!  

 段誉 回复于:2002-12-08 16:25:46
没了,只出了一集

 YT 回复于:2002-12-08 23:39:20
我靠!
你个盗版啊~~!!  

 段誉 回复于:2002-12-08 23:45:21
耶,什么时候用上图片了?怎么回事儿?
我不记得了。

 YT 回复于:2002-12-09 00:13:18
狂faint....    

 jerry206 回复于:2002-12-09 01:10:51
up

 YT 回复于:2002-12-09 13:53:17
up 2

 段誉 回复于:2002-12-09 15:28:18
灌水新招数?

 ultra-guest 回复于:2002-12-09 16:08:26
不错

 daemonix 回复于:2002-12-09 16:12:53
靠,半年前的帖子,又翻出来了。
推荐去国家安全局工作,抄家能手

 段誉 回复于:2002-12-09 16:25:46
//nod

 hellcasper 回复于:2002-12-09 16:55:58
惭愧。。。半年前的帖子我都没有看过。。。羞愧ing

 zufuqing5303 回复于:2002-12-09 17:04:33
新帖子还看不完呢,那还有时间看旧帖子呀。

原文转自:http://www.ltesting.net