Mailing List Serverの設定

次にメーリングリストを設定してみましょう。MLサーバーには日本の深町氏が作成したfmlや世界的に広く使われているMajordomoなどがありますが、ここではMajodomoを設定してみましょう。

1.インストール
インストールはFreeBSDお得意のportsを使用します。portsのmajordomoのディレクトリに移ってmake installで終わりです。後は勝手にfetchして、展開して、インストールしてくれます。尚、majordomoにはperl5が必要です。もしインストールしてなければpackageにありますのでインストールしておきましょう。なお、僕の場合、インストールだけはrootでしないと上手くゆきませんでした。あとで、新たにできたすべてのファイルとディレクトリ(/usr/local/majordom以下)のgroupとownerをmajordomに変更して下さい。その後の操作はmajordomでした方がいいでしょう。

# cd /usr/ports/majordomo/
# make install

2.majordomの登録
インストールは何も考えることなく終わりました。次からもほとんどデフォルトで大丈夫です。幾つか変更点があります。まず、vipwでmajordomの行を次のように書き換えます。

# vipw
----
majordom:*:54:54::0:0:Majordomo:/usr/local/majordomo:

次に、majordom groupに自分も加え、vi(ee)で/etc/groupのmajordomの行を書き換えます。

# vi /etc/group
----
majordom:*:54:majordom,masao(自分のアカウント)

3.majordomo.cfの修正
次にように、vi(ee)を使ってmajordomo.cfを修正してください。

# vi /usr/local/majordomo/majordomo.cf
----
$whereami = "your.domain";(例  fujie.org  デフォルトではマシン名も入る)

これ以外はデフォルトで大丈夫です。

4.aliasesの修正
vi(ee)でaliasesを修正します。aliasesを上書きしても構わない場合は、/usr/local/majordomo/aliases.majordomo のサンプルをコピーしてmodifyすればいいでしょう。 vi(ee)を使って、/etc/aliasesを修正します。

# vi /etc/aliases
----
owner-owner: yourname   (例:masao)
majordomo: "| /usr/local/majordomo/wrapper majordomo"
majordom: majordomo
majordomo-owner: yourname  (例:masao)
owner-majordomo: yourname  (例:masao)
----
# newaliases

これで一応完成です。

5.メーリングリストを作る
では、メーリングリスト(ML)を作ってみましょう。といってもsampleのtest-lを書き換えるだけで終わりです。一応sample-mlというメーリングリストを作ることにします。

5-1 MLの登録
まず、MLの本体のファイルをtouchコマンドで作ります。

# touch /usr/local/majordomo/lists/sample-ml

次に、管理者用のパスワードを作ります。

# vi /usr/local/majordomo/lists/sample-ml.passwd

sample-ml.infoとsample-ml.introを編集します。日本語はJISを使うようにします。

# vi /usr/local/majordomo/lists/sample-ml.info
# vi /usr/local/majordomo/lists/sample-ml.intro

さらに、これらsample-mlファイルのownerとgroupをmajordomにします(#su majordomとしてから、操作するとこういう手間は省けます)。

# cd /usr/local/majordomo/lists/
# chown majordom sample-ml*
# chgrp majordom sample-ml*

ついでにarchiveのためのディレクトリも作っておきましょう。

# cd /usr/local/majordomo/lists/
# mkdir sample-ml.archive
# chown majordom sample-ml.archive
# chgrp majordom sample-ml.archive

5-2 aliasesの修正
vi(ee)でaliasesを修正します。/usr/local/majordomo/aliases.majordomo のサンプルをコピーしてあれば、aliasesのtest-lをsample-mlに書き直せば終了です。

# cd /etc/
# vi(ee) aliases
-----
test-l を sample-ml に書き直し
-----
# newaliases

5-3 メンバーの登録
メーラーからメンバーを登録しましょう。

majordomo@fujie.jp宛に

subscribe sample-ml yourname@domain という本文を送信すれば登録されます。

これで登録は終わりました。sample-ml@fujie.jpへ宛てたメールが登録者全員に配送されることを確かめてください。

6.連番を付ける
majordomo付属のsequencerを使用して、subjectに連番が付くようにしましょう。

sequencerをmajordomoにコピーします。

# cp /usr/local/majordomo/Tools/seqencer /usr/local/majordomo/

sample-ml.seqを作り内容は1を入力します。

# cd /usr/local/majordomo/lists/
# vi sample-ml.seq
----
1
----
:wq

ownerを変更します。

# chown majordom sample-ml.seq

aliasesのresendをsequencerに変更し、次のように変更します。

# vi /etc/aliases
----
sample-ml: "| /usr/local/majordomo/wrapper sequencer -l sample-ml -r sample-ml -N -h fujie.org sample-ml-outgoing"
----
# newaliases

sample-ml.configのsubject_prefixの行を以下のように修正します。尚、このsample-ml.configは一度、sample-mlにaccessすると自然と作られています。また、administrivia = no に変更します。

#vi /usr/local/majordomo/lists/sample-ml.config
----
administrivia  =  no
subject_prefix = [sample-ml $SEQNUM]

これで、subjectに[sample-ml n]と、連番が付くはずです。ただし、このままではreplyするたびにsubjectが長くなってしまい、みっともないので、Nobさんの方法で、sequencerを書き換えます。sequencerの153行目付近の部分を下記のように変更します。

      &abort("sequencer: Can't open /tmp/sequencer.$$.in: $!");

  while (<STDIN>) {
      print IN $_;
  }

という部分があるので、これを

      &abort("sequencer: Can't open /tmp/sequencer.$$.in: $!");

  while (<STDIN>) {
      if (/^Subject:/) {
                s/R[eE]\:.*[\(\[]$opt_l.*\d+[\)\]]/Re\:/;
                s/R[eE]\:\s+R[eE]\:/Re\:/g;
      }
      print IN $_;
  }

というふうに書き換えて下さい。

7.アーガイブする
さて、indexコマンドでメールのindexをgetしようとすると、subjectが文字化けしてしまいます。そこで、majordom.cfを次のように書き換えて下さい。

# vi /usr/local/majordomo/majordomo.cf
-----
$index_command = "/bin/ls -lRL";
を
$index_command = "sed -e 's/.* [[]/[/g' INDEX|/usr/local/bin/nkf -l -m";
に書き換える。

これで文字化けせずにindexをgetできます。あらかじめ、nkfをpackageかportsでインストールしておいて下さい。なお、この方法はニッセイコンピュータの藤澤さん(fujisawa@sales.nissay-c.co.jp)からヒントを得ました。

8.Sendmail.cfの変更
これは蛇足です。今までの設定のままだと、メールヘッダーにX-Authentication-Warning:******** というWarningが出ます。このままでも実害はなく放置してもいいのですが、精神衛生上よくないとお考えでしたら、/etc/sendmail.cfのT rootの部分にmajordomを加えて下さい。
例:T root daemon uucp majordom

9.Web上でsubscribe
majordomo付属のソフト(md-sub)を利用して、subscribeをWeb上でできるようにしてみましょう。subscribe以外に、unsubscribe、who、info コマンドがWeb上で送れます。

最初にソースディレクトリなどから必要なファイルをcgi-binにコピーします。

# /usr/ports/mail/majordomo/work/majordomo-1.94.4/md-sub/
# cp md-sub.cgi /usr/local/www/cgi-bin/
# cp cgi-lib.pl /usr/local/www/cgi-bin/
# cd /usr/local/lib/perl5/
# cp getopts.pl /usr/local/www/cgi-bin/

md-sub.cgi を環境に合わせて修正します。

# cd /usr/local/www/cgi-bin
# ee md-sub.cgi
-----
#!/usr/bin/perl

# $cgiloc   = "http://stout/~jco/md-sub.cgi";
$cgiloc   = "http://www.fujie.org/cgi-bin/md-sub.cgi";

# $listsdb  = "/usr/jco/.md-subrc";
$listsdb  = "/usr/local/majordomo/md-sub/.md-subrc";

# $logfile  = "/usr/jco/md-sub.log";
$logfile  = "/usr/local/majordomo/md-sub/md-sub.log";

$sendmail = "|/usr/sbin/sendmail -t";
# $sendmail = "|/usr/bin/cat - > /tmp/test.out"; # This one is for
                                #  testing...
-----

md-sub ディレクトリを作り、そこに、ml-init.sampleをコピーして環境に合わせて編集します。

# su majordom
$ cd /usr/local/majordomo/
$ mkdir md-sub
$ cd /usr/ports/mail/majordomo/work/majordomo-1.94.4/md-sub/
$ cp ml-init.sample /usr/local/majordomo/md-sub/
$ cd /usr/local/majordomo/md-sub/
$ cp ml-init.sample .md-subrc
$ ee .md-subrc
-----
test-l              majordomo@fujie.jp
info    test-l      http://www.fujie.org/test-l/index.html
help                web-master@fujie.jp
default             test-l
-----
データベースを作成します。
# /usr/local/www/cgi-bin/md-sub.cgi -C /usr/local/majordomo/md-sub/.md-subrc

これで、browserで、 http://www.fujie.org/cgi-bin/md-sub.cgi にアクセスするとWebが開くはずです。

10.追記1
sendmailのバージョンを8.9.0に上げるとセキュリティがきつくなるせいか、errorが出ます。その場合、permissionを751に変更すると正常化します。

# cd /usr/local/
# chmod 751 majordomo
# cd majordomo
# chmod 751 lists

11.追記2
MS Outlook や Outlook Expressで ML から配信されたメールに対して返信すると、Subject にRe: や [********]が重なってしまいます。これはMSのメーラーが、とんでもないMIMEエンコードをしてしまうためなのですが、これを回避する方法を提示します。なお、これは、生田昇氏ふじ@芸工大さんのお知恵を拝借しました(深謝)。

mimer.pl と、mimew.pl を ダウンロードして、/usr/local/majordomo/ にコピーし、属性を変更します。

# cp /tmp/mimer.pl /usr/local/majordomo/
# cp /tmp/mimew.pl /usr/local/majordomo/
# cd /usr/local/majordomo/
# chown majordom mimer.pl mimew.pl
# chgrp majordom mimer.pl mimew.pl
# chmod 755 mimer.pl mimew.pl

さらに、sequencerの require文が書いてあるところ(70行目あたり)に、次の2行を追加しておきます。

require "mimer.pl";
require "mimew.pl";

そして、sequencerの一部(153行目あたり)を書き換えます。

--------------- sequencer の修正内容 ---------------------------

while () {
        if (/^Subject:/) {
                s/R[eE]\:.*[\(\[]$opt_l.*\d+[\)\]]/Re\:/;
                s/R[eE]\:\s+R[eE]\:/Re\:/g;
        }
    print IN $_;
}
---------------------------------------------------------------
を、
--------------- sequencer の修正内容 --------------------------

while () {
        # by nob
        if (/^Subject:/) {
                $_= &mimedecode($_);
                $_= &mimeencode($_);
                s/R[eE]\:.*[\(\[]$opt_l.*\d+[\)\]]/Re\:/;
                s/R[eE]\:\s+R[eE]\:/Re\:/g;

        }
    print IN $_;
}
---------------------------------------------------------------
のように書きなおします。これでMSにメーラーにおけるトラブルがなくなります。

TOP PAGE