Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

具身分认证的邮件传送系统

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

  前言

  传统的邮件传送协定 (SMTP) 并不具备使用者身认证的功能,此相当容易被有心人士滥用为广告邮件或垃圾邮件的转送点。而没有身分认证功能的邮件传送机制,也造成系统管理或是网路管理人员,处理问题邮件追踪时的困难。

  因此大多数的邮件系统都拒绝为内部可信赖区域以外的使用者转送邮件 (mail relay),但这种限制也造成了合法使用者使用上的不方便。

  例如出差或是下班回家之后,无法继续使用公司的邮件服务器发信。学生放假离开学校之后也不能使用学校的邮件主机发出信件。

  以往要解决这个问题,必须购买一些昂贵的商业邮件服务器,以便在使用者发出信件前先进行身份的认证。但是现在使用新版本的 sendmail 邮件服务软件,搭配 cyrus sasl 身分认证程序库,即可达成往日商业软件才有的身分认证功能。

  系统需求

  由 Sendmail Inc. 的免费版 (Sendmail.Org) 8.10.0 以上版本,建议采用 8.11.3 版

  由 Carnegie Mellon University 发展的 Cyrus SASL (Simple Authentication and Security Layer) 认证程序库,目前最新的版本是 1.5.24

  一个相容于 UNIX 的操作系统,需要 C 语言的编译器

  安装 Cyrus SASL 身分认证程序库

  如果先前已经安装有旧版本的 Cyrus SASL 请先移除,手动移除的方法是将 /usr/lib/sasl 以及 /usr/local/lib/sasl 删除。

  请以下列手续安装新版的 Cyrus SASL 程序库


# tar zxf cyrus-sasl-1.5.24.tar.gz
# cd cyrus-sasl-1.5.24
# sh ./configure --enable-login 
    --enable-plain
# make
# make install
# cd /usr/lib
# ln -s /usr/local/lib/sasl .
# ln -s /usr/local/lib/libsasl* .

  接下来必须设置 sendmail 的使用者身分查验方式,这边使用系统帐号与密码来做验证,必须注意的是 SYSV 与 BSD 系列操作系统设置方法不同。(两种系统都是使用 shadow 形式的系统密码)

  SYSV 系列操作系统(例如 Linux)


# cd /usr/lib/sasl/
# cat > Sendmail.conf
   pwcheck_method: shadow
   ^D
#

  BSD 系列操作系统(例如 FreeBSD)


# cd /usr/lib/sasl/
# cat > Sendmail.conf
   pwcheck_method: passwd
   ^D
#

  请特别留意 Sendmail.conf 开头的 S 字母必须为大写。

  关于 Cyrus SASL 认证程序库更详细的说明,请参阅 Cyrus SASL 的线上文件 Cyrus SASL for System Administrators.

  安装 Sendmail 邮件传送程序

  如果系统中正在执行旧版的 sendmail 请先将其停止,停止 sendmail 的方法是 killall sendmail 或是先找出 sendmail 的 pid 然后 kill pid 将其停止。

  先用 tar zxvf sendmail.8.11.3.tar.gz 将 sendmail 解开,并在其下建立 devtools/Site/site.config.mc 文件,内容如下


PREPENDDEF(`confMAPDEF', `-DMAP_REGEX')
PREPENDDEF(`confOPTIMIZE', `-O6')
PREPENDDEF(`confOPTIMIZE', `-O6')
APPENDDEF(`confENVDEF', `-DTCPWRAPPERS -DSASL')
APPENDDEF(`conf_sendmail_LIBS', `-lwrap -lsasl')
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/sasl')
APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/sasl')

  如果不需要 TCP_WRAPPER 功能,请将上列 -lwrap 以及 -DTCPWRAPPERS 删除。

  用 sh Build -c -f /FULL/PATH/devtools/Site/site.config.mc 来编译 sendmail 并且以 sh Build install 来将新版的 sendmail 安装到系统中。

  如果使用 BSD 系列的作业系统,请再加装 sendmail 内的 mail.local 套件,用来处理本机使用者的信件,方式如下


# cd obj*
# cd mail.local
# make force-install
# chown root /usr/libexec/mail.local
# chmod u+s /usr/libexec/mail.local

  接下来编辑 sendmail 设置范本文件以便产生出具有身分认证功能的 sendmail.cf 设置档,请以下列指令执行


# cd cf/cf
# cp generic-linux.mc MYCF.mc
# (BSD 系列系统请改用 generic-bsd4.4.mc)
# cd ../feature
# cat access_db.m4 >> ../cf/MYCF.mc
# cat delay_checks.m4 >> ../cf/MYCF.mc
# cat virtusertable.m4 >> ../cf/MYCF.mc
# cd ../cf
# cat >> MYCF.mc
  TRUST_AUTH_MECH(`LOGIN PLAIN')dnl
  define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl
  ^D
# sh Build MYCF.cf
# mkdir /etc/mail
# cp MYCF.cf /etc/mail/sendmail.cf
# cd /etc/mail
# cat > access
  127.0.0.1 RELAY
  (本机的IP) RELAY
  ^D
# touch virtusertable
# touch aliases

  编辑 /etc/mail 下的文件, local-host-names 里面填入 localhost 以及机器的完整名字,比如说 mailhost.mydomain.com.tw。在 relay-domains 填入本地的 domainname,例如 mydomain.com。然后将这些文件做成 sendmail 能接受的 DB 格式



 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:自己动手制作一张软盘的linux   下一篇:RPM大全

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章