Debian パッケージ courier-mlm

couriermlm

名称

couriermlm -- メーリングリストマネージャ

書式

couriermlm {command} {directory} [arg...]

説明

couriermlmはメーリングリストを運営します。 couriermlm は購読および購読中止を自動的に取り扱い、また配送不能なアドレスを除去します。 couriermlmで管理されたメーリングリストは人手による管理を必要としません。 またダイジェスト、投稿専用のアドレス、査読付メーリングリストの機能もあります。

メーリングリストの作成

スーパユーザでなくても couriermlmを使用できます。 list-name@domain形式のアドレスは対応する dot-courier(5)ファイルでローカルアドレスに変換されます。 もしあなたが対応する dot-courier(5) ファイルを作成できて cron(8) でジョブをスケジュールできれば、一般ユーザでも couriermlmを使ってメーリングリストを開設できます。 なおスーパーユーザはcourierメールサーバから dot-courier(5) 機能を削除することができます。この場合には couriermlmは動作しません。

メーリングリストの作成は次の手順によります。

couriermlm createの実行

このコマンドでメーリングリストに関するファイルを格納するサブディレクトリが作成されます。

メーリングリストの設定

couriermlm create コマンドはサブディレクトリ内の設定ファイルにデフォルト値を設定します。 運営するメーリングリストに応じてそれらを変更したり、 あるいはあるコマンドを実行して必要なオプションをセットする必要があります。 例えば投稿制限をなくしたり、査読付にする場合などです。

dot-courier(5) ファイルの作成

メーリングリストアドレスに対応したdot-courier(5)ファイルを作成し、couriermlmを実行するように設定して、 メーリングリストメッセージの配送やリクエストを処理させます。

cron(8)の設定

cron(8) の設定により毎時couriermlm hourlyの実行、および毎日 couriermlm daily を実行するようにします。 これによりメーリングリストのメンテナンスが行われます。

購読者リストのバックアップ

あなたの日常の仕事として exportコマンドを実行して購読者リストをバックアップすることをおすすめします。 購読者リストデータベースが壊れたりしたときに、バックアップしたファイルから 復元することができます。詳しくは exportコマンドを参照してください。

注:

メーリングリストのダイジェスト作成には追加のコマンドが必要です。 「メーリングリストダイジェストの設定」を参照してください。

最初に実行すべきなのは以下のコマンドです。

couriermlm create directory ADDRESS=list@domain

directoryはメーリングリストに関するファイルを格納するサブディレクトリを指定します。 あらかじめ作成しておいてはいけません。 このコマンドでサブディレクトリが作成されます。

list@domainはメーリングリストのアドレス、つまり投稿用のアドレスです。

このディレクトリには、リスト制御用リクエストに対する自動返答に用いられる テキストファイルのひな型が置かれます。 これらのファイルを作成したメーリングリスト用に編集しなければなりません。 すべてのひな型テキストファイルは.tmplで終わり、 どんな内容かはファイル自身に記述されています。 いくつかの重要なひな型を示します:

help.tmpl

このファイルはhelpコマンドへの返信となります。 このファイルは、メーリングリスト固有の機能について、 例えば査読付であるとか、ダイジェストが可能であるとか、 説明するように変更しなければなりません。

sub.tmpl

このファイルは購読リクエストに対する返事となります。unsub.tmplは購読中止リクエストに対するものです。

sub2.tmpl

このファイルは購読承認時に送られるものです。 メーリングリストについての概要はここに書くのがふさわしいでしょう。

他にもお好みに応じ編集したほうがよい設定ファイルがあります:

headeradd

メーリングリストに送られる各メッセージのメールヘッダ部に 自動的に追加される内容を記述します。 ファイルの中には各メッセージに追加される内容を単に記述します。 空行を含んではいけません。

headerdel

メールヘッダから削除される項目を記述します。各ヘッダを1行に1つ、 : 文字を含めて記述します。例えば、各メッセージからすべての Received:Date: ヘッダを削除するには、次の2行を記述します:

Received:
Date:

headeraddheaderdel ファイルを用いて、メーリングリストで一般的な、 メーリングリストのメッセージに対する返信先アドレスの設定を行うことができます。 これには、headerdelファイルに "Reply-To:" を記述してReply-To:ヘッダを削除し、またheaderaddファイルに "Reply-To: list@domain"を記述することにより 各メッセージにReply-To:ヘッダを付加します。

createコマンドではメーリングリストディレクトリに以下のようなサブディレクトリも 作成します:

sublist

このサブディレクトリには購読者リストのデータベースが保持されます。

unsublist

このサブディレクトリには購読を中止したアドレスに関する情報が保持されます。 これは古い購読者を調査するのに役立ちます。 この中身は自動的に削除されたりしないので、 必要なら自動的な削除処理を用意してください。

commands, commands.dat

これらのディレクトリにはメーリングリスト管理者に対する未処理のコマンドが 含まれます。couriermlm hourly あるいはcouriermlm dailyコマンドを実行して、 古くなってしまったエントリを定期的に削除する必要があります。

modqueue

査読者による査読待ちのメッセージです。(査読付メーリングリスト用)

archive

メーリングリストのメッセージは購読者向けに送られると共に、 このディレクトリに保存されます。 couriermlmは自動でこの内容を削除しないので、 必要なら独自の自動アーカイブを用意してこの内容を削除するようにしてください。

手順の最後は、dot-courier(5) ファイル群を編集して、メーリングリストメッセージと制御用リクエストをcouriermlmに渡すように設定します。 メーリングリストのアドレス list@domainはいくつかの dot-courier(5) ファイルに対応します。 たとえば、あなたのアカウント名がjohnで、メールドメイン名が example.comの場合、 <john-list@example.com>というメーリングリストは、 $HOME/.courier-listファイルが設定すべきdot-courier(5) ファイルです。

ここでは設定する dot-courier(5) ファイルを $HOME/.courier-listとします。メーリングリストを正しく機能させるには、 以下のように dot-courier(5)ファイル群を設定する必要があります:

$HOME/.courier-list

このファイルは次のように配送用に設定します:

| /usr/bin/couriermlm msg directory

directory はメーリングリストのディレクトリ名です。

$HOME/.courier-list-owner

メーリングリストの所有者<list-owner@domain>に送られたメールを転送するためにこのファイルを設定しなければなりません。 これは他の電子メールアドレスでもいいですし、 メールボックス指定でもかまいません。

$HOME/.courier-list-default

このファイルは次のように設定します:

| /usr/bin/couriermlm ctlmsg directory

directory はメーリングリストのディレクトリ名です。 この dot-courier(5) ファイルは <list-command@domain>というような、list-owner以外のアドレス向けのメールを処理します。 ここで commandはメーリングリストの制御用のリクエストを識別します。 制御用のリクエストで用いられる特殊なアドレスについて詳しくは「制御用リクエストコマンド」で説明されています。

コマンドライン起動

couriermlm は以下のようにコマンドラインから起動することもできます:

/usr/bin/couriermlm command directory [ options... ]

command は以下に示すコマンドです。 directory にはメーリングリストのディレクトリを指定します。

create

メーリングリストの作成

set

オプションの設定

sub

指定アドレスの購読追加

unsub

指定アドレスの購読中止

lsub

メーリングリスト購読者一覧の表示

laliases

投稿専用アドレスの表示

export

購読者アドレスのエクスポート

import

購読者アドレスのインポート

ctlmsg

コントロールメッセージの受信と実行

info

購読者情報の表示

msg

メーリングリストへのメッセージ投稿

hourly

毎時メインテナンスの実行。これは cron(8) の設定により毎時1回、実行する必要があります。

daily

毎日メインテナンスの実行。これは cron(8) の設定により毎日1回、実行する必要があります。

digest

メーリングリストダイジェストの作成。詳しくは下記「メーリングリストダイジェストの設定」 を参照してください。

手作業での購読者管理

sub, unsub, lsub, laliases, export, importの各コマンドにより手作業で購読者リストの設定ができます。 通常では購読者の設定は対応する制御用リクエストを送ることにより行います。 くわしくは「制御用リクエストコマンド」を参照してください。

couriermlm sub directory user@domain

このコマンドで<user@domain>を購読者に加えます。couriermlmは標準入力から、コメントの入力待ちになります。 コメント入力後EOF(通常ではCTRL-D)を押すと、コメントと共にアドレスが購読者リストに加えられます。 このコメントは info コマンドで表示できます。

couriermlm unsub directory user@domain

このコマンドで購読者リストから<user@domain>を削除します。couriermlm はコメントを読み取り、購読者情報に追加し、 購読者リストからアドレス削除後、 購読者情報はdirectory/unsublistディレクトリに保存されます。

couriermlm lsub directory

購読者リストすべてを1行に1アドレス、標準出力に出力します。

couriermlm laliases directory

このコマンドでは投稿専用アドレスを対応する購読者アドレスと共に 一覧出力します。 詳しくは「投稿専用アドレス」を参照してください。

couriermlm export directory

exportコマンドでは購読者リストデータベースを標準出力に出力します。 この出力は次のような形式です:

address
subscription information
 ...
address
subscription information
 ...

address は購読者のメールアドレスです。この後に対応する購読者情報が続きます。 これは通常は購読者リストに登録した時の購読リクエストです。 購読者情報は単独のピリオドで終わります。 ピリオド自身ではじまる購読者情報の行はさらに前にピリオドが追加されます。

couriermlm import directory

import コマンドは標準入力からexportコマンドで出力された 購読者リストデータベースを読み取り、 そのアドレスを現在の購読者リストに加えます。

購読者リストを定期的にexport コマンドでバックアップを取っておくことをお勧めします。 購読者リストのデータベースが破損した場合、 データベースファイルの直接のバックアップがなくても、importコマンドでデータベースを復旧させることができます。

メーリングリストオプションの設定

set コマンドでは各種のオプションの設定ができます:

couriermlm set directory option=value option=value...

複数のオプションが一度に設定できます。利用可能なオプションは以下のものです:

ADDRESS=address

メーリングリストアドレス自体を設定します。

DIGEST=directory

ダイジェスト機能を有効にします。directory は作成済みのダイジェスト用ディレクトリです。詳しくは「メーリングリストダイジェストの設定」を参照してください。

KEYWORD=keyword

メーリングリストメッセージのSubject行を設定します。 設定すると、couriermlm は "[keyword]" を各メーリングリストメッセージのSubjectに加えます。 これにより購読者がメーリングリストメールを整理するのに役立ちます。

MAXBOUNCES=n

hourlyコマンドにより送られるbounce警告メッセージの最大数を指定します。 これによりメールサーバが過負荷になるのを防ぎます。デフォルト値は20です。 送られなかったbounce警告メッセージは次の毎時に持ち越されます。

MAXMODNOTICES=n

hourlyコマンドにより送られる、査読要求メールの最大数を指定します。 これによりメールサーバが過負荷になるのを防ぎます。デフォルト値は20です。 送られなかった査読要求メールは次の毎時に持ち越されます。

MAXFETCHSIZE=K

fetch コマンドで転送可能な最大サイズをキロバイトで指定します。 デフォルト値は 100Kb です。 このオプションはでたらめな返送アドレスを持つ不正なリクエストを排除するために 用いられます。

NAME=name

制御用メッセージの返信者名を指定します。 なお、name 中に空白を含む場合、shellでは"..."等で囲んでください。 デフォルト値は "Courier Mailing List Manager"です。

NOBOZOS=flag

"0"の場合、couriermlmは誤ってメーリングリスト投稿用アドレスに送られた 購読・購読中止リクエストコマンドを排除しません。 "1"の場合(デフォルト)、これらのリクエストは送り返されます。

POST=option

投稿モードを指定します。option が "subscribers"の場合(デフォルト)、購読者のみが投稿を行えます。 "all"の場合、誰でも投稿できます。 "mod"の場合、購読者のみが投稿を行え、 投稿されたメッセージはメーリングリスト所有者に査読されます。

POSTARCHIVE=option

アーカイブされたメッセージへのアクセス権を指定します。 "all" の場合(デフォルト)、購読者以外誰でもアーカイブの内容を取得できます。 "subscribers"の場合は購読者だけがアーカイブの内容にアクセスできます。

PURGEARCHIVE=d

アーカイブされたメーリングリストメッセージを d 日後に削除します。デフォルトは 0 日で、これはアーカイブを削除しません。

PURGEBOUNCE=d

bounceして配送できなかった購読者アドレスに検査用メールを送信し、 そのメールの返事をd日間待った後、そのアドレスを購読中止にします。デフォルトは14日間です。 検査用メールは最初のbounceから3日後(デフォルト)に送られます。

PURGECMD=h

認証されなかった購読・購読中止リクエストを無効にします。 デフォルトは48時間です。

REMODERATE=h

査読要求の再送間隔を指定します。デフォルトは12時間です。

REPORTADDR=address

新購読者および購読中止者に関する日次レポートをこのアドレスに送ります。 不要の場合はアドレスを空にします。

SUBSCRIBE=option

購読者の承認モードを指定します。 "all"ではすべての人が購読可能です。 "mod"の場合はメーリングリスト所有者による承認が必要となり、 すべての購読要求リクエストはリスト所有者に送られます。 デフォルトは"all"です。

STARTPROBE=n

bounceしたアドレスに対する検査メールを n 日後に送りはじめます。 つまりこれは検査メールが送られるまでに最低 n 日経過する必要がある、ということです。 デフォルトは3日です。

オプション名と設定値は大文字小文字が区別されます。

注:

ダイジェスト機能を有効にした場合には、 メーリングリスト本体とダイジェストとで同じ POSTARCHIVE オプション値を設定する必要があります。

購読者情報の表示

info コマンドで指定のアドレスに関する購読者情報を表示できます:

couriermlm info directory user@domain

このコマンドで "user@domain"に関する購読者情報が表示されます。 購読者情報は通常、購読開始リクエストおよび承認通知の内容です。

メッセージのメーリングリストへの投稿

msgコマンドは標準入力から電子メール形式のメッセージを受け付け、 その内容を購読者に配送します。

POSTオプションが "subscribers"に設定されている場合、ヘッダのFrom: 行のアドレスが購読者リストにない場合には メッセージは拒否されます。

上で説明したように、設定ファイルのheaderaddheaderdel の内容が配送メッセージに適用されます。

制御用リクエストコマンド

メーリングリストの制御用コマンドは電子メールで制御用アドレス <list-command@domain>に送ることによってcouriermlmに伝えられます。 Courierメール配送エージェントは この宛先に対応する"default" dot-courier(5) ファイルを読み込み、そこにセットされた couriermlmが起動されリクエストが受信されます。

couriermlmはCourierメール配送エージェントによりセットされた環境変数DEFAULT (これはメールアドレスの command部分に相当します) により特定のコマンドの動作をします。 これらのコマンドには以下のものがあります:

help

couriermlm は単にhelp.tmplファイルの中を送信者に送り返します。

subscribe

メーリングリストの購読要求です。 couriermlmは送信者のアドレスを購読者アドレスとして用います。

subscribe-name=domain

購読要求ですが購読アドレスを明示的に指定し、送信者のアドレスを用いません。 例えばメーリングリストmy-widgets@example.comに関する<my-widgets-subscribe-john=domain.com@example.com>というリクエストは、<john@domain.com>に対する購読要求になります。 メールアドレスとして通常用いられないキャラクタは、 プラス記号の後に16進2桁を続けることで表します。

unsubscribe

メーリングリストの購読中止要求です。

unsubscribe-name=domain

明示的にアドレスを指定する購読中止要求です。

alias-subscribe

投稿専用アドレスの設定です。(下記参照)

alias-subscribe-name=domain

明示的にアドレスを指定する、投稿専用アドレスの指定です。

この他にもメーリングリスト保守のために 内部的に用いられるコマンドがあります。

投稿専用アドレス

投稿専用アドレスはユーザのメールアドレスのうち、 投稿はできるけれどもメーリングリストのメッセージは受信しないものです。 投稿専用アドレスは購読者自身で設定できます。 1つの購読用アドレスに対して1つの投稿専用アドレスを設定することができます。 投稿専用アドレスはオプション POST=allとなっている場合には (誰でも投稿できるため) 意味がありません。

投稿専用アドレスを設定するには、購読者は couriermlm alias-subscribe リクエストコマンドを送ります。 購読者のメールアドレスは subscribe コマンドと同じように明示的にも指定できます。

リクエストコマンドのSubject行には、 設定したい投稿専用アドレスだけを記述します。 couriermlmは購読開始時と同じような確認のメールを送ります。 確認手順は購読開始時と同じように行います。

投稿専用アドレスは何回でもこの方法で変更できます。 投稿専用アドレスは新しいものに置き換えられます。 不正な使用を防ぐため、alias-subscribeコマンドは30分に1回に制限されています。

Subject行を空白にすると投稿専用アドレスは削除されます。

メーリングリストダイジェストの設定

couriermlmでダイジェスト機能を実現することができます。 ダイジェストは2番目のメーリングリストのように作成します。 create コマンドを発行して2番目のメーリングリスト用ディレクトリを作成し、 元のメーリングリストのダイジェストと関連させるためにいくつかの設定を行います。

元のメーリングリストのアドレスがlist-address@example.comの場合、ダイジェストのメーリングリストのアドレスは通常、 list-address-digest@example.comになります。が、この名前でなければいけないというわけではありません。 唯一の制約は、 ダイジェスト用メーリングリストのディレクトリが 元のメーリングリストのディレクトリと同じファイルシステムにあること、 そして同じユーザに所有されていることです。

メーリングリストのダイジェスト作成のためには、 まず元のメーリングリストを通常の手順で作成します。 元のメーリングリストが正しく設定されたら、次の手順を実行します:

ダイジェスト用メーリングリストディレクトリの作成

createコマンドを実行してダイジェスト用メーリングリストを作成します:

/usr/bin/couriermlm create \
   /path/to/digest/list/directory \
   ADDRESS=list-address-digest@example.com

ダイジェスト用ディレクトリは絶対パスで指定し、 アドレスにはダイジェスト用のものを指定します。

ダイジェスト用メーリングリストの設定

必要なら set コマンドによりダイジェスト用メーリングリストのオプションを設定します。 通常のメーリングリストと異なる点は、このメーリングリストには投稿できないため、 査読付にする意味はない、ということです。 もちろん購読開始を承認付にすることは可能です。

2つのメーリングリストの結び付け

元のメーリングリストでDIGEST オプションを設定し、 そこでダイジェスト用メーリングリストのディレクトリ名を指定します。 これによりcouriermlm はダイジェスト用メーリングリストが存在することを認識します。

注:

元のメーリングリストとダイジェスト用メーリングリストで同じ POSTARCHIVE オプションを設定するようにしてください。

dot-courier(5) ファイルの作成

元のメーリングリストの時と同じように、 dot-courier(5) ファイルを作成します。が、いくつかの重要な違いがありますので、後述します。

cron(8) の設定

元のメーリングリストの時と同じようにcronを設定し、 毎時と毎日のメンテナンスが行われるようにします。 1つのcronジョブに 元のメーリングリストとダイジェストの両方の起動設定を行ってもかまいません。

cron(8)digest の起動設定

digestコマンドでダイジェストの作成と送信が行われます。これは cron(8) に設定して定期的に実行させるか、あるいは手動で実行します。

元のメーリングリストは3つの dot-courier(5) ファイルが使用され、それらは投稿用アドレス、メーリングリスト所有者アドレス、 および制御用リクエストを処理するためのアドレスでした。 ここで、$HOME/.courier-list$HOME/.courier-list-owner$HOME/.courier-list-defaultの3つのファイルがそれぞれのアドレスに対応しているとすると、 ダイジェスト用メーリングリストのdot-courier(5)ファイルは、それぞれ $HOME/.courier-list-digest$HOME/.courier-list-digest-owner$HOME/.courier-list-digest-defaultという3つのファイルになります。 (なお、ダイジェスト用のメーリングリストの名前は後ろに "digest" を付けると決まっているわけではなく、どんな名前でも構いません。)

ファイル $HOME/.courier-list$HOME/.courier-list-digest の中身は同じになります。 ダイジェスト用アドレスに対する送信は元のメーリングリストに対する投稿として 扱われるべきです。 $HOME/.courier-list-digestファイルの中身にダイジェスト用ディレクトリを指定してはいけません。 代わりに元のメーリングリストのディレクトリを指定します。 つまり、単に$HOME/.courier-list ファイルを $HOME/.courier-list-digestにコピーしてください。

一方、 $HOME/.courier-list-digest-defaultファイルの中身にはダイジェスト用メーリングリストのディレクトリを指定します。 ダイジェスト用メーリングリストは元のメーリングリストとは別物として 扱われ、元のメーリングリストの購読者とは違う購読者を持ちます。 $HOME/.courier-list-defaultファイルを $HOME/.courier-list-digest-defaultにコピーした後、ディレクトリ名部分を修正してください。

$HOME/.courier-list-digest-ownerファイルについては$HOME/.courier-list-ownerと同じ所有者のアドレスでもかまいませんし、 別のアドレスを指定してもかまいません。 元のメーリングリストとダイジェスト用メーリングリストは 同じ所有・承認者でもいいですし、あるいは別の所有・承認者でもかまいません。

次のコマンドで2つのメーリングリストを結び付けます:

/usr/bin/couriermlm set \
    /path/to/main/list/directory \
    DIGEST=/path/to/digest/list/directory

DIGESTオプションを元のメーリングリストに対し設定することにより、 couriermlm はダイジェスト用メーリングリストが存在することを認識します。 DIGEST オプションの引数は絶対パスで指定するか、 あるいは元のメーリングリストディレクトリからの相対パスで指定します。 カレントディレクトリからの相対パスではありません。

DIGEST オプションがセットされると、投稿されたメッセージは購読者へ配送され、 元のメーリングリストの archiveサブディレクトリに保存されると共に、ダイジェスト用ディレクトリの modqueue サブディレクトリにも保存されるようになります。 ダイジェスト用メーリングリストそれ自体は査読機能をもたない -- すべての査読機能は元のメーリングリストに対して設定され実行される -- ため、ダイジェスト用メーリングリストでは用いられない modqueueサブディレクトリを再利用しています。

最後に、ダイジェストを実際にダイジェスト購読者へ送信する必要があります。 これは次のコマンドを実行することにより行われます:

/usr/bin/couriermlm digest /path/to/digest/directory N H

このコマンドでダイジェストが作成され、送信されます。 NH は省略可能です。ダイジェストは最低でも N メッセージがたまった時に送信されます。 あるいは、最も古いメッセージがH 時間経過すると送信されます。 省略時は両方とも 0 で、 その時点でたまっているすべてのメッセージが送信されます。

ダイジェストが作成される時には、すべてのたまっているメッセージがダイジェストに加工されます。つまり、いくつかのメッセージはH 時間経過していないかもしれません。 また、digest コマンドの起動は cron(8)に設定してもいいですし、手動でも実行できます。

couriermlmは自動的にダイジェストの From:行と To: 行を設定します。他のヘッダはダイジェスト用ディレクトリの headeraddファイルで指定できます。 headerdelファイルは効果ありません。 なお、ダイジェスト用メッセージは元のメーリングリストのメッセージから コピーされるため、元のメーリングリストのheaderaddheaderdelによるヘッダの処理が行われた結果が反映されています。

バグ

couriermlmはCourierメール配送エージェントの dot-courier(5) 機能が無効にされた場合は動作できません。

関連項目

courier(8), dot-courier(5).