連載
» 2001年12月11日 00時00分 公開

実用qmailサーバ運用・管理術(4):メーリングリストの構築と運用(前編) (3/4)

[鶴長鎮一,@IT]

大規模MLの構築:ezmlmの利用

 .qmailファイルや拡張アドレスによる運用において、一般的なMLのようにサブジェクトに通し番号を付けるといったメールヘッダの加工や、送信者や流通するメールに制限を加えたりするには、意図する処理をスクリプトにまとめて.qmailまたは.qmail-○○ファイルの1行目にスクリプトが実行されるような記述を行います。

|処理スクリプトを絶対パスで記入
&メールアドレス1
&メールアドレス2
.qmail-○○ファイルの記述例

 MLに必須の処理がパッケージ化されていればどれだけ助かることでしょう。ここで紹介するezmlm(http://www.ezmlm.org/)はその要望を十分に満たします。ezmlmはqmail同様D. J. Bernstein氏により作成されたもので、当然qmailのMaildirにも対応し、fmlやMajordomoに比べ管理も容易です。

 では、ezmlmを利用して次のような規模を想定したMLを作成してみましょう。

目的: コミュニティの構築(登録・退会が自由に行える)
参加人数: 1000人程度
参加者の変動具合: 日に数十回(頻繁に行われる)
配信頻度: 100通以下/日

 fmlやMajordomoにもいえることですが、ML支援ツールがメール配信の性能を左右していると誤解される傾向があります。しかし、これらのソフトは配信そのものには関与しません。登録者の追加・削除やアーカイブ機能の提供など、MLの運営を手助けするものであり、ezmlmをインストールしたからといって配信速度が向上することはありません。コアの性能はqmailなどのMTAに依存することを忘れないでください。また、メールヘッダの書き換えも大事な処理です。コラム「Envelope・Header・Data」を必ずお読みいただき、配信の仕組みにHeaderデータがどのように関与し、ループなどの障害を防ぐためにHeaderデータをどのように書き換える必要があるのかを理解しておきましょう。

ezmlmのインストール

 では、ezmlmのソースを

ftp://ftp.jp.qmail.org/ezmlm/ezmlm-0.53.tar.gz

から入手してインストールします。

# tar xvfz ezmlm-0.53.tar.gz
# cd ezmlm-0.53
# make
# make man
# make setup

 これで、/usr/local/bin/ezmlm下にezmlmがインストールされました。インストールパスを変更したい場合は、「conf-bin」ファイルを編集してインストール先を記述します。

スーパーユーザーによるMLの作成

 ではMLを作成してみましょう。まずはスーパーユーザーで作業します。

# /usr/local/bin/ezmlm/ezmlm-make 設定ファイルの保存先 /var/qmail/alias/.qmail-ML名 ML名 自ドメイン

設定ファイルの保存先: /var/ezmlm/ML
ML名: ML
自ドメイン: example.jp

とした場合は、

# /usr/local/bin/ezmlm/ezmlm-make /var/ezmlm/ML /var/qmail/alias/.qmail-ML ML example.jp

となります。以降は上記の例に従うとします。このコマンドにより、「設定ファイルの保存先」にアーカイブ保存用のディレクトリや設定ファイルが作成されます。同時に、次のファイルも作成されます。

  • /var/qmail/alias/.qmail-ML
  • /var/qmail/alias/.qmail-ML-owner
  • /var/qmail/alias/.qmail-ML-return-default
  • /var/qmail/alias/.qmail-ML-default

 この後、「設定ファイルの保存先」のオーナーを「alias」に変更することを忘れずに行います。

# chown -R alias /var/ezmlm/ML

 ezmlm-make実行の際、下記のオプションを指定することでMLへの制限や拡張を加えることができます。

-a アーカイブを保存する(*)
-A アーカイブを保存しない
-p 公開MLとする(*)
-P 公開しない
「*」はデフォルトで有効になっているもの

 MLが作成できたので、MLに登録してみましょう。「ML-help@example.jp」あてに空のメールを送ると、次のような案内メールが返ってきます。

Hi! This is the ezmlm program. I'm managing the
ML@example.jp mailing list.

This is a generic help message. The message I received wasn't sent to
any of my command addresses.


--- Here are the ezmlm command addresses.

I can handle administrative requests automatically.
Just send an empty note to any of these addresses:

   <ML-subscribe@example.jp>:
   Receive future messages sent to the mailing list.

   <ML-unsubscribe@example.jp>:
   Stop receiving messages.

   <ML-get.12345@example.jp>:
   Retrieve a copy of message 12345 from the archive.
--以下省略--

 このメッセージ中に示された登録用のアドレスにメールを送ることで、自動登録の手続きが始まります。コントロールアドレスには次のものが用意されています。

ML名@自ドメイン 投稿用アドレス
ML名-subscribe@自ドメイン 登録用アドレス
ML名-unsubscribe@自ドメイン 退会用アドレス
ML名-get.123@自ドメイン 特定メーセージ取出し用アドレス
ML名-help@自ドメイン 案内メッセージ用アドレス
ML名-request@自ドメイン 「ML名-help@自ドメイン」と同じ

 管理者が手動でユーザーを登録する場合は次のようにします。

# /usr/local/bin/ezmlm/ezmlm-sub 設定ファイルの保存先 登録者のアドレス1 登録者のアドレス2 登録者のアドレス3...

 今回の例では次のようになります。

# /usr/local/bin/ezmlm/ezmlm-sub /var/ezmlm/ML user1@XXXX user2@XXXX user3@XXXX ...

 管理者側で登録者を削除するには次のようにします。

# /usr/local/bin/ezmlm/ezmlm-unsub /var/ezmlm/ML user1@XXXX

一般ユーザーによるMLの作成

 以上の方法ではスーパーユーザーによる作業が必要ですが、一般ユーザーでもMLを構築することができます。ただし一般ユーザーの場合、MLの名前に指定できるのはユーザーが持っているメールアドレスに対する拡張アドレスのみです。例えば、メールアドレスuser1@example.jpを持つユーザー「user1」が作成できるMLのアドレスは「user1-ml@example.jp」のようなuser1-○○@example.jpという形式になります。

 では、user1がuser1-ml@example.jpを作成する例を見てみましょう。

設定ファイルの保存先: ~/ml
ML名: user1-ml
自ドメイン: example.jp

とした場合は、

$ /usr/local/bin/ezmlm/ezmlm-make -AP ~/ml ~/.qmail-ml user1-ml example.jp

となります。ここではアーカイブの保存をせず、勝手に登録がされないような非公開MLになるようにオプションを指定しました。ファイルのオーナー変更は必要ありません。残りの作業は先ほどのスーパーユーザーの作業と同じになります。

まとめと次回予告

 ezmlmには、MLの可用性を高めるためのさまざまなパッチが用意されています。インストールはezmlm同様極めて簡単ですが、運用が複雑になるので今回紹介した機能で事が足りているならパッチを当てる必要はありません。

 しかし、ユーザーはわがままです。一度は満足したとしても、機能拡張にどん欲です。そんなときが訪れる日のことを考えて、次回はezmlmをさらに便利に使う方法を紹介します。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。