Debian lenny での postfix + mailman 導入 備忘録
Posted by yoosee on Debian at 2008-01-09 20:00 JST1 Debian lenny での postfix + mailman install 備忘録 (専用サブドメイン利用型)
ここでは 素のドメイン名 (listname@example.com) ではなく、mailman 専用サブドメイン (@lists.example.com) を利用する。全ての専用サブドメイン宛メールは mailman が処理するものとして扱われる。サブドメインを使わず aliases を用いる方法は GNU Mailman インストールマニュアル 等を参照の事。導入は例によって aptitude 一発で完了。
# aptitude install mailman ... # dpkg -l mailman ii mailman 1:2.1.9-9 Powerful, web-based mailing list manager導入時に利用する言語を聞かれるので、en と ja を選択し ja をデフォルトにしておく。ja で利用すると cli の日本語が euc-jp で出力されてしまい、utf-8 等の terminal 環境では文字化けするのが難だが、それ以外は特に問題ないようだ。
2 Postfix の設定
設定は /usr/share/doc/mailman/README.Debian にある通り、/etc/mailman/postfix-to-mailman.py の記述に従う。/etc/postfix/main.cf
relay_domains = ... lists.example.com transport_maps = hash:/etc/postfix/transport mailman_destination_recipient_limit = 1/etc/postfix/transport
lists.example.com mailman:これで @lists.example.com 宛のメールは全て postfix の mailman service に渡される。mailman service は master.cf で定義される。lenny では external service として標準で入っていた。
/etc/postfix/master.cf
mailman unix - n n - - pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user}/etc/mailman/mm_cfg.py は以下のようにする。
MTA = None # No MTA alias processing required # alias for postmaster, abuse and mailer-daemon DEB_LISTMASTER = 'postmaster@example.com'MTA = Postfix での alias 共有は利用しないので注意。
3 Webインターフェイスの設定
apache では特定の VirtualHost でのみ mailman interface を表示させたいので、sites-available/lists.example.com に以下の行を入れる。Include /etc/mailman/apache.confURL から /cgi-bin/ を省略したい場合は /etc/mailman/mm_cfg.py を以下のように設定しておく。
DEFAULT_URL_PATTERN = 'http://%s/mailman/'併せて /etc/mailman/apache.conf も編集
ScriptAlias /mailman/ /usr/lib/cgi-bin/mailman/この設定をする前にメーリングリストを作成した場合は、メーリングリスト個別の設定の方も変更する必要があるようだ。
4 短いドメインパート形式への対応
ちなみにこうした @lists... を使う設定の上で listname@example.com のように lists. を省いたメールアドレス形式を使いたい場合、当該 listname のメールアドレスやそれに付随する listname-action@ コマンドメール類を @lists. へ流し込む virtual map / regexp virtual map を書く必要がある。後者には postfix-pcre が必要。/etc/postfix/virtual
listname@example.com listname@lists.example.com/etc/postfix/virtual_regexp
/^(.+)-(unsubscribe|off|leave)@example\.com$/ $1-$2@lists.example.com /^(.+)-(post|admin|request|owner|join|leave|confirm)@example\.com$/ $1-$2@lists.example.comメールアドレスを regexp match させての処理は色々と危険なので、動作を理解していない場合はやらない方がいいだろうし、新しい list を作る度に virtual の方は編集が必要だし、こんなケレン味のある方法より素直に aliases/virtual を使った方がいい気もするが、まぁ移行上の都合と趣味の問題ということで。