如何让postfix支持cyrus-sasl认证

 我来答
huanglenzhi
推荐于2016-01-07 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517188
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部
 首先要保证您的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就开始工作了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式