服务器今日报价
·20万条报价,5万多款产品!
·注册淘宝会员购买便宜服务器

·北京 ·上海 ·广州
·杭州 ·深圳 ·合肥
·天津 ·西安 ·宁波
·南京 ·重庆 ·南宁

IT热点
  • 电脑硬件
  • 手机
  • MP4
  • 品牌机
  • 办公产品
  • 投影机
  • 服务器
  • 奥林巴斯
  • 尼康
  • 佳能
  • 阿尔卡特
  • 索尼
  • 微星
  • 七彩虹
  • 笔记本
  • 数码相机
  • 数码摄像机
  • 惠普
  • 戴尔
  • 联想
  • 诺基亚
  • 摩托罗拉
  • 索尼爱立信
  • LG
  • 西门子
  • 飞利浦
  • 华硕
  • 硕泰克
  • 首页 >> 服务器 >> 服务器教程指导
    在postfix中实现基于cyrus-sasl的SMTP认证 [服务器教程指导]
    2006-2-27 16:43:00 文/
      概述:

      全世界范围内的SMTP服务器与日俱增,但是这些SMTP服务器都有一个与生俱来的缺点,那就是没有任何的认证机制。因为在设计这些SMTP服务器时,全世界范围的Internet主机还不是很多,彼此间都有很高的可信任级别,所以没有全面考虑安全性问题。这种现象也可以在别的Internet协议中看到。

      正是因为SMTP通讯过程缺乏认证机制,以及ip欺骗的容易实现,导致了以下两个方面的问题:SMTP服务器无法确认SMTP客户机的合法性;SMTP客户机也无法确认SMTP服务器的合法性。从而也就导致了用户可以不经过认证就发送邮件,用户可以冒名发送邮件,以及垃圾邮件的泛滥。

      Postfix设置了好多选项让网络管理员来限制服务器资源的使用,以及确定用户的合法性。但遗憾的是,这些认证机制都是基于ip地址或者客户DNS信息。在客户ip地址固定的情况下,这些方法或许有一定的作用(虽然还是无法解决冒名发送邮件),但是在客户ip地址不固定的情况下,就很难通过这种机制来进行限制了。当然,现在也有一些其他的技术,比如POP-before-SMTP(在发信前收信)来解决这个问题,但是这需要运行额外的服务程序。并且用户在发行之前一定要先收信,这或多或少都会带来一些不方便。

      好在有简单认证安全层(SASL),它提供了模块化的SMTP认证扩展,因此SMTP就可以在SASL之上构建自己的SMTP认证,因为可以通过开放式的机制和协议来建立认证会话。另外,SASL在实现了对PLAIN以及CRAM-MD5加密等协议的基础上,还提供了多种认证方法,比如通过Kerberos、用户数据库、passwd文件、PAM等。这样,SMTP程序不需要支持这些认证方法就可以实现多种认证方式。并且,SMTP在用户经过成功认证以后同样可以定义自己的访问策略来对用户访问进行控制。

      当然,首先我们必须保证该SMTP服务器能够提供对SASL的支持:P)

      需求:

      首先要保证您的postfix版本是snapshot-20000507及其以上的版本,从而保证postfix对SASL的支持。强烈建议您升级至postfix-20010228及其以上版本。可以从www.postfix.org下载postfix的源代码包,在测试过程中我们使用的是postfix-20010228-pl04.tar.gz。

      然后,要保证您的SASL的版本是1.5.5及其以上版本,因为已经有报告称这些版本的SASL可以和postfix工作得很好。可以从ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/下载SASL,在测试过程中我们使用的是cyrus-sasl-1.5.24-17.rpm和cyrus-sasl-devel-1.5.24-17.rpm,即RedHat7.1自带的SASL的rpm包。

      另外说明一点,整个测试过程都是在RedHat7.1中进行的。

      步骤:

      1.检查系统中是否安装了cyrus-sasl-1.5.24

      执行以下命令查看系统中是否安装了cyrus-sasl:

      rpm –qa |grep cyurs

      如果您看到以下提示,则说明已经安装了cyrus-sasl-1.5.24-17和cyrus-sasl-devel-1.5.24-17:

      [root@test bye2000]# rpm -qa |grep sasl
      cyrus-sasl-devel-1.5.24-17
      cyrus-sasl-1.5.24-17

      否则,请用rpm –ivh 命令先安装所需sasl-cyrus包。

      2.编译postfix

      首先,下载postfix-20010228-pl04.tar.gz,然后解开源代码包:

      [root@test /tmp]# tar xvzf postfix-20010228-pl04.tar.gz

      命令执行完后,会生成postfix-20010228-pl04目录,然后进入该目录:

      [root@test /tmp]# cd postfix-20010228-pl04

      接下来,依次执行以下命令编译postfix:

      [root@test postfix-20010228-pl04]# make tidy
      [root@test postfix-20010228-pl04]#make makefiles CCARGS='-DUSE_SASL_AUTH -I/usr/include' AUXLIBS='-L/usr/lib -lsasl'
      [root@test postfix-20010228-pl04]# make

      建立一个新用户“postfix”,该用户必须具有唯一的用户id和组id号,同时应该让该用户不能登录到系统,也即不为该用户指定可执行的登录外壳程序和可用的用户宿主目录。我们可以先用adduser postfix 添加用户再编辑/etc/passwd文件中的相关条目如下所示:

      postfix:*:12345:12345:postfix:/no/where:/no/shell

      最后执行安装脚本安装postfix

      [root@test postfix-20010228-pl04]# ./INSTALL.sh

      对于安装脚本的问题,可以统统回车确定。

      3.配置postfix

      安装完postfix后,就可以编辑/etc/postfix/main.cf文件来配置postfix了,关于如何配置
      postfix,可以参考本站解决方案中的相关文章来获取更多的信息。

      唯一需要补充的是,为了告诉postfix采用sasl来进行SMTP的用户认证,我们必须在/etc/postfix/main.cf文件的最后添加以下几行:

      smtpd_sasl_auth_enable = yes
      smtpd_recipient_restrictions = permit_sasl_authenticated permit_auth_destination reject
      broken_sasl_auth_clients = yes
      smtpd_sasl_security_options = noanonymous

       说明如下:

      smtpd_sasl_auth_enable:告诉SMTP客户,该SMTP服务器需要进行用户认证。

      smtpd_recipient_restrictions = permit_sasl_authenticated permit_auth_destination

      reject:仅仅中继通过SMTP认证的客户端邮件,以及接收本postfix为最后一站的邮件。

      broken_sasl_auth_clients = yes:有一些Microsoft 的SMTP客户端,比如Outlook Express 4.X采用的是非标准的SMTP认证协议,将该选项设置为yes可以解决这类不兼容问题。

      smtpd_sasl_security_options = noanonymous:控制本地SMTP认证所采用的机制,这里是允许任何非匿名认证方法。

      4.配置SASL

      进入/usr/lib/sasl/目录,用touch新建这样一个文件:

      [root@test sasl]# touch smtpd.conf

      在该文件中加入以下内容:

      [root@test sasl]# more smtpd.conf
      pwcheck_method:pam

      也就是指定通过PAM来进行用户认证。

      5.配置PAM

      进入/etc/pam.d/目录,用touch新建这样一个文件:

      [root@test pam.d]# touch smtp

      在该文件中加入如下内容:

      [root@test pam.d]# more smtp
      #%PAM-1.0
      auth required /lib/security/pam_stack.so service=system-auth
      account required /lib/security/pam_stack.so service=system-auth

      也即和/etc/pam.d/pop文件的内容是一致的。

      6.修改/etc/shadow文件权限

      因为PAM最终要去读取/etc/shadow文件的内容来进行用户认证,但是/etc/shadow文件
      权限是设置为只有root用户可以读写,而我们的postfix是运行在postfix用户权限之下,所以我们要合理的设置/etc/shadow文件权限,以便让pam可以读取其内容。

      执行以下命令,让root组也可以读取shadow:

      [root@test /etc]# chmod 640 /etc/shadow

      然后再将postfix用户加入root组,采用以下命令:

      [root@test /etc]# usermod -G root postfix

      7.启动postfix

      执行

      [root@test /etc]# postfix start

      这样,一个支持SMTP认证的postfix就开始工作了。


    ·IT产品报价大全
    更多相关: 服务器 手机
    在百度中更多内容: 服务器 手机



    ·诺基亚手机常用技巧完全手册
    ·摄影精品:中国最美的十大瀑布
    ·05年台湾电子营收五哥排名落定
    ·个人网站的五个发展阶段!
    ·老鸟谈数码相机,你会选择谁?
    ·办公族防衰老锦囊 懒人清理术
    ·日出日落拍摄技巧之三好法则
    ·真实拍摄假尼姑的变身术(图)
    ·女人故事:一个肯背你上楼的男人
    ·成都第一美女 回头率1000%辣妹
    ·钟丽缇大扮妖妇 FIFA小姐写真
    ·女人最消魂部位 让你放弃抵抗

    打印此页 投稿与建议 返回顶部

    相关文章