⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sendmail.cf生成器说明(1).htm

📁 台大计中UNIX讲义
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0048)http://www.linuxforum.net/books/jy/G.929104249.A -->
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY><PRE>发信人: albin (阿乐斌), 信区: LINUX
标  题: LINUX选修课讲义:sendmail.cf生成器说明(1)
发信站: 碧海青天 (Fri Jun 11 21:34:40 1999), 转信

版权声明:
    本文内容为大连理工大学LINUX选修课讲义,欢迎大家转载,但禁止使用本材料进行
    任何商业性或赢利性活动。转载时请保留本版权声明。

    作者:何斌武,hbwork@dlut.edu.cn,大连理工大学网络中心,April 1999.

    URL: ftp://ftp.dlut.edu.cn/pub/PEOPLE/albin/

原著: Eric Allman &lt;eric@Sendmail.ORG&gt;

------------------------------------------------------------------------------

    感谢我的导师钱飞教授(http://come.or.jp/~fei/)多年来对大工校园网建设的无私帮
助及对我的热心指导,在他的帮助下,大工校园网建设取得了一定的成绩,我也从他那学
到了很多,不仅是专业方面的知识,更多的是如何待人,如何作人。
--------------------------------------------------------------------------------

                定制自己的sendmail配置文件sendmail.cf

一.M4 的简要介绍
    Sendmail使用M4宏处理器来“编译”其配置文件。对于M4来说,最重要的是要知道
M4是基于流处理的,也就是说,M4并不理解行内容。因此在一些地方你可能看到类似于
类似于表示"delete through newline"的词dnl;在M4可通过使用dnl删除所有以dnl开始
的包括换行符的所有字符。在大多数情况下sendmail使用这一功能以避免在其输出中含
有过多的不必
要的空行。
   其他重要的指令(directive)是define(A,B),可用此指令定义宏A的值为B。当读到这
些宏的时候将会进行宏扩展,但可使用对两个值均用单引号以防止扩展。如下所示:
   define('SMART_HOST','smart.foo.com')

警告:M4的宏即使在注释行中也将进行扩展,如下行:

    # See FEATURE(foo) above
   在其输出结果中并不会以你所期望的形式出现,因为M4将会对FEATURE(foo)进行扩展,
   这一情况同样适用于如下情况:

    # And then define the $X macro to be the return address

   因为define是M4的一个保留关键字。如果你想使用M4关键字则应用单引号将其包含起来
   ,如'like this'.

二、定义操作系统类型变量:OSTYPE
    在定义文件中必须定义一个操作系统环境变量,否则配置文件的生成将会中断(puke). 
有若干个操作系统环境变量可用,具体可到ostype目录下查看当前可用变量的列表。这一
变量将会更改象别名文件及邮件排队目录等的位置。这些文件中的一部分是彼此相同的。
    在定义文件中OSTYPE必须在所有的MAILER定义之前。通常情况下,OSTYPE宏定义应
紧跟在版本(version)信息之后,而MAILER定义总是在定义文件的最后。
    一般情况下操作系统定义写起来。他们可以定义如下变量(如所有的均使用默认值则
相应的ostype文件可以为空)。但因为所列出的已支持操作系统不象源代码支持系统那样
广泛,因此在源代码中可能并未包括相应的ostype文件。
变量名                  说明(方括号中为默认值)
ALIAS_FILE              [/etc/aliases] 文件格式的alias文件位置。可以使用                             以逗号分开的文件名列表(但要确认使用引号将含有逗                             
号的值括起来,如:define('ALIAS_FILE','a,b'),将                              a,b作为alias文件的列表,如未引号则define()只能看                             到一个"a")
HELP_FILE               [/usr/lib/sendmail.hf] 此文件中含有对SMTP的HELP                              命令进行响应时要列出的信息。
QUEUE_DIR               [/var/spool/mqueue]邮件队列文件所在目录
STATUS_FILE             [/etc/sendmail.st]此文件中含有状态信息
LOCAL_MAILER_PATH       [/bin/mail]用于投递本地邮件的程序
LOCAL_MAILER_FLAGS      [rmn]local mailer要用到的标志,永远包含标志lsDFM。
LOCAL_MAILER_ARGS       [mail -d $u]在投递本地邮件时所传送的参数。
LOCAL_MAILER_MAX        [undefined]如定义了此参数,则为此邮件服务器所能接收                        的本地邮件大小。
LOCAL_MAILER_CHARSET    [undefined]如果定义了此参数,则被转化为MIME格式的从                        其他地址到local mailer的含有8位字符的信息将被标为此                        字符集。
LOCAL_SHELl_PATH        [/bin/sh]用于投递经过管道处理的邮件的shell.
LOCAL_SHELL_FLAGS       [eu]prog mailer用到的标志。在此标志中永远包含标志                        lsDFM.
LOCAL_SHELL_DIR         [$z:/]shell运行时所要查找的目录路径。
USENET_MAILER_PATH      [/usr/lib/news/inews]用于提交news的程序名称。
USENET_MAILER_FLAGS     [rlsDFMmn]usenet mailer的投递标志。
USENET_MAILER_ARGS      [-m -h -n]usenet mailer的命令行参数。
USENET_MAILER_MAX       [100000]usenet mailer所能接收的最大信息大小。
SMTP_MAILER_FLAGS       [undefined]SMTP mailer附加标志。对所有基于SMTP的                        mailer其默认标志为mDFMUX;基于esmtp的邮差(mailer)
                        加上'a'标志;而基于"smtp8"的邮差则加上'8'。
SMTP_MAILER_MAX         [undefined]使用smtp,smtp8或esmtp邮差所能传输的信息最                        大容量。
SMTP_MAILER_ARGS        [IPC $h]传递给smtp邮差的参数。仅当您需要改变默认端口                    时才需要更改此参数。
ESMTP_MAILER_ARGS       [IPC $h]传递给esmtp邮差的参数。
SMTP8_MAILER_ARGS       [IPC $h]传递给smtp8邮差的参数。
RELAY_MAILER_ARGS       [IPC $h]传递给relay邮差的参数。
SMTP_MAILER_CHARSET     undefined]如果定义了此参数,则被转化为MIME格式的从                          其他地址到任一个smtp mailer的含有8位字符的信息将被标                         为此字符集。
UUCP_MAILER_PATH        [/usr/bin/uux]用于发送uucp邮件的程序。
UUCP_MAILER_ARGS        [undefined]
UUCP_MAILER_ARGS        [uux - -r -z -a$g -gC $h!rmail ($u) ]
UUCP_MAILER_MAX         [100000]
UUCP_MAILER_CHARSET     [undefined]
FAX_MAILER_PATH         [/usr/local/lib/fax/mailfax]用于提交FAX信息的程序。
FAX_MAILER_ARGS         [mailfax $u $h $f]传递给FAX邮差的参数。
FAX_MAILER_MAX          [100000]FAX所能接收的最大信息容量。
POP_MAILER_PATH         [/usr/lib/mh/spop]pop邮差的路径名。
POP_MAILER_FLAGS        [Penu]pop邮差附加标志。同时总是加上标志lsDFM。
POP_MAILER_ARGS         [pop $u]传给pop邮差的参数。
PROCMAIL_MAILER_PATH    [/usr/local/bin/procmail]procmail程序的路径名。此外
                        FEATURE(local procmail)也用到此参数。
PROCMAIL_MAILER_FlAGS   [SPhnu9]加给Procmail邮差的标志。同时总是加上"DFM"标
                        志。但FEATURE(local procmail)不用此参数而用到参数       
                        LOCAL_MAILER_ARGS.
PROCMAIL_MAILER_MAX     [undefined]procmail邮差所接收的最大信息容量。
MAIL11_MAILER_PATH      [/usr/etc/mail11]
MAIL11_MAILER_FLAGS     [nsFx]
MAIL11_MAILER_ARGS      [mail11 $g $x $h $u]
PH_MAILER_PATH          [/usr/local/etc/phquery]phquery程序的位置。
PH_MAILER_FLAGS         [ehmu]
PH_MAILER_ARGS          [phquery -- $u]
CYRUS_MAILER_FLAGS      [A5@]
CYRUS_MAILER_PATH       [/usr/cyrus/bin/deliver] The progam used to deliver
                        cyrus mail.
CYRUS_MAILER_ARGS       [deliver -e -m $h -- $u] The arguments passed to
                        deliver cyrus mail.
CYRUS_MAILER_MAX        [undefined] If set, the maximum size message that
                        will be accepted by the cyrus mailer.
CYRUS_MAILER_USER       [cyrus:mail] The user and group to become when
                        running the cyrus mailer.
CYRUS_BB_MAILER_FLAGS   [undefined] The flags used by the cyrusbb mailer.
                        The flags lsDFMnP are always included.
CYRUS_BB_MAILER_ARGS    [deliver -e -m $u] The arguments passed to deliver
                        cyrusbb mail.

三、定义域:DOMAIN
   可以将所有于网域(DOMAIN)有关的定义写入一个文件,在定义文件中使用宏
DOMAIN来引用此文件。比如,在示例文件Berkeley域文件中包含了若干内部目标主机的定义。
UUCP_RELAY              这个主机接收UUCP格式的邮件。如果未定义,则所有的UUCP
                        必须直接相连。
BITNET_RELAY            这个主机接收 BITNET地址格式的邮件。如果未定义此变量
                        则.BITNET伪域格式的邮件不能工作。
DECNET_RELAY            接收DECNET地址格式邮件的主机。如果未定义,则.DECNET
                        伪域格式及node::user格式的邮件不能工作。
FAX_RELAY               接收到.FAX伪域邮件的主机。在定义文件中的fax邮差将会                        覆盖此值。
LOCAL_RELAY             不赞成使用此项。这个主机将处理所有的不含有@domain的
                        邮件。如未设定此项,则假设这样的邮件由本服务器处理。
                        这允许您建立一个主控服务器,在此主机中存有整个公司
                        或部门的别名数据库。这一情况只适用于小型场合并且需要
                        有一些用户代理。
LUSER_RELAY             这一主机将处理所有的lusers, 即那些非本地帐号或别名但
                        其形式上却明显表明为本地名称的邮件。

   所有这些可用"mailer:hostname"(mailer为内部邮差名,如uucp-new, hostname为
此邮差相应的主机名)或只用一个"hostname",后一种情况使用一个默认邮差类型(通常
为"relay",SMTP之变型)。
   警告:如果你对自已的网域设定了一个通配符的MX记录,则在定义这些变量时应使
用以点结束的主机名,以免你发出的邮件又返回到自已的主机上。
   必要时在域(domain)文件中也可以定义一个网域(使用"DD&lt;domain&gt;")并设定相应与此
域有关的特性。如果希望使用同一个邮件名称对你的主机进行伪装,可在此处使用
MASQUERADE_AS.
   设定域文件不是必须的--尤其是你只使用一个单机并与其他场合相分离时就无须使用
此设置。使用此机制只是为了将所有于网域有关的信息放同一个文件中。


四、定义邮差:mailer
   sendmail 8.8.6版所支持的邮差类型较以前的版本要少,因为当前的网络类型较以
前要简单。总的来说,在你的.mc文件的最后写入mailer定义,MAILER(stmp)永远位于
MAILER(uucp)之前--因为一些特性及定义可能修改其他邮差(mailer)的定义,如SMTP
邮差将会修改UUCP邮差的定义。
邮差类型                说明
local                   local及prog邮差。大多数情况下你需要此邮差除非要将你
                        所有的邮件中继到另一个主机。此邮差将自动包含。
smtp                    简单邮件传输协议(Simple Mail Transport Protocol)邮
                        差。SMTP不能将主机隐藏在网关或其他相关细节之后;它
                        假设所有的主机均运行名字服务器。实际上此邮差定义了
                        四个邮差:smtp为到其他服务器的常规(旧格式)SMTP邮差,
                        esmtp为扩展SMTP,smtp8到其他服务器的SMTP邮件不进行
                        8位数据到MIME格式的转换(当然此时你已知道另一端的
                        服务器可进行完全的8位数据处理),relay则进行到SMART 
                        HOST/LUSER RELAY/MAIL HUB的邮件传输。
uucp                    Unix-to-Unix Copy Program mailer.实际上此定义包括
                        了两个邮差:"uucp-old"(也称为uucp)和"uucp-new"(也称
                        为suucp).

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -