在postfix中实现基于cyrus-sasl的SMTP认证

在postfix中实现基于cyrus-sasl的SMTP认证
概述:
全世界范围内的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及其以上版本。可以从[url]www.postfix.org[/url]下载postfix的源代码包,在测试过程中我们使用的是 postfix-20010228-pl04.tar.gz。
  然后,要保证您的SASL的版本是1.5.5及其以上版本,因为已经有报告称这些版本的SASL可以和postfix工作得很好。可以从[url]ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/[/url]下载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
  安装完

亮晶晶  发表于: 2009-09-29

我要回答

电子邮件地址不会被公开。 必填项已用*标注

敬请读者进行回答,本站保留删除与本问题无关和不雅内容的权力。

相关推荐