配置Postfix支持虚拟用户
建立虚拟用户数据库
(在MySQL数据库中建立初始化数据库、表,用于保存虚拟邮件域、虚拟邮件用户的相关信息。Extman邮件管理工具套件提供了用于创建数据库和初始化数据库的sql 脚本,直接导入脚本将使配置过程变得非常简单)
启动mysql服务,并导入Extman软件包中的数据库初始化脚本
[root@mail LNS-SG7]# service mysqld restart
Shutting down MySQLSTOPPING server from pid file /usr/local/mysql/ldbank.pid
110712 05:27:22  mysqld ended
                                                          [  OK  ]
Starting MySQL                                            [  OK  ]
[1]+  Done                    mysqld_safe --user=mysql --skip-grant-tables --skip-networking  (wd: /usr/local/mysql/bin)
(wd now: ~/LNS-SG7)
[root@mail LNS-SG7]# tar zxf extman-0.2.
[root@mail LNS-SG7]# cd extman-0.2.5/docs/
[root@mail docs]# mysql -u root -p < extmail.sql
Enter password:
[root@mail docs]# mysql -u root -p < init.sql
Enter password:
[root@mail docs]#
修改Postfix的配置
    使用虚拟邮件域时,其中的邮件域名、邮件用户名、密码及邮件别名等信息都存储在MySQL数据库中。 当Postfix接收到一封新的邮件时,首先检查是不是发往本地域的邮件,如果不是则转向数据库中查询是否发往虚拟域的邮件,确认收件人是否存在、用户邮箱的位置等信息。
    为了设置postfix支持虚拟用户,只需要在main.cf文件中指定如何查询MySQL数据库即可。执行”postconf  -m | grep mysql”命令可以了解当前的postfix服务器是否支持mysql类型的查询表。如果显示结果中出现“mysql”的字样,则表示支持mysql查询表,即可修改main.cf配置文件,添加支持MySQL数据库查询的相关配置参数。
例: 修改main.cf配置文件,使Postfix服务器支持读取保存在MySQL数据库中的虚拟用户。注意要保留SMTP认证等原有配置参数,并注释掉mydestination配置行
[root@mail docs]# postconf -m | grep mysql
Mysql
[root@mail docs]# vi /etc/postfix/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
virtual_uid_maps = static:1000
virtual_gid_maps = static:1000
注:》virtual_mailbox_base:指定虚拟邮箱存储目录的路经起点
  》virtual_alias_maps:指定虚拟邮件用户对应的别名文件位置 。
  》virtual_mailbox_maps:指定记录虚拟邮箱地址与存储位置对应关系的映射文件位置。
  》virtual_mailbox_domains:设置Postfix服务器可以接收的虚拟邮件域的域名,作用类似于配置参数“mydestination”
  》virtual_uid_maps:设置所有虚拟邮件用户映射的本地用户的UID号。
  》virtual_gid_maps:设置所有虚拟邮件用户映射的本地组的GID号。
mysql配置与安装过程
    配置行中指定的三个文件名:mysql_virtual_alias_maps.cf、mysql_virtual_mailbox_maps.cf、mysql_virtual_domains_maps.cf并不包含直接可查询的数据,而只是描述如何查询mysql数据库的配置信息。
在Extman软件包中提供了上述三个文件的样例,只需将其复制到”/etc/postfix”目录中即可。
[root@mail docs]# cp mysql_virtual_* /etc/postfix/
为虚拟用户设置SMTP发信认证
    (由于虚拟邮件帐户的相关信息存储在MySQL数据库中,仅仅使用Cyrus SASL已经无法完成SMTP发信认证,这时需要结合Courier-authlib程序库才能提供对于MySQL数据库中的邮件用户的验证。
使用Courier-authlib软件的目的是因为saslauthd程序不支持数据库认证,而Courier-authlib支持多种数据库认证)
基于Cyrus-SASL和courier-authlib程序的实现:
1、编译安装courier-authlib软件包
[root@mail docs]# cd ../..
[root@mail LNS-SG7]# tar jxf courier-authlib-0.60.2.tar.bz2
[root@mail LNS-SG7]# cd courier-authlib-0.60.2
[root@mail courier-authlib-0.60.2]# ./configure --prefix=/usr/local/courier-authlib sysconfdir=/etc/ --without-stdheaderdir --with-authmysql --with-redhat --with-mysql-libs=/usr/local/mysql/lib/mysql --with-mysql-includes=/usr/local/mysql/include/mysql
注:系统中不能安装有任何MySQL的RPM程序,否则编译可能会失败,或安装后的courier-authlib不具备MySQL认证功能。
- -without-stdheaderdir 将头文件安装到一个不是默认的头文件搜索路经的目录中
》- -with-authmysql  配置支持MySQL数据库查询
》- -with-mysql-libs=/usr/local/mysql/lib/mysql  MySQL的库文件路经
》- -with-mysql-includes=/usr/local/mysql/include/mysql  MySQL的头文件路经
[root@mail courier-authlib-0.60.2]# make && make install
[root@mail courier-authlib-0.60.2]# make install-configure
注: 其中,“make install-configure” 命令将会生成默认配置文件“authmysqlrc”和“authdaemonrc”。安装编译之前确认mysql的rpm包已被卸载掉,否则容易报错“error:--with-authmysql specified but no mysqlclient.so”
2、修改courier-authlib相关配置,并启动服务
(1)将courier-authlib的库文件路经添加到系统的搜索路经中
[root@mail courier-authlib-0.60.2]# vi /etc/f
include f.d/*.conf
/usr/local/mysql/lib/mysql
/usr/local/courier-authlib/lib/courier-authlib
"/etc/f" 3L, 102C written
[root@mail courier-authlib-0.60.2]# ldconfig
(2)修改authdaemonrc主配置文件,仅保留authmysql认证方式,去掉其他方式。
[root@mail courier-authlib-0.60.2]# cd /usr/local/courier-authlib/etc/authlib/  或/
/etc/authlib
[root@mail authlib]# cp authdaemonrc authdaemonrc.bak
[root@mail authlib]# vi authdaemonrc
authmodulelist="authmysql"
authmodulelistorig="authmysql"
[root@mail authlib]# chmod -R 755 /usr/local/courier-authlib/var/spool/authdaemon/
 注意:将”authdaemon”目录的权限设置为755,否则Postfix可能会无法正确获得用户数据及密码信息。
(3)修改authmysqlrc文件,用于描述如何向MySQL数据库查询信息。
[root@mail authlib]# cp authmysqlrc authmysqlrc.bak

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。