摘要:本文在“qmail使用系统用户作为邮件账户的安装与配置”一文的基础上讨论如何通过vpopmail实现qmail邮件账户与系统账户分离,邮件账户存放在数据库文件中的解决方案。
硬件环境:HP Netserver E60 128M内存 单网卡
软件环境:redhat6.2 vpopmail4.9.4 qmail1.3 Mysql-3.23.22-beta ucspi-tcp-0.88
前言
在一台邮件服务器的上实现多个域的邮件系统是qmail用户非常关心的问题之一,为了解决这个问题,Inter7开发了遵从GPL版权的vpopmail(vchkpw)来使用户方便地在一台qmail邮件服务器上实现邮件虚拟域和非系统账号。其具有一下特点:
所有的qmail配置及数据文件都提供了具有详细说明的修改的命令。
仅仅占用一个系统账号,所有的相关进程运行在单个UID/GID之下。
支持基于named和IP的虚拟域。
安全的使用NFS之上。通过使用三级平衡树填充技术实现动态的为十个到一千万用户创建邮件目录。
根据真实世界的管理需求提供了可配置的记录功能。
支持Oracle, Sybase,
Mysql, LDAP, /etc/passwd, /etc/shadow和缺省的cdb用户认证信息存储方式。
直接传递数据到Maildir,来和qmail-pop3d, .qmail文件或其他任何Maildir程序。
不需要为虚拟域提供很多.qmail文件,每个域在vpopmail用户主目录下拥有自己的目录,每个域有独立的密码文件。
详细说明的命令程序能被用在脚本文件及远程管理。
所有的vpopmail特性的C库都有详细的说明文档。
而且提供了下面的软件包来增强qmail+vpopmail的特性:
QmailAdmin 基于web的vpopmail管理工具。
vqsignup一个基于vpopmail管理工具的cgi程序,其允许用户自己申请email账号。
Courier IMAP IMAP服务器。
SqWebMail
基于web的email客户程序。
1、Mysql的安装;
笔者使用的rpm包方式的源代码,因此首先要解开rpm包:
[root@radiusd ideal]# rpm -ivh MySQL-3.23.22-1.src.rpm
MySQL ##################################################
然后:
[root@radiusd ideal]# cd /usr/src/redhat/SOURCES/
[root@radiusd SOURCES]# ls -al
total 6432
drwxr-xr-x 2 root root 4096 Oct 29 14:07 .
drwxr-xr-x 7 root root 4096 Oct 30 2000 ..
-rw-r--r-- 1 root root 6560696 Jul 30 11:23 mysql-3.23.22-beta.tar.gz
-rw-rw-r-- 1 root root 3082 Jul 30 11:23 mysql.gif
[root@radiusd SOURCES]# tar xvgz mysql-3.23.22-beta.tar.gz
解压源代码包,就会在当前目录下生成mysql-3.23.22-beta的子目录,其中包含了mysql的源代码,然后使用下面的命令进行安装:
./configure
make
make install
scripts/mysql_install_db
就实现了Mysql数据库服务器安装,其中启动mysql服务器的命令为:
/usr/local/mysql/bin/safe_mysqld &
现在就实现了mysql数据库服务器的安装和运行,下面我们应当设立基本的用户权限信息。缺省的,mysql拥有一个缺省的具有对数据库完全访问可控制的用户,名字为root,所以首先应当为该用户添加访问密码:
[root@radiusd src]# mysql -u root mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 183 to server version: 3.23.22-beta
Type 'help' for help.
mysql
这样就进入了mysql服务器的客户程序,然后发出sql语句命令:
UPDATE user SET Password = PASSWORD ('new_password') WHERE user = 'root';
FLUSH PRIVILEGES;
这里的new_password是为mysql的root用户设立的密码。但是一般推荐再创建一个权限和root完全相同的用户,命令如下:
INSERT INTO user
VALUES ('host','user','passwd',
'y','y','y','y','y','y','y','y','y','y','y','y','y','y');
一般,mysql与icradius服务器都是运行在同一个服务器上,这时候,host为localhost,若你的icradius服务器运行在另外一台服务器上,则你需要在这里设定host为你的icradius服务器的名字。用户为你设定的用户名,密码为该用户的密码。
2、vpopmail的安装过程
1、解压软件包:
[root@www src]# tar xvfz vpopmail-4.9.4.tar.gz
2、添加必需的组和用户:
[root@www vpopmail-4.9.4]# /usr/sbin/groupadd vchkpw
[root@www vpopmail-4.9.4]# /usr/sbin/useradd -g vchkpw vpopmail
若希望将vpopmail用户的主目录存放在其他目录,则需要使用下面的命令:
[root@www vpopmail-4.9.4]# /usr/sbin/useradd -g vchkpw -d /path/to/where/you/want vpopmail
3、创建~vpopmail/etc/tcp.smtp文件
若你具有192.168.0的一个c类地址,则在该文件中应该包含内容:
127.0.0.:allow,RELAYCLIENT=""
10.1.1.:allow,RELAYCLIENT=""
:allow
若具有多个C地址,则需要在文件中分别包含对应各个C的地址的条目。
4、配置编译vpopmail:
[root@www vpopmail-4.9.4]# ./configure
[root@www vpopmail-4.9.4]# make
[root@www vpopmail-4.9.4]# make install-strip
5、支持漫游用户
若希望支持漫游用户通过邮件服务器的转发邮件(mail relay),则需要使用如下配置选项:
[root@www vpopmail-4.9.4]# ./configure --enable-roaming-users=y
设置crontab,运行:
[root@www etc]# crontab -e
添加如下内容:
40 * * * * /home/vpopmail/bin/clearopensmtp 2&1 /dev/null
支持漫游用户的原理是当某个漫游用户使用pop3取信以后,则在某断时间内允许该地址通过邮件服务器的转发信件。
6、添加虚拟域
[root@www /]# cd /home/vpopmail/bin
[root@www /]# ./vadddomain test.com
或:
[root@www /]# ./vadddomain test.com password-for-postmaster
该命令将会修改一下几个qmail的配置文件:
/var/qmail/control/locals
/var/qmail/control/rcpthosts
/var/qmail/control/morercpthosts (if rcpthosts than 50 lines)
/var/qmail/control/virtualdomains
/var/qmail/users/assign
/var/qmail/users/cdb
同时,将创建以下目录或文件:
~vpopmail/domains/test.com
~vpopmail/domains/test.com/postmaster/Maildir ...
~vpopmail/domains/test.com/vpasswd
~vpopmail/domains/test.com/vpasswd.cdb
然后需要重新启动qmail进程来更新配置:/etc/rc.d/init.d/qmailstartup restart
6、添加新的邮件POP用户
[root@www /]# cd /home/vpopmail/bin/
[root@www bin/]#./vadduser newuser@test.com
or
[root@www bin/]]#./vadduser newuser@test.com
在这种情况下,用户邮件域需要被指定test.com,这个用户被添加到
~vpopmail/domains/test.com。
7、删除邮件pop用户
[root@www bin/]]# /home/vpopmail/bin/vdeluser newuser@test.com
8、修改一个POP用户密码:
[root@www bin/]]# /home/vpopmail/bin/vpasswd newuser@test.com
9、结合vchkpw与qmail-pop3d
当使用vpopmail时,则需要将pop的运行脚本run修改为:
#!/bin/sh
exec /usr/local/bin/tcpserver -v -H -R 0 pop-3 -u vpopmail -g vchkpw /var/qmail/bin/qmail-popup domain1.com /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2
&1 |
/var/qmail/bin/splogger pop3d
注:从exec到"| "都是同一行的内容。
3、vpopmail的详细配置选项
--enable-roaming-users=n|y 当pop3认证通过以后,是否打开对该用户的邮件转发(mail relay),缺省是关闭的。
若设置该方法为yes,则当某个用户通过了pop3认证,则将其ip地址加入到允许通过该邮件服务器的进行邮件relay的列表中。一个名为clearopensmtp的cronjob程序可以用来实现在一段时间以后从允许转发邮件地址列表中将该ip地址去除。这个选项要求以-x /etc/tcp.smtp.cdb选项来使用tcpserver运行smtp服务器。
--enable-hardquota=#|n 设置或打开磁盘限额,NOQUOTA为没有限制
为没有邮件账号设置磁盘限额,缺