• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

postfix的sasl支持

发布: 2007-7-04 12:06 | 作者: admin | 来源:  网友评论 | 查看: 29次 | 进入软件测试论坛讨论

领测软件测试网
  如果您之前有看过小弟写过关于mandrake 8.1支持sasl的文章您大概会发现在Mandrake 8.2中好象不太能够执行了!我想我再一次的把这篇文章做个整理!希望可以帮助大家可以做好防止服务器被利用转寄的困扰!关于sasl 在电子邮件运行的初期,大家并没有想到电子邮件寄送上的安全考量!smtp的认证机也一直没有被建立,大家只可以使用封锁的方式!而 cyrus-sasl 的出现提供了一个更大的 "弹性" 的选择!也就是使用密码认证 , 在这之前我们必须说.sasl并不一定是一个安全的.而是提供更大的弹性!希望大家认清,功能或服务的开启是等于是开启一个危险的可能!你如果看过postfix的说明文件,第一个就会告欣你.你使用的东西并不会加强你的安全性.也希望大家可以有这样的认知.如果您只是在内部使用,而没有需要开启对外的服务,建议还是使用邮件服务器的安全防护功能就好了( 例如关闭relay )系统环境 Mandrake 9.0 相关套件 postfix cryus-sasl您可以使用控制台中的安装功能或者使用urpmi都可以套件安装小弟就不多个说明了.您可以参考下图安装.
   javascript:window.open(this.src);" style="CURSOR: pointer" onload="return imgzoom(this,550)">
  在上列的套件中包含了一些plugin及sasl系统,
  您可以依自己的需求进行安装!
  
  如何设定sasl及postfix,
  我想在 上一节中我们已经介绍过了postfix的设定了,
  这个部份我们也不再多做讲解.
  
  首先我们在/etc/postfix/main.cf中加入几行
  基本上范例如下
  # server
  smtpd_sasl_auth_enable = yes
  smtpd_sasl_local_domain = $myhostname
  smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,check_relay_domains
  #smtp_sasl_password_maps=hash:/etc/postfix/sasl_passwd
  smtpd_sasl_security_options = noanonymous
  # client
  smtp_sasl_auth_enable = yes
  
  我们一个一个来解释一下
  smtpd_sasl_auth_enable = yes
  这是激活sasl支持.如果您改成 no sasl功能也会停 止运作!
  smtpd_sasl_local_domain = $myhostname
  指 sasl 预设 domain ,如果你不使用sasldb方式管理密码的话,
  请设定 $myhostname ,(主要因为sasldb管理方式,自行可以设定. )
  
  smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_relay_domains
  指使用认证的设定(请保持上列为一行 , 没有断行)
  
  a.permit_mynetworks 允许 mynetworks (postfix设定.)
  b.permit_sasl_authenticated 允许具有 sasl 认证设定( sasldb,....)
  c.check_relay_domains 确认relay的区域 (postfix设定.)
  
  smtpd_sasl_security_options = noanonymous
  指 sasl 安全选项
  i. noanonymous 这里是允许任何非匿名认证方法。
  ii. noplaintext 指不使用 PLAIN 和 LOGIN 方式
  iii. nodictionary
  ix. noactive
  任何一项不通过信件都可能造成信件无法送出.
  
  
  另外二个
  broken_sasl_auth_clients = yes
  #client
  smtp_sasl_auth_enable = yes
  
  这二个支持client端的服务
  主要是针对客户端的连结软件个区隔,例如 outlook4大概很少人用了吧.
  所以 broken_sasl_auth_clients 就当没看到吧^ ^|||
  
  接下来我们可以试着执行postfix 确认
  #
  
  # postfix check
  #postfix reload
  
  如果没有错误讯息您的设定 就算成功了!
  接下来我们设定sasl的认证项目
  
  修改 /usr/lib/sasl/smtpd.conf
  # vi /usr/lib/sasl/smtpd.conf
  
  看起来像这样:
  pwcheck_method:sasldb
  
  
  这是指定密码认证方式,
  (主要分成四种 pam,shadow,sasldb,pwcheck)
  
  这一行设定完成后,这样您的发信服务器的
  基本认证功能大至上就完了了哦.
  附注:
  密码认证方式.
  1. pam :
  使用系统的pam来做认证,
  
  以下为旧的方式:(参考一下就好了)
  
  预设的pam 认证方式
  /usr/lib/sasl/smtp.conf
  #%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文件的内容是一致的。
  
  修改/etc/shadow文件权限
  因为PAM最终要去读取/etc/shadow文件的内容来进行用户认证,但是/etc/shadow文件
  权限是设置为只有root用户可以读写,而我们的postfix是运行在postfix用户权限之下,所以我们要合理的设置/etc/shadow文件权限,以便让pam可以读取其内容。
  执行以下命令,让root组也可以读取shadow:
  方式1 : 把postfix加入root群组
  # chmod 640 /etc/shadow
  # usermod -G root postfix
  方式2 : 给他设 644
  
  目前pam已经交由saslauthd来处理所以大至上不需要再改成644
  注意: pam 认证不支持 CRAM-MD5 只支持 LOGIN DIGEST-MD5 PLAIN
  这大概是pam本身的限制 !
  
  
  2. shadow:
  使用系统的影子文件来进行认证,
  因为要读取/etc/shadow档案(影子檔),就必须要可以读取.
  而档限就必须要修改,建议修改为 644
  
  3. pwcheck:
  pwcheck 其实是和shadow认证是相同的,
  都是要读取影子档shadow,但是pwcheck的想法,
  不需要去修改影子檔shadow 的权限.想法是:
  在开机时就把影子文件中密码读出,所以您就必须在开机的设定中加入一行
  #vi /etc/rc.local
  
  在最后加上这一行
  /usr/sbin/pwcheck
  这样您就不需要修改影子档的权限了.
  
  4.sasldb:
  使用sasl资料库存放使用者帐号.
  
  一般建议使用 sasldb来设定.
  接下来我们来讨论如何存取sasldb的数据库.
  在安装好您的cyrus-sasl之后,程序提供了二个语法
  
  1.sasldblistusers (列出sasl使用者及密码设定)
  2.saslpasswd (设定使用者密码)
  小弟不针对语法进行说明,只进行实例操作.
  请自行参照man
  
  我们先试着设定一个帐号
  新增语法
  #saslpasswd -a smtpd -c [帐号]
  新增一个帐号为test
  #saslpasswd -a smtpd -c test
  Password:[输入密码 test]
  Again (for verification): [再输入一次 密码 test]
  
  
  这样就完成了一个新增使用者的动作了,
  帐号为 : test
  密码为 : test
  
  再来我们试着用 sasldblistusers 查看使用者是否有新增.
  
  #sasldblistusers
  user: test realm: www.php5.idv.tw mech: PLAIN
  user: test realm: www.php5.idv.tw mech: CRAM-MD5
  user: test realm: www.php5.idv.tw mech: DIGEST-MD5
  
  列出了三个都是 test 帐号 , 这三个是密码格式.
  为什么有三个呢 ? 这要看您所安装的plugin而定,
  libsasl7-plug-crammd5-1.5.27-2.1mdk.i586.rpm
  libsasl7-plug-digestmd5-1.5.27-2.1mdk.i586.rpm
  libsasl7-plug-plain-1.5.27-2.1mdk.i586.rpm
  * Mandrake 8.2之后的变革
  重点来了!!!!!!
  我想大家一直很不解的是从前8.1玩到这里重启postfix就会运作了为什么8.2之后就不行了呢!
  不管如何认证都不会通过!
  
  在8.2之后的Postfix 做了一个改变在 master.cf 他使用了 software chroot 来增加系统的安全性!
  刻意的让 mail server在运作时和档案系统分开. 使用saslauthd来中介取得认证!
  而造成我们所设定的sasldb无法存在正确路径!
  解决方法:
  1.关闭software chroot
  2.把相关档案copy到目录中
  
  我想二个方法各有益毙
  解法一: 修改 /etc/postfix/master.cf 关闭software chroot
  范例如下:
  
  # ==========================================================================
  # service typeprivateunprivchrootwakeupmaxproccommand + args
  # (yes)(yes)(yes)(never)(50)
  # ==========================================================================
  smtpinetn-n--smtpd
  #smtps inetn-n--smtpd
  # -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
  #submissioninetn-n--smtpd
  # -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes
  #628 inetn-y--qmqpd
  pickupfifon-y601pickup
  cleanupunixn-y-0cleanup
  #qmgr fifon-y3001qmgr
  qmgrfifon-y3001nqmgr
  #tlsmgr fifo--y3001tlsmgr
  rewriteunix--y--trivial-rewrite
  bounceunix--y-0bounce
  deferunix--y-0bounce
  flushunixn-y1000?0flush
  smtpunix--y--smtp
  showqunixn-y--showq
  errorunix--y--error
  local unix-nn--local
  virtualunix-ny--virtual
  lmtpunix--y--lmtp
  #
  # Interfaces to non-Postfix software. Be sure to examine the manual
  # pages of the non-Postfix software to find out what options it wants.
  # The Cyrus deliver program has changed incompatibly.
  #
  cyrus unix-nn--pipe
   flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
  uucp unix-nn--pipe
   flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
  ifmail  unix -    n    n    -    -    pipe
   flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
  bsmtp   unix -    n    n    -    -    pipe
   flags=Fq. user=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
  
  
  
  解决法二 :
  把 /usr/lib/sasl及/var/lib/sasl
  copy到 /var/spool/postfix的相对目录.
  运作才会正常
  
  我想应该还有更好的解决方案...
  还要再问问作者 啰!!
  
  接下来我们只要重新激活我们的 postfix
  帐号就可以生效了.
  
  # service postfix restart
  
  
  ok 测试一下 
  首先开启您的Outlook Express 或者使用 Evolution
  
  接下来寄出您的信件.您应该会看到密码输入格:
  输入之后信件就会写到您的邮件箱中了!
  不过寄出与否必须要看您的postfix设定.
  您必须开放更大的限制交由sasl来管理.
  
  如果您有任何的问题可以到讨论区
  
  
  
  
  
  
  

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网