免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1536 | 回复: 5
打印 上一主题 下一主题

[Mail] vpopmail数据库结构的尝试分析(抛砖引玉) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-12-23 14:17 |只看该作者 |倒序浏览
环境是RH9,安装方法:照搬toaster.Mysql4.0.21.vpopmail5.4.5

在安装且仅安装vpopmail的qmail服务器的的数据库里,vpopmail库的结构是
# 数据库 :
`vpopmail`
# --------------------------------------------------------
# 表的结构 `dir_control`
#这个表是域表。
CREATE TABLE `dir_control` (
`domain` char(64) NOT NULL default '',
`cur_users` int(11) default NULL,
  `level_cur` int(11) default NULL,
  `level_max` int(11) default NULL,
  `level_start0` int(11) default NULL,
  `level_start1` int(11) default NULL,
  `level_start2` int(11) default NULL,
  `level_end0` int(11) default NULL,
  `level_end1` int(11) default NULL,
  `level_end2` int(11) default NULL,
  `level_mod0` int(11) default NULL,
    `level_mod1` int(11) default NULL,
  `level_mod2` int(11) default NULL,
  `level_index0` int(11) default NULL,
  `level_index1` int(11) default NULL,
  `level_index2` int(11) default NULL,
  `the_dir` char(160) default NULL,
  PRIMARY KEY  (`domain`)
) TYPE=MyISAM;
#cur_users是该域当前的账户数量,level_cur是当前的等级, level_max是等级最多几级?默认设置为三级,而后分别是三个等级
level_startX;level_endX;level_modX;level_indexX。还有一个the_dir.具体意思不解。
# ---------------------------------------------------
#表的结构 `lastauth`纪录登陆的纪录
#分别是登陆的用户名、所在的域、登陆的公网ip,时间戳。
CREATE TABLE `lastauth` (
  `user` char(32) NOT NULL default '',
  `domain` char(64) NOT NULL default '',
  `remote_ip` char(18) NOT NULL default '',
  `timestamp` bigint(20) NOT NULL default '0',
  PRIMARY KEY  (`user`,`domain`)
) TYPE=MyISAM;
# --------------------------------------------------------
#表的结构 `limits`这个表应该是起限制作用的,比如说限制信箱大小和附件大小。目前还是空的。
CREATE TABLE `limits` (
  `domain` char(64) NOT NULL default '',
  `maxpopaccounts` int(10) NOT NULL default '-1',
  `maxaliases` int(10) NOT NULL default '-1',
  `maxforwards` int(10) NOT NULL default '-1',
  `maxautoresponders` int(10) NOT NULL default '-1',
  `maxmailinglists` int(10) NOT NULL default '-1',
  `diskquota` int(12) NOT NULL default '0',
  `maxmsgcount` int(12) NOT NULL default '0',
  `defaultquota` int(12) NOT NULL default '0',
  `defaultmaxmsgcount` int(12) NOT NULL default '0',
  `disable_pop` tinyint(1) NOT NULL default '0',
  `disable_imap` tinyint(1) NOT NULL default '0',
  `disable_dialup` tinyint(1) NOT NULL default '0',
  `disable_passwordchanging` tinyint(1) NOT NULL default '0',
  `disable_webmail` tinyint(1) NOT NULL default '0',
  `disable_relay` tinyint(1) NOT NULL default '0',
  `disable_smtp` tinyint(1) NOT NULL default '0',
  `perm_account` tinyint(2) NOT NULL default '0',
  `perm_alias` tinyint(2) NOT NULL default '0',
  `perm_forward` tinyint(2) NOT NULL default '0',
  `perm_autoresponder` tinyint(2) NOT NULL default '0',
  `perm_maillist` tinyint(4) NOT NULL default '0',
  `perm_quota` tinyint(2) NOT NULL default '0',
  `perm_defaultquota` tinyint(2) NOT NULL default '0',
  PRIMARY KEY  (`domain`)
) TYPE=MyISAM;
# --------------------------------------------------------
#表的结构 `valias`目前该表也是空的,估计是用来做别名的。我还没没设置别名纪录,所以就是空的。
CREATE TABLE `valias` (
  `alias` varchar(32) NOT NULL default '',
  `domain` varchar(64) NOT NULL default '',
  `valias_line` text NOT NULL,
  KEY `alias` (`alias`,`domain`)
) TYPE=MyISAM;
# --------------------------------------------------------
# 表的结构 `vlog`
#所有收发信纪录。User是用户名,passwd是密码,domain 是所属的#域名。Logon是登陆时的全名(用户名+域名);remote_ip是登陆时候的公网ip,message是
vchpw-pop3(PLAIN)login success xxx@domain.com:remote_ip
而最后一列 error全是2,莫非这个是错误等级??
CREATE TABLE `vlog` (
  `id` bigint(20) NOT NULL auto_increment,
  `user` varchar(32) default NULL,
  `passwd` varchar(32) default NULL,
  `domain` varchar(64) default NULL,
  `logon` varchar(200) default NULL,
  `remoteip` varchar(18) default NULL,
  `message` varchar(255) default NULL,
  `timestamp` bigint(20) NOT NULL default '0',
  `error` int(11) default NULL,
  PRIMARY KEY  (`id`),
  KEY `user_idx` (`user`),
  KEY `domain_idx` (`domain`),
  KEY `remoteip_idx` (`remoteip`),
  KEY `error_idx` (`error`),
  KEY `message_idx` (`message`)
) TYPE=MyISAM AUTO_INCREMENT=127339 ;
# --------------------------------------------------------
# 表的结构 `vpopmail`
#这个用户名和用户域,用户密码(加密过的)pw_uid,pw_gid都是0。
Pw_gecos是和用户名一样的。Pw_dir是用户的主目录。Pw_shell的值都是NOQUOTA;而最后的pw_clear_passwd是密码的原码,最长16位,这是否就是虚拟域中用户密码的最长限制??
CREATE TABLE `vpopmail` (
  `pw_name` char(32) NOT NULL default '',
  `pw_domain` char(64) NOT NULL default '',
  `pw_passwd` char(40) default NULL,
  `pw_uid` int(11) default NULL,
  `pw_gid` int(11) default NULL,
  `pw_gecos` char(48) default NULL,
  `pw_dir` char(160) default NULL,
  `pw_shell` char(20) default NULL,
  `pw_clear_passwd` char(16) default NULL,
  PRIMARY KEY  (`pw_name`,`pw_domain`)
) TYPE=MyISAM;
当我们make install-strip时候vpopmail库内还没有任何内容,当我们添加域后,四个表生成:dir_control;lastauth;limits;vpopmail.剩下的两个valias和vlog是等有收发信件和登录的时候才生成的

论坛徽章:
0
2 [报告]
发表于 2004-12-24 11:03 |只看该作者

vpopmail数据库结构的尝试分析(抛砖引玉)

这个大麻应该分析的很清楚,呵呵。

论坛徽章:
0
3 [报告]
发表于 2004-12-24 13:29 |只看该作者

vpopmail数据库结构的尝试分析(抛砖引玉)

呵呵,老李精神可佳,你的qmail水平见长。不过你发现没有,很多问题理论和实现并不统一。不管你查资料也好,看书也好,这些仅仅是皮毛,你要真正掌握它,唯一的途径就是看源程序。要想让他更好的工作,唯有自己修改源代码。

论坛徽章:
0
4 [报告]
发表于 2004-12-24 13:37 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2004-12-24 17:48 |只看该作者

vpopmail数据库结构的尝试分析(抛砖引玉)

蔡兄过奖,也没啥可不可嘉的,我发这个帖子的目的希望给没时间研究的提供点基础知识,老手们要是看到了有心情就指点指点~~~~关于源码,我看到你发言后,急忙抱佛脚,去新解压成的vpopmail-5.4.7看了一眼,感觉只有关于vpopmail的configure参数能勉强看看,其余的~~~~难忘其项背!!
我将在今后几天将igenus的相关表结构贴上,供大家安装时候参考,好及时发现安装中的问题,毕竟不是每次都一帆风顺的。

论坛徽章:
0
6 [报告]
发表于 2004-12-24 18:10 |只看该作者

vpopmail数据库结构的尝试分析(抛砖引玉)

不错!值得嘉奖!

不过 vpopmail 的表结构定义是很混乱的,当然这中间有一个历史问题,例如 pw_shell 是用户的空间配额定义,pw_uid 定义了用户的权限,和这些字段名称“名不符实”。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP