WWW を検索 NOGNOG.COM を検索

WWW.NOGNOG.COM

Last modified: Wed, 20 Feb 2008 13:20:08 +0900
Home   うにっくすさんの覚え書き   プリングルズ   MIDI   ユーザー車検   「小沢昭一の小沢昭一的こころ」のススメ   Blog  

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

    うにっくすさんの覚え書きについて

    Home >> うにっくすさんの覚え書き >> ezmlm-idx - MySQLでアドレス管理