首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 技术专题 | 电子书下载 | 教学视频 | 网页设计 | 平面设计 | 搜索 | 博客 | 论坛
热点关键词:
1080个QQ靓号被盗 损失超过200万!微软发布2008年6月安全公告 3项危急
您现在的位置:服务器>>服务器应用
sendmail安装笔记下篇
来源:ChinaItLab 时间:2006-3-8 作者:佚名 保存本文

5、sendmail配置
  要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目录。

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

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

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

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

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

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

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

  安装完成后为确保系统安全,还需调整一些目录的权限。可参考sendmail源码目录下
  sendmail/SECURITY文档。
  # chmod 0640 /etc/mail/aliases /etc/mail/aliases.{db,pag,dir}
  # chmod 0640 /etc/mail/*.{db,pag,dir}
  # chmod 0640 /etc/mail/statistics /var/log/sendmail.st
  # chmod 0600 /var/run/sendmail.pid /etc/mail/sendmail.pid
  -r-xr-sr-x root   smmsp ... /PATH/TO/sendmail
  drwxrwx--- smmsp  smmsp ... /var/spool/clientmqueue
  drwx------ root   wheel ... /var/spool/mqueue
  -r--r--r-- root   wheel ... /etc/mail/sendmail.cf
  -r--r--r-- root   wheel ... /etc/mail/submit.cf

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

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

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

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

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

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

责任编辑:Samie

相关文章
网络视频行业的服务器烦恼
让用户信心十足 HP四核皓龙服务器发布
惠普四核皓龙服务器发布会现场报道
服务器存储增4% 惠普二季度净利同比增16%
首次用服务器的站长常犯的错误
服务器租用应注意些什么
中小企业:理性选择适用的产品方案
哥伦比亚广播18亿收购CNET Networks
托管服务器的注意事项
Sun推出基于AMD四核皓龙处理器服务器新品
热点推荐
 双雄力争 盘点5月最受网友关注的服务器
 中小企业佳选 曙光I620r-FY服务器评测
 性能与功耗完美结合 浪潮英信NF280D评测
 为国内SMB定制 IBM东方服务器x3610评测
 强氧最新推荐“氦”1400G3系列 1U服务器
 45纳米王者降临 Xeon5482服务器评测
 一枝独秀秀身姿 扫描各厂商四核塔式机
 强氧1U双路四核1420T服务器详细评测
 五舟1U服务器45nm四核至强处理器小测
 再续传奇 至尊X5482打造高性能工作站
 文章评论
 精彩友情推荐
·交换机d link
·d-link网络交换机
·edimax交换机
·hp交换机
·hp光纤交换机
·IDC资讯大全
·机房品质万里行
·IDC托管必备知识
·全国IDC报价
·网站推广优化
 
人物焦点
最新更新
 浪潮推出针对音视频业务的存储服务器
 首选数据库服务器!戴尔PE 2950送MP4
 提高业务效率!戴尔四核PE 1950降价500
 塔式经典戴尔SC1430送4G优盘 售价7399
 双雄力争 盘点5月最受网友关注的服务器
 双路45nm至强 高配戴尔2950MLK仅14800
 1TB企业级硬盘!戴尔四核PE 1950仅12200
 750GB硬盘!戴尔塔式SC1430降幅1000元
 单路至强5430 惠普DL380 G5价格再降
 中小企业佳选 曙光I620r-FY服务器评测
热门文章
 强氧最新推荐“氦”1400G3系列 1U服务器
 带HDMI的笔记本? 惠普新款工作站评测
 5款2-3万主流中小企业部门级服务器导购
 45纳米王者降临 Xeon5482服务器评测
 一枝独秀秀身姿 扫描各厂商四核塔式机
 SAS硬盘机架式服务器迎新春全系列推荐
 强氧1U双路四核1420T服务器详细评测
 45nm四核浪潮NF280D拆解实录
 英特尔新旧四核处理器全系列服务器导购
 服务器DIY配置 服务器选型经验谈
 Chinaitlab Group 旗下网站:  中国IT实验室 | 中国IDC圈 | 存储世界 | 数字网校 | 21世纪IT人才网
关于我们 | 广告服务| 成功客户 | 合作媒体 | 网站历史 | 联系我们 | 招聘信息 | 免责声明
Copyright © 2001 - 2007 All Rights Reserved
粤ICP备05089709