首页 | 邮件资讯 | 技术教程 | 解决方案 | 产品评测 | 邮件人才 | 邮件博客 | 邮件系统论坛 | 软件下载 | 邮件周刊 | 热点专题 | 工具
网络技术 | 操作系统 | 邮件系统 | 客户端 | 电子邮箱 | 反垃圾邮件 | 邮件安全 | 邮件营销 | 移动电邮 | 邮件软件下载 | 电子书下载

邮件服务器

技术前沿 | Qmail | IMail | MDaemon | Exchange | Domino | 其它 | Foxmail | James | Kerio | JavaMail | WinMail | Sendmail | Postfix | Winwebmail | Merak | CMailServer | 邮件与开发 | 金笛 |
首页 > 邮件服务器 > Qmail > 通过vpopmail实现qmail邮件账户的数据库管理 > 正文

通过vpopmail实现qmail邮件账户的数据库管理

出处:本站收集于网络 作者:请作者联系 时间:2004-10-8 11:20:00
摘要:本文在“qmail使用系统用户作为邮件账户的安装与配置”一文的基础上讨论如何通过vpopmail实现qmail邮件账户与系统账户分离,邮件账户存放在数据库文件中的解决方案。

硬件环境:HP Netserver E60 128M内存 单网卡

软件环境:redhat6.2 vpopmail4.9.4 qmail1.3 Mysql-3.23.22-beta ucspi-tcp-0.88

前言
1、mysql安装
2、vpopmail安装过程
3、vpopmail的详细配置选项
4、Qmail和虚拟域
5、笔者安装过程

前言
在一台邮件服务器的上实现多个域的邮件系统是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为没有限制为没有邮件账号设置磁盘限额,缺省为50M,这里=后面的数字单位为字节,也就是为了限制磁盘限额为10M就需要使用配置参数:
--enable-hardquota=10000000。
若磁盘限额超出,则将拒绝接收该用户的新邮件,并返回一封拒绝信息信件,其中的信息可以定制。
--enable-default-domain=name 设定缺省域名
推荐将所有的域都设置为虚拟域,并且挑选一个作为缺省域。对于缺省域的用户,其通过接收邮件时,只需要在用户名中设置其邮件用户名即可,而对于其他非缺省用户,则需要将用户名设置为 % 的格式才能通过pop3收取信件。
--enable-ip-alias-domains=y|n
允许通过反向解析来察看虚拟域.缺省情况下,每个域使用基于虚拟域的名字,也就是用户必需在pop用户名中提供相应的域信息,也就是 % 。
当然可以是用enable-default-domain配置选项来覆盖该要求。Vpopmail同样支持基于IP地址的虚拟域,若该选项打开则用户不需要在pop用户名中提供
% ,则vpopmai自动对用户连接的服务器的IP地址进行反向解析,若解析得到一个域名,则vpopmail使用该名字作为域,例如:
IP w.x.y.z 对应于域名test.com,用户设置pop服务器的IP地址为w.x.y.z,然后连接pop服务器,vpopmail1得到连接请求,并察看连接的服务器端的IP,然后进行反向DNS查询,得到test.com的域名,用户使用joe作为pop用户名,vpopmail使用test.com。
--enable-relay-clear-minutes=360 允许漫游用户通过邮件服务器的转发邮件的时间段。
若--enable-roamin-users=y,则该选项设置clearopensmtp应该保持该IP在允许列表中的时间,缺省是3小时。

Mysql options
--enable-mysql=n|y 使用mysql,缺省是no.允许通过将账号存放在mysql数据库中来认证用户。
  意:在配置和编译以前需要修改文件vmysql.h,正确的设置mysql服务器的name/ip, mysql用户和mysql用户密码。该用户必需要拥有创建数据库和在其中创建表格的权限。
--enable-sqlincdir= sql头文件的目录,缺省为/usr/local/mysql.
--enable-sqllibdir=/usr/lib/mysql 库文件libmysqlclient.a的目录,缺省为/usr/lib/mysql
--enable-sqllibs=mysqlclient mysql库名,缺省为libmysqlclient.a.
--enable-large-site=n|y 缺省值为no,使用该选项是为了适应大量用户的情况。
缺省的vpopmail将所有的域信息存放在同一个table-vpopmail中,这对于一般情况下具有很好的效率。但是对于大量用户的系统,则需要将该选项设置为yes。这时候,vpoomail将为每个域创建一个table。最主要的区别是域名不存放在数据库中,因为表格包含了域名。对于大于500,000+的用户,这可以节省大量的磁盘空间。但是对于有大量虚拟域的系统可能会影响mysql的性能。

Vpasswd/cdb options
--enable-ucspi-dir=dir 编译好ucspi包的目录位置
使用该目录来设定ucspi-tcp软件包的路径,缺省为../ucspi-tcp-0.84。vpopmail需要使用该目录中的头文件和两个.a文件。

Logging options
--enable-logging=e|y|n 打开(y)或关闭(n)使用syslog进行log,或e仅仅log错误信息。
设置log级别,缺省仅仅记录pop认证错误信息。
--enable-log-name=vpopmail 设置log名

User/group options
--enable-vpopuser=vpopmail
若使用其他的用户来安装该软件包,则在该选项中指定组名。
--enable-vpopgroup=vchkpw
若使用其他的组来安装该软件包,则在该选项中指定组名。
--enable-admin-email=email-address 系统管理员的电子邮件地址。

Directory and file location options
--enable-tcpserver-file=/etc/tcp.smtp tcpserver -x使用的邮件转发配置文件的存放目录,缺省为/etc
--enable-qmaildir=dir qmail的安装目录指定,缺省为/var/qmail。
--enable-tcprules-prog=/usr/local/bin/tcprules tcprules程序的安装位置,缺省为/usr/local/bin
--enable-apop-file=/etc/apop-secrets apop密钥存放目录

Other options
--enable-apop=y|n 允许或禁止apop认证,缺省是yes
--enable-passwd=y|n 允许或禁止/etc/passwd(或shadow)认证。
覆盖自动配置,缺省的配置程序将自动检测系统是使用passwd或shadow密码,通过设置该选项为no,可以禁止所有的/etc/passwd账号认证。

4、Qmail和虚拟域
Qmail对于邮件域有"local"和"virtual"的概念。local域是实现匹配/etc/passwd账号;而虚拟域则匹配于罗列在qmail的控制文件"virtualdomains"的各个域。Vpopmail则利用qmail的users/assign和virtualdomains文件。users/assign文件(该文件的含义可以参考Life with qmail中的qmail-users 3.6的说明)被编译为users/cdb的形式,它是一个哈希数据库来加快查找速度。若任意一个模式得到匹配,则qmail使用文件中定义的uid和gid传送该邮件到文件中定义的目录。Vpopmail利用该方法来实现使qmail以单一的vpopmail/vchkpw身份来传输所有的虚拟域的邮件,从而实现将邮件传输到vpopmail/domains/ 目录下的不同用户。

对于qmail来说,qmail-local程序一旦从users/assign得到相关信息,则其进行标准的.qmail文件操作。一般来说,.qmail- 文件被用来完成邮件转发、别名或调用其他程序如ezmlm等。若没有找到匹配,则qmail-local查找.qmail-default文件,这是qmail-local邮件投递机制中最后一步。 Vpopmail利用该文件来调激活vdelivermail 程序,该程序以两个参数被调用,第一个当前没有作用,主要是用作向后兼容的;第二个参数是用来在一个虚拟域用户没有被找到时的缺省投递,一般来说,缺省投递可以是将邮件投递到某个目录或某个邮件地址或返回无此用户的返回信件。

5、笔者安装过程
笔者是在安装成功了真实用户qmail系统的基础上进一步实现将账号存放在mysql数据库中。这里支持漫游用户,用户磁盘限额为10M,系统具有多个域:domain1.com和domain2.com,并且这两个域是完全等同的,即:用户一旦拥有了系统信箱,将拥同时有usr1@domain1.com和usr2@domain2.com两个地址。笔者的mysql服务器按照缺省配置已经安装成功,运行正常。并且将所有的邮件账号都放进虚拟域中,不允许通过/etc/passwd进行认证。

第一步:修改文件/usr/src/vpopmail-4.9.4/vmysql.h,修改

/* Edit to match your set up */
#define MYSQL_SERVER "localhost"
#define MYSQL_USER "root"
#define MYSQL_PASSWD "passwoerd"
/* End of setup section*/

中mysql服务器的地址,若你的mysql服务器存放在其他机器上,则将localhost修改为你的mysql服务器的ip地址;若你希望使用其他具有对数据库读写及创建库和表格的用户来访问数据库,则将root为你希望的用户名;将passwoerd修改为你的mysql数据库对应的访问密码。

拷贝//usr/local/lib/mysql下的所有内容到/lib/中

第二步:创建需要的用户和组:

/usr/sbin/groupadd vchkpw
/usr/sbin/useradd -g vchkpw vpopmail

第三步:配置编辑vpopmail:

./configure --enable-roaming-users=y --enable-hardquota=10000000
--enable-default-domain=secfocus.com --enable-mysql=y
--enable-sqlincdir=/usr/local/include/mysql/
--enable-sqllibdir=/usr/local/lib/mysql
--enable-ucspi-dir=../ucspi-tcp-0.88 --enable-passwd=n
(注:以上全为一行)
make
make install

第四步:添加虚拟域
/home/vpopmail/bin/vadddomain domain1.com
/home/vpopmail/bin/vaddaliasdomain domain2.com

第五步:添加用户
/home/vpopmail/bin/vadduser user@domain1.com

第六步:支持pop3
当使用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到“|“为一行
注:在这里笔者在dns的设置中,有如下的容:

@ IN SOA ns.domain1.com. root.ns.domian1.com. (
2000103001 ; serial
0 ; refresh
0 ; retry
0 ; expire
0 ; default_ttl
)
@ IN NS ns.domian1.com.
@ IN MX 10 mail.domian1.com.
@ IN A 210.112.11.200
..
...
mail IN A 210.112.11.200

@ IN A 210.112.11.200表示当按照一般的域名查询(非MX查询,而是A查询)domain1.com时,返回解析地址为210.112.11.200,而mail.doamin1.com也解析为210.112.11.200。,
相关文章 热门文章
  • qmail邮件系统(五)vpopmail和qmailadmin对用户的管理
  • qmail+vpopmail+squirrelmail 安装经验谈
  • 用qmail/vpopmail/courier-imap/qmail-scanner/igenus打造邮件系统
  • qmail/vpopmail虚拟邮件服务器系统配置指南
  • vpopmail与qmail联合工作的机制
  • SpamAssassin Vpopmail远程命令执行漏洞
  • vpopmail+spamassassin+clamscan
  • REDHAT + QMAIL + OPENSSL + APACHE + PHP + MYSQL + VPOPMAIL (with MySQL accounts)
  • SOLARIS+QMAIL+VPOPMAIL+IGENUS+QMAILAMDIN
  • QmailAdmin+Vpopmail+Sqwebmail+MySql的filter的配置方法
  • 如何列出vpopmail一个虚拟域下的所有用户
  • freebsd+qmail+mysql+vpopmail之完全ports安装
  • Linux邮件服务器软件比较
  • 域名和邮件服务器FAQ
  • Qmail自动安装包Qmail_setup-v1.5.3发布
  • freebsd+qmail+mysql+vpopmail之完全ports安装
  • qmail+vpopmail+MySQL+igenus+RedHat 7下建立邮件系统
  • QMAIL终极安装指南
  • 配置你的第一台e-mail服务器
  • qmail+webmail on Linux9 安装全过程
  • 分布式的Qmail邮件系统
  • qmail+vpopmail+mysql+qmailadmin+ezmlm+igenus构建企..
  • qmail+webmail on Linux9 安装全过程
  • Qmail Server Howto
  • 自由广告区
     
    最新软件下载
  • SharePoint Server 2010 部署文档
  • Exchange 2010 RTM升级至SP1 教程
  • Exchange 2010 OWA下RBAC实现的组功能...
  • Lync Server 2010 Standard Edition 标..
  • Lync Server 2010 Enterprise Edition...
  • Forefront Endpoint Protection 2010 ...
  • Lync Server 2010 Edge 服务器部署文档
  • 《Exchange 2003专家指南》
  • Mastering Hyper-V Deployment
  • Windows Server 2008 R2 Hyper-V
  • Microsoft Lync Server 2010 Unleashed
  • Windows Server 2008 R2 Unleashed
  • 今日邮件技术文章
  • 腾讯,在创新中演绎互联网“进化论”
  • 华科人 张小龙 (中国第二代程序员 QQ...
  • 微软推出新功能 提高Hotmail密码安全性
  • 快压技巧分享:秒传邮件超大附件
  • 不容忽视的邮件营销数据分析过程中的算..
  • 国内手机邮箱的现状与未来发展——访尚..
  • 易观数据:2011Q2中国手机邮箱市场收入..
  • 穿越时空的爱恋 QQ邮箱音视频及贺卡邮件
  • Hotmail新功能:“我的朋友可能被黑了”
  • 入侵邻居网络发骚扰邮件 美国男子被重..
  • 网易邮箱莫子睿:《非你莫属》招聘多过..
  • 中国电信推广189邮箱绿色账单
  • 最新专题
  • 鸟哥的Linux私房菜之Mail服务器
  • Exchange Server 2010技术专题
  • Windows 7 技术专题
  • Sendmail 邮件系统配置
  • 组建Exchange 2003邮件系统
  • Windows Server 2008 专题
  • ORF 反垃圾邮件系统
  • Exchange Server 2007 专题
  • ISA Server 2006 教程专题
  • Windows Vista 技术专题
  • “黑莓”(BlackBerry)专题
  • Apache James 专题
  • 分类导航
    邮件新闻资讯:
    IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮
    电子邮箱 | 反垃圾邮件|邮件客户端|网络安全
    行业数据 | 邮件人物 | 网站公告 | 行业法规
    网络技术:
    邮件原理 | 网络协议 | 网络管理 | 传输介质
    线路接入 | 路由接口 | 邮件存储 | 华为3Com
    CISCO技术 | 网络与服务器硬件
    操作系统:
    Windows 9X | Linux&Uinx | Windows NT
    Windows Vista | FreeBSD | 其它操作系统
    邮件服务器:
    程序与开发 | Exchange | Qmail | Postfix
    Sendmail | MDaemon | Domino | Foxmail
    KerioMail | JavaMail | Winwebmail |James
    Merak&VisNetic | CMailServer | WinMail
    金笛邮件系统 | 其它 |
    反垃圾邮件:
    综述| 客户端反垃圾邮件|服务器端反垃圾邮件
    邮件客户端软件:
    Outlook | Foxmail | DreamMail| KooMail
    The bat | 雷鸟 | Eudora |Becky! |Pegasus
    IncrediMail |其它
    电子邮箱: 个人邮箱 | 企业邮箱 |Gmail
    移动电子邮件:服务器 | 客户端 | 技术前沿
    邮件网络安全:
    软件漏洞 | 安全知识 | 病毒公告 |防火墙
    攻防技术 | 病毒查杀| ISA | 数字签名
    邮件营销:
    Email营销 | 网络营销 | 营销技巧 |营销案例
    邮件人才:招聘 | 职场 | 培训 | 指南 | 职场
    解决方案:
    邮件系统|反垃圾邮件 |安全 |移动电邮 |招标
    产品评测:
    邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端
    广告联系 | 合作联系 | 关于我们 | 联系我们 | 繁體中文
    版权所有:邮件技术资讯网©2003-2010 www.5dmail.net, All Rights Reserved
    www.5Dmail.net Web Team   粤ICP备05009143号