oml(古)

oml(仮称)は単純なメーリングリスト作成プログラムです。

このページは古い情報です。 新しい情報はここにあります。

C版

[2007-02-22] oml3ではdist-ML名を宛先とすると発信者規制を抜けてしまいました。 とりあえずdist-ML名の部分を好きな文字列に変えられるようにしました。 使い方はソースの頭のコメントをご覧ください。

[2004-12-29] oml3では発信者規制ができます。 使い方はソースの頭のコメントをご覧ください。

[2002-09-12] -t オプションで添付ファイルを外すバージョンを作ってみました。

ソース oml2.c は C で書かれています。

ソースを適当に変更し,

gcc -Wall -O oml2.c -o oml2

のようにコンパイルします。 この実行ファイルをメールサーバの適当なディレクトリ(たとえば /usr/local/sbin)に入れておきます。

次に,/etc/(mail/|postfix/)aliases に次のような3行を書き込みます。 これは ML 名が foo の場合です。 foodist-foofoo-adminfoo を必ず書き換えてください。 また,/home/okumura/foo.txt はメンバー名のリストのファイル名(フルパス)です。 foo-admin: には管理人のメールアドレスを書いておきます。

foo: "|/usr/local/sbin/oml foo | /usr/sbin/sendmail -oi -f foo-admin dist-foo"
dist-foo: :include:/home/okumura/foo.txt
foo-admin: okumura

aliases を編集したら必ず newaliases コマンドを実行しておきます。

DOMAINNAME は ML の宛先(たとえば foo@matsusaka-u.ac.jp) の @ 以下の部分です。 COUNTDIRARCHIVEDIR/foo/daemon に書き込み可にしておきます(postfix の場合は default_privs に指定されたユーザで,デフォルトでは nobody です)。 COUNTDIR/foo.cnt というファイルが作られて, それにカウント数が書き込まれます。 また,ARCHIVEDIR/foo/ というディレクトリの中に index.html1.txt, 2.txt, ... というファイルができます。 index.html がすでにあればそれにアペンドします。 これは ML の過去ログとして WWW で公開するためのものです。 もし過去ログが必要なければ,単に ARCHIVEDIR/foo/ というディレクトリを作らなければいいだけです。 ARCHIVEDIR/foo/index.html は sendmail(または postfix など)に対して書き込み可にしておきます。 上位のディレクトリも読めるようにしておかないといけないみたいです。

-f をつけて起動すると From: 欄が ML の宛名(たとえば foo@matsusaka-u.ac.jp)になるようにしました (携帯メールを使う人のためのハック)。

[2001-04-19] 各メッセージのファイル名が数字だけだと表示されず save to disk になってしまうことがあるので,txt という拡張子を付けることにしました。

C++版

ソース oml.cc は C++ で書かれています。 上の C 版のほうが新しいものです。

ソースの中で,

const string domainname = "localhost";
const string archivedir = "/usr/local/apache/htdocs/ml/";

となっているところは変更が必要かもしれません。 domainname は ML の宛先(たとえば foo@dyna.matsusaka-u.ac.jp) の dyna.matsusaka-u.ac.jp の部分です。 たぶん localhost と書いておけば自動的に sendmail が書き換えてくれます。 archivedir は ML のアーカイブの入るべきところです。 archivedir は最後に / を付けた形にしておいてください。

ソースを変更したら

g++ -Wall -O2 oml.cc -o oml

のようにコンパイルして, メール(SMTP)サーバ上の適当な(ユーザに書き込み権のない)ディレクトリに, 所有者 root で入れておきます。 以下では /etc/mail に入れたとします。

たとえば foo@dyna.matsusaka-u.ac.jp という ML を作るには, /etc/aliases に次のような3行を書き込みます。

foo: "|/etc/mail/oml foo | /usr/sbin/sendmail -oi -f foo-admin dist-foo"
dist-foo: :include:/home/okumura/ml/foo.txt
foo-admin: okumura

sendmail のパスは Solaris では /usr/lib/sendmail です。

/etc/aliases を編集したら必ず newaliases コマンドを実行しておきます。

ソースの中で指定した archivedir というディレクトリに,メーリングリスト名(上の例では foo) と同じ名前のサブディレクトリを作っておいてください。 この差部ディレクトリ archivedir/foo はメールを受け取るプロセスが書き込めるようにしておきます。 Solaris なら daemon/other, Linux はディストリビューションによるでしょうが daemon/daemon あるいは bin/bin になるようです(Postfix では nobody/nobody)。 archivedir/foo の中に count というファイルが作られて, それにカウント数が書き込まれます。 また,同じディレクトリの index.html に書き込み一覧が入り, 1.html2.html といった名前のファイルに各メッセージが入ります。


これは 簡単なメーリングリストの作り方 でご紹介した simple-ml.c をデバッグして C++ で書き直したものです。


奥村晴彦

Last modified: 2008-07-09 08:57:46