ここでは, qmail メール配送エージェントを使うユーザがぶつかった問題をいくつかとりあげます. Mailman の中心的なメンテナで qmail を使っている者はいませんので, 以下の情報はすべて, Mailman のユーザ コミュニティから寄贈されたものです. とりわけ, Martin Preishuber と Christian Tismer, そして Balazs Nagy (以下 BN) と Norbert Bollow (以下 NB) の注釈に負っています.
qmail, mailman, nofiles
のいずれかにする必要がありそうです.
BN: どれを選ぶかは, メール格納の方針に大いに依存します. たとえば, 単純な ~alias/.qmail-* ファイルを使っているのなら, `id -g alias` を使います16. しかし /var/qmail/users を使っているのなら, そこで指定したメール gid を使うことになります.
仮想ドメインのアドレスが直接 mailman ユーザに向かうようにしている
(たとえば, メーリングリスト専用のドメインに ``virtualdomains'' を使っている)
のなら, --with-mail-gid=mailmanユーザのグループのGID
を使わなければならないでしょう.
これは, リストのエイリアスを ~alias に入れることとは両立しません.
こういうエイリアスは,
mailman-リスト名* を転送するものになってしまいます.
mailman があると, エイリアス
mailman-owner は ~mailman の中でだけ動作します.
~mailman ディレクトリの中で touch .qmail-owner すると,
このエイリアスを作成できます.
NB: かわりに, 私がより良い解決策かと思うのが, chown
root ~mailman をすることで, こうすると qmail は mailman
を, メールを配送できるユーザとみなさなくなります
(``man 8 qmail-getpw'' を見てください)17.
+zope-:alias:112:11:/var/qmail/alias:-:zope-: .
これは, リスト名が zope-users などである場合です.
NB: かわりに, リストを仮想ドメインで扱うことにして,
/var/qmail/control/virtualdomains ファイルを使って
この仮想ドメインを mailman ユーザで管理させることもできます.
mailman 以外のユーザで配送するときは,
そのユーザが ~mailman にアクセスできるようになっていることが必須です.
~mailman にグループ書き込み権限があって,
setgid ビットがセットしてあることを確かめます.
そして, 配送するユーザを mailman グループに入れますが,
ほかのユーザは ~mailman にアクセスできなくしてもよいでしょう.
WWW サービスについても同じようにできます.
とにかく, すべてのメールを扱う仮想メールサーバをつくるのが最善のやりかたです.
NB: たとえば, 仮想メールサーバ用に
自分の IP アドレスを指す DNS "A" レコードを追加した上で,
/var/qmail/control/virtualdomains ファイルに
lists.kva.hu:mailman という行を,
/var/qmail/control/rcpthosts ファイルに
lists.kva.hu という行を, それぞれ追加します.
``virtualdomains'' を変更したら,
qmail-send に HUP シグナルを送るのを忘れないようにしてください.
これで, lists.kva.hu 宛のすべてのメールは
mail.kva.hu の mailman ユーザに届くようになります.
それから, エイリアスを作成します:
.qmail => mailman@...へのメール
.qmail-owner => mailman-owner へのメール
リストのエイリアスについては, 次のように手動で作成することもできます:
.qmail-list => 'list' リストへの投稿
.qmail-list-admin => 'list' の管理者への投稿
.qmail-list-request => 'list' への要求
など
あるいは, (上のように, lists.kva.hu を仮想で使っているときは) リストエイリアスの自動把握をすることもできます. Mailman のソース配布物にある contrib/qmail-to-mailman.py を見てください18. ~mailman/.qmail-default を変更して, 次のものを含めます:
|preline /path/to/python /path/to/qmail-to-mailman.py
すると, 新しいリストを自動的にみつけてくれるようになります.
tcp-env: 127. 10.205.200. : setenv RELAYCLIENT
ここで 10.205.200. は, 自分の IP アドレスブロックです. tcpserver を使っているのなら, /etc/tcp.smtp ファイルに 次のようなものが必要です:
10.205.200.:allow,RELAYCLIENT=""
127.:allow,RELAYCLIENT=""
BN: 最後に, リストのエイリアスを生成するスクリプトを挙げておきます (なんらかの理由で, contrib/qmail-to-mailman.py を使って自動的にエイリアスを拾い出すことができなかったり, そうしたくないときに使います):
Mailman 2.0 系列のためのスクリプト:
#!/bin/sh
if [ $# = 1 ]; then
i=$1
echo カレントディレクトリに $i へのリンクを作っています...
echo "|preline /home/mailman/mail/mailman post $i" > .qmail-$i
echo "|preline /home/mailman/mail/mailman mailowner $i" > .qmail-$i-admin
echo "|preline /home/mailman/mail/mailman mailowner $i" > .qmail-$i-owner
echo "|preline /home/mailman/mail/mailman mailowner $i" > .qmail-owner-$i
echo "|preline /home/mailman/mail/mailman mailcmd $i" > .qmail-$i-request
fi
#!/bin/sh
if [ $# = 1 ]; then
i=$1
echo カレントディレクトリに $i へのリンクを作っています...
echo "|preline /usr/local/mailman/mail/mailman post $i" > .qmail-$i
echo "|preline /usr/local/mailman/mail/mailman admin $i" > .qmail-$i-admin
echo "|preline /usr/local/mailman/mail/mailman bounces $i" > .qmail-$i-bounces
# 次の行は VERP 用
# echo "|preline /usr/local/mailman/mail/mailman bounces $i" > .qmail-$i-bounces-default
echo "|preline /usr/local/mailman/mail/mailman confirm $i" > .qmail-$i-confirm
echo "|preline /usr/local/mailman/mail/mailman join $i" > .qmail-$i-join
echo "|preline /usr/local/mailman/mail/mailman leave $i" > .qmail-$i-leave
echo "|preline /usr/local/mailman/mail/mailman owner $i" > .qmail-$i-owner
echo "|preline /usr/local/mailman/mail/mailman request $i" > .qmail-$i-request
echo "|preline /usr/local/mailman/mail/mailman subscribe $i" > .qmail-$i-subscribe
echo "|preline /usr/local/mailman/mail/mailman unsubscribe $i" > .qmail-$i-unsubscribe
fi
alias の GID を使う, という意味です.
mailman ユーザのホームディレクトリが存在しない場合
(「グループとユーザの追加」の節の手順のとおりにするとそうなります) も,
qmail は mailman を, メールを配送できるユーザとみなしません.