ezmlm-idx - MySQLでアドレス管理
MySQLに対応したezmlm-idxの構築について解説します。
MySQLに対応させることで、登録者のメールアドレスや配送ログが
データベースで管理出来ます。(メールアーカイブは、通常通りのファイル保存です。)
1つのメーリングリストに対して14テーブルが作られます。
ここでは、MySQLが既にデフォルトディレクトリにインストールされている事を前提としています。
用意するもの
ezmlm-0.53.tar.gz
ezmlm-idx-0.40.tar.gz
公式サイト
ダウンロードサイト
コンパイル&インストール
% tar zxvf ezmlm-0.53.tar.gz
% tar zxvf ezmlm-idx-0.40.tar.gz
% cp -R ezmlm-idx-0.40/* ezmlm-0.53
% cd ezmlm-0.53
% patch -p0 < idx.patch
% echo /usr/local/bin > conf-bin
% echo -I/usr/local/include/mysql > sub_mysql/conf-sqlcc
% echo -L/usr/local/lib/mysql -R/usr/local/lib/mysql -lmysqlclient -lm > sub_mysql/conf-sqlld
(Solarisのみ)% rm ezmlm-mktab checktag.c issub.c logmsg.c subscribe.c opensql.c putsubs.c tagmsg.c searchlog.c conf-sqlld conf-sqlcc
(Solarisのみ)% echo gcc -O2 > conf-cc
(Solarisのみ)% echo gcc -s > conf-ld
(Solarisのみ)% vi Makefile
--- Makefile.orig Mon Jan 13 17:15:18 2003
+++ Makefile Mon Jan 13 17:15:44 2003
@@ -1553,17 +1554,17 @@
cp -f ezmlmrc.sv ezmlmrc
mysql:
- ln -sf sub_mysql/ezmlm-mktab ezmlm-mktab
- ln -sf sub_mysql/checktag.c checktag.c; rm -f checktag.o
- ln -sf sub_mysql/issub.c issub.c; rm -f issub.o
- ln -sf sub_mysql/logmsg.c logmsg.c; rm -f logmsg.o
- ln -sf sub_mysql/subscribe.c subscribe.c; rm -f subscribe.o
- ln -sf sub_mysql/opensql.c opensql.c; rm -f opensql.o
- ln -sf sub_mysql/putsubs.c putsubs.c; rm -f putsubs.o
- ln -sf sub_mysql/tagmsg.c tagmsg.c; rm -f tagmsg.o
- ln -sf sub_mysql/searchlog.c searchlog.c; rm -f searchlog.o
- ln -sf sub_mysql/conf-sqlld conf-sqlld; touch conf-sqlld
- ln -sf sub_mysql/conf-sqlcc conf-sqlcc; touch conf-sqlcc
+ ln -s sub_mysql/ezmlm-mktab ezmlm-mktab
+ ln -s sub_mysql/checktag.c checktag.c; rm -f checktag.o
+ ln -s sub_mysql/issub.c issub.c; rm -f issub.o
+ ln -s sub_mysql/logmsg.c logmsg.c; rm -f logmsg.o
+ ln -s sub_mysql/subscribe.c subscribe.c; rm -f subscribe.o
+ ln -s sub_mysql/opensql.c opensql.c; rm -f opensql.o
+ ln -s sub_mysql/putsubs.c putsubs.c; rm -f putsubs.o
+ ln -s sub_mysql/tagmsg.c tagmsg.c; rm -f tagmsg.o
+ ln -s sub_mysql/searchlog.c searchlog.c; rm -f searchlog.o
+ ln -s sub_mysql/conf-sqlld conf-sqlld; touch conf-sqlld
+ ln -s sub_mysql/conf-sqlcc conf-sqlcc; touch conf-sqlcc
pgsql:
ln -sf sub_pgsql/ezmlm-mktab ezmlm-mktab
(Solarisのみ)% vi ezmlm-cgi.c
--- ezmlm-cgi.c.orig 2002-12-11 11:10:10.321613000 +0900
+++ ezmlm-cgi.c 2002-12-11 11:10:56.812755000 +0900
@@ -882,7 +882,7 @@
finddate(infop);
}
-void getdate(struct msginfo *infop,int flagfail)
+void ezmlmgetdate(struct msginfo *infop,int flagfail)
/* infop->date has to be 0 or valid on entry. Month outside of [1-12] on */
/* entry causes GIGO */
{
@@ -1866,7 +1866,7 @@
case ITEM_DATE:
if (!infop->date && infop->source)
if (!msg2hash(infop)) return 0;
- getdate(infop,0);
+ ezmlmgetdate(infop,0);
break;
}
break;
% make mysql
% make && make man
% make jp
% su
# make setup
メーリングリストの作成
下記の例を前提にメーリングリストを作成してみます。
メーリングリストアドレス:mylist@example.com
メーリングリストオーナー:owner@example.com
データベース:ezmlm
親テーブル:mltable
データベース接続アカウント:mladmin
データベース接続パスワード:mlpasswd
データディレクトリ:/home/ml/mylist
# mysql
mysql> create database ezmlm;
mysql> grant all on ezmlm.* to mladmin identified by 'mlpasswd';
mysql> grant all on ezmlm.* to mladmin@localhost identified by 'mlpasswd';
mysql> flush privileges;
mysql> exit;
# /usr/local/bin/ezmlm/ezmlm-mktab -d mltable | \
/usr/local/bin/mysql -hlocalhost -umladmin -pmlpass -f ezmlm
# /usr/local/bin/ezmlm/ezmlm-make -adfgklnru \
-5 owner@example.com \
-6 'localhost:3306:mladmin:mlpasswd:ezmlm:mylist' \
/home/ml/mylist /var/qmail/alias/.qmail-ezmlm mylist example.com
※ezmlm-makeコマンドの詳細はmanページを参照して下さい。
# chown -R alias /home/ml/mylist