メーリングリストマネージャ fml の導入

fmlを導入します。 courier兄弟にもcourier-mlmというメーリングリストマネージャがあり、 一通りの機能はあるのですが、 リモートコントロールができなかったり メッセージの日本語化が面倒だったりするのでfmlを導入します。
# apt-get install fml
# vi /etc/group
(ユーザmokeをグループlistに加える)
あとは一般ユーザmokeで操作します。 別にldap上のユーザでもそうじゃなくてもかまいません。
% makefml newml mylist
(メーリングリストが作成される)
% makefml config mylist
(設定。言語を日本語にしたり、自動登録にしたり…)
% vi /var/spool/ml/mylist/cf
(詳細な設定。メーリングリストのアドレスを変更したり…)
% makefml update-config mylist   (cfを手で変更したら実行)
% makefml create-doc-template    (ドキュメントを再作成)
% vi /var/spool/ml/mylist/*      (ドキュメントをさらに手で編集)
これでfml自体の設定は終了です。 次に、moke-mylist@icarus.hoehoe.japan形式のメールがfmlに渡るように、 .courier-xxxを設定します。
/etc/aliases に /var/spool/ml/mylist/aliasesの内容を そのまま記述してもだめです。 (:include:からの:include:は解釈されないみたいです。)
% vi .courier-mylist
| /usr/share/fml/fml.pl /var/spool/ml/mylist
% vi .courier-mylist-ctl
| /usr/share/fml/fml.pl /var/spool/ml/mylist --ctladdr
% vi .courier-mylist-admin
moke@icarus.hoehoe.japan
これでとりあえずmoke-mylist@icarus.hoehoe.japanでメーリングリストの 運営が可能になります。各ユーザで運営する場合はこれで十分でしょう。

mylist@icarus.hoehoe.japan形式で運営する場合は、

# vi /etc/aliases
...
mylist: moke-mylist
mylist-ctl : moke-mylist-ctl
mylist-admin: moke-mylist-admin
# newaliases
しておきます。

このように、courierでの/etc/aliasesのサポートはあくまでコンパチサポートなので、 あまり凝った事には使わず、 Qmailにおける.qmailのように、.courierファイルで指定するのが一般的です。

直接メーリングリストを構成したい場合

# vi /etc/aliases
...
mylist: | /usr/share/fml/fml.pl /var/spool/ml/mylist
mylist-ctl: | /usr/share/fml/fml.pl /var/spool/ml/mylist --ctladdr
mylist-admin: moke
# newaliases
のように直接書けないのでしょうか?

書けますが、問題がいくつかあります。

  1. fml.plの実行ユーザが確定しません。 実際にはCourierが動作しているユーザ、つまりdaemonで実行されるので、 makefml newmlでメーリングリストを作成するときにdaemonでないといけませんし、 fml.plの実行がdaemonで行われるのでセキュリティ上不安です。
  2. newaliases (というかmakealiases) のバグのため、うまく動作しません。
newaliasesは、このようなプログラム渡しのエイリアスを発見すると、
mylist: ".xalias/mylist@icarus+2ehoehoe+2ejapan"@icarus.hoehoe.japan
という別エイリアスに書き直します。 このエイリアスは、
/etc/courier/aliasdir/.courier-:xalias/mylist@icarus+2ehoehoe+2ejapan
ファイルによって捕捉され、そこで実際の
| /usr/share/fml/fml.pl /var/spool/ml/mylist
が実行されることになります。 (courierメールサーバはxxx@icarus.hoehoe.japan宛てのメールで、 ユーザxxxがみつからなかった場合、 /etc/courier/aliasdir/.courier-xxxを参照します。 dot-courier(5) ) この .courier-:xaliasディレクトリの管理は newaliasesによって自動的に行われます。

しかし、makealiasesのバグのため、 作成されるディレクトリがなぜか/etc/courier/.courier-:xalias/になっており、 うまく動作しません。

# vi /usr/sbin/makealiases
...
localstatedir="/var/lib/courier"
aliasdir="aliasdir"   (追加)
...
のように修正後、newaliasesを実行してください。