Maling List Serverには国産のfmlなどいろいろありますが、ここではデファクトスタンダードであるmajordomoを導入してみましょう。
1.ユーザーとグループを作成
majordomo用のuserを登録してpasswdとgroupを編集します。
# cd /etc ----- # vi group majordom::54:majordom,masao ==>追加します。 ----- # adduser # majordom ----- UID は 54としました。 ----- # vi passwd ----- majordom:x:54:54:Majordomo:/usr/local/majordomo: ==>編集します。
2.Sourceのgetとコンパイル
ここからmajordomoのsourceをgetして、適当なディレクトリ(例:/usr/src/)に置いて展開します。1998年6月現在の最新バージョンは1.94.4です。
# cd /usr/src/ # tar zxvf majordomo-1.94.4.tar.gz
Makefileを編集します。僕の場合は以下の部分を変えました。
# cd majordomo-1.94.4 # vi Makefile ----- #PERL = /bin/perl PERL = /usr/bin/perl # W_HOME = /usr/test/majordomo-$(VERSION) W_HOME = /usr/local/majordomo W_USER = 54 W_GROUP = 54 # These set the permissions for all installed files and executables (except # the wrapper), respectively. Some sites may wish to make these more # lenient, or more restrictive. FILE_MODE = 644 EXEC_MODE = 751 HOME_MODE = 751
次にmajordomo.cfをコピーして編集します。以下は僕の場合の例です(一部)。
# cd /usr/src/majordomo-1.94.4 # cp sample.cf majordomo.cf # vi majordomo.cf ----- $whereami = "fujie.org"; $digest_work_dir = "$homedir/digest"; $sendmail_command = "/usr/sbin/sendmail"; $config'default_subscribe_policy = "open";
makeします。
# cd /usr/src/majordomo-1.94.4 # make wrapper # make install # make install-wrapper
インストールが終わったら、メーリングリストを作成します。ML名をsample-mlとしました。またmajordomoとlistsのパーミッションを変更します。
# cd /usr/local # chmod 751 majordomo # cd majordomo # chmod 751 lists # su majordom $ cd /usr/local/majordomo/lists $ mkdir sample-ml
ついでにarchiveのためのディレクトリも作っておきましょう。
$ cd /usr/local/majordomo/lists/ $ mkdir sample-ml.archive
3.aliases
/etc/aliasesを追加してnewaliasesします。次の連番との関連で以下のようにしました。
majordomo: "|/usr/local/majordomo/wrapper majordomo" majordomo-owner: masao@fujie.jp owner-majordomo: majordomo-owner majordom: majordomo-owner ## The bounces mailing list is used to move people off of lists when their ## e-mail address becomes undeliverable. See the bounce-remind script for a ## way to inform people that they've been moved. ## bounces mailing list owner-bounces:majordomo-owner bounces-approval:owner-bounces owner-bounces-outgoing:owner-bounces bounces: "|/usr/local/majordomo/wrapper resend -l bounces -h fujie.org bounces-outgoing" bounces-outgoing::include:/usr/local/majordomo/lists/bounces ## Test List ## ## This is a testing list that should be removed once you are familiar with ## the operation of Majordomo. ## owner-sample-ml:masao@fujie.jp owner-sample-ml-digest:owner-sample-ml owner-sample-ml-outgoing:owner-sample-ml owner-sample-ml-digest-outgoing:owner-sample-ml sample-ml-approval:owner-sample-ml sample-ml-digest-approval:owner-sample-ml sample-ml: "|/usr/local/majordomo/wrapper sequencer -l sample-ml -r sample-ml -N -h fujie.org sample-ml-outgoing" sample-ml-digest:sample-ml sample-ml-outgoing::include:/usr/local/majordomo/lists/sample-ml, "|/usr/local/majordomo/wrapper archive -a -m -f /usr/local/majordomo/lists/sample-ml.archive/sample-ml.archive", "|/usr/local/majordomo/wrapper digest -r -C -l sample-ml-digest sample-ml-digest-outgoing" sample-ml-digest-outgoing::include:/usr/local/majordomo/lists/sample-ml-digest sample-ml-request: "|/usr/local/majordomo/wrapper majordomo -l sample-ml" sample-ml-digest-request: "|/usr/local/majordomo/wrapper majordomo -l sample-ml-digest" ----- # newaliases
4.連番を付ける
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
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 $_; }
というふうに書き換えて下さい。
5.動作確認
最後に動作確認して終わりです。
# cd /usr/local/majordomo # ./wrapper config-test
6.アーガイブする
これ以下は付録です。さて、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をインストールしておいて下さい。なお、この方法はニッセイコンピュータの藤澤さん(fujisawa@sales.nissay-c.co.jp)からヒントを得ました。
7.Sendmail.cfの変更
これは蛇足です。今までの設定のままだと、メールヘッダーにX-Authentication-Warning:******** というWarningが出ます。このままでも実害はなく放置してもいいのですが、精神衛生上よくないとお考えでしたら、/etc/sendmail.cfのT rootの部分にmajordomを加えて下さい。
例:T root daemon uucp majordom
8.Web上でsubscribe
majordomo付属のソフト(md-sub)を利用して、subscribeをWeb上でできるようにしてみましょう。subscribe以外に、unsubscribe、who、info コマンドがWeb上で送れます。
最初にソースディレクトリなどから必要なファイルをcgi-binにコピーします。
# /usr/src/majordomo-1.94.4/md-sub/ # cp md-sub.cgi /usr/local/apache/share/cgi-bin # cp cgi-lib.pl /usr/local/apache/share/cgi-bin # cd /usr/lib/perl5/ # cp getopts.pl /usr/local/apache/share/cgi-bin
md-sub.cgi を環境に合わせて修正します。
# cd /usr/local/apache/share/cgi-bin # vi 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/src/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 $ vi .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/apache/share/cgi-bin/md-sub.cgi -C /usr/local/majordomo/md-sub/.md-subrc
これで、browserで、 http://www.fujie.org/cgi-bin/md-sub.cgi にアクセスするとWebが開くはずです。
9.追記1
sendmailのバージョンを8.9.0に上げるとセキュリティがきつくなるせいか、errorが出ます。その場合、permissionを751に変更すると正常化します。
# cd /usr/local/ # chmod 751 majordomo # cd majordomo # chmod 751 lists
10.追記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にメーラーにおけるトラブルがなくなります。