Chinaunix首页 | 论坛 | 博客
  • 博客访问: 92772
  • 博文数量: 20
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 250
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-21 15:56
文章分类

全部博文(20)

文章存档

2013年(1)

2010年(1)

2007年(14)

2006年(4)

我的朋友
最近访客

分类:

2006-10-26 10:47:04

 

Sendmail.mc文件的最前面几行完成一些辅助工作,
divert(-1)dnl
在生成配置文件时删除额外的输出。dnl #
dnl # This is the sendmail macro config file for m4. If you make changes to
dnl # /etc/mail/sendmail.mc, you will need to regenerate the
dnl # /etc/mail/sendmail.cf file by confirming that the sendmail-cf package is
dnl # installed and then performing a
dnl #
dnl # make -C /etc/mail
dnl #
include(`/usr/share/sendmail-cf/m4/cf.m4')dnl
sendmail所需的规则包含进来。VERSIONID(`setup for Red Hat Linux')dnl
指出配置文件是针对Red Hat Linux,(可以任意值)
OSTYPE(`linux')dnl
必须设置为linux以获得sendmail所需文件的正确位置。
dnl #
dnl # Uncomment and edit the following line if your outgoing mail needs to
dnl # be sent out through an external mail server:
dnl #
dnl define(`SMART_HOST',`smtp.your.provider')
指定邮件服务器中继。dnl #
define(`confDEF_USER_ID',``8:12'')dnl
指定以mail用户(UID:8)和mail组(GID:12)的身份运行守护进程。Define(`confTRUSTED_USER``SMMSP`) dnl
smmsp添加到sendmail的可信用户列表中,其他的可信用户是rootuucpdaemonsmmsp用户被赋予部分sendmail假脱机目录和邮件数据库文件的所有权。
dnl define(`confAUTO_REBUILD')dnl
如果有必要,sendmail将自动重建别名数据库。define(`confTO_CONNECT', `1m')dnl
sendmail等待初始连接完成的时间设置为1分钟(1m
define(`confTRY_NULL_MX_LIST',true)dnl
设为true,如果接收服务器是一台主机最佳的MX,试着直接连接那台主机。define(`confDONT_PROBE_INTERFACES',true)dnl
设为truesendmai守护进程将不会把本地网络接口插入到已知等效地址列表中。define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl
设置分发接收邮件的程序(默认是procmail)。
define(`ALIAS_FILE', `/etc/aliases')dnl
设置分发接收邮件的邮件别名数据库。
dnl define(`STATUS_FILE', `/etc/mail/statistics')dnl
设置分发接收邮件的邮件统计文件的位置。define(`UUCP_MAILER_MAX', `2000000')dnl
设置UUCP邮件程序接收的最大信息(以字节计)define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl
设置用户数据库(在该数据库中可替换特定用户的默认邮件服务器)的位置。
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
强制sendmail使用某种邮件协议,例如,authwarnings表明使用X-Authentication-Warning 标题,并记录在日志文件中;novrfynoexpn设置防止请求相应的服务,restrictqrun选项禁止sendmail使用-q选项。
define(`confAUTH_OPTIONS', `A')dnl
设置由于SMTP验证。dnl #
dnl # The following allows relaying if the user authenticates, and disallows
dnl # plaintext authentication (PLAIN/LOGIN) on non-TLS links
dnl #
dnl define(`confAUTH_OPTIONS', `A p')dnl
使用明文登入
dnl #
dnl # PLAIN is the preferred plaintext authentication method and used by
dnl # Mozilla Mail and Evolution, though Outlook Express and other MUAs do
dnl # use LOGIN. Other mechanisms should be used if the connection is not
dnl # guaranteed secure.
dnl #
dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
允许sendmail使用明文口令以外的其他验证机制。dnl #
dnl # Rudimentary information on creating certificates for sendmail TLS:
dnl # make -C /usr/share/ssl/certs usage
dnl #
dnl define(`confCACERT_PATH',`/usr/share/ssl/certs')
dnl define(`confCACERT',`/usr/share/ssl/certs/ca-bundle.crt')
dnl define(`confSERVER_CERT',`/usr/share/ssl/certs/sendmail.pem')
dnl define(`confSERVER_KEY',`/usr/share/ssl/certs/sendmail.pem')
以上四行启用证书。dnl #
dnl # This allows sendmail to use a keyfile that is shared with OpenLDAP's
dnl # slapd, which requires the file to be readble by group ldap
dnl #
dnl define(`confDONT_BLAME_SENDMAIL',`groupreadablekeyfile')dnl
如果密钥文件需要被除sendmail外的其他应用程序读取,那么显示以上行。dnl #
dnl define(`confTO_QUEUEWARN', `4h')dnl
设置邮件发送被延期多久之后向发送人发送通知消息,默认为4小时。dnl define(`confTO_QUEUERETURN', `5d')dnl
设置多长时间返回一个无法发送消息。
dnl define(`confQUEUE_LA', `12')dnl
dnl define(`confREFUSE_LA', `18')dnl
以上二行分别设置排队或拒绝的接收邮件的系统负载平均水平。define(`confTO_IDENT', `0')dnl
设置等待接收IDENT查询响应的超时值(默认为0,永不超时)

FEATURE
宏用于设置一些特殊的sendmail特性。dnl FEATURE(delay_checks)dnl
FEATURE(`no_default_msa',`dnl')dnl
FEATURE(`smrsh',`/usr/sbin/smrsh')dnl
Smrsh
定义/usr/sbin/smrsh 作为sendmail用来接受命令的简单shell
FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl
设置mailertable数据库位置FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl
设置`virtusertable数据库位置FEATURE(redirect)dnl
允许拒绝接收已移走的用户的邮件并提供其新地址。
FEATURE(always_add_domain)dnl
always_add_domain
使得在所有发送的邮件上为主机名添加本地域名。FEATURE(use_cw_file)dnl
表明sendmail使用/etc/mail/local-host-names文件为该邮件服务器提供另外得主机名FEATURE(use_ct_file)dnl
表明sendmail使用/etc/mail/trusted-users文件提供可信用户名(可信用户可用另一个用户名发送邮件而不会收到警告消息)。
dnl #
dnl # The -t option will retry delivery if e.g. the user runs over his quota.
dnl #
FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl
置用于递送本地邮件得命令(procmail)及其选项($h:hostname$u:user name.FEATURE(`access_db',`hash -T -o /etc/mail/access.db')dnl
设置访问数据库得位置,该数据库指出允许哪些主机通过此服务器中继邮件。
FEATURE(`blacklist_recipients')dnl
启用该服务器为所选用户、主机或地址阻塞接收邮件的功能。(access_dbblacklist_recipients特性对防止垃圾邮件有用)。EXPOSED_USER(`root')dnl
dnl #
dnl # The following causes sendmail to only listen on the IPv4 loopback address
dnl # 127.0.0.1 and not on any other network devices. Remove the loopback
dnl # address restriction to accept email from the internet or intranet.
dnl #
dnl # DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
允许接受本地主机创建的邮件,如果要允许接收从Internet或其他网络接口(如局域网)传入的邮件,一定要注释掉此行。
dnl #
dnl # The following causes sendmail to additionally listen to port 587 for
dnl # mail from MUAs that authenticate. Roaming users who can't reach their
dnl # preferred sendmail daemon due to port 25 being blocked or redirected find
dnl # this useful.
dnl #
dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
dnl #
dnl # The following causes sendmail to additionally listen to port 465, but
dnl # starting immediately in TLS mode upon connecting. Port 25 or 587 followed
dnl # by STARTTLS is preferred, but roaming clients using Outlook Express can't
dnl # do STARTTLS on ports other than 25. Mozilla Mail can ONLY use STARTTLS
dnl # and doesn't support the deprecated smtps; Evolution <1.1.1 uses smtps
dnl # when SSL is enabled-- STARTTLS support is available in version 1.1.1.
dnl #
dnl # For this to work your OpenSSL certificates must be configured.
dnl #
dnl DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s')dnl
dnl #
dnl # The following causes sendmail to additionally listen on the IPv6 loopback
dnl # device. Remove the loopback address restriction listen to the network.
dnl #
dnl # NOTE: binding both IPv4 and IPv6 daemon to the same port requires
dnl # a kernel patch
dnl #
dnl DAEMON_OPTIONS(`port=smtp,Addr=::1, Name=MTA-v6, Family=inet6')dnl
dnl #
dnl # We strongly recommend not accepting unresolvable domains if you want to
dnl # protect yourself from spam. However, the laptop and users on computers
dnl # that do not have 24x7 DNS do need this.
dnl #
FEATURE(`accept_unresolvable_domains')dnl
启用accept_unresolvable_domains,使得能够接收域名不可解析的主机发送来的邮件。如果有需要使用邮件服务器的客户机(如拨号计算机),启用该选项。关闭该选项有助于防止垃圾邮件。dnl #
dnl FEATURE(`relay_based_on_MX')dnl
dnl #
dnl # Also accept email sent to "localhost.localdomain" as local email.
dnl #
LOCAL_DOMAIN(`localhost.localdomain')dnl
使域名`localhost.localdomain作为本地计算机名被接受。
dnl #
dnl # The following example makes mail from this host and any additional
dnl # specified domains appear to be sent from mydomain.com
dnl #
dnl MASQUERADE_AS(`mydomain.com')dnl
dnl #
dnl # masquerade not just the headers, but the envelope as well
dnl #
dnl FEATURE(masquerade_envelope)dnl
dnl #
dnl # masquerade not just @mydomainalias.com, but @*.mydomainalias.com as well
dnl #
dnl FEATURE(masquerade_entire_domain)dnl
dnl #
dnl MASQUERADE_DOMAIN(localhost)dnl
dnl MASQUERADE_DOMAIN(localhost.localdomain)dnl
dnl MASQUERADE_DOMAIN(mydomainalias.com)dnl
dnl MASQUERADE_DOMAIN(mydomain.lan)dnl
MAILER(smtp)dnl
MAILER(procmail)dnl

 

 

 

通常总是设置为divert(-1)m4在输出中去掉一些垃圾。
OSTYPE OSTYPE
定义使用的操作系统类型,当然在我们的情况下就是linux,但是一定要注意m4程序中 引号的用法,一个反引号和一个正引号才代表把对应的东西括起来。
define
定义一些全局设置,对于Linux系统,设置了OSTYPE之后,可以定义下面的一些全局 参数,如果不定义,就使用缺省值。例如:
defineALIAS_FILE/etc/aliases
变量名 说明(方括号中为缺省值)
ALIAS_FILE [/etc/aliases]
别名文件的位置。如果有多个别名文件,需要把它们用引号括起来(别忘了引号规则 !)。
confCR_FILE [/etc/mail/relay-domains]
缺省的域定义文件,在这个域中定义的域中机器可以通过你的服务器进行邮件发送。
HELP_FILE [/usr/lib/sendmail.hf]
此文件中含有对SMTPHELP命令进行响应时要列出的信息。
QUEUE_DIR [/var/spool/mqueue]
邮件队列文件所在目录。
STATUS_FILE [/etc/sendmail.st]
sendmail的状态信息文件。
LOCAL_MAILER_PATH [/bin/mail]
用于投递本地邮件的程序。
LOCAL_MAILER_FLAGS [rmn9]
local mailer要用到的标志,永远包含标志lsDFM
LOCAL_MAILER_ARGS [mail -d $u]
在投递本地邮件时所传送的参数。
LOCAL_MAILER_MAX [没有]
如定义了此参数,则为此邮件服务器所能接收最大单个邮件大小。
LOCAL_MAILER_CHARSET [没有]
如果定义了此参数,则被转化为MIME格式的从其他地址到local mailer的含有8位字符 的信息将被标为此字符集。
LOCAL_SHELl_PATH [/bin/sh]
用于投递利用管道功能处理的邮件的shell.
LOCAL_SHELL_FLAGS [eu9]
prog mailer用到的标志。在此标志中永远包含标志lsDFM.
LOCAL_SHELL_DIR [$z:/]
shell运行时所要查找的目录路径。
USENET_MAILER_PATH [/usr/lib/news/inews]
用于投递电子新闻组的程序名称。
USENET_MAILER_FLAGS [rlsDFMmn]
usenet mailer的投递标志。
USENET_MAILER_ARGS [-m -h -n]
usenet mailer的命令行参数。
USENET_MAILER_MAX [100000]
usenet mailer所能接收的最大信息大小。
SMTP_MAILER_FLAGS [没有]
SMTP mailer附加标志。对所有基于SMTPmailer其默认标志为mDFMUX;基于esmtp的邮差 (mailer)加上a标志;而基于"smtp8"的邮差则加上8
SMTP_MAILER_MAX [没有]
使用smtp,smtp8esmtp传输的单个邮件最大容量。
SMTP_MAILER_CHARSET [没有]
如果定义了此参数,则被转化为MIME格式的从其他地址到任一个smtp mailer的含有8 位字符的信息将被标为此字符集。
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"标志
PROCMAIL_MAILER_MAX [没有]
procmail所接收的最大单个邮件容量。如果你对某些人发送巨大的邮件感到困扰,启 用这个选项。
FEATURE
定义sednamil的一些运行参数,通常对我们来说最重要的一些选项是:
use_cw_file
读取文件/etc/sendmail.cw以确定这台机器应该替哪些机器接受邮件。此主机的别名 。当你使用 MX记录将此主机定义为其他主机的邮件交换机时需要使用这个特性。例如: FEATURE(use_cw_file)
relay_hosts_only
通常情况下,sendmailsendmail.cf中明确列出的域(一般是localhost)和/etc/ mail/relay-domains中定义的域进行投递代理。缺省下这两处定义的都是域的名字。如 果你定义了这个参数,那么这两处的内容将被解释为主机名字。
use_ct_file
读取文件/etc/sendmail.ct以取得系统信任的用户名字,这些用户可以使用-f 置其发信信封上的from地址而不产生警告信息。
redirect
使用REDIRECT特性,这个特性允许你对某些已经搬迁的用户发出重定向信息。(见下 一节)。例如:
FEATURE(redirect)
mailertable
包含一个用于覆盖到特定域路由(routing)"mailer table".此特性参数定义可以是 一个关键词定义。如未指定任何参数, 其定义通常是:
FEATURE(mailertable,`hash -o /etc/mailertable)
domaintable
包含一个用于提供域名映象的"domain table",当改变你自已的域名时可能有用(如 你公司由oldname.com改为newname.com)。其定义通常是:
FEATURE(domiaintable`hash -o /etc/domaintable)
always_add_domain
在本地发送邮件时也加上其主机域名。例如:
FEATURE(always_add_domain)
allmasquerade
如果使用了伪装(masquerading,使用MASQUERADE_AS),则此特性将使接收者的地址也伪 装为来自所伪装为主机。
limitd_masquerade
通常情况下$w所列出的所有主机将被伪装。如果使用了此特性,则只对那些$m所列出 的主机进行伪装。
masquerade_entire_domain
如使用了伪装且设置了MASQUERADE_DOMAIN,此特性将引起 地址重写,使所要伪装的网 域整个被隐藏。所有含有被伪装域名的主机用伪装域名(通常是MASQUERADE_AS)进行重写
masquerade_envelope
用此特性告知sendmail将信封和信件头中上的发送者和接收者进行伪装。
定义了有关masq的选项之后,就可以使用伪装了,可以直接将伪装命令写入mc模板, 示例如下:
MASQUERADE_AS(masq.com)
MASQUERADE_DOMAIN(foo.org)
这意味着我们的发信的时候,sendmail将会把它的信封伪装为some 。这对于统一整个域的电子邮件是非常重要的。
virtusertable
允许在同一个主机上使用多个虚拟域。参考下一节。例如:
FEATURE(`virtusertable,`hash –o /etc/mail/virtusertable)
nullclient
这是一个特殊情况--它生成一个除了支持将所有的邮件通过本地的基于SMTP的网络转 递到一个中心邮件HUB之外不含任何内容的配置文件。其参数是此邮件HUB的主机名。唯 一可与nullclient一起使用的其他特性是"nocanonify"(这样可以使非完全地址可通过S MTP连接进行发送;通常情况下地址将使用伪装名字转变为完全邮件名称,此伪装名字默 认值为邮件HUB主机的名字)。 在此特性使用是不应定义任何邮差。当然也不进行别名 处理或转寄。
local_procmail
使用procmail作为本地邮差。
smrsh
对到程序的邮件使用使用sendmail发行版所带的SendMail Restricted SHell (smrsh )而不是/bin/sh。由于sendmail是以root权限执行,某个发送到恶意程序的邮件可以破 坏系统,只要利用别名转向使得邮件被转发到对应的程序,因此缺省下sendmailsmrs h来处理邮件转发到程序的请求。这可以提高本地系统管理员控制对那些通过邮件运行程 序的行为,例如
FEATURE(`smrsh,`/usr/sbin/smrsh)
注意有些程序无法通过smrsh运行(例如majordomowrapper程序),这是出于安全 性的考虑,smrsh不准用户程序使用一些setuid功能。如果你一定要使用这些程序,清将 smrsh定义成其他shell程序,如sh
access_db
本地存取控制文件的名字,缺省是/etc/mail/access.db,也可以用命令行指出,例 如:
FEATURE(`access_db)
或者

FEATURE(`access_db,`hash –o /etc/mail/access)
mailertable
允许使用mailertable文件。这个文件定义对某确定的域使用什么样的邮差。例如:
FEATURE(`mailertable’`hash –o /etc/mail/mailertable)
blacklist_recipients
允许你用前面定义的access_db来禁止某个地方来的邮件,或是某个人的邮件,等等
relay_based_on_MX
是否允许别人用你的机器当成MX交换器。如果你设置了这个选项,那么任何人只要在 域名服务器中将你的机器设置成为他的MX交换就可以用你的机器转发电子邮件。这个功 能意味着:你的机器替它接受电子邮件,再提交给它;一般来说这个功能是不必要的; 如果你一定要使用这个选项,记住你可能被庞大的邮件流量吞没。但是在一种情况下这 个功能又是不可缺少的:假如你的系统有防火墙,只有邮件服务器能够对外连接,那么 这个功能是使网络内部其他主机能够接受自己电子邮件的唯一方法。
DOMAIN
这个关键字一般用来定义邮件中继,假如你的系统里面除了Internet互连之外还有类 DecnetUUCP之类的东西,那么你就需要设置DOMAIN来保证非internet的邮件被正确 中继。对于一般的系统,不需要定义这个属性。
MAILER
定义可以使用的投递程序(邮差)。
例如:
MAILER(smtp)
定义smtp投递。
MAILER(local)
定义局部投递。
如果你想做邮件服务,这样两个邮差是必须的。

以下是英版说明:

 

阅读(1616) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~