Ubuntu 下安装postfix 配置

官网:http://wiki.ubuntu.org.cn/Postfix
先下载官网上所需的依赖包

全部安装成功后 

/etc/postfix/main.conf 中的关于 tls的配置不要配

请按以步骤配置认证方法





Postfix 支持 sasl专用密码认证配置方法
首先科普一下sasl两种验证架构:


1、使用unix系统密码做验证密码


通常,让sasl直接使用现有的系统密码来验证用户身份是最方便的。传统的系统密码文件应该是/etc/passwd,但是讲究安全性的现代系统则比较可能使用/etc/shadow、pam或诸如此类的证书数据库。由于这类密码文件只有特权进程才能访问,而postfix却被刻意设计成避开特权身份,所 以postfix不能直接访问系统密码文件。


cyrus函数库对于这个问题的解决办法,是提供一个特殊的验证服务器程序,称为saslauthd,它能够代替postfix来取得密码数据。saslauthd daemon本身需要特权身份,不过,由于它是一个独立于postfix之外的进程,而且通常不必于外界进行网络通信,所以安全性的危害已经被降到最低。 如果你打算让sasl使用unix系统密码,你必须启动cyrus sasl包随附的saslauthd daemon。请注意,使用saslauthd来访问unix系统密码,表示你只能使用明文密码,因为asalauthd需要实际密码才能进行核验。


要让sasl知道postfix将通过saslauthd daemon来访问证书数据库,你必须将下列内容加入smtpd.conf配置文件:
pwcheck_method:  saslauthd


cyrus sasl包随附的saslauthd应该会被安装在$PATH环境变量所列的某个目录下。你必须先在后台启动saslauthd daemon,postfix才能使用它来验证客户端。当你启动saslauthd时,你必须使用-a选项指定密码系统的类型最常见的类型包括pam、 shadow或getpwent(用语传统的/etc/psswd)。举例来说,在一个使用pam的系统上,你应该使用下列命令来启动saslauthd daemon:
      # saslauthd -a pam




2、sasl专用密码(不存入数据库只存在本地) 做验证密码


如果你不想使用系统密码来验证smtp client,你刻意另外建一个无关系统密码的独立账户数据库。当你的postfix系统纯粹用于提供寄信服务,而不用于接收外来邮件,用户也不用登录服务器系统本身时,使用sasl密码可能是个好主意。请将下列内容加入你的smtpd.conf配置文件:
       pwcheck_method: auxprop


在cyrus的术语中,auxprop的意义是auxiliary property plug-ins(辅助性的专属外挂模块),其作用是使用外部程序来进行验证。默认的辅助外挂模块是sasldb(这也是cyrus sasl包随附的程序之一),它应该能满足postfix的所有需求。关键字auxprop只是要求使用外部的sasl密码文件。


使用sasl密码时,不需要用到saslauthd daemon,但是你必须将所有的smtp client账户与密码存放在一个专用的外部密码文件中。sasl默认使用的密码文件是/etc/sasldb2。postfix smtp server至少要具备能读取此文件的权限;如果你使用cyrus sasl的auto_transition功能,则postfix将需要能够写此文件的权限;如果你用不到auto_transition功能,最好不要将写权限开放给postfix。


以下方法讲的是sasl专用密码配置(不存入数据库只存在本地)方法


1.修改 /etc/postfix/master.cf 
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet           n        -        -           -              -             smtpd


把chroot 栏下 - 改为 n 
smtp      inet           n        -        n           -            -               smtpd


2. 把 /etc/sasldb2  复制到  /var/spool/postfix/etc/sasldb2
3. 新建目录 /var/spool/postfix/var/run/saslauthd
把 /var/run/saslauthd 里的文件复制到 /var/spool/postfix/var/run/saslauthd 


4. 修改 /etc/default/saslauthd,設定 START=yes
MECHANISMS="pam"
修改postfix 加载sasl验证路径
PWDIR="/var/spool/postfix/var/run/saslauthd"
PARAMS="-m ${PWDIR}"
PIDFILE="${PWDIR}/saslauthd.pid"
OPTIONS="-c -m  /var/spool/postfix/var/run/saslauthd"
5. 把 /usr/lib/sasl2/smtpd.conf 复到 /etc/postfix/sasl/smtpd.conf
文件内容如下:
pwcheck_method: auxprop
auxprop_plugin: sasldb
saslauthd_path: /var/spool/postfix/var/run/saslauthd/mux
mech_list: plain login
6. 创建 sasldb2 用户
saslpasswd2 -c username -u 域名

错误一:
查看/var/log/mail.log:
Feb 26 23:39:57 vd postfix/smtpd[2323]: warning: SASL authentication failure: cannot connect to saslauthd server: No such file or directory


postfix没有找到saslauthd的工作目录,由于postfix的工作目录默认在/var/spool/postfix/var/run/saslauthd中;而saslauthd默认的工作目录为/var/run/saslauthd中,从而导致postfix无法连接saslauthd服务。
解决方法:
1. 设置saslauthd的工作目录为/var/spool/postfix/var/run/saslauthd
2. 创建符号链接,将/var/run/saslauthd链接到/var/spool/postfix/var/run/saslauthd


错误二:
查看/var/log/mail.log:
Feb 26 23:47:23 vd postfix/smtpd[2405]: warning: SASL authentication failure: cannot connect to saslauthd server: Permission denied


文件/var/spool/postfix/var/run/saslauthd目录或者是/var/run/saslauthd目录的权限问题。
解决方法:
1、修改目录的权限
2、将postfix添加到sasl组中
若添加不了 进入 /etc/group 手动添加
mail:x:8:postfix
sasl:x:45:postfix


重启postfix
service postfix restart
重启 saslauthd
service saslauthd restart


sasl加密命令
echo -n 123456| openssl base64 -a
测试saslauthd 用户
 testsaslauthd -f /var/spool/postfix/var/run/saslauthd/mux -u username  -p password
 
 如遇到其它问题网上百度下都能找到!

你可能感兴趣的:(技术文单,ubuntu,postfix,sasl)