mailmanでaliasを自動的に反映する

メーリングリストとしてmailmanを使っています。ユーザインタフェイスも充実していてとても使いやすいです。mailmanに新しいMLをコマンドラインで追加するとこんな出力がでてきます。

# /usr/local/mailman/newlist 
(中略)
To finish creating your mailing list, you must edit your /etc/aliases (or
equivalent) file by adding the following lines, and possibly running the
`newaliases' program:

## mailman mailing list
mailman:              "|/usr/local/mailman/mail/mailman post mailman"
mailman-admin:        "|/usr/local/mailman/mail/mailman admin mailman"
mailman-bounces:      "|/usr/local/mailman/mail/mailman bounces mailman"
mailman-confirm:      "|/usr/local/mailman/mail/mailman confirm mailman"
mailman-join:         "|/usr/local/mailman/mail/mailman join mailman"
mailman-leave:        "|/usr/local/mailman/mail/mailman leave mailman"
mailman-owner:        "|/usr/local/mailman/mail/mailman owner mailman"
mailman-request:      "|/usr/local/mailman/mail/mailman request mailman"
mailman-subscribe:    "|/usr/local/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe:  "|/usr/local/mailman/mail/mailman unsubscribe mailman"

これをコピペして/etc/mail/aliasesへ追加して、さらにnewaliasを実行せよと。面倒な。勝手にやってよ。それくらい。でちょっと調べるとPostfixの場合だとやってくれる設定があるみたい。sendmailでもできると思うのでやってみた。

sendmail.cfでaliasの参照先を追加

/etc/mail/aliasesを直接いじくるのはちょっと怖いのでmailman専用のaliasファイルを用意、それをsendmailがちゃんと認識するようにします。mcファイルに以下の行を追加してmake sendmail.cf。

define(`ALIAS_FILE',`/etc/mail/aliases,/etc/mail/mailman.aliases')

mm_cfg.pyを編集

mailmanの設定ファイルみたいなやつですね。/usr/local/mailman/Mailman/mm_cfg.pyあたりにあります。こんな行を追加。

MTA='Postfix'
POSTFIX_ALIAS_CMD='/usr/local/bin/sudo /usr/local/sbin/mailman.aliases'

実際にはPostfixは使ってませんが、気にしない(笑)。POSTFIX_ALIAS_CMDはMLを追加したり削除したりしたときに実行されるコマンドです。デフォルトではなんだったか忘れたけどPostfixのaliasコマンドみたいですよ。

/usr/local/sbin/mailman.aliasesの内容は

こんなの。

/bin/cp /usr/local/mailman/data/aliases /etc/mail/mailman.aliases
/usr/sbin/newaliases

/usr/local/mailman/data/aliasesにmailmanが必要とするaliasが列記されているので、それを/etc/mail/mailman.aliasesへコピる。当然、上記でsendmail.cf中で認識させるファイル名と同じ名前で。
でもってnewaliasesを実行と。

Solarisだと

Solarisだとsudoがなかったり、sudoが依存しているlibintl.so.8とかを追加でインストールする必要があります。