首页 | 邮件资讯 | 技术教程 | 解决方案 | 产品评测 | 邮件人才 | 邮件博客 | 邮件系统论坛 | 软件下载 | 邮件周刊 | 热点专题 | 工具
网络技术 | 操作系统 | 邮件系统 | 客户端 | 电子邮箱 | 反垃圾邮件 | 邮件安全 | 邮件营销 | 移动电邮 | 邮件软件下载 | 电子书下载

邮件服务器

技术前沿 | Qmail | IMail | MDaemon | Exchange | Domino | 其它 | Foxmail | James | Kerio | JavaMail | WinMail | Sendmail | Postfix | Winwebmail | Merak | CMailServer | 邮件与开发 | 金笛 |
首页 > 邮件服务器 > Sendmail > SENDMAIL邮件服务器的安装与设置 > 正文

SENDMAIL邮件服务器的安装与设置

出处:IT世界 作者:IT世界 时间:2008-1-10 18:48:57
   Sendmail对一般的系统管理者而言,往往是个不敢手的「禁区」 ,因为绝大多数系统的使用者对E-Mail的需求与依赖的程度之高,可说是稍有分毫差错,系统管理者就要准备接受如雪片般飞来的抗议与 抱怨!而Sendmail这个东东的「内函」,似乎又有点不太容易理解: 与设定有关的sendmail.cf 档,如果不是下过一番死功夫,则读起来如同读天书一样,只知道里面有英文字与数字!所以一般人总是能不 动则不动,只要能用就好。不过,很不幸的,一般跟著机器而来的sendmail总是有著令人心惊胆跳的「附加功能」,就是常常都有一些可以让无聊人士作为侵入路径的BUG 或後门,某些BUG 还可以让侵入 者经由Sendmail而取得最高权限的root!一旦root权限被人拿走了, 那麽这机器就可被人任意屠宰,最恶劣的,还可能破坏系统!

  Sun 在国内的使用人口相当的多,笔者对Sun 也稍微比较熟悉一点。不过,Sun 的Sendmail却是令人颇不敢恭维的,几乎可以说:只要还在使用Sun 的Sendmail而没有「常常」patch 的话,那甚麽系统安全都不必谈了,谈了也是白谈;如果还在使用Sun 的Sendmail,那就如果系统抱著一颗不定时炸弹,随时一个不注意,都可能引爆:(。这一点,大家可以翻一翻CERT或8lgm看一看,几乎是只要有sendmail 的问题,Sun 大多跑了....。其他系统的Sendmail也不要偷笑,虽然大家的出场率没有Sun 高,可是也常会问题的。 另一方面,Sendmail 8.6.9与之前的版本最近刚发现有个ident方面的Bug 。如果方便的话,请大家务必换成最新版。如果不方便的
  话,在v8.6.5之後的版本有个克难式的补救法,即在sendmail.cf 加入这麽一行:

  Orident=0

  表示不作ident 的检查。
  v8.6.5之前的版本就一定要换成最新版。

  本软体在系统安全方面,是目前评价最高的,目前已知的BUG都已经改好了,最主要的原因,当然是要感谢作者Eric Allman ,他(或他们)能作到一发现重大的Bug (如系统安装)就立刻出新版。本软体是一public domain ,可以在网路上各ftp server上找到其source code。由於该软体的发展者把一些必要的设定步骤自动化了,所以,其实安装这个软体并不是想像中那麽样的困难。如果连compile 的时间也算下去,顺利的话,不用半个小时就可以安装完毕!

  3.1 下载Sendmail最新版本

   最新版本的Sendmail可以从 ftp://ftp.sendmail.org/pub/sendmail/ 得到!
  如 sendmail.8.9.3.tar.gz 这是截止到文章发布的最新版本,size:1068290byte

  有关最新版本的发布,请浏览Sendmail的主页 http://www.sendmail.org

  3.2 安装Sendmail

   用root登陆或su成root后,先把tar.gz的包解开tar fvxz sendmail.8.9.3.tar.gz,用make -f 开始编译

  编译完成后系统会产生系统设定文件,也就是sendmail.cf (一般这个文件都存放在/etc下)

  接下来,这按几步继续安装: (注:~/sendmail为解开后的sendmail目录)

  1.请切换至设定档目录~/sendmail/cf/cf 之下。找一个合适自己系统的XXXX.mc档。笔者一般上是使用tcpproto.mc

  这一个不用uucp的档。如果是用tcpproto.mc 这个档,笔者在solaris 2.3 试了,得记得在档中要加上一行:

  OSTYPE(solaris2)

  Sun 4.1.3 不必,其他系统就不晓得了。在目录 ~/sendmail/cf/ostype下有几个OSTYPE()可以的 档,

  只有这个目录有资料的才可能能够OSTYPE()。还有, 如果是 system V的/bin/mail,似乎就得要加OSTYPE()。

  一句老话,详情请看DOCUMENT:~/sendmail/cf/README。这希望有经验的朋友能够补充:)

  如果不小心忘了加上OSTYPE()会怎样?也不会怎样,只会有"unknow mailer error" 的错误,然後信收不到。

  有一点要提醒大家的,就是:在~/sendmail/cf/cf 所看到的各种系统的.mc 档,都是Sendmail 8.6.x的作者

  Eric Allman 「演示」给大家看的,所以,可以看到档名都有个"cs",要是没有修改就用这些档的话,那一定会发生错误的。而要修改,有相当多地方要改,所以,如笔者一般懒的人,用tcpproto.mc 还是比较简单又不会出错:)
  2.好,选定了某一个合意的.mc 档,那接下来可执行m4产生.cf 档。请下指令:

  # m4 XXX.mc > YYY.cf 如果是sun 4.1.3 ,可能系统会抱怨m4的版本太旧了。那请试一试用:

  # /usr/5bin/m4 XXX.mc >YYY.cf

  要是还是不行,那就请去抓新版的m4回来compile (可以在 http://www.gnu.org 找到gnu 的m4)。

  这个步骤是要把compile好的files, install 到系统上去了。

  罗嗦的我还是得再一次提醒您看看:把旧档案备份好了吗?

  好,假设compile 的结果非常没挑战性的没有任何错误,产生.cf 档过程也没有甚麽值得注意的讯息。所产生的.cf 档 也改好了。而且最重要的:作好旧档的备份(不是我要吓人,这是以防万一)。

  1.挑个老板没有在用mail的时间,快手快脚的切换至目录~/sendmail/src ,下指令:

  # make -f Makefile.XXX install

  系统会把compile出来的~/sendmail/src/sendmail与man document拷贝到它们该有的目录(所以你还如果没有备份/usr/lib/sendmail ,那赶快祈祷待回不要出问题,要不然就赶快准备泪水哭吧!

  因为旧的会被compile 出来的sendmail覆盖)

  2.切换至目录~/sendmail/cf/cf ,把产生出来的YYY.cf档拷贝到本系统sendmail.cf 应该在的地方,
  如:/etc或 /etc/mail 。

  3.把旧sendmail daemon 的process 杀掉。(这应该不用我罗嗦吧!用ps -ax  grep sendmail  grep -v grep 找出旧daemon的process(或head -1 /etc/sendmail.pid 或 head -1 /etc/mail/sendmail.pid),然后用 kill -9 processID干掉它(或直接用 kill -9 `head -1 /etc/sendmail.pid`)。

  4.启动新daemon。例如下指令:
  /usr/lib/sendmail -bd -q30m
  当然,保守一点,看旧的daemon怎麽跑,照旧的来下参数应该是没有问题。

  这时,初步安装就已经完成了,接下来请看设置sendmail

  3.3安装Sendmail注意事项

  如果安装不成功,请参考下面的问题:

  用vi或任一种编辑器,编辑的makefile档,作一点点 必要的修改。所要修改的地方不多,下面是可能要修改的地方:

  1."CC ="如果原档所用的compiler并不是我们系统的,这才要改。

  2.本系统是否有安装Berkerlay 的New database?如果有,跳过本点,到第3点。 如果没有
  (如:一般SunOS 都没有装),那麽请修改这几 行(下面以Makefile.SunOS为例,但其他系统也类似):

  A.在 DBMDEF= -DNDBM -DNEWDB -DNIS 一行,请改成: DBMDEF= -DNDBM -DNIS (即去掉-DNEWDB)

  B.把这两行REMARK起来: INCDIRS=-I/usr/sww/include/db --> # INCDIRS=-I/usr/sww/include/db
   LIBDIRS=-L/usr/sww/lib --> # LIBDIRS=-L/usr/sww/lib

  C.修改LIBS= -ldb -ldbm -lresolv 这一行成: LIBS= -ldbm -lresolv (即去掉-db )

  3.把nroff 的"-mandoc "参数改成一般系统可以接受的 "-man"(当然,这得依你的系统而定,
  如果你是用groff,那就可以很愉快的直接使用,不必改这个参数:)。如果不改也并不会影响
  sendmail的安装,只是不能看到格式化後的sendmail相关文件罢了。


  关于DIRECTORY PERMISSIONS的问题你需要执行2条命令:

  chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue
  chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue

   许多系统的spool目录使用/usr/spool来代替/var/spool,设置别名的etc/mail取而代之的是/etc,
  如果你要在sendmail.cf设置RunAsUser许选项,/var/spool/mqueue这个目录需要RunAsUser 用户的权利,
  ok,这时开始编译Sendmail,执行这条命令

  sendmail -v -bi

  这时,开始初始化alias database. 如果它显示:

  WARNING: writable directory /etc

  WARNING: writable directory /usr/spool/mqueue

  那么这个目录列出了不适当的写特权,应该避免多方面的的安全攻击。
  4.1 设置Sendmail.cf
  产生出来的YYY.cf一般得要改个地方才能正常的收信。请寻找"Cw",原来产生的.cf 档,Cw应是:Cwlocalhost
  请在localhost 之後加上你那一台机器所有可能用来当收信地址的host name 。
  例如我有一台机器叫:ftp.games.net.cn,而且也叫:gopher.games.net.cn,
  而我希望这一台机器这两个名字都能收信,那我要这么作:
  Cwlocalhost ftp.games.net.cn gopher.games.net.cn

  顺便说一下,Cw之後只能写入本机器的名字,千万不能写入其他机器的名字,否则,甚麽地方都能寄,那被写的就
  一定不能寄。

  上面其实是简略的说法,如果你对DNS 也熟悉的话,可参考这节来作判断,判断是否须要在Cw之後写入东东。否则
  请直接跳过这一小节,闭上眼睛把本机器所用的所有名字都写上就是了:)

  1.在一台机器上,如果有多个名字(hostname),而是用CNAME 建立的,如:
  $ORIGIN games.net.cn
  ftp IN A 140.119.1.2
  gopher IN CNAME ftp

  那麽可以不必在Cw上标明。系统会透过DNS 找到其 Canonical name。

  2.如果一台机器有多个名字,可是,每个名字是用A record 建立的。如:
  $ORIGIN games.net.cn.
  ftp IN A 192.168.25.2
  gopher IN A 192.168.25.2
  这种情况【一定】要记得在Cw後写上你所要收信的名字。如果这个忘了写,会有怎样的问题呢?
  忘了将会有从外面机器寄信来,没有写上的机器名将却收不到信,机器会抱怨:
  "Local configuration error" 。

  如:我的sendmail.cf中的Cw这行是如下: Cw games.net.cn
  那我将无法使用这个地址:
  username@games.net.cn
  而只能用
  username@ftp.games.net.cn 否则将出现上述错误。

  如果发现了错误,那再加上去也就可以了。

  3.如果一台机器有多interface ,各interface有其本身的名字,且要收信。
  这个情况也要在Cw之後写明所有要收信的hostname。


  ok!一个标准的sendmail.cf文件就设置完了!

  4.2 设置access

  打开/etc/mail/access,你会看到 (注意一些系统的access文件不再/etc/mail下,如找不到请用whereis查找或检查是否安装正常)

  # Check the /usr/doc/sendmail-8.9.3/README.cf file for a description
  # of the format of this file. (search for access_db in that file)
  # The /usr/doc/sendmail-8.9.3/README.cf is part of the sendmail-doc
  # package.
  #
  # by default we allow relaying from localhost...
  localhost.localdomain RELAY
  localhost RELAY

  如果您的IP地址是192.168.25.11的话,这样请在最后一行加上192.168.25.11 RELAY
  其文件的最后三行应是:

  localhost.localdomain RELAY
  localhost RELAY
  192.168.25.11 RELAY

  加上这句话您就可以用sendmail发送接收mail了!但是如果您想让别人也可以使用sendmail的话,
  他的IP是202.168.25.22,这样就在在最后一行加入202.168.25.22 RELAY
  其文件的最后四行应是:

  localhost.localdomain RELAY
  localhost RELAY
  192.168.25.11 RELAY
  192.168.25.22 RELAY

  我想,您现在一定有个疑问是,如果我想设置50个人用sendmail是不是需要加50个IP啊!?
  嘿嘿,不用啦,是这样,sendmail考虑到多用户的时候,它准许你添入整个C类地址,(B类好像也可以,我没try过!)
  其格式如下:

  localhost.localdomain RELAY
  localhost RELAY
  192.168.25 RELAY

  这样,您就是把192.168.52这整个C都加入的sendmail中,这个C类地址的用户,如果在你的系统里有账号的话,
  就可以使用sendmail收发信件了!
 4.3 设置pop3

  如果您需要pop3来接收信件,您需要打开pop3端口,

  vi /etc/inetd.conf 查找到

  # pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d

  把#号删掉。

  vi /etc/services 查找到

  #pop-3 110/tcp # POP version 3


  把#号删掉。

  这样,在restart inetd后,pop3 110端口就可以接信了!如果还是不行,请检查是否安装pop3端口!

  4.4 如何restart sendmail;inetd以及注意事项

  有一点要提醒大家的,要用"kill -9 [pid-of-sendmail]" ,从新启动sendmail
  如果用 kill -HUP 是不会发生作用的! (这是颇多人常遇到的问题,切记!)

  在redhat6中用/etc/rc.d/init.d/sendmail restart即可!

  inetd是
  /etc/rc.d/init.d/inetd restart

  5.1 sendmail的别名和forward


   (1) 关于直接用IP地址发信

  mail user@[166.111.IP.Address]
  只要用[]将IP地址括起来就行了

  (2) 关于alias

  sendmail在/etc下有两个文件 aliases和aliases.db, 后者是前者用newaliases
  生成的别名数据库. 你可以手工编辑/etc/aliases, 然后运行newaliases更新数据
  库(其实newaliases是个到sendmail的 symlink)

  eg: nickname : user@hotmail.com
  alias-name: real-user-account

  则以后mail nickname就可以将信寄到user@hotmail.com处
  而别人寄给alias-name@your.domain.name的信就会转给真正的用户real-user-account

  (3) 关于forward

  在你的$HOME目录下面编辑一个.forward文件, 里面写上你要forward的目的e-mail
  地址或本机的用户名, 就可以自动将信 forward到相应地址

  eg: .forward: user@hotmail.com
  或 other-user-account
  则给此人的e-mail会forward到hotmail或other-user-account处

  (4) 关于vacation

  去找一个vacation包(如RedHat的contrib中有vacation的rpm), 装上后就一个
  /usr/bin/vacation程序和一个man.

  先运行vacation, 它会让你编辑$HOME/.vacation.msg文件, 就是要发回给对方
  告诉他你现在不看信的东西啦. 然后编辑$HOME/.forward文件, 写这样一句
  \username, " /usr/bin/vacation username", username 要换回你自己的了
  然后运行vacation -I建立$HOME/.vacation.db就好了 (看看man更详细)

  (5) 关于sendmail的一些文件

  /var/log/maillog sendmail的log, 分析错误有用
  /var/spool/mail/$USER 进来的信, 每个用户一个文件
  /var/spool/mqueue mail queue, 可以用mailq看队列中待发的信
  (mailq也是 sendmail的symlink了)
  dfxxxxxx 这是信的内容
  qfxxxxxx 这是信的subject和别的信息 (反正每信一个号了, 配对的)

  /etc/sendmail.cf sendmail的配置文件, 改动它可要小心
  /etc/sendmail.cw 假如你的机器有好多alias的话就把名字写在
  这个文件中, 这样写哪个都能收到信

  5.2 限制邮件的大小

  Modify /etc/sendmail.cf:

  Mlocal, P=/bin/mail, F=lsDFMrmn, S=10, R=20/40,
  Maxsize=1000000,
  A=mail -d $u
  Mprog, P=/usr/local/sendmail/smrsh, F=lsDFMeu, S=10, R=20/40, D=$z:/,
  Maxsize=1000000,
  A=sh -c $u

  This limits incoming mail processed by by smrsh and /bin/mail to 1 million
  bytes.

  You can do the same with the Mstmp, Mesmtp, and Mrelay statements to limit
  the size of outgoing mail as well.
相关文章 热门文章
  • sendmail中.forward文件的注意事项
  • Linux启动 Sendmail速度慢的解决办法
  • RHEL5.2 sendmail和openwebmail 、dpvecpt 配置总结
  • PEAR Mail软件包Sendmail Mail::Send()方式参数注入漏洞
  • Linux启动sendmail速度慢的解决办法
  • 为Sendmail添加邮件认证功能
  • FYI:商用Sendmail的安全和隔离要点
  • 在Perl和Sendmail的附件做过滤系统
  • sendmail做smtp SERVER
  • Sendmail Analyzer 5.3 发布
  • 如何限制Sendmail下邮件的大小
  • Fedora架设Sendmail邮件服务器
  • Sendmail8.12.9+RedHat 8.0建构邮件服务器
  • sendmail大全
  • Sendmail邮件服务器快速指南
  • SendMail上手指南
  • 用Sendmail配置你的第一台e-mail服务器
  • RedHatLinux AS3中SendMail的配置
  • 企业Sendmail邮件服务器的创建
  • Sendmail环境下对抗垃圾邮件的处理方法
  • Sendmail的邮件用户与系统用户分离
  • 我的qmail安装历程
  • 带SMTP认证功能的sendmail配置
  • Sendmail的relay用法汇总
  • 自由广告区
     
    最新软件下载
  • SharePoint Server 2010 部署文档
  • Exchange 2010 RTM升级至SP1 教程
  • Exchange 2010 OWA下RBAC实现的组功能...
  • Lync Server 2010 Standard Edition 标..
  • Lync Server 2010 Enterprise Edition...
  • Forefront Endpoint Protection 2010 ...
  • Lync Server 2010 Edge 服务器部署文档
  • 《Exchange 2003专家指南》
  • Mastering Hyper-V Deployment
  • Windows Server 2008 R2 Hyper-V
  • Microsoft Lync Server 2010 Unleashed
  • Windows Server 2008 R2 Unleashed
  • 今日邮件技术文章
  • 腾讯,在创新中演绎互联网“进化论”
  • 华科人 张小龙 (中国第二代程序员 QQ...
  • 微软推出新功能 提高Hotmail密码安全性
  • 快压技巧分享:秒传邮件超大附件
  • 不容忽视的邮件营销数据分析过程中的算..
  • 国内手机邮箱的现状与未来发展——访尚..
  • 易观数据:2011Q2中国手机邮箱市场收入..
  • 穿越时空的爱恋 QQ邮箱音视频及贺卡邮件
  • Hotmail新功能:“我的朋友可能被黑了”
  • 入侵邻居网络发骚扰邮件 美国男子被重..
  • 网易邮箱莫子睿:《非你莫属》招聘多过..
  • 中国电信推广189邮箱绿色账单
  • 最新专题
  • 鸟哥的Linux私房菜之Mail服务器
  • Exchange Server 2010技术专题
  • Windows 7 技术专题
  • Sendmail 邮件系统配置
  • 组建Exchange 2003邮件系统
  • Windows Server 2008 专题
  • ORF 反垃圾邮件系统
  • Exchange Server 2007 专题
  • ISA Server 2006 教程专题
  • Windows Vista 技术专题
  • “黑莓”(BlackBerry)专题
  • Apache James 专题
  • 分类导航
    邮件新闻资讯:
    IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮
    电子邮箱 | 反垃圾邮件|邮件客户端|网络安全
    行业数据 | 邮件人物 | 网站公告 | 行业法规
    网络技术:
    邮件原理 | 网络协议 | 网络管理 | 传输介质
    线路接入 | 路由接口 | 邮件存储 | 华为3Com
    CISCO技术 | 网络与服务器硬件
    操作系统:
    Windows 9X | Linux&Uinx | Windows NT
    Windows Vista | FreeBSD | 其它操作系统
    邮件服务器:
    程序与开发 | Exchange | Qmail | Postfix
    Sendmail | MDaemon | Domino | Foxmail
    KerioMail | JavaMail | Winwebmail |James
    Merak&VisNetic | CMailServer | WinMail
    金笛邮件系统 | 其它 |
    反垃圾邮件:
    综述| 客户端反垃圾邮件|服务器端反垃圾邮件
    邮件客户端软件:
    Outlook | Foxmail | DreamMail| KooMail
    The bat | 雷鸟 | Eudora |Becky! |Pegasus
    IncrediMail |其它
    电子邮箱: 个人邮箱 | 企业邮箱 |Gmail
    移动电子邮件:服务器 | 客户端 | 技术前沿
    邮件网络安全:
    软件漏洞 | 安全知识 | 病毒公告 |防火墙
    攻防技术 | 病毒查杀| ISA | 数字签名
    邮件营销:
    Email营销 | 网络营销 | 营销技巧 |营销案例
    邮件人才:招聘 | 职场 | 培训 | 指南 | 职场
    解决方案:
    邮件系统|反垃圾邮件 |安全 |移动电邮 |招标
    产品评测:
    邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端
    广告联系 | 合作联系 | 关于我们 | 联系我们 | 繁體中文
    版权所有:邮件技术资讯网©2003-2010 www.5dmail.net, All Rights Reserved
    www.5Dmail.net Web Team   粤ICP备05009143号