kilin> how to> Mailman

Mailman

(2010.2.23-2014.3.21)

yumでインストールできる標準的なメーリングリスト.FedoraやApacheのコミュニティでも使われている.
(環境) CentOS 5.2-5.4, CentOS6.5

以下,プロンプトが#のコマンドはスパーユーザで,$は普通のユーザで実行.

インストール

# yum install mailman

管理Webページ

管理Webページの設定ファイル/etc/httpd/conf.d/mailman.confを編集。
# vi /etc/httpd/conf.d/mailman.conf
太字部分を追加して,管理用Webページをパスワード付SSLする。
<Directory /usr/local/mailman/cgi-bin/>
    SSLRequireSSL
    AllowOverride None
    Options ExecCGI
    Order allow,deny
    Allow from all
       
       
    AuthType Basic
    AuthUserFile htpasswdで作成したパスワードファイル名
    AuthName "Enter password"
    Require user ユーザ名
</Directory>
保存書庫が文字化けしないように,以下をファイル末尾に追加する(metaタグで文字コードが指定できるように/etc/httpd/conf/httpd.confの AddDefaultCharset UTF-8 行をコメントアウトしておくこと)。
<Location “/mailman/private”>
    AddDefaultCharset EUC-JP
</Location>
設定を反映させるためにhttpdを再起動.
# /etc/init.d/httpd restart
mailman用ロゴファイルをhttpdのアイコンディレクトリへコピー
# cp /usr/lib/mailman/icons/* /var/www/icons/

管理者パスワードの設定

端末の受信文字コードをEUCにして,以下のコマンドを入力し,端末の受信文字コードを元に戻す.それぞれ,サイト管理者,リスト作成者のパスワード.
# /usr/lib/mailman/bin/mmsitepass
# /usr/lib/mailman/bin/mmsitepass -c

設定ファイル編集

以下では,#で始まるコメント行に日本語が使ってあるが,設定ファイルに日本語は使えないので,実際にはコメント行を入れないこと。
# vi /usr/lib/mailman/Mailman/mm_cfg.py

#以下は修正
DEFAULT_URL_HOST   = 'サーバ名'
DEFAULT_EMAIL_HOST = 'サーバ名'

#以下は追加

#日本語をデフォルトにする
DEFAULT_SERVER_LANGUAGE = 'ja'

#Web設定をSSLでおこなう
DEFAULT_URL_PATTERN = 'https://%s/mailman/'

#DEFAULT_LIST_ADVERTISED = No

#Webからメーリングリストを削除できる
OWNERS_CAN_DELETE_THEIR_OWN_LISTS = Yes

#メーリングリストの件名を指定する
DEFAULT_SUBJECT_PREFIX = "[%(real_name)s:%%d] "

#メンバー以外からの投稿を拒否する
DEFAULT_GENERIC_NONMEMBER_ACTION = 2

#メッセージのフッタをなくす.
DEFAULT_MSG_FOOTER = ""
#DEFAULT_MSG_FOOTER = """_______________________________________________
#%(real_name)s mailing list
#%(real_name)s@%(host_name)s
#%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
#"""

#毎月パスワード備忘通知を送らない
DEFAULT_SEND_REMINDERS = No

#新入会員に歓迎メールを出さない
DEFAULT_SEND_WELCOME_MSG = No

#投稿された記事の返信先をメーリングリストにする
DEFAULT_REPLY_GOES_TO_LIST = 1

#投稿メール本文の最大サイズを無制限にする
DEFAULT_MAX_MESSAGE_SIZE = 0

#リスト会員に内容が重複するメールを送る
DontReceiveDuplicates = 0

#保存書庫を会員に限定
DEFAULT_ARCHIVE_PRIVATE = 1

#保存書庫の巻を作成する頻度。0 は年毎、1 は月毎、2 は四半期毎、3 は週毎、4 は日毎
DEFAULT_ARCHIVE_VOLUME_FREQUENCY = 0

#普通配送メールの添付ファイルを保管しない
DEFAULT_SCRUB_NONDIGEST = False

管理用メーリングリストmailman作成

端末の受信文字コードをEUCにして,以下のコマンドを入力し,端末の受信文字コードを元に戻す.指示通りに表示された文字列を/etc/aliasesファイルに貼り付け,newaliasesコマンドを実行する.
# /usr/lib/mailman/bin/newlist mailman

# vi /etc/aliases

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

# newaliases

mailman起動

mailmanを起動し,また,システム起動時にmailmanが自動起動するように設定する.
# /etc/init.d/mailman start
# /sbin/chkconfig mailman on

メーリングリストの管理

ブラウザからhttps://xxxx/mailman/listinfoへアクセスして,メーリングリストの管理や作成をおこなう.ただし,削除はコマンド
# /usr/lib/mailman/bin/rmlist -a メーリングリスト名
で行い,/etc/aliasesに追加した行をエディタで削除する.

連番の変更

メーリングリストの件名につく連番を変更するには.以下はメーリングリストxxxの連番を100にする例.最後にCtrl+Dでぬける.
# cd /usr/lib/mailman/bin/
# ./withlist xxx
xxx のリストを読み込中 (ロック解除)
変数 `m' が xxx の MailList インスタンスです
>>> m.Lock()
>>> m.post_id
4.0
>>> m.post_id=100
>>> m.Save()
>>>
リストをロック解除 (保存はしてません): xxx
最終処理中

設定のコピー

メーリングリストの設定を保存し,別のメーリングリストにコピーするには.以下はメーリングリストml1の設定をml2にコピーする例.
# cd /usr/lib/mailman/bin/
# ./config_list -o myconf ml1
ml1に固有の設定をコメントアウトする.
# vi myconf

   ######real_name = 'ml1'
   ######subject_prefix = '[ml1:%d] '

# ./config_list -i myconf ml2

新サーバーへのデータと設定の移行

Mailmanを新しいサーバーにインストールし(上記インストールと管理Webページの項),旧サーバーから次のディレクトリをrsyncでコピーする。
rsync -a 旧サーバ名:/etc/mailman/ /etc/mailman/
rsync -a 旧サーバ名:/var/lib/mailman/ /var/lib/mailman/
設定はやり直す必要がある。そして,旧サーバーの/etc/aliasesにあるmailman用の設定部分を,新サーバーの/etc/aliasesにコピー&ペーストしてnewaliasesコマンドで変更を反映する。そして,ブラウザからhttps://xxxx/mailman/listinfoへアクセスして,移行されたはずのメーリングリストを確認する。

参考

Mailman, GNU メーリングリスト管理システム (http://mm.tkikuchi.net/index.html) 2009.1現在
mailman-2.1.5-7(+sendmail) (http://www.nina.jp/server/redhat/mailman/mailman-2.1.5-7.html) 2009.1現在
mailmanのweb interfaceをssl対応に (http://d.hatena.ne.jp/afro/20081215) 2009.1現在
メーリングリストサーバー構築(sendmail+Mailman) (http://centossrv.com/sendmail-mailman.shtml) 2009.1現在
Mailmanでメーリングリスト - ひとがじり (ここ) 2009.1現在
Mailmanのデータを移行する (http://blog.development-network.net/ung/2011/05/mailman_3.html)2014.1現在
Mailman日本語情報 (http://docs.python.jp/contrib/mailman/index.html) 2014.3現在