找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 271|回复: 2

sendmail安装笔记下篇

[复制链接]
发表于 2009-5-3 08:04:49 | 显示全部楼层 |阅读模式 IP:江苏扬州
sendmail安装笔记下篇

<div class="center title">sendmail安装笔记下篇 </div>

  <hr align="center" width="720" size="1" color="#A1BED4" height="1"></hr>

<div class="center"> 2006-10-24 18:54:59   作者:1teng   出处:本站收集   浏览次数:<span id="hits" class="rb12">0</span>   评分等级:0</div>

<div class="con_text" id="11616872991"><a href="http://bbs.1teng.com/Site/2006/1024/851.htm">来源:服务器论坛(http://bbs.1teng.com/)<br />作者:magi<br />原文:sendmail安装笔记下篇(http://bbs.1teng.com/Site/2006/1024/851.htm)</a></div>

        <div class="con_text" id="1161687299l"><strong>5、sendmail配置</strong> <br />  要sendmail正常运行,还需配置几个文件,首先最重要的就是sendmail.cf 文件了。它在源码目录树下的cf/cf目录下有很多例子可参考。你可以拷贝使用。由于sendmail.cf中的语法很复杂,所以不建议手工修改。我们可以以sendmail.mc文档配合sendmail-cf目录下的宏通过m4预处理器自动生成。m4预处理器用来从一组宏文件中创建sendmail配置文件。宏文件作为输入被读进来。宏被展开,然后写到一个输出文件。sendmail-cf目录一般放在/usr/share目录下。其实sendmail-cf目录的内容和源码目录树下的cf目录的内容是一样的,所以,为了保证sendmail-cf目录的内容与安装版本同步,要把源码目录树下的cf目录的内容拷贝到/usr/share/sendmail-cf目录。

<p>  sendmail.mc配置文档内容如下: <br />  divert(-1) <br />  include(`/usr/share/sendmail-cf/m4/cf.m4') <br />  VERSIONID(`linux setup for Red Hat <a href="http://bbs.1teng.com/system/Linux/index.htm" target="_blank" class="keylink">Linux</a>')dnl <br />  OSTYPE(`linux') <br />  dnl Uncomment and edit the following line if your mail needs to be sent out <br />  dnl through an external mail server: <br />  dnl define(`SMART_HOST',`smtp.your.provider') <br />  define(`confDEF_USER_ID',``8:12'')dnl <br />  undefine(`UUCP_RELAY')dnl <br />  undefine(`BITNET_RELAY')dnl <br />  dnl define(`confAUTO_REBUILD')dnl <br />  define(`confTO_CONNECT', `1m')dnl <br />  define(`confTRY_NULL_MX_LIST',true)dnl <br />  define(`confDONT_PROBE_INTERFACES',true)dnl <br />  define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl <br />  define(`ALIAS_FILE', `/etc/mail/aliases')dnl <br />  define(`STATUS_FILE', `/etc/mail/statistics')dnl <br />  define(`UUCP_MAILER_MAX', `2000000')dnl <br />  define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl <br />  define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl <br />  define(`confAUTH_OPTIONS', `A')dnl <br />  TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl                <br />  define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5  <br />  LOGIN PLAIN')dnl <br />  dnl define(`confCACERT_PATH',`/usr/share/ssl/certs') <br />  dnl define(`confCACERT',`/usr/share/ssl/certs/ca-bundle.crt') <br />  dnl define(`confSERVER_CERT',`/usr/share/ssl/certs/sendmail.pem') <br />  dnl define(`confSERVER_KEY',`/usr/share/ssl/certs/sendmail.pem') <br />  dnl define(`confTO_QUEUEWARN', `4h')dnl <br />  dnl define(`confTO_QUEUERETURN', `5d')dnl <br />  dnl define(`confQUEUE_LA', `12')dnl <br />  dnl define(`confREFUSE_LA', `18')dnl <br />  define(`confTO_IDENT', `0')dnl <br />  dnl FEATURE(delay_checks)dnl <br />  FEATURE(`no_default_msa',`dnl')dnl <br />  FEATURE(`smrsh',`/usr/sbin/smrsh')dnl <br />  FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl <br />  FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl <br />  FEATURE(redirect)dnl <br />  FEATURE(always_add_domain)dnl <br />  FEATURE(use_cw_file)dnl <br />  FEATURE(use_ct_file)dnl <br />  dnl The '-t' option will retry delivery if e.g. the user runs over his quota. <br />  FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl <br />  FEATURE(`access_db',`hash -Tlt;TMPF&gt; -o /etc/mail/access.db')dnl <br />  FEATURE(`blacklist_recipients')dnl <br />  EXPOSED_USER(`root')dnl <br />  dnl This changes sendmail to only listen on the loopback device 127.0.0.1 <br />  dnl and not on any other network devices. Comment this out if you want <br />  dnl to accept email over the network. <br />  DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA') <br />  dnl NOTE: binding both IPv4 and IPv6 daemon to the same port requires <br />  dnl       a kernel patch <br />  dnl DAEMON_OPTIONS(`port=smtp,Addr=::1, Name=MTA-v6, Family=inet6') <br />  dnl We strongly recommend to comment this one out if you want to protect <br />  dnl yourself from spam. However, the laptop and users on computers that do <br />  dnl not have 24x7 DNS do need this. <br />  FEATURE(`accept_unresolvable_domains')dnl <br />  dnl FEATURE(`relay_based_on_MX')dnl <br />  MAILER(smtp)dnl <br />  MAILER(procmail)dnl </p>

<p>  记得要使以下两个条语句有效,它的意思是如果access.db访问控制没有设置,则启用以下验证方式进行smtp验证。 <br />  TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl                <br />  define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5  <br />  LOGIN PLAIN')dnl </p>

<p>  sendmail宏定义说明 <br />  divert(n) 为m4定义一个缓冲动作,当n=-1时缓冲被删除,n=0时开始一个新缓冲OSTYPE 定义宏所使用的操作<a href="http://bbs.1teng.com/system" target="_blank" class="keylink">系统</a>,该宏允许m4程序增加同相关操作<a href="http://bbs.1teng.com/system" target="_blank" class="keylink">系统</a>相关的文件 <br />  Domain 定义MTA将使用哪些域来传输邮件 <br />  Feature 定义配置文件中使用的一个特定的功能集 <br />  Define 定义配置文件中的一个特定的选项值 <br />  MASQUERADE_AS 定义sendmail来应答邮件的其它主机名 <br />  MAILER 定义sendmail使用的邮件传输方法 <br />  dnl 注释 </p>

<p>  完成sendmail.mc文档的编写后就可以用m4程序生成正式的sendmail.cf配置文档。语法如下: <br />  # m4 sendmail.mc gt; sendmail.cf <br />  也可以用源码目录树下的cf/cf/Build命令生成。前提是你要在该目录下有一个sendmail.mc文档。语法如下: <br />  # ./Build sendmail.cf  </p>

<p>  ok,接着就可以把sendmail.cf and submit.cf文档安装到/etc/mail目录中的,语法如下: <br />  # ./Build install-cf <br />  其实也可以自已用cp命令拷贝的啦。记得把sendmail.mc文档也拷贝一份到/etc/mail目录,以便以后修改配置时可重新生成sendmail.cf文档。 </p>

<p>  ok,接着到/etc/mail目录下配置一些文档。 <br />  # cd /etc/mail  <br />  # echo 'examply.com' &gt;&gt; local-host-names  接收邮件的主机名 <br />  # echo 'localhost    RELAY'  &gt;&gt; access  用来拒绝或允许来自某个域的邮件,本例允许本地转发。 <br />  # makemap hash access &lt; access  生成access.db数据库 <br />  # touch domaintable  用来把旧域名映射互新域名 <br />  # makemap hash domaintable &lt; domaintable  <br />  # touch mailertable  来覆盖向指定域的路由 <br />  # makemap hash mailertable &lt; mailertable  <br />  # touch trusted-users  <br />  # touch virtusertable  用来把用户和域名映射到其它地址 <br />  # makemap hash virtusertable &lt; virtusertable  <br />  # chown root:wheel /var/spool/mqueue/  <br />  # chmod 700 /var/spool/mqueue  <br />  # touch aliases  别名数据库,文本形式。可参照源码目录树下 <br />  sendmail/aliases文件。 <br />  # newaliases                   从文本文件中创建一个新的别名数据库文件。 <br />  # sendmail -v -bi 调试启动。 <br />  /etc/mail/aliases: 42 aliases, longest 10 bytes, 432 bytes total <br />  如果出现以上提示信息,则启动成功。可用以下命令正式启动: <br />  # sendmail -bd -q30m <br />  该命令以后台进程方式(-bd)运行,并使其每隔30分钟(-q30m)轮询一次未发送邮件队列,检查是否有新邮件。 </p>


<p>  服务器启动后,可以用telnet连接服务器。 <br />  # telnet localhost 25 <br />  Trying 127.0.0.1... <br />  Connected to localhost. <br />  Escape character is '^]'. <br />  220 test.tigerhead ESMTP Sendmail 8.12.10/8.12.10; Tue, 30 Mar 2004 14:50:14  0800 <br />  ehlo test 你输入的命令,按回车结束。 <br />  250-test.tigerhead Hello LOCALHOST.localdomain , pleased to meet you <br />  250-ENHANCEDSTATUSCODES <br />  250-PIPELINING <br />  250-8BITMIME <br />  250-SIZE <br />  250-DSN <br />  250-ETRN <br />  250-AUTH DIGEST-MD5 CRAM-MD5 LOGIN PLAIN <br />  250-DELIVERBY <br />  250 HELP <br />  以250-开头的为服务器的响应信息。注意倒数第三行,这就是成功配置smtp验证的显示。输入quit离开。</p>

<p>  安装完成后为确保<a href="http://bbs.1teng.com/system" target="_blank" class="keylink">系统</a>安全,还需调整一些目录的权限。可参考sendmail源码目录下 <br />  sendmail/SECURITY文档。 <br />  # chmod 0640 /etc/mail/aliases /etc/mail/aliases.{db,pag,dir} <br />  # chmod 0640 /etc/mail/*.{db,pag,dir} <br />  # chmod 0640 /etc/mail/statistics /var/log/sendmail.st <br />  # chmod 0600 /var/run/sendmail.pid /etc/mail/sendmail.pid <br />  -r-xr-sr-x root   smmsp ... /PATH/TO/sendmail <br />  drwxrwx--- smmsp  smmsp ... /var/spool/clientmqueue <br />  drwx------ root   wheel ... /var/spool/mqueue <br />  -r--r--r-- root   wheel ... /etc/mail/sendmail.cf <br />  -r--r--r-- root   wheel ... /etc/mail/submit.cf </p>

<p>  <strong>6、sendmail功能介绍</strong> <br />  aliases 别名数据库设置 <br />  test: test1,test2,test3 设置test群组别名,test不是一个实际的用户,只是一个别名。发给test的信,test1,2,3都可收到。 <br />  test: test,testbak 在testbak邮箱中备份test的邮件。 <br />  test: test,test@163.com 远程邮件备份,原理同上。 <br />  test:   :include: /etc/mail/userlist 使用用户列表设置群组。 <br />  userlist格式如下: <br />  test1, \ <br />  test2, \ <br />  test3, \ <br />  test4 <br />  关于<a href="http://bbs.1teng.com/system" target="_blank" class="keylink">系统</a>预设aliases,由于sendmail预设用mailer-daemon and postmaster作为资料传送者,或邮件退回的帐号,但<a href="http://bbs.1teng.com/system" target="_blank" class="keylink">系统</a>实际没有这两个帐号,所以要如下设置别名。 <br />  mailer-daemon:  postmaster  <br />  postmaster:     root  <br />  设置完成后不要忘了用newaliases命令生成数据库。 </p>

<p>  ~/.forward文件配置 <br />  其实该文档的作用和aliases数据库的作差不多啦,都是配置别名,做邮件转发的。因为alises只能由管理员控制,个人用户不能修改,所以就可以在个人的目录下建立一个转寄文档。以设置个人的邮件转寄列表。文档格式如下: <br />  test <br />  test1 <br />  test2 <br />  test3 <br />  and os on <br />  但由于个人用户安全意识差,如果设置不当会有安全<a href="http://bbs.1teng.com/safe/loop/index.htm" target="_blank" class="keylink">漏洞</a>,不建议使用。 </p>

<p>  access访问控制列表设置 <br />  92.168 RELAY <br />  test.NET OK <br />  test.COM REJECT <br />  test.COM 550 SORRY,WE DON'T ALLOW SPAMMERS HERE <br />  test.ORG DISCARD <br />  Ok--远程主机可以向你的邮件服务器发送邮件; <br />  RELAY--允许中转; <br />  REJECT--不能向你的邮件服务器发邮件和不能中转; <br />  DISCARD--发来的邮件将被丢弃,同时并不向发送者返回错误信息。 <br />  nnn text-- 发来的邮件将被丢弃,但sendmail将会向发送者返回nnn确定的smtp代码和text变量确定的文本描述。 <br />  设置完成后要用makemap hash access.db &lt; access命令生成数据库。 </p>

<p>  mailq邮件队列查询命令。 <br />  Q-ID 邮件id号。 <br />  Size 邮件容量。 <br />  Q-Time 邮件进入队列(也就是/var/spool/mqueue目录)的时间和不能邮寄的原因。 <br />  Sender/Recipient 发信和收信人的邮箱地址。 </p>

<p>  mailstats邮寄状态查询命令,可查询sendmail运行作至今邮件收发总计资料。 <br />  M     : <br />  msgsfr:发送的邮件数量。 <br />  bytes_from:邮件容量  <br />  megsto:收到邮件的数量。  <br />  bytes_to:同上 <br />  msgsrej:邮件deny的次数。  <br />  msgsdis:邮件discard的次数。  <br />  Mailer :esmtp对外邮件 ,local本地邮件 。 </p>

<p>  mail邮件命令 <br />  mail 查看/var/spool/mail/目录下自已邮箱内容。以q退出把看过的邮件保存在~/mbox中。 <br />  mail <a class="10" href="mailto:test@example.com">test@example.com</a> 直接发邮件给人。 <br />  mail -s 'title text' <a class="10" href="mailto:test@example.com">test@example.com</a> &lt; mail.txt  把文档中内容邮寄出去。 <br />  mail -f ~/mbox 查看home目录下邮箱内容。 <br />  用mail发附件也是可行,要用到uuencode and uudecode命令进行编码。 <br />  编码:uuencode [file] name          example:uuencode hello hello&gt;hello.uue   default input  <br />  is stdin;default output is stdout. <br />  解码:uudecode [-o outfile] name    example:uudecode hello.uue 可以用-o选项输出另外一个 <br />  文件名。 <br />  # uuencode ~/.bashrc bashrc | mail -s 'test uuencode' <a class="10" href="mailto:test@example.com">test@example.com</a><br /></p><p><br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 13:32 , Processed in 0.189138 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表