[ZT]postfix+ldap+sasl2+courier-imap for freebsd

本文详细介绍了如何在FREEBSD系统上,通过Port安装和配置Postfix、LDAP、SASL2以及Courier-IMAP,构建一个高效的大容量邮件系统。过程包括了每个组件的安装、配置以及OpenLDAP的设置,适合初学者了解邮件系统的构建原理。
摘要由CSDN通过智能技术生成
postfix+ldap+sasl2+courier-imap for freebsd完全ports

From: http://blog.chinaunix.net/u/7872/showart_31573.html
作者:柯贵中
网站:www.chinake.com
QQ:93606088
邮箱:chaohucity@hotmail.com

为什么使用FREEBSD?因为它有PORTS,有什么好处,就是你安装软件时就不用再考虑软件的依赖关系,它自己会添加的。这一点就足以位列所有的UNIX,包括类UNIX之首!!!!!
本 文力求使用最简单的方法,构建出高效的大容量的邮件系统。本次实践过程中得到了hefish的鼓励和帮助,基本过程是hefish的KUNMAIL系统地 freebsd上的一次试验。由于新版openldap对某些字段定义的变化,kunmail.schema需要作一些变动,liut对此作些改动 mail.schema,同时也使用了陈景峰的postfix.schema。其实直接使用qmail.schema就挺好。

本文旨在帮助初学者,通过基本的架设过程,理解mail系统的基本原理,所以构建的系统也是最基本的,病毒防护和垃圾过滤网上的参照文件很多,就不写了。
本文假设你对类UNIX有一定的了解,最好是架设或使用过邮件系统。本文的重点在openldap,如果你想使用mysql,请参照我的另一篇文章。
本 次试验在freebsd4.10下和freebsd5.4下成功通过。SASL2认证采用courier的AUTHDAEMOND认证,认证方式简单高 效,只要courier认证通过,postfix认证肯定能通过。与postfix+mysql相比,只是数据库更改了,便于使用现有的经验来架设新的系 统。
暂时只使用PLAIN LOGIN,大多数电信都是这两种,对于openldap来说,这种认证方式并不比其自已本身的认证更好(openldap原文),但与sasl2结合,可以有更高的、更安全的认证方式。
参考文章:
1、http://kunmail.cz8.net/
2、http://www.huihoo.com/internet/postfix/pis/book1.html


第一章   系统准备


如果你能够安装基本系统,可以跳过本章。本文未特别申明的,一律是以root身份操作。

freebsd5.4安装
选择最小化安装,配置好网络,添加perl5.8软件包。
在本例中,机器名:mail.chinake.com
域名:chinake.com
默认网关:192.168.0.1
IP地址:192.168.0.66

1、cvsup安装
由于5.4将不少软件包放在第二张盘上,所以只有通过网络安装了。
设计pkg_add环境变量,使它使用国内的服务器,freebsd默认的shell是csh。
bash shell
#export PACKAGEROOT="ftp://ftp.freebsdchina.org"
csh shell
#setenv PACKAGEROOT "ftp://ftp.freebsdchina.org"
#pkg_add -r cvsup-without-gui

2、设计/etc/make.conf
添加
MASTER_SITE_OVERRIDE=ftp://ftp.freebsdchina.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}

3、更新ports树
#/usr/local/bin/cvsup -g -L 2 -h
ftp.freebsdchina.org /usr/share/examples/cvsup/ports-supfile ;

第二章  邮件系统软件的安装

1、安装openssl
#cd /usr/ports/security/openssl; make install clean

2 安装apache
#cd /usr/ports/www/apache13-modssl;make install clean
支持https连接,web服务路径为:/usr/local/www/data/。也可以选择apache2。
#ee /etc/rc.conf;加入:apache_enable="YES"

3 安装php4
#cd /usr/ports/lang/php4;make install clean
#cp /usr/local/etc/php.ini.dist /usr/local/etc/php.ini
#ee /usr/local/etc/apache/httpd.conf
在最后加入:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

4 安装expect
#cd /usr/ports/lang/expect
#make install clean

5 安装SASL2
cd /usr/ports/security/cyrus-sasl2;make install WITH_AUTHDAEMON=yes clean;
或者使用:make -DWITH_AUTHDAEMOND install clean
#ln -s /usr/local/lib/sasl2 /usr/lib/sasl2;
下面的这个smtpd.conf就是postfix调用的,很简单吧。
#ee /usr/local/lib/sasl2/smtpd.conf ;
pwcheck_method: authdaemond
log_level: 3
mech_list: PLAIN LOGIN
authdaemond_path:/var/run/authdaemond/socket

6 安装courier-imap
#cd /usr/ports/mail/courier-imap
#make install clean
选择添加:[auth_ldap],[openssl],[gdbm]如果没有做,可以make config,进行重新选择。
然后编辑/etc/rc.conf;增加courier_authdaemond_enable="YES"自启动,并启动:
#/usr/local/etc/rc.d/courier_authdaemond.sh start。
此时会在/var/run/authdaemond/下产生socket。
chmod +x /var/run/authdaemond;
给sasl可执行权限。

我们这里是使用authdaemond认证,不使用pam认证,所以以下的不需要做:
In case you use authpam, you should put the following lines
in your /etc/pam.d/imap
auth    required    pam_unix.so         try_first_pass
account required    pam_unix.so         try_first_pass
session required    pam_permit.so
至此,认证部分基本完成。

7、openldap安装
#cd /usr/ports/net/openldap22-server;
#make WITH_SASL=yes install clean;
#ee /etc/rc.conf;
添加:
slapd_flags='-h "ldapi://%2fvar%2frun%2fopenldap%2fldapi/
ldap://0.0.0.0/"'
slapd_sockets="/var/run/openldap/ldapi"
我们来启动它:
#/usr/local/etc/rc.d/slapd.sh start

8、 安装POSTFIX
3.3.1 cd /usr/ports/mail/postfix
安装时选中[sasl2]+[tls]+[ldap]+[vda]+[test]。
make install clean
在安装快结束时会提示两个问题,分别是加入用户组和修改mailer.conf。全部回答为y。
#echo ‘postfix: root’ >> /etc/aliases
#/usr/local/bin/newaliases
#chown postfix:postfix /etc/opiekeys
替换并停止sendmail
#ee /etc/rc.conf;
修改sendmail_enable=’NONE’
建立启动链接:
#cd /usr/local/etc/rc.d/;
#ln –s /usr/local/sbin/postfix postfix.sh
创建/etc/periodic.conf
#ee /etc/periodic.conf
daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"

9、phpldapadmin安装
强烈建议安装此程序,这是一个web界面的openldap的管理程序,对于理解和运用openldap大有帮助,我们可以把它看作是mysql的phpmyadmin一样。
#cd /usr/ports/net/phpldapadmin/
#ee Makefile,修改 www/为www/data/
#make install clean;

phpldapadmin的配置,与phpmyadmin基本上一样,无非就是用户名、密码等。
#ee /usr/local/www/data/phpldapadmin/config.php;
$blowfish_secret = 'mytestopenldap'; //随机加密码字符串,默认是空,使用cooki认证时必须要填,内容随便。
$servers[$i]['name'] = 'My LDAP Server'; //名称,随便。
$servers[$i]['host'] = '192.168.0.66'; //主机IP
$servers[$i]['base'] = 'dc=chinake,dc=com'; //与slapd.conf保持一致。下面有讲到。
$servers[$i]['port'] = 389; //默认端口号。
$servers[$i]['auth_type'] = 'cookie'; //进入模式,开始的时候可以使用config(默认值)
$servers[$i]['login_dn'] = 'cn=chaohu,dc=chinake,dc=com' //与slapd.conf的rootdn保持一致。
$servers[$i]['login_pass'] = 'chaohu'; //rootdn的密码。使用cookie时,不需要。
$language = 'zh-tw'; //语言,默认为 auto乱码,设为zh-cn也乱码,所以使用繁体的或en。


第三章 openldap的配置

1、关于schema
一个schema就是一张字段和字段关系的定义表(与mysql的数据库相比)。postfix和courier需要查找的基本字段是用户名(用户邮件地址)、密码(postfix不需要)、用户邮件的存储目录。
①kunmail.schema基本字段:
kunmailuser:  userName - 邮件系统用户名 (是完整的用户名,包括@后面的部分)
userHome - 用户的home目录
userMaildir - 用户的maildir (一般为 userHome + “/Maildir/”)
userClearpw - 用户密码 (明码)
②postfix.schema基本字段:
postfixAccount:mail – 用户邮件地址
mailbox - 用户的maildir
clearPassword - 用户密码
homeDirectory -用户的home目录
③mail.schema基本字段:
mailUser:  mail – 用户邮件地址
userPassword - 用户密码
homeDirectory -用户的home目录
mailMessageStore - 用户的maildir
④qmail.schema基本字段:
qmailUser: mail – 用户邮件地址
mailMessageStore - 用户的maildir
homeDirectory -用户的home目录
userPassword - 用户密码
注意:用户的home目录+用户的maildir要构成一个邮件用户完整的绝对路径。本文使用mail.schema进行讲解。(几个schema文件附后)

2、关于slapd.conf
这是openldap主要配置文件,这个文件可以分成三个部分来理解:
第 一部分:载入schema文件,主要是装载所有字段定义和属性。其依赖关系可以这样理解:如某个schema文件中未定义mailhost这个字段,而其 属性值里引用了这个字段,则定义了mailhost这个字段的schema必须先载入。我们先将mail.schema放到/usr/local/etc /openldap/schema/下,必须要先放。
根据其依赖关系我们加入了几个schema文件:
include         /usr/local/etc/openldap/schema/core.schema
include         /usr/local/etc/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值