GNU Mailman の設定
Mailman とはもっとも使われているオープンソースのメーリングリストサーバである.最新バージョンは2.1.14 であるが(2014/10/28 現在),Redhat 系 Linux で用いられる yum パッケージには古いバージョン(2.1.12,2014/10/28 現在)しか含まれていない.
ここでは,yum を用いた Mailman の設定方法について記す.
yum からインストール
- 管理者権限で以下を実行
# yum install mailman
- mm_cfg.py の設定
次に,mailman 自体の設定を行う.設定ファイルは,/etc/mailman/mm_cfg.py に以下を書き加える.
(ここでは agate での設定を例とする)
DEFAULT_URL_HOST = 'www-ilab.cis.doshisha.ac.jp'
DEFAULT_EMAIL_HOST = 'hilab.doshisha.ac.jp'
MTA = 'Postfix'
DEFAULT_SERVER_LANGUAGE = 'ja'
DEFAULT_URL_PATTERN = 'https://%s/mailman/'
DEFAULT_LIST_ADVERTISED = No
OWNERS_CAN_DELETE_THEIR_OWN_LISTS = Yes
DEFAULT_SUBJECT_PREFIX = "[%(real_name)s:%%d] "
DEFAULT_REPLY_GOES_TO_LIST = 1
DEFAULT_NEW_MEMBER_OPTIONS = 258
DEFAULT_GENERIC_NONMEMBER_ACTION = 2
DEFAULT_DIGESTABLE = No
- mailmanCRON の設定
以下コマンドを実行.# /cp /usr/lib/mailman/cron/crontab/in /etc/cron.d/mailman
- aliase の設定
以下コマンドを実行.
# /usr/lib/mailman/bin/genaliases
# chown .mailman /etc/mailman/aliases*
# chmodd g+w /etc/mailman/aliases*
- Postfix の設定
Postfix 設定は,/etc/postfix/main.cf を編集する
alias_maps に hash:/etc/mailman/aliases を追加する.
例) alias_maps = hash:/etc/aliases, hash:/etc/mailman/aliases ← これを追加
編集が終わったら,# /etc/rc.d/init.d/postfix restart
で postfix を再起動する.
- Apache の設定
/etc/httpd/conf.d/mailman.conf を編集する.
バージョンによって記述の仕方が異なるため,確認してから編集を行うこと.
以下は agate 用に書き換えた例である.
…
<Directory /usr/lib/mailman/cgi-bin/>
AllowOverride All
Require all granted
</Directory>
…
編集が終わったら,
# /etc/rc.d/init.d/httpd restart
で httpd を再起動する.
- 管理用メーリングリスト mailman の作成
以下コマンドを実行.# /usr/lib/mailman/bin/newlist mailman
案内にしたがって,管理者メールアドレスの入力,初期パスワードの設定,通知メールの送信を行う.
最後に,以下のコマンドを実行する.# /usr/lib/mailman;/bin/config_list -i /etc/mailman/sitelist.cfg mailman
成功すれば,"personalize" と表示される.
- Mailman の起動
以下のコマンドを実行.# /etc/rc.d/init.d/mailman start
自動起動の設定
# chkconfig mailman on
自動機動の設定を確認する
# chkconfig --list mailman
ここで,0:off 1:off 2:on 3:on 4:on 5:on 6:off となっていることを確認する.
以上の設定が完了すれば,https://www-ilab.cis.doshisha.ac.jp/milml/listinfo にアクセスすることができる.
ソースコードからインストール
ひっかかった問題
- httpd 再起動時に「サブシステムがロックされています」と言われる
→ httpd のロックファイルを削除してみる# rm /var/lock/subsys/httpd
- ブラウザ経由でアクセスを試みる際に,"Bug in Mailman ~" と表示される
→ Mailman が起動しているか確認 - 新規リストを作成し,通知メールを送信すると件名が文字化けする
→ shell のエンコーディングが UTF-8 であるにもかかわらず,Mailman が勝手に EUC-JP に変換して送信してしまうことが原因. - /var/log/mailman 以下のファイルが更新される度にパーミッションが書き換えられてしまう
→ /etc/logratate.d/mailman を書き換え,新しいファイルを作成する際にパーミッションと所有者を変更させる - 新しく作成したリストが機能しない
→ aliases.db が aliases よりも古いことが原因."newaliases" コマンドを実行するリストデータの移行
いちいち新しくリストを設定するのは面倒だったので,以下の手順を実施.
(仮に "test" を移行することを考える)- newlist コマンドで同じ名前のリスト ("test") を作成.
- できた /var/lib/mailman/lists/test 以下を削除.
- 古い Mailman の /var/lib/mailman/lists/test/config.pck を持ってくる.
- ブラウザからアクセスし,きちんと移せたか確認.
ターミナルからの操作
- メーリングリスト一覧の表示
$ /usr/lib/mailman/bin/list_lists
- メーリングリストの作成
$ /usr/lib/mailman/bin/newlist [オプション][リスト名[管理者メールアドレス]]
作成後,"newaliases" コマンドを実行する
$ newaliases
- メーリングリストの削除
$ /usr/lib/mailman/bin/rmlist [リスト名]
- 各リストの設定ファイルの確認
各リストの設定ファイルは,/var/lib/mailman/lists/(リスト名)/config.pck である.バイナリファイルのため,確認するためには dumpdb コマンドを用いる.$ /usr/lib/mailman/bin/dumpdb /var/lib/mailman/lists/[リスト名]/config.pck