构建postfix邮件服务器(四)配置postfix支持虚拟用户

一、准备

1.从www.extmail.org 中下载extman-1.1.tar.gz

2.从http://sourceforge.net/projects/courier/files/ 下载courier-authlib

使用Courier-authlib软件的目的是因为saslauthd程序不支持数据库认证,而Courier-authlib支持多种数据库认证

3.检查postfix是否支持虚拟用户 postconf – m | grep msyql 如果出现mysql表示支持

二、建立虚拟用户数据库

 

1启动mysql

service mysqld restart

(要想使用此方法启动,必须将mysqld添加为系统服务,见构建postfix邮件服务器(一))

 

虚拟mysql启动

2.解压 extman

tar zxvf extman-1.1.tar.gz

虚拟解压extman

3.导入extman软件包中的数据库脚本

cd extman-1.1/docs

mysql -u root -p123456 < extmail.sql

mysql -u root -p123456 < init.sql

-p后面接的是mysql的密码

(要想直接使用mysql就要输入export PATH=$PATH:/usr/local/mysql/bin)

extmail.sql 脚本进行的操作:主要针对邮件域localhost进行初始化

创建 extmail 库,及该库中的一些表

创建用户 extmail@localhost,密码为 extmail 对数据库extmail中的表拥有“SELECT”、“UPDATE”的权限

创建用户 webman@localhost,密码为 extman 对数据库extmail中的表拥有“SELECT”、“INSERT”、“DELETE”、“UPDATE”权限

init.sql脚本进行的操作:主要是建立了一个新的测试邮件域

添加虚拟邮件域 extmail.org 的记录,作为该邮件域的管理帐户

创建用户 root@extmail.org,密码为 extmail*123*

创建用户 postmaster@extmail.org,密码为 extmail

作为该邮件域内的基本邮件用户

虚拟导入脚本

三、配置虚拟用户支持postfix

1、修改main.cf文件

Vi /etc/ostfix/main.cf

#mydestination = $mydomain, $myhostname //注释这一行

添加下面的内容

virtual_mailbox_base = /mailbox

\\指定虚拟邮箱存储目录的路径起点

virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf

\\指定虚拟邮件用户对应的别名文件位置

virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf

\\指定记录虚拟邮件地址与存储位置对应关系的映射文件的位置

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf

\\设置postfix服务器可以接收的虚拟邮件域的域名,作用类似于配置参数“mydestination”

virtual_uid_maps = static:1000 \\设置所有虚拟用户映射的本地用户的UID

virtual_gid_maps = static:1000 \\设置所有虚拟用户映射的本地用户的GID

虚拟postfix配置文件

2. 建立虚拟用户映射表文件

方法:复制 extman 软件包中docs子目录下的样例文件

mysql_virtual_alias_maps.cf mysql_virtual_mailbox_maps.cf mysql_virtual_domains_maps.cf

cd extman-0.2.5/docs

cp mysql_virtual_* /etc/postfix/

虚拟postfix配置文件2

四、为虚拟用户设置SMTP发信认证

1.解压coutier-authlib-0.63.0

tar jxvf courier-authlib-0.63.0.tar.bz2

courier-authlib1

2.预配置

./configure

–prefix=/usr/local/courier-authlib \ \\安装的位置

>–without-stdheaderdir \ \\将头文件安装到一个不是默认的头文件搜索路径的目录中

>–with-authmysql \ \\配置支持MYSQ数据库查询

>–with-redhat \

>–with-mysql-libs=/usr/local/mysql/lib/mysql \ \\mysql的库文件路径

>–with-mysql-includes=/usr/local/mysql/include/mysql \\msyql 的头文件路径

courier-authlib2

3.编译,安装

make ; make install

courier-authlib3

4.生成authmysqlrc和 authdaemonrc两个文件

命令 make install-configure

 courier-authlib4

authdaemonrc:主配置,设置使用的认证方式

authmysqlrc:数据库配置,设置连接地址、查询方式等

5.将courier-authlib的库文件路径添加到系统的搜索路径中去

1) vi /etc/ld.so.conf

/usr/local/courier-authlib/lib/courier-authlib

2)更新

Ldconfig

courier-authlib5

6.修改authdaemonrc主配置文件,仅保留authmysql认证方式,去掉其他

1)进入目录

cd /usr/local/courier-authlib/etc/authlib/

2)备份

cp authdaemonrc authdaemonrc.bak

3)保留authmysql认证方式

①vi authdaemonrc

②删掉所有内容 1000dd

③添加如下两行

authmodulelist=”authmysql”

authmodulelistorig=”authmysql”

courier-authlib6

7.修改authmysqlrc文件,用于描述如何向mysql数据库查询信息

1)cd /usr/local/courier-authlib/etc/authlib/

2)备份

cp authmysqlrc authmysqlrc.bak

3)vi authmysqlrc

修改

MYSQL_SERVER localhost \\msyql数据库服务器位置

MYSQL_USERNAME extmail \\数据库管理员账号

MYSQL_PASSWORD extmail \\数据库管理员账户密码

MYSQL_SOCKET /tmp/mysql.sock \\mysql.sock文件位置

MYSQL_DATABASE extmail \\虚拟用户数据库

MYSQL_USER_TABLE mailbox \\重mailbox表中获得账户的信息

MYSQL_CRYPT_PWFIELD password \\从pssword字段获得帐户密码

MYSQL_UID_FIELD uidnumber \\从uidnumber字段获得映射的本地用户UID

MYSQL_GID_FIELD gidnumber \\从gidnumber字段获得映射的本地组GID

MYSQL_LOGIN_FIELD username \\从username字段获得帐户名称(带@后缀)

MYSQL_HOME_FIELD concat(‘/mailbox/’,homedir) \\合并出用户的宿主目录完整路径

MYSQL_NAME_FIELD name \\从name字段获得帐户名称(不带@后缀)

MYSQL_MAILDIR_FIELD concat(‘/mailbox/’,maildir) \\合并出用户的完整邮件存储路径

courier-authlib7

8.回到源码目录,复制脚本,并启动courier-authlib服务

cd /postfix-an/courier-authlib-0.63.0 \\回到源码目录

cp courier-authlib.sysvinit /etc/init.d/courier-authlib \\复制脚本到

chmod 755 /etc/init.d/courier-authlib \\给权限

chkconfig –level 35 courier-authlib on \\在35基本,开机启动

service courier-authlib start \\启动courier-authlib

courier-authlib8

9.修改cyrus sasl设置

vi /usr/lib/sasl2/smtpd.conf

pwcheck_method: authdaemond

authdaemond_path: /usr/local/courier-authlib/var/spool/authdaemon/socket

courier-authlib9

10.修改目录的权限,否则postfix无法获得用户名和密码

chmod –R 755 /usr/local/courier-authlib/var/spool/authdaemon/

courier-authlib10

五、修改Dovecot的配置

Vi /etc/dovecot.conf

1.查找mail_location 把它修改为

mail_location = maildir:/mailbox/%d/%n/Maildir

2.查找 mechanisms = plain 在下面添加以下内容

passdb sql {

args = /etc/dovecot-mysql.conf

}

userdb sql {

args = /etc/dovecot-mysql.conf

}

虚拟DO1

4.建立数据查询配置文件

Vi /etc/dovecot-mysql.conf \\建立文件,添加如下内容

driver = mysql

connect = host=localhost dbname=extmail user=extmail password=extmail

default_pass_scheme = CRYPT \\msyql数据库中存储的密码串的加密算法

password_query = SELECT username AS user,password AS password FROM mailbox WHERE username = ‘%u’ \\用于查询用户密码的SQL语句

user_query = SELECT maildir, uidnumber AS uid, gidnumber AS gid FROM mailbox WHERE username = ‘%u’ \\用于查询用户的SQL语句

虚拟DO2

上述配置可参考样例文件”etc/ dovecot-sql.conf”

5.建立虚拟用户的邮箱根目录“/mailbox”

1)mkdir -p /mailbox/extmail.org/postmaster/Maildir/

-p 表示连接新建目录

/mailbox 是邮箱存储空间的顶层目录,必须创建

/mailbox/extmail.org 目录对应虚拟邮件域 extmail.org

/mailbox/extmail.org/postmaster 目录对应邮件用户 postmaster@extmail.org

/mailbox/extmail.org/postmaster/Maildir 目录对应该用户的邮箱存储空间

2)chown -R postfix:postfix /mailbox

虚拟DO3

6.重启dovecot

/usr/local/sbin/dovecot -c /etc/dovecot.conf

六、测试虚拟用户

1. 使用 authtest 验证数据库查询,用于测试的邮箱账号用户:postmaster@extmail.org ,密码:extmail

1)命令 /usr/local/courier-authlib/sbin/authtest -s login postmaster@extmail.org extmail

2)如果出现“Authentication succeeded”表示成功

cs

2.测试对虚拟用户的smtp发信认证

出现235 Authentication Successful 表示成功

1)首先获得虚拟用户postmaster@extmail.org的用户名和密码的BASE64编码字符串

①#perl -e ‘use MIME::Base64; print encode_base64(“postmaster\@extmail.org”)’

得到cG9zdG1hc3RlckBleHRtYWlsLm9yZw==

②perl -e ‘use MIME::Base64; print encode_base64(“extmail”)’得到 ZXh0bWFpbA==

或者用命令printf “用户名或密码” | openssl base64

 

本文转自:http://blog.thematice.com  作者:稀饭的国度

posted @ 2010-07-30 16:39  Ellison Pine  阅读(3178)  评论(0编辑  收藏  举报