下载中心 | 网站地图 | 站内搜索 | 加入收藏

安恒公司 / 技术文章 / 安恒公司网管员手记 / ezmlm邮件列表使用mysql方式管理帐号

2008-11-20 刘世伟  阅:    下页:
ezmlm邮件列表使用mysql方式管理帐号
以前maillist都是用的std方式,在文件中存放邮件列表成员,不很方便,为了用php统一管理数据库,对ezmlm进行了重新编译。
在debian下, 带了ezmlm的源码,和一个build-ezmlm,需要执行build-ezmlm来编译生成一个deb包,我们执行build-ezmlm第一步展开完成后
先不要编译,要修改几个地方,然后再编译,
源码在/tmp/ezmlm
我们要修改的是2个地方, 第一个是debian/rules 文件
$(MAKE) std
$(MAKE)
改成
$(MAKE) mysql
$(MAKE)
$(MAKE) ch_gb
编译mysql支持, 并使用中文

还有就是debian带的ezmlm的源码,在mysql有个bug,要修改sub_mysql/opensql.c:
--- ezmlm-0.53/sub_mysql/opensql.c.orig 2009-11-20 23:48:06.000000000 +0800
+++ ezmlm-0.53/sub_mysql/opensql.c      2009-11-20 23:48:49.000000000 +0800
@@ -92,7 +92,7 @@
     if (!*table) return ERR_NO_TABLE;
   }
   if (!psql) {
-    if (!((MYSQL *) psql = mysql_init((MYSQL *) 0)))
+    if (!(psql =(void *)mysql_init((MYSQL *) 0)))
         return ERR_NOMEM;                                      /* init */
     if (!(mysql_real_connect((MYSQL *) psql, host, user, pw, db,
        (unsigned int) port, 0, CLIENT_COMPRESS)))              /* conn */


修改完成后,执行
cd /tmp/ezmlm/ezmlm-0.53
dpkg-buildpackage -rfakeroot
完成后,在/tmp/ezmlm/会生成几个包, 源码包已经包含了我们上面的修改,可以复制备份
我们需要的程序在2进制包 ezmlm-idx_0.53-11_amd64.deb
安装:
dpkg -i /tmp/ezmlm/ezmlm-idx_0.53-11_amd64.deb


带了mysql支持的ezmlm仍然可以使用原来的std文件方式存放帐号列表,所以可以放心覆盖安装,

下面说一下怎么把这些帐号平滑移动到mysql里面,
在移动前,首先获得列表, 假设邮件列表地址是loongson@anheng.com
那么文件目录就在 /home/vpopmail/domains/anheng.com/loongson
获取列表用ezmlm-list
ezmlm-list /home/vpopmail/domains/anheng.com/loongson >/home/loongson.txt

把一个std模式的邮件列表切换到mysql方式, 需要3个修改
1.建立文件 /home/vpopmail/domains/anheng.com/loongson/sql
 内容只有一行:
 localhost:3306:user:passwd:ezmlm:loongson
2.修改/home/vpopmail/domains/anheng.com/loongson/config,在6:后面增加如下内容:localhost:3306:user:passwd:ezmlm:loongson
3.修改/home/vpopmail/domains/anheng.com/loongson/config,将X:行去掉。

修改前后比较如下:
--- /dev/null    2009-11-21 01:36:45.000000000 +0800
+++ /home/vpopmail/domains/anheng.com/loongson/config    2009-11-21 01:10:28.000000000 +0800
@@ -0,0 +1,1 @@
+localhost:3306:user:passwd:ezmlm:loongson
--- /home/vpopmail/domains/anheng.com/loongson/config.orig    2009-11-21 01:36:45.000000000 +0800
+++ /home/vpopmail/domains/anheng.com/loongson/config    2009-11-21 01:10:28.000000000 +0800
@@ -1,5 +1,4 @@
 F:-abCDEFGHIJKLmNOpqRSTuVWXYZ
-X:
 D:/home/vpopmail/domains/anheng.com.cn/loongson
 T:/home/vpopmail/domains/anheng.com.cn/.qmail-loongson
 L:net
@@ -9,7 +8,7 @@
 3:
 4:
 5:liushiwei@anheng.com.cn
-6:
+6:localhost:3306:user:passwd:ezmlm:loongson
 7:
 8:
 9:

内容解释
localhost mysql服务器地址
3306 mysql端口
user mysql帐号
passwd mysql密码
ezmlm mysql的库名
loongson 表格前缀

每个maiilist地址,需要在库中建立若干个表,其中最重要的表是loongson , 这里面放的就是成员名单。
2个字段 hash和address, address就是邮件地址,hash是一个0-50的随机数, 估计用于散列文件到不同的目录。

修改好config后,再执行ezmlm-list 会提示没有表,这时候我们要用ezmlm-mktab来建立数据库表

ezmlm-mktab用来生成建立数据库表的sql语句, 它是个bash脚本,只需要一个参数,表格前缀
生成的sql语句,我们可以直接管道到mysql命令
ezmlm-mktab loongson |mysql -u user -ppasswd ezmlm
然后再执行ezmlm-list /home/vpopmail/domains/anheng.com/loongson   结果不再提示错误,但是成员列表是空的,
我们可以使用前面备份的列表文件loongson.txt来重新加入
用vi的替换功能,在loongson.txt的每一行前面增加一些东西, 把它变成一个脚本
替换之前:
001@anheng.com
002@anheng.com
...
替换之后:
ezmlm-sub /home/vpopmail/domains/anheng.com/loongson 001@anheng.com.cn
ezmlm-sub /home/vpopmail/domains/anheng.com/loongson 002@anheng.com.cn
...
vi替换命令:[esc]:%s/^/ezmlm-sub \/home\/vpopmail\/domains\/anheng.com\/loongson/g
用替换之后的文件,执行导入
cat  /home/loongson.txt |/bin/bash


这就可以了。ezmlm已经从文件方式存储帐号,更换到数据库方式管理帐号,
使用数据方式后,可以很容易的实现php的web方式进行订阅,或者跟其他的erp等进行整合

下页:   

相关文章
qmail错误: CNAME_lookup_failed_temporarily._ #4.4.3 - 16-02-26 - 阅读: 59527
qmail-smtp增加smtp-auth认证 - 11-01-09 - 阅读: 133227
快速得到mysql的历史数据状态 - 09-01-02 - 阅读: 98926
qmail 白名单功能以及iptables防火墙联动 - 07-10-17 - 阅读: 158606
mysql的relay-bin - 07-10-16 - 阅读: 127737
mysql优化[转贴] - 07-10-02 - 阅读: 128706
mysql数据库的2次灾难恢复实战 - 07-04-14 - 阅读: 166817
debian下安装qmail+clamav+webmail - 07-04-03 - 阅读: 201811
利用内存磁盘加速mysql --安恒网管员手记 - 06-06-26 - 阅读: 232579
qmail+debian --安恒网管员手记 - 06-01-15 - 阅读: 233625
mysql 4.1+ 汉字乱码问题研究 --安恒网管员手记 - 05-09-15 - 阅读: 279896
mysql 双机热备实战 --安恒网管员手记 - 05-04-20 - 阅读: 192715
mysql的备份,备份,备份 --安恒网管员手记 - 05-01-12 - 阅读: 154780
qmail 发信进程数设置 ——邮件系统的管理 - 04-08-12 - 阅读: 174443
安恒网管员手记: vpopmail与 qmailadmin升级 - 04-08-09 - 阅读: 195882
安恒网管员手记:mysql的自动备份 - 03-11-02 - 阅读: 153996
安恒网管员手记: mysql密码忘记的修改 - 03-05-05 - 阅读: 183394
ezmlm 邮件列表程序 - 03-04-07 - 阅读: 122634
mysql双机热备份 - 03-02-12 - 阅读: 140911

Email给朋友 打印本文
版权所有·安恒公司 Copyright © 2004   gentoo.anheng.com.cn   All Rights Reserved    
北京市海淀区首体南路9号 主语国际商务中心4号楼8层 (邮编100048) 电话:010-88018877