OSX10.8サーバ その9 Mailman の設定まとめ

Mountain Lion Server(OSX10.8)その9 Mailman の設定まとめ
Mountain Lion (OSX10.8) Server へのメーリングリストMailman のインストールと設定のまとめ。
いろいろやって、ついにできたので、この時点でまとめる。
Home / OS X Mountain Lion Mailman Mailing List に基本的に従うが、これに書いていない部分を加える。
準備;
★Xcode (この時点で 4.4) をダウンロードしXcode command line toolsをインストールしておくこと。

★root になれるようにしておいたほうがいい。sudo でも問題ないけど。
「システム環境設定」→「ユーザとグループ」→左下の鍵を開ける→ログインオプションが有効になる→「ネットワークアカウントサーバ:接続….」をクリック→「ディレクトリユーティリティを開く」をクリック→左下の鍵を開ける→「メニューバー」の「編集」から 「ルートユーザを有効にする」を選択→ルートユーザのパスワードを入力する、確認用に同じパスワードを入力する。 これでターミナルで su とすればrootユーザとなって作業できる。
Mailman をダウンロードする。この時点では2.1.15だ。
★/usr/local  とその中にmailmanというdirectoryがないから作る。ここからは面倒なのでrootになって実施する。

sh-3.2# mkdir /usr/local
sh-3.2# mkdir /usr/local/mailman

★ダウンロードし解凍したmailman-2.1.15を/usr/local/mailmanへ移動する。
mailman-2.1.15をデスクトップに移して
デスクトップで

sh-3.2# cp mailman-2.1.15.tgz /usr/local/mailman/mailman-2.1.15.tgz

としてコピーし、/usr/local/mailmanに移動し

sh-3.2# tar zxvf mailman-2.1.15.tgz

で解凍した。
/usr/local/mailman/mailman-2.1.15ができる。
/usr/local/mailman で

sh-3.2#chgrp mailman .
sh-3.2#chmod a+rx,g+ws .

を実行しておく。
実行する前
sh-3.2# ls -al
total 16544
drwxrwsr-x 4 root _mailman 136 8 17 13:38 .
drwxr-xr-x 3 root wheel 102 8 16 09:31 ..
drwxr-xr-x 32 root _mailman 1088 8 17 13:38 mailman-2.1.15
-rw-r–r–@ 1 root _mailman 8468107 8 17 13:37 mailman-2.1.15.tgz
実行したあと
sh-3.2# ls -al
total 16544
drwxrwsr-x 4 root _mailman 136 8 17 13:38 .
drwxr-xr-x 3 root wheel 102 8 16 09:31 ..
drwxr-xr-x 32 root _mailman 1088 8 17 13:38 mailman-2.1.15
-rw-r–r–@ 1 root _mailman 8468107 8 17 13:37 mailman-2.1.15.tgz
なんも変化していないから、やらなくてもいいかも。
★インストールする。
/usr/local/mailman/mailman-2.1.15のdirectoryで

sh-3.2# ./configure

とするとなんやら出てくるが終わったら、さらに

sh-3.2# make install

とするとさらにセットアップの過程が出てくる。

0x0 から 0x2010ff0 へアップグレード
古いソースファイルを削除中
リストがありません == 何も実行せずに終了します

多分、いいんだろう。
usr/local/mailman
にもどってパーミッションのチェックを行う。

sh-3.2# bin/check_perms -f
警告: 限定公開保存書庫ディレクトリが other-executable (o+x) に
なっています. あなたのシステムのシェルユーザがこの保存書庫
を読むことができます. インストールマニュアルには, これを
どうしたら修正できるか書いてありますので, 参考にしてください.
問題があります: 75
修正するには -f オプションをつけて _mailman か root の権限で実行してください

で再度 実施する。

sh-3.2# bin/check_perms -f
警告: 限定公開保存書庫ディレクトリが other-executable (o+x) に
なっています. あなたのシステムのシェルユーザがこの保存書庫
を読むことができます. インストールマニュアルには, これを
どうしたら修正できるか書いてありますので, 参考にしてください.
問題ありません

ということでインストールはおしまい。
sh-3.2# ls -al
total 16544
drwxrwsr-x 22 root _mailman 748 8 17 13:45 .
drwxr-xr-x 3 root wheel 102 8 16 09:31 ..
drwxrwsr-x 72 root _mailman 2448 8 17 13:45 Mailman
drwxrwsr-x 4 root _mailman 136 8 17 13:45 archives
drwxrwsr-x 41 root _mailman 1394 8 17 13:45 bin
drwxrwsr-x 13 root _mailman 442 8 17 13:45 cgi-bin
drwxrwsr-x 12 root _mailman 408 8 17 13:45 cron
drwxrwsr-x 4 root _mailman 136 8 17 13:45 data
drwxrwsr-x 9 root _mailman 306 8 17 13:45 icons
drwxrwsr-x 2 root _mailman 68 8 17 13:45 lists
drwxrwsr-x 2 root _mailman 68 8 17 13:45 locks
drwxrwsr-x 2 root _mailman 68 8 17 13:45 logs
drwxrwsr-x 3 root _mailman 102 8 17 13:45 mail
drwxrwsr-x 36 root _mailman 1224 8 17 13:44 mailman-2.1.15
-rw-r–r–@ 1 root _mailman 8468107 8 17 13:37 mailman-2.1.15.tgz
drwxrwsr-x 39 root _mailman 1326 8 17 13:45 messages
drwxrwsr-x 2 root _mailman 68 8 17 13:45 pythonlib
drwxrwsr-x 2 root _mailman 68 8 17 13:45 qfiles
drwxrwsr-x 15 root _mailman 510 8 17 13:45 scripts
drwxrwsr-x 2 root _mailman 68 8 17 13:45 spam
drwxrwsr-x 40 root _mailman 1360 8 17 13:45 templates
drwxrwsr-x 19 root _mailman 646 8 17 13:45 tests
sh-3.2#
となっていた。アクセス権はよさそうだ。
★apache2 がmailman を使うために、httpd-mailman.confを作る
/private/etc/apache2/extra/ で
httpd-mailman.confというファイルを作る。
中身は

# Config file for linking the mailman mailing list manager to MacOSX Server Web Server.
#
ScriptAlias /mailman/ “/usr/local/mailman/cgi-bin/”
Alias /pipermail/ “/usr/local/mailman/archives/public/”
Alias /icons/ “/usr/local/mailman/icons/”
Options FollowSymLinks MultiViews Indexes
AllowOverride None
Order allow,deny
Allow from all

だ。
★上のファイルをapache2 が読むことを指定するため、httpd_server_app.confに加筆する
/Library/Server/Web/Config/apache2 に行って
httpd_server_app.confのバックアップを作って

sh-3.2#cp httpd_server_app.conf httpd_server_app.conf,20120819

おいて、書き換える。
一番下のほうに
# Secure (SSL/TLS) connections
というコメント部分があるから、この直前に

# Mailman config files
Include /private/etc/apache2/extra/httpd-mailman.conf

の2行を書き加える。
★Postfixをメーラーとして指定する
/usr/local/mailman/Mailman
内のmm_cfg.py を

sh-3.2#cp mm_cfg.py mm_cfg.py,20120819

としてコピーしておいて、
mm_cfg.py の一番下に

MTA = ‘Postfix’

を書き加えた。
★aliases を作る。
/usr/local/mailman で

sh-3.2#bin/genaliases
sh-3.2#chown mailman:mailman data/aliases*
sh-3.2#chmod g+w data/aliases*

を実行する。
/usr/local/mailman/data
にaliases とaliase.db
が作成される。上のコマンドだとaliases と daliases.db のオーナーはmailman になるはずだが、最終的にできたのを見ると、
-rw-rw—- 1 root _mailman 1088 8 31 17:51 aliases
-rw-rw—- 1 _mailman _mailman 16384 8 31 17:51 aliases.db
となっている。試行錯誤のとき、ここに書いた順番でやらなかったからか?owner の mailman と _mailman に違いが分かっていない。オーナー、グループともmailman (_mailman)にする。パーミッションは両方とも 660 だな
★Postfix がmailmanを使うために。
/Library/Server/Mail/Config/postfixでmain.cfに加筆する。
main.cfはmain.cf,20100819 とコピーしておいた。
main.cf の一番下に

owner_request_special = no
alias_maps = hash:/etc/aliases,hash:/usr/local/mailman/data/aliases

の2行を書き加える。
unknown_local_recipient_reject_code = 550 はすでに記述されていた。
hash:/etc/aliases は使わない?のでいらないのかも。
参考にしたページではrecipient_delimiter = +も加えることになっていたが、すでにあった。
★Mailmanのパスワードの設定

sh-3.2#/usr/local/mailman/bin/mmsitepass xxxxxx

と実行すると パスワードを変更しました. と返ってきた。
★新しいメーリングリストを作る。
/usr/local/mailman で

sh-sh-3.2# bin/newlist example
リスト管理者のメールアドレスを入力してください: hoge@example.com
example の初期パスワード:
Enter を押して example の管理者にメール通知する…

mailman をスタートさせたら、mailmanというリストを作れといってくるので作った。

sh-3.2# bin/mailmanctl start
サイトリスト名がありません: mailman
sh-3.2# bin/newlist mailman
リスト管理者のメールアドレスを入力してください: hoge@example.com
mailman の初期パスワード:
Enter を押して mailman の管理者にメール通知する…
sh-3.2# bin/mailmanctl start
Mailman のマスター qrunner を起動します
sh-3.2#

で多分いいんだろう。mailman というリストが必要らしい。
[追記] 2013.4.5
/usr/local/mailman/dataで確認するとaliases.dbのパーミッションがおかしい。ちゃんと660にしたはずだが…
-rw-rw—- 1 _mailman _mailman 35613 4 5 08:56 aliases
-rw-r—– 1 _mailman _mailman 49152 12 26 15:43 aliases.db
# chmod g+w aliases.db とする。
-rw-rw—- 1 _mailman _mailman 35613 4 5 08:56 aliases
-rw-rw—- 1 _mailman _mailman 49152 12 26 15:43 aliases.db
そんで
sh-3.2# newaliases
を実行する。
★サーバ起動時にmailmanを起動させる
サーバ起動時にmailmanが起動するようにLaunchDaemons にファイルを加えておく。
/System/Library/LaunchDaemons に行って
org.list.mailmanctl.plist を作り、中身は
<!–?xml version=”1.0″ encoding=”UTF-8″?–>
Debug Disabled
Label
org.list.mailmanctl
Program
/usr/local/mailman/bin/mailmanctl
ProgramArguments
mailmanctl
-s
start
KeepAlive
RunAtLoadAbandonProcessGroup
 
と書く。おしまい。
http://[ドメイン名or ip address]/mailman/admin にアクセスして新しいリストを作れることを確認し、複数のメールアドレスを登録し、メールを送付できたらおしまい。
サーバを再起動してmailmanが起動していることを確認した。
★昔のサーバにあるリストのコピー・ペースト
/list
/archives
の2つのdirectoryをコピーし、新規のサーバにあるものと入れ替える。
しかし、このままでは http://[ドメイン名]/mailman/admin/ でメーリングリストの一覧がみえない。
/usr/local/mailman で
bin/withlist -l -r fix_url [メーリングリスト名]
を実行するとそのリストが一覧にでてくる。すべてのリストについて実施する必要がある。
これが、わからなくて悩んだ。
★運用につていの説明は、ここに詳しく書いてある。
メーリングリスト管理メモ