次にメーリングリストを設定してみましょう。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にメーラーにおけるトラブルがなくなります。