http://www.chinaunix.net 作者:
peng
5.1目的
本文重点讨论vpopmail和qmailadmin的配置和应用,通过vpopmail和qmailadmin,来对用户进行设置和管理。
5.2 vpopmail功能简介
在一台邮件服务器的上实现多个域的邮件系统是qmail用户非常关心的问题之一,为了解决这个问题,Inter7开发了遵从GPL版权的vpopmail(vchkpw)来使用户方便地在一台qmail邮件服务器上实现邮件虚拟域和非系统账号。其具有一下特点:
1、 所有的qmail配置及数据文件都提供了具有详细说明的修改的命令。
2、 仅仅占用一个系统账号,所有的相关进程运行在单个UID/GID之下。
3、 支持基于named和IP的虚拟域。安全的使用NFS之上。
4、 通过使用三级平衡树填充技术实现动态的为十个到一千万用户创建邮件目录。
5、 根据真实世界的管理需求提供了可配置的记录功能。
6、 支持Oracle, Sybase, Mysql, LDAP, /etc/passwd, /etc/shadow和缺省的cdb用户认证信息存储方式。
7、 直接传递数据到Maildir,来和qmail-pop3d, .qmail文件或其他任何Maildir程序。不需要为虚拟域提供很多.qmail文件,每个域在vpopmail用户主目录下拥有自己的目录。每个域有独立的密码文件。
8、 详细说明的命令程序能被用在脚本文件及远程管理。所有的vpopmail特性的C库都有详细的说明文档。
而且提供了下面的软件包来增强qmail+vpopmail的特性:
1、 QmailAdmin 基于web的vpopmail管理工具。
2、 vqsignup一个基于vpopmail管理工具的cgi程序,其允许用户自己申请email账号。
3、 Courier IMAP IMAP服务器。
4、 qWebMail 基于web的email客户程序。
5.3 vpopmail的安装设置
我在安装vpopmail的时候,设置了以下选项:
# ./configure
--enable-default-domain=chinaunix.net
--enable-passwd=n /
--enable-tcprules-prog=/usr/local/bin/tcprules /
--enable-ip-alias-dmains=n /
--enable-hardquota=10500000 /
--enable-sqwebmail-pass=y /
--enable-roaming-users=y /
--enable-mysql=y /
--enable-indir=/usr/include/mysql /
--enable-libdir=/usr/lib/mysql
其中的详细意思是:
--enable-default-domain=chinaunix.net 设定缺省域名为chinaunix.net
推荐将所有的域都设置为虚拟域,并且挑选一个作为缺省域。对于缺省域的用户,其通过接收邮件时,只需要在用户名中设置其邮件用户名即可,而对于其他非缺省用户,则需要将用户名设置为 peng@chinaunix.net的格式才能通过pop3收取信件。
--enable-passwd=n
允许或禁止/etc/passwd(或shadow)认证。覆盖自动配置,缺省的配置程序将自动检测
系统是使用passwd或shadow密码,通过设置该选项为no,可以禁止所有的/etc/passwd账号认证。也可以说,是禁止系统用户为邮件用户。
--enable-tcprules-prog=/usr/local/bin/tcprules
tcprules程序的安装位置,缺省为/usr/local/bin
--enable-ip-alias-dmains=n
允许通过反向解析来查看虚拟域。缺省情况下,每个域使用基于虚拟域的名字,也就是用户必须在pop3用户名中提供相应的域信息,也就是peng@chinaunix.net。当然也可以使用enable-default-domain配置选项来覆盖该要求。Vpopmail同样支持基于IP地址的虚拟域,若该选项打开则用户不需要在pop3用户名中提供@<virtualdomain>,vpopmail自动对该用户连接的服务器IP地址进行反向解析,若解析得到一个域名,则vpopmail使用该名字作为域,例如:IP:x.x.x.x对应域名test.com,用户设置pop3服务器的IP地址进行反向DNS查询,得到test.com域名,用户使用test作为用户名,vpopmail使用test.com。在这里,我们禁止反向解析来查看虚拟域。
--enable-hardquota=10500000
若磁盘限额超出,将拒绝接受该用户的新邮件,并返回一封拒绝信息邮件,其中的信息可以定制。
--enable-sqwebmail-pass=y
支持sqwebmail的认证,为了以后也可能用sqwebmail,我选了yes。
--enable-roaming-users=y
当pop3认证通过后,是否打开对该用户的邮件转发(mail relay),缺省是关闭的。若设置该选项为y,当某个用户通过了pop3认证,则将其IP地址加入许可通过该邮件服务器进行relay的列表中。一个名为clearopensmtp的cronjob程序可以用来实现在这一段时间以后从允许转发邮件地址列表中将该IP地址清除。这个选项要求以-x /etc/tcp.smtp.cdb选项来使用tcpserver运行smtp服务器。
--enable-mysql=y
使用mysql,缺省是no.允许通过将账号存放在mysql数据库中来认证用户。
--enable-indir=/usr/include/mysql
sql头文件的目录。
--enable-libdir=/usr/lib/mysql
库文件libmysqlclient.a的目录。
vpopmail还有其他的很多选想,这里就不介绍了,大家可以通过./configure –help察看,也可以看install and readme文件。大家也可以通过man 来察看。
5.4 vpopmail使用
vpopmail的功能命令都放在了/home/vpopmail/bin的目录下,我们在这里介绍一下:
vadddomain chinaunix.net
-----添加一个虚拟域
vadduser peng@chinaunix.net
添加一个某个域的用户
clearopensmtp
从ip地址认证表中清除过期的ip地址。但你在configure中设置--enable-roaming-users=y时,当某个用户通过了pop3认证,则将其IP地址加入许可通过该邮件服务器进行relay的列表中。clearopensmtp的cronjob程序就是用来实现在这一段时间以后从允许转发邮件地址列表中将该IP地址清除。每一个ip添加进来,都会被加上一个时间标签,默认是3个小时。三个小时后,被clearopensmtp清除。
Vaddaliasdomain
给一个域名设置一个别名,当你有一个域名chinaunix.net,想给这个域添加一个别名chinaunix.com,使peng@chinaunix.net和peng@chinaunix.com是一个用户,命令格式是:
#.vadddliasdomain chinaunix.com chinaunxi.net ---前面是别名,后面是已经存在的域名。
vdeldomain
删除一个域:
# vdeldomain chinaunix.com
vdeluser
删除一个用户:
#vdeluser peng@chinaunix.net
vdelolduser
删除过期的认证表中的用户,默认是3个小时。
vdominfo
先是虚拟域信息,可以看帮助:
# vdominfo –help 很简单
vpasswd
更改一个用户的密码
vuserinof
显示一个用户的信息
vsetuserquota
设置一个域或者一个用户的空间大小:
#vsetuserquota peng@chinaunix.net 10500000 ---设置这个用户的空间为10m。
#vsetuserquota chinaunix.net 10500000 ---设置这个域的所有的用户空间都为10m。
以上的都是一些常用到的命令,或者是和本系统设置有关的。还有一些命令,用户认证模式不同和由系统调用,就不介绍了。
5.5 qmailadmin的介绍
这里在vpopmail实现qmail邮件账户的数据库管理的基础上讨论如何通过qmailadmin实现对存放在数据库中的虚拟域邮件用户账号进行web管理。通过qmailadmin管理员可以通过web方式实现添加删除用户及修改用户密码等邮件用户的管理,而用户可以自行修改自己的密码。
5.6 qmailadmin的使用
1、 登陆
通过vpopmail中的vadddomain命令,我们添加了一个域,默认的系统管理用户是postmaster,密码自己设定了。在浏览器中输入:http://mail.chinaunix.net/cgi-bin/qmailadmin,出现登陆界面。其中domain name一栏要填写需要管理的虚拟域的名字,password一栏要填写该虚拟域的postmaster的password。(邮件管理员的密码,如果忘记,则需要使用/home/vpopmai/bin/vpasswd postmaster@virtualdomain.com来修改)。
2、邮件账号管理
这里很清楚了,没有什么可说的。
可以通过索引查找用户。
可以通过修改更改用户名和设立转发邮件。
通过删除用户按钮删除用户。
可以通过catchall按钮来设置一个用户,接受所有用户的信件。也可以通过最下面的选项来取消和设置远程接受邮件地址。
2、 别名设立界面
这个界面是显示当前定义的别名列表,选择"add new alias"添加别名:
这里定义peng为webmaster的别名。
3、转发管理界面
这里显示定义的所有的邮件转发列表,当选择"添加新的转发"则进入转发添加界面:
"转发的邮件地址"定义要转发的目的地址,“本地"则定义本地账号的名。
4、自动回复管理界面
该界面显示了已经定义的了的自动回复,自动回复管理界面如下:
"自动回复名字"用来指定要进行自动回复的邮件地址,"转发拷贝到邮件地址"用来定义当自动回复地址时,同时将信件转发到的邮件地址。
5、 邮件列表
邮件列表这块,我们将在以后(七)ezmlm实现邮件列表的应用和管理中讨论。
小结
通过以上功能,基本上就可以对一个邮件服务进行简单的管理了。无论是通过vpopmail的工具命令还是qmailadmin都可以完成用户的管理。添加域的时候,只能通过vpopmail的工具命令。有一点要注意,就是qmailadmin的安全性。就是防止postmaster密码的泄露。telnet or ssh方式,可以通过机器的防火墙来实现登陆ip 地址的限制。Qmailadmin建议就不要用80端口了,可以在apache中设置。最好编译apache的时候,加上通过mod_limitipconn模块来限制apache的并发连接数,可以限制多线程攻击,或通过多线程web方式穷举法来破解密码。
5.1目的
本文重点讨论vpopmail和qmailadmin的配置和应用,通过vpopmail和qmailadmin,来对用户进行设置和管理。
5.2 vpopmail功能简介
在一台邮件服务器的上实现多个域的邮件系统是qmail用户非常关心的问题之一,为了解决这个问题,Inter7开发了遵从GPL版权的vpopmail(vchkpw)来使用户方便地在一台qmail邮件服务器上实现邮件虚拟域和非系统账号。其具有一下特点:
1、 所有的qmail配置及数据文件都提供了具有详细说明的修改的命令。
2、 仅仅占用一个系统账号,所有的相关进程运行在单个UID/GID之下。
3、 支持基于named和IP的虚拟域。安全的使用NFS之上。
4、 通过使用三级平衡树填充技术实现动态的为十个到一千万用户创建邮件目录。
5、 根据真实世界的管理需求提供了可配置的记录功能。
6、 支持Oracle, Sybase, Mysql, LDAP, /etc/passwd, /etc/shadow和缺省的cdb用户认证信息存储方式。
7、 直接传递数据到Maildir,来和qmail-pop3d, .qmail文件或其他任何Maildir程序。不需要为虚拟域提供很多.qmail文件,每个域在vpopmail用户主目录下拥有自己的目录。每个域有独立的密码文件。
8、 详细说明的命令程序能被用在脚本文件及远程管理。所有的vpopmail特性的C库都有详细的说明文档。
而且提供了下面的软件包来增强qmail+vpopmail的特性:
1、 QmailAdmin 基于web的vpopmail管理工具。
2、 vqsignup一个基于vpopmail管理工具的cgi程序,其允许用户自己申请email账号。
3、 Courier IMAP IMAP服务器。
4、 qWebMail 基于web的email客户程序。
5.3 vpopmail的安装设置
我在安装vpopmail的时候,设置了以下选项:
# ./configure
--enable-default-domain=chinaunix.net
--enable-passwd=n /
--enable-tcprules-prog=/usr/local/bin/tcprules /
--enable-ip-alias-dmains=n /
--enable-hardquota=10500000 /
--enable-sqwebmail-pass=y /
--enable-roaming-users=y /
--enable-mysql=y /
--enable-indir=/usr/include/mysql /
--enable-libdir=/usr/lib/mysql
其中的详细意思是:
--enable-default-domain=chinaunix.net 设定缺省域名为chinaunix.net
推荐将所有的域都设置为虚拟域,并且挑选一个作为缺省域。对于缺省域的用户,其通过接收邮件时,只需要在用户名中设置其邮件用户名即可,而对于其他非缺省用户,则需要将用户名设置为 peng@chinaunix.net的格式才能通过pop3收取信件。
--enable-passwd=n
允许或禁止/etc/passwd(或shadow)认证。覆盖自动配置,缺省的配置程序将自动检测
系统是使用passwd或shadow密码,通过设置该选项为no,可以禁止所有的/etc/passwd账号认证。也可以说,是禁止系统用户为邮件用户。
--enable-tcprules-prog=/usr/local/bin/tcprules
tcprules程序的安装位置,缺省为/usr/local/bin
--enable-ip-alias-dmains=n
允许通过反向解析来查看虚拟域。缺省情况下,每个域使用基于虚拟域的名字,也就是用户必须在pop3用户名中提供相应的域信息,也就是peng@chinaunix.net。当然也可以使用enable-default-domain配置选项来覆盖该要求。Vpopmail同样支持基于IP地址的虚拟域,若该选项打开则用户不需要在pop3用户名中提供@<virtualdomain>,vpopmail自动对该用户连接的服务器IP地址进行反向解析,若解析得到一个域名,则vpopmail使用该名字作为域,例如:IP:x.x.x.x对应域名test.com,用户设置pop3服务器的IP地址进行反向DNS查询,得到test.com域名,用户使用test作为用户名,vpopmail使用test.com。在这里,我们禁止反向解析来查看虚拟域。
--enable-hardquota=10500000
若磁盘限额超出,将拒绝接受该用户的新邮件,并返回一封拒绝信息邮件,其中的信息可以定制。
--enable-sqwebmail-pass=y
支持sqwebmail的认证,为了以后也可能用sqwebmail,我选了yes。
--enable-roaming-users=y
当pop3认证通过后,是否打开对该用户的邮件转发(mail relay),缺省是关闭的。若设置该选项为y,当某个用户通过了pop3认证,则将其IP地址加入许可通过该邮件服务器进行relay的列表中。一个名为clearopensmtp的cronjob程序可以用来实现在这一段时间以后从允许转发邮件地址列表中将该IP地址清除。这个选项要求以-x /etc/tcp.smtp.cdb选项来使用tcpserver运行smtp服务器。
--enable-mysql=y
使用mysql,缺省是no.允许通过将账号存放在mysql数据库中来认证用户。
--enable-indir=/usr/include/mysql
sql头文件的目录。
--enable-libdir=/usr/lib/mysql
库文件libmysqlclient.a的目录。
vpopmail还有其他的很多选想,这里就不介绍了,大家可以通过./configure –help察看,也可以看install and readme文件。大家也可以通过man 来察看。
5.4 vpopmail使用
vpopmail的功能命令都放在了/home/vpopmail/bin的目录下,我们在这里介绍一下:
vadddomain chinaunix.net
-----添加一个虚拟域
vadduser peng@chinaunix.net
添加一个某个域的用户
clearopensmtp
从ip地址认证表中清除过期的ip地址。但你在configure中设置--enable-roaming-users=y时,当某个用户通过了pop3认证,则将其IP地址加入许可通过该邮件服务器进行relay的列表中。clearopensmtp的cronjob程序就是用来实现在这一段时间以后从允许转发邮件地址列表中将该IP地址清除。每一个ip添加进来,都会被加上一个时间标签,默认是3个小时。三个小时后,被clearopensmtp清除。
Vaddaliasdomain
给一个域名设置一个别名,当你有一个域名chinaunix.net,想给这个域添加一个别名chinaunix.com,使peng@chinaunix.net和peng@chinaunix.com是一个用户,命令格式是:
#.vadddliasdomain chinaunix.com chinaunxi.net ---前面是别名,后面是已经存在的域名。
vdeldomain
删除一个域:
# vdeldomain chinaunix.com
vdeluser
删除一个用户:
#vdeluser peng@chinaunix.net
vdelolduser
删除过期的认证表中的用户,默认是3个小时。
vdominfo
先是虚拟域信息,可以看帮助:
# vdominfo –help 很简单
vpasswd
更改一个用户的密码
vuserinof
显示一个用户的信息
vsetuserquota
设置一个域或者一个用户的空间大小:
#vsetuserquota peng@chinaunix.net 10500000 ---设置这个用户的空间为10m。
#vsetuserquota chinaunix.net 10500000 ---设置这个域的所有的用户空间都为10m。
以上的都是一些常用到的命令,或者是和本系统设置有关的。还有一些命令,用户认证模式不同和由系统调用,就不介绍了。
5.5 qmailadmin的介绍
这里在vpopmail实现qmail邮件账户的数据库管理的基础上讨论如何通过qmailadmin实现对存放在数据库中的虚拟域邮件用户账号进行web管理。通过qmailadmin管理员可以通过web方式实现添加删除用户及修改用户密码等邮件用户的管理,而用户可以自行修改自己的密码。
5.6 qmailadmin的使用
1、 登陆
通过vpopmail中的vadddomain命令,我们添加了一个域,默认的系统管理用户是postmaster,密码自己设定了。在浏览器中输入:http://mail.chinaunix.net/cgi-bin/qmailadmin,出现登陆界面。其中domain name一栏要填写需要管理的虚拟域的名字,password一栏要填写该虚拟域的postmaster的password。(邮件管理员的密码,如果忘记,则需要使用/home/vpopmai/bin/vpasswd postmaster@virtualdomain.com来修改)。
2、邮件账号管理
这里很清楚了,没有什么可说的。
可以通过索引查找用户。
可以通过修改更改用户名和设立转发邮件。
通过删除用户按钮删除用户。
可以通过catchall按钮来设置一个用户,接受所有用户的信件。也可以通过最下面的选项来取消和设置远程接受邮件地址。
2、 别名设立界面
这个界面是显示当前定义的别名列表,选择"add new alias"添加别名:
这里定义peng为webmaster的别名。
3、转发管理界面
这里显示定义的所有的邮件转发列表,当选择"添加新的转发"则进入转发添加界面:
"转发的邮件地址"定义要转发的目的地址,“本地"则定义本地账号的名。
4、自动回复管理界面
该界面显示了已经定义的了的自动回复,自动回复管理界面如下:
"自动回复名字"用来指定要进行自动回复的邮件地址,"转发拷贝到邮件地址"用来定义当自动回复地址时,同时将信件转发到的邮件地址。
5、 邮件列表
邮件列表这块,我们将在以后(七)ezmlm实现邮件列表的应用和管理中讨论。
小结
通过以上功能,基本上就可以对一个邮件服务进行简单的管理了。无论是通过vpopmail的工具命令还是qmailadmin都可以完成用户的管理。添加域的时候,只能通过vpopmail的工具命令。有一点要注意,就是qmailadmin的安全性。就是防止postmaster密码的泄露。telnet or ssh方式,可以通过机器的防火墙来实现登陆ip 地址的限制。Qmailadmin建议就不要用80端口了,可以在apache中设置。最好编译apache的时候,加上通过mod_limitipconn模块来限制apache的并发连接数,可以限制多线程攻击,或通过多线程web方式穷举法来破解密码。