GNU Mailman の設定

GNU Mailman の設定

Mailman とはもっとも使われているオープンソースのメーリングリストサーバである.最新バージョンは2.1.14 であるが(2014/10/28 現在),Redhat 系 Linux で用いられる yum パッケージには古いバージョン(2.1.12,2014/10/28 現在)しか含まれていない.
ここでは,yum を用いた Mailman の設定方法について記す.

yum からインストール

  1. 管理者権限で以下を実行
     # yum install mailman
  2. 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
  1. mailmanCRON の設定
    以下コマンドを実行.

     # /cp /usr/lib/mailman/cron/crontab/in /etc/cron.d/mailman
  2. aliase の設定
    以下コマンドを実行.
 # /usr/lib/mailman/bin/genaliases
 # chown .mailman /etc/mailman/aliases*
 # chmodd g+w /etc/mailman/aliases*
  1. 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 を再起動する.

  2. 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 を再起動する.

  1. 管理用メーリングリスト mailman の作成
    以下コマンドを実行.

     # /usr/lib/mailman/bin/newlist mailman

    案内にしたがって,管理者メールアドレスの入力,初期パスワードの設定,通知メールの送信を行う.
    最後に,以下のコマンドを実行する.

     # /usr/lib/mailman;/bin/config_list -i /etc/mailman/sitelist.cfg mailman

    成功すれば,"personalize" と表示される.

  2. 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" を移行することを考える)

    1. newlist コマンドで同じ名前のリスト ("test") を作成.
    2. できた /var/lib/mailman/lists/test 以下を削除.
    3. 古い Mailman の /var/lib/mailman/lists/test/config.pck を持ってくる.
    4. ブラウザからアクセスし,きちんと移せたか確認.

ターミナルからの操作

  • メーリングリスト一覧の表示
     $ /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

参考サイト