当前位置: 首页 > 工具软件 > GNU SASL > 使用案例 >

[转] Debian+Postfix-SASL认证配置全解

宗政浩慨
2023-12-01
Debian+Postfix-SASL认证配置全解

 

目录  
所需套件  
2 Mail Relay 
简介  
 Postfix  支援  Cyrus-SASL? V2  认证:( Debian Sarge  
检测方式  

所需套件  
postfix-tls sasl2-bin libsasl2-modules 
apt-get install  postfix-tls sasl2-bin libsasl2-modules

Mail Relay 
简介  
所谓的  Mail Relay ,指的就是  Mail Server  会不会替使用者将信转寄到外部去。  

比如说,我将信寄给  [email]tetralet@pchome.com.tw[/email] ,如果  [email]tetralet@pchome.com.tw[/email]  这个信箱并不是位于本机上,那么这封信将会转给 PCHome   Mail Server ,而这个将邮件转寄的动作就是  Mail Relay  

Open Relay 
就是不设限地完全开放  Mail Relay  的功能,它会替所有的人进行邮件转寄。  

架设  Mail Server  的第一件事,就是防止不速之客利用您的  Mail Server  来乱发邮件,也就是关掉  Open Relay  这个功能。(基本上,几乎所有的  Mail Server  预设上都已把  Open Relay  给关掉了)取而代之的,是使用  SMTP  认证  (SMTP AUTH)  来验证使用者可否进行  Mail Relay  

在这里所要介绍的,是如何使用  Cyrus-SASL? V2  来实作  SMTP  认证的功能。其中的  SASL (Simple Authentication and Security Layer)  就是用来提供符合  RFC 2222  标准的各种认证机制的  Daemon  

 Postfix  支援  Cyrus-SASL? V2  认证:( Debian Sarge
修改  /etc/default/saslauthd ,设定  START=yes 
# This needs to be uncommented before saslauthd will be run automatically
START=yes

# You must specify the authentication mechanisms you wish to use.
# This defaults to "pam" for PAM support, but may also include
# "shadow" or "sasldb", like this:
# MECHANISMS="pam shadow"

MECHANISMS="pam"
修改  /etc/postfix/sasl/smtpd.conf ,设定  PostFix  使用  Saslauthd 
mkdir -p /etc/postfix/sasl
echo "pwcheck_method: saslauthd" > /etc/postfix/sasl/smtpd.conf
 postfix  加入  sasl  群组中  
addgroup postfix sasl
修改  /etc/postfix/main.cf ,使其使用  SMTP AUTH   SASL Authenticate 
(上略)

# Enable SASL Auth

设定  Postfix  使用  SASL  认证。
smtpd_sasl_auth_enable = yes

设定  SASL  支持非标准  E-mail Client  的认证动作。
broken_sasl_auth_clients = yes

不使用  ANONYMOUS  这个认证。
smtpd_sasl_security_options = noanonymous

设定  SASL  的认证方法
# permit_sasl_authenticated 
  如果客户端可通过  SASL  认证则可  Relay Mail
# permit_mynetworks 
  如果客户端的地址为  $mynetworks  则可  Relay Mail
# check_relay_domains
# reject_unauth_destination
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, check_relay_domains, reject_unauth_destination

smtpd_client_restrictions = permit_sasl_authenticated
修改  /etc/postfix/master.cf ,让  Postfix  不要以  chroot  启动。
后面的  -v  参数可以用来  Debug ,但正式上线时最好拿掉,以免系统被  Log  塞爆了。  
(上略)

# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       n       -       -       smtpd -v

(下略)
或者是新增一个  listen   smtps (port 465)  上的  service 

# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtps     inet  n       -       n       -       -       smtpd                                                     
        #  强迫  tls  联机  (?)
        -o smtpd_tls_wrappermode=yes
        #  使用  sasl auth ( 如果在  main.cf  已经设定了,这行可以省略 )
        -o smtpd_sasl_auth_enable=yes
        #  所有联机到这里的都必须通过  sasl auth
        -o smtpd_client_restrictions=permit_sasl_authenticated,reject                                              
重新启动  SASL Daemon 
/etc/init.d/saslauthd restart
跑起来后,可以用  

testsaslauthd -u username -p password
来测试  saslauthd  是否有正常运作  

重新启动  Postfix 
/etc/init.d/postfix restart
[ 编辑 ] 检测方式  
首先把账号及密码转换成  base64  的编码:(可能需要安装  libmime-base64-perl  套件)  

perl -MMIME::Base64 -e 'print encode_base64("\0username\0password");'
登入  Postfix  

$ telnet 127.0.0.1 25 (在该用户的环境变量下)
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 Virtual ESMTP Postfix (Debian/GNU)
EHLO qemu ( 这里要输入的是  HostName)
250-Virtual
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-XVERP
250 8BITMIME
auth plain AHXXXXXXXXXXXXXXXXXXXX8/ ( 刚才  perl  指令计算的结果 )
235 Authentication successful
quit
221 Bye
Connection closed by foreign host.
如果认证成功即表示  SASL  已经正确启动了。

本文转自yahoon 51CTO博客,原文链接:http://blog.51cto.com/yahoon/40091,如需转载请自行联系原作者
 类似资料: