sleepingbird.net Home since May.11 2003
Copyright sleepingbird, 1993- All rights reserved.
Linux Server

TOP > Linux Server > MailingList

Mailman

 mailing list server を国産の fml (http://www.fml.org) で構築したが、管理を web 上で簡単ビジュアルに行える Mailman というメーリングリストマネジャーが「UNIX USER」2003/11に掲載されたのでこちらに乗り換えてみようと思う。

 Mailman 公式サイト (http://www.list.org/
 国際化 Mailman に関する日本語情報 (http://mm.tkikuchi.net/

Python インストール

 Mailman は、Python Version 2.1 以上が必要である。 VineLinux3.1 をインストールした時点で、すでに 2.3.4 も同時に導入されている。
 ただし、 devel パッケージが必要なのでインストールしておく。

# apt-get install python-devel
 テストの結果、2.3.2 では日本語化部分に不具合が発生し、Mailman のスクリプトの一部が異常終了することが判明した。具体的には、月に1度自動配送される「メーリングリスト会員情報備忘通知」スクリプトにおいて、`unknown encoding: EUC-JP' を吐いて転けた。(後述の日本語コーデックを適用してもダメ)
 従って、 Python 2.2.3 を デュアルインストールすることにした。
$ wget http://www.python.org/ftp/python/2.2.3/Python-2.2.3.tgz
$ tar xvzf Python-2.2.3.tgz
$ cd Python-2.2.3
$ ./configure
$ su
# make install
 デフォルトで /usr/local/bin/ にインストールされる。
 次に日本語化モジュールをインストールする。
# wget http://www.python.jp/Zope/download/JapaneseCodecs/JapaneseCodecs-1.4.11.tar.gz
# tar zxvf JapaneseCodecs-1.4.11.tar.gz
# cd JapaneseCodecs-1.4.11
# /usr/local/bin/python2.2 setup.py install

Install

 実行ユーザー、グループ、ディレクトリを作成する。

$ su
# groupadd mailman
# useradd -g mailman mailman
# mkdir /usr/local/mailman
# chown mailman:mailman /usr/local/mailman
# chmod 2775 /usr/local/mailman
 ユーザー mailman で作業を続ける。
 Mailman-2.1.6 から日本語パッチが不要となった。
 ソースを GET し、展開する。
# su - mailman
$ wget http://mm.tkikuchi.net/mailman-2.1.6.tgz
$ tar xvzf mailman-2.1.6.tgz
 HTTPD と MTA の gid 、python のインストール位置を指定して configure する。
$ cd mailman-2.1.6
$ ./configure --with-cgi-gid=apache --with-mail-gid=nobody --with-python=/usr/local/bin/python2.2
 インストールする。デフォルトでは /usr/local/mailman にインストールされる。
$ make install

接続テスト

 Apache の設定を変更し再起動する。mailman ディレクトリの cgi-bin がアクセスできるようにする。

# vi /etc/httpd/conf/httpd.conf

#mailman
ScriptAlias /mailman/ /usr/local/mailman/cgi-bin/

<Directory /usr/local/mailman/cgi-bin/>
        AllowOverride None
        Options None
        Order allow,deny
        Allow from all
</Directory>

# /etc/rc.d/init.d/httpd restart
 ここで接続確認をする。http://www.qcp.jp/mailman/listinfo にブラウザでアクセスし、下のような表示されれば OK。なお、この段階では英語表記のままである。
 もし表示されなければ、各設定をもう一度確認する。

mailman_welcome.jpg

管理用メーリングリスト

 管理者用メーリングリスト(サイトリスト)を作成する。
 リスト名はデフォルトで mailman 。インストールフォルダの bin/newlist を使う。

$ bin/newlist mailman

リスト管理者のメールアドレスを入力してください:
mailman の初期パスワード:
あなたのメーリングリスト作成を完了するには, /etc/aliases(または同等の
ファイルに), 次の行を付け加えてやらなければなりません.
また, 多分, `newaliases' プログラムを実行しなければならないでしょう.

## 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"
 表示された aliases を copy & paste で /etc/aliases 書き加え、newaliases する。
 もし、copy し損ねても bin/genaliases で再表示される。
$ su
# vi /etc/aliases
# newaliases
 テストとしてメイリングリスト mailman にメールを送ってみる。
# mail mailman
Subject: test
test
.
Cc: 
# mail
 ここまでの設定に問題がなければ何も送られてこない。
 誤りがあれば、次のような内容のメールが送られてくる。
<mailman@sleepingbird.net>: Command died with status 2:
"/usr/local/mailman/mail/mailman post mailman". Command output: Group
mismatch error. Mailman expected the mail wrapper script to be executed as
group "postfix", but the system's mail server executed the mail script as
group "nobody". Try tweaking the mail server to run the script as group
"postfix", or re-run configure, providing the command line option
`--with-mail-gid=nobody'.
 mail-gid を間違って configure したようなので、指示に従って再度やり直し、メールが送られてこなくなるまで繰り返す。
 エラーが無くなったのを確認してから次に進む。
2004 Apr. 11

 メーリングリスト mailman は、すべての mailman システムにデフォルトで設定される。従って、mailman が稼働しているサイトに対して、
http://<サイト名>/mailman/listinfo/mailman
にアクセスすると、誰でもそのサイトのメーリングリスト mailman 加入画面に接続できてしまいます。そこで、メーリングリスト mailman のプライバシーオプションで加入には「承認」が必要にしておくことを忘れないこと。

最終調整と日本語化

 画像ファイルを apache のディレクトリにコピーする。

$ su
# cp /usr/local/mailman/icons/*.{jpg,png} /home/httpd/icons/
 保存書庫ディレクトリの Alias 設定と、ディレクトリ属性の設定を行い、apache を再起動する。
# vi /etc/httpd/conf/httpd.conf

Alias /pipermail/ /usr/local/mailman/archives/public/

<Directory /usr/local/mailman/archives/public/>
        AllowOverride None
        Options FollowSymLinks Indexes
        Order deny,allow
        Allow from all
</Directory>

# /etc/rc.d/init.d/httpd restart
 cron を設定する。なお、crontab.in の内容は一読してどんな処理がされているか位は確認しておく。
# su - mailman
$ cd /usr/local/mailman/cron
$ crontab crontab.in
 qrunner daemon を起動する。
$ cd /usr/local/mailman
$ bin/mailmanctl start
Mailman のマスター qrunner を起動します
 ここまで、設定が正しければ、次の二つのメールが管理者宛に送信されてくる。
Subject: Your new mailing list: mailman
 メーリングリスト mailman を作成したときの管理者宛通知

Subject: Your message to Mailman awaits moderator approval
 メーリングリスト mailman にテストメールを送信したときの保留通知
 Mailman の使用言語のデフォルトを日本語にする。
 Mailman の設定は make install 時に自動生成された設定ファイルに対し /usr/local/mailman/Mailman/mm_cfg.py に変更部分を記入することによるオーバーライド指定となっている。
 /usr/local/mailman/Mailman/mm_cfg.py に次の行を追加する。
 また、デフォルトの e-mail ホスト名と url を明示しておく。(明示しないとサーバーの真の名前がセットされてしまう。)
 変更後 qrunner を再起動する。
$ vi /usr/local/mailman/Mailman/mm_cfg.py

DEFAULT_SERVER_LANGUAGE = 'ja'

$ bin/mailmanctl restart
Mailman のマスター qrunner を再起動します
 ここで再度 http://www.sleepingbird.net/mailman/listinfo にブラウザでアクセスすれば、日本語のページが確認できる。
mailman_welcome_ja.jpg
 これ以後作成するメーリングリストはデフォルトで日本語で生成される。
 ここで、表示されたページのリンクを確認してみるとサーバーの実名が使用されてしまっている。これは /usr/local/mailman/Mailman/Defaults.py の DEFAULT_EMAIL_HOST と DEFAULT_URL_HOST に make install 時に自動でサーバー名がセットされたためである。一度生成されたメーリングリストは修正されないようなので、いったん、最初に作った mailman メーリングリストを削除し、/usr/local/mailman/Mailman/mm_cfg.py を編集して qrunner を再起動後、もう一度作成する。
$ bin/rmlist -a mailman

$ vi /usr/local/mailman/Mailman/mm_cfg.py

DEFAULT_EMAIL_HOST = 'sleepingbird.net'
DEFAULT_URL_HOST = 'www.sleepingbird.net'
add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)
 3行追加

$ bin/mailmanctl restart
Mailman のマスター qrunner を再起動します
$ newlist mailman
 作成した mailman メーリングリストは管理用として Mailman で定義済みなので、 cron のエラーなど Mailman 運用中の重要なメールが配信されるため、必ず入会しておく。
http://www.sleepingbird.net/mailman/listinfo/mailman にブラウザで接続し、入会申し込みをする。
 入会手続き後、確認のメールが配信されるので、そこに記載されている url に接続する事によって正式入会となる。
 また、デフォルトで「動作が定義されていない非会員からの投稿があった場合の動作」が「保留」になっている。このため cron から送信が保留され、その都度管理者あてに通知が送信されるので、自動送信されるように設定しておく。
管理ページから
「プライバシー・オプション」の「送信者フィルター」サブメニューを開く
設定項目の下から二番目の「動作が定義されていない非会員からの投稿があった場合の動作」を「承認」に変更しておく。
 mailman メーリングリストは一般には参加を募らないので「ようこそ!」ページに表示しないようにしておく。
「プライバシー・オプション」の[入会規則]最初の項目
「このマシンでどんなリストがあるか聞かれた時に広告しますか? 」を「いいえ」に変更する。
 メーリングリストを作成するためのパスワードを設定しておく。以後、メーリングリストを作成するにはこのパスワードが必要となる。
$ cd /usr/local/mailman
$ bin/mmsitepass
 新たにメーリングリストが作成された場合、サイト管理者あてに /etc/aliases に追加する項目がメールされるので、それを追加して newaliases して運用開始となる。

2004 Apr. 11

 メーリングリスト mailman は、すべての mailman システムにデフォルトで設定される。従って、mailman が稼働しているサイトに対して、
http://<サイト名>/mailman/listinfo/mailman
にアクセスすると、誰でもそのサイトのメーリングリスト mailman 加入画面に接続できてしまいます。そこで、メーリングリスト mailman のプライバシーオプションで加入には「承認」が必要にしておくことを忘れないこと。(小畠さん、ご指摘ありがとうございました。)

コマンド一覧

 mailman 自体をコントロールするのはインストールディレクトリ下の bin にあるコマンド群である。これらの一覧を次に示す。なお、使用方法は --help オプションで起動すると表示される。

コマンド 処理概要
bin/add_members コマンド行から会員登録する.
bin/arch リストの保存書庫を再構築する.

このコマンドでメーリングリストの保存書庫を再構築します. 保存書庫内の
メールを編集したり削除したときに, このコマンドを実行するとよいでしょう.
bin/b4b5-archfix MM2.1b4 形式の保存書庫を修正する.
bin/change_pw リストのパスワードを変更する.
bin/check_db リストの設定データベースをチェックする.
bin/check_perms Mailman インストールのためのパーミッションをチェックする.
bin/cleanarch .mbox の過去メールファイルをきれいにする.
bin/clone_member 会員アドレスのクローン作成.

 会員アドレスのクローン作成とは, 元の会員アドレスと全く同じオプションとパスワードで新しい会員を登録することを意味します.
bin/config_list テキストファイルの記述からリストの設定を行う.
bin/discard 保留メールを破棄する.
bin/dumpdb Mailman のデータベースファイルの内容を表示する.
bin/find_member 会員が属するリストを検索する.
bin/fix_url url 情報をサーバーに整合させる
bin/genaliases Mailman の aliases を再生成する.
実際の出力は, mm_cfg.py ファイルの `MTA' 変数の値によって変わります.
bin/inject Mailman の incoming キューにファイルからメールを入れる.
bin/list_admins メーリングリストの管理者を表示する
bin/list_lists 全てのメーリングリストを表示する.
bin/list_members メーリングリストの会員全員を表示する.
bin/list_owners 全部または一部のメーリングリストの管理者を表示する.
bin/mailmanctl Mailman の qrunner デーモンをスタート/停止するスクリプト.
bin/mmsitepass 端末から入力することで, サイトのパスワードを設定する
bin/newlist 新しく会員未登録のメーリングリストを作成する.
bin/qrunner ひとつ以上の qrunner を, 一度か繰り返し実行する.
bin/remove_members リストから会員を削除する.
bin/rmlist メーリングリストを削除する (完全に) - 注意!
bin/show_qfiles Mailman の qfiles にあるメールの内容を表示する.
bin/sync_members リストの会員を平文のファイルと同期させる.
bin/unshunt Mailmanの翻訳をチェックする. 翻訳の中の変数とタグが原本の変数とタグに一致するかどうかを調べる.
bin/unshunt メールを shunt キューから元のキューに移動する.
bin/update 必要なアップグレードを行う.
bin/version 使用中の Mailman バージョンはを表示する.
オプションは無い.
bin/withlist メーリングリストオブジェクトとやりとりするために一般的枠組み.

POSTFIX 固有の設定

 Mailman ソースの展開ディレクトリに README.POSTFIX という POSTFIX 固有の設定解説があるので、これに基づいて設定を行う。
 /etc/postfix/main.cf に次の行を追加する。

owner_request_special = no
recipient_delimiter = +
unknown_local_recipient_reject_code = 550
 /usr/local/mailman/Mailman/mm_cfg.py に次の行を追加する。
MTA = 'Postfix'
 /usr/local/mailman/Mailman/Defaults.py の次の値がシステムの設定と整合しているかを確認しておく。もし、違っていたら mm_cfg.py で修正値を追加する。VineLinux3.1 では整合していた。
POSTFIX_ALIAS_CMD = '/usr/sbin/postalias'
POSTFIX_MAP_CMD = '/usr/sbin/postmap'
 ここで、ユーザー mailman で bin/genaliases を実行すると、/usr/local/mailman/data 下に aliases と aliases.db が生成されるようになる。このファイルを POSTFIX で参照できるように /etc/postfix/main.cf を変更しておく。なお、生成されたファイルの所有者とグループが maillman であることを確認し、もし違っていたら変更しておく。また、aliases.db のパーミッションも変更する。(これは README.POSTFIX に記述がないので注意)
 main.cf は変更したら postfix reload を忘れないこと。
# su mailman
$ cd /usr/local/mailman
$ bin/genaliases
$ ls -l data/aliases*

$ chmod g+w data/aliases.db
# vi /etc/postfix/main.cf

alias_maps = hash:/etc/postfix/aliases

  

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

# /etc/rc.d/init.d/postfix reload
 最後に、Mailman を --with-mail-gid=mailman で configure し直す。
# su mailman
$ cd /home/mailman/mailman-2.1.6b3
$ ./configure --with-cgi-gid=apache --with-mail-gid=mailman --with-python=/usr/local/bin/python2.2
$ make install
$ cd /usr/local/mailman
$ bin/check_perms -f
 問題なければ qrunner を再起動する。
$ bin/mailmanctl restart
Mailman のマスター qrunner を再起動します
 これで、新しいメーリングリストを作った時に newaliases しなくてもリストが運用できる。ただし、POSTFIX の reload 操作は必要。 cron/mailpasswds の修正も忘れないこと。
 /etc/aliases から今までテストで追加した aliases を削除して newaliases しておくこと。

自動起動

 サーバー起動時の自動起動用スクリプトが /usr/local/mailman/scripts/mailman として生成されているので、これを利用する。

# cp /usr/local/mailman/scripts/mailman /etc/init.d/mailman
# cd /etc/init.d
# chkconfig --add mailman
# chkconfig mailman on
# chkconfig --list mailman
mailman         0:off  1:off  2:on  3:on  4:on  5:on  6:off

追加設定

 次の設定をしておくと便利。/usr/local/mailman/Mailman/mm_cfg.py に追記する。
 メール配送の個別化
 メールのヘッダやフッタに個別のデータを差し込むことが出来るようになる。
 「普通配送オプション」に「普通配送について、配送を個別化しますか?」という項目が追加される。
 「完全個別配送」にすると、宛先(To:)が会員個人のアドレスになる。
 ただし、システムのオーバーヘッドが大きくなるので注意する。

OWNERS_CAN_ENABLE_PERSONALIZATION = Yes
 VERP 配送先トラッキング
 配送エラーメールが発生した場合に、相手を特定しやすくする。
 (Variable Envelope Return Path)
VERP_PERSONALIZED_DELIVERIES = Yes
 添付ファイル削除
管理ページから
「内容フィルター」の「以下の設定に従ってメールの内容によるフィルターをおこないますか?」を「はい」
「この内容(Content-Type)に合わない添付ファイルは取り除きます. このチェックを行わないようにするには,ここを空白にしておいてください. 」の右枠内に次のように入力しておく。

multipart
text/plain

メールマガジン的設定

管理ページから
「会員管理」 の[会員リスト]
「その他の会員に関する操作」
「全員の発言制限(モデレーション)・ビットをセットする. (隠れ会員を含む)」を「オン」にする。

「プライバシー・オプション... 」の[送信者フィルター]で「デフォルトで, 新会員からの投稿は制限しますか?」
を「はい」にする。

「投稿があると司会承認のため直ちに保留される非会員のメールアドレス」に投稿に使うメールアドレスを入力しておく。

「一般オプション」の「メッセージの送信者を隠して, リストのアドレスに置きかえる (From, Sender と Reply-To を削除します)」を「オン」にする。
 以上の設定で、送信後、自分自身で配信を承認することによって、偽装メールを防止する。また、送信用アドレスも隠蔽できる。

その他の設定

 普通配送会員へのメールに付加されるフッタの例示

_______________________________________________
%(real_name)s mailing list
このリストの案内ページ
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
退会・変更・配送一時停止は以下へ
%(user_optionsurl)s
 post_id (通し番号) を変更する
$ /usr/local/bin/python2.2 -i bin/withlist sbinfo
sbinfo のリストを読み込中 (ロック解除)
変数 `m' が sbinfo の MailList インスタンスです
>>> m.Lock()
>>> m.post_id
10
>>> m.post_id = 30
>>> m.Save()
>>> ^D
>>> ^D
リストをロック解除 (保存はしてません): sbinfo
最終処理中
$

まとめて入会登録時
一行に一名書き込むが、アドレスに続けて半角スペースの次に半角括弧で囲むと名前データとなる。
aaaaa@exsample.net (nameA)
bbbbb@exsample.net (nameB)
ccccc@exsample.net (nameC)

送信メッセージのカスタマイズ

 mailman が自動送信するメッセージのテンプレートは /usr/local/mailman/templates/ja にあるので、これを修正すればカスタマイズできる。
 主なものは次のとおり。

cronpass.txt メーリングリストが毎月自動送信する備忘通知
help.txt メーリングリストのヘルプ
subscribeack.txt メーリングリストへようこそ!

 メールのサブジェクト(表題)は、次のファイルに記述されているので変更が可能。
/usr/local/mailman/messages/ja/LC_MESSAGES/mailman.po
(毎月送信される備忘通知は 11,294 行目辺りに記述されている。)
 mailman.po はテキストファイルなので、該当する部分のメッセージをテキストエディタで変更する。
# su - mailman
$ cd /usr/local/mailman/messages/ja/LC_MESSAGES
$ vi mailman.po
 変更後、
$ ../../../bin/msgfmt.py -o mailman.mo mailman.po
 で変更を反映させ、mailman を再起動する。
$ ../../../bin/mailmanctl restart

サーバーの移行

 今回、サーバーの移行とドメイン名の変更を行った。メーリングリストの全データは次の手順で引き継いだ。

  1. 移行先で mailman が正常に稼働する状態にインストールし、mailman を停止しておく。
  2. 移行元のサーバーで、/usr/local/mailman 以下を tar で固めて移行先で展開する。
  3. 移行元と先とで mainman のバージョンが違うので、移行先で再度 mailman を ./configure からインストールし直す。
  4. bin/fix_url ですべてのリストの url を整合させる。
  5. /usr/local/mailman/Mailman/mm_cfg.py のドメイン名を再確認し、mailman を起動。
  make install によって各種の設定ファイルが上書き初期化されるのでバックアップを取っておく。
移行元
$ su -
# cd /usr/local
# tar cvf mailman.tar mailman

移行先
$ su -
# /etc/init.d/mailman stop
# mv ./mailman.tar /usr/local
# tar xfv mailman.tar

# su mailman
$ cd /home/mailman/mailman-2.1.6b3
$ ./configure --with-cgi-gid=apache --with-mail-gid=mailman --with-python=/usr/local/bin/python2.2
$ make install
$ cd /usr/local/mailman
$ bin/check_perms -f

$ exit
# cd /usr/local/mailman
# ./bin/withlist -l -r fix_url リスト名 -v

# su mailman
$ vi /usr/local/mailman//Mailman/mm_cfg.py
 なお、templates ディレクトリ内のテキスト類も上書きされているので確認する。
$ su
# /etc/init.d/mailman start

update

 新しいバージョンのパッケージがリリースされたら、次の手順でアップデートする。
 というか、単純にオーバーライトすれば良い。
 なお、この時 templates ディレクトリ内のテキスト類も上書きされるので、カスタマイズしてある場合には待避しておく。

# su - mailman
$ wget http://mm.tkikuchi.net/mailman-2.1.8.tgz
$ tar xvzf mailman-2.1.8.tgz
$ cd mailman-2.1.8
$ ./configure --with-cgi-gid=apache --with-mail-gid=mailman --with-python=/usr/local/bin/python2.2
$ make install
$ cd /usr/local/mailman
$ bin/check_perms -f
 問題なければ qrunner を再起動する。
$ bin/mailmanctl restart
Mailman のマスター qrunner を再起動します
 待避済の templates ディレクトリ内テキストがある場合には、再起動前に戻しておく。

メールアドレスの隠蔽(SPAM 対策)

 メーリングリストの案内ページに管理者のメールアドレスがそのまま掲載されているため、最近 SPAM が多く届くようになった。確認してみるとメーリングリストのアドレスも不用心に掲載されている。対策が後手になってしまったが一応これらのアドレスを表示しないようにしておく。

 まず、トップページに掲載されている mailman@ドメイン名 を隠す。

# su - mailman
$ cd /usr/local/mailman/Mailman/Cgi
$ vi listinfo.py

    welcome.extend(
        (_(''' To visit the general information page for an unadvertised list,
        open a URL similar to this one, but with a '/' and the %(adj)s
        list name appended.
        <p>List administrators, you can visit '''),
         Link(Utils.ScriptURL('admin'),
              _('the list admin overview page')),
         _(''' to find the management interface for your list.
         <p>If you are having trouble using the lists, please contact '''),
         Link('mailto:' + siteowner, siteowner),
         '.<p>'))
 下から2行目の行を削除してリンクを切る。ついでに最後の行のピリオドを取る。
    welcome.extend(
        (_(''' To visit the general information page for an unadvertised list,
        open a URL similar to this one, but with a '/' and the %(adj)s
        list name appended.
        <p>List administrators, you can visit '''),
         Link(Utils.ScriptURL('admin'),
              _('the list admin overview page')),
         _(''' to find the management interface for your list.
         <p>If you are having trouble using the lists, please contact '''),
         '<p>'))
 このままだと文言の整合性が無くなるので次を書き換える。
$ cd /usr/local/mailman/messages/ja/LC_MESSAGES
$ vi mailman.po

msgid ""
" to find the management interface for your list.\n"
"         <p>If you are having trouble using the lists, please contact "
msgstr ""
" で自分の管理ページを探してください.\n"
"<p>リストの利用に関するトラブルは, 次の宛先に連絡してください: "
 内容は随意に。
msgid ""
" to find the management interface for your list.\n"
"         <p>If you are having trouble using the lists, please contact "
msgstr ""
" で自分の管理ページを探してください.\n"
"<p>リストの利用に関するトラブルは, サイト管理人に連絡してください: "
 言語ファイルを .mo ファイルに変換して変更を反映させる。
$ msgfmt -o mailman.mo mailman.po
 各メーリングリスト案内ページのリストアドレスへの mailto リンクをはずす。
 メーリングリストの管理ページから「公開 HTML ページとテキストファイルを編集する」を選択し、「リスト総合案内ページ」を編集する。
        <td colspan="2">
          メーリングリストの全会員に送るメールは, 
          <A HREF="mailto:<MM-Posting-Addr>"><MM-Posting-Addr></A>
          のアドレス宛に送信してください.
 ここのリンクを削除する。
        <td colspan="2">
          メーリングリストの全会員に送るメールは, 
          <MM-Posting-Addr>
          のアドレス宛に送信してください.
 なお、/usr/local/mailman/templates/ja/listinfo.html が新規にリストを作成したときのテンプレートになっているのでこれも変更しておく。
 同じページのフッターの部分にメーリングリスト管理人へのメールリンクがあるので修正する。
$ cd /usr/local/mailman/Mailman
$ vi HTMLFormatter.py

        owner_link = Link('mailto:' + self.GetOwnerEmail(), ownertext).Format()
          
        owner_link = Link('http://www.sleepingbird.net/mail/cmfmail.cgi', ownertext).Format()