ライン

ポイント:ウェブインターフェイスが利用できる

ライン

 はじめに

mail/mailman

 慣れたMajordomoをあきらめて、Webベースで設定ができる本ツールに移行して何年目かになります。
宛先不明になった場合の処理や、アーカイブなども自動で行ってくれてかなり多機能です。

 今回は、2つのMailmanで動作させていたそれぞれのリストサーバを1つに統合する作業を実施しました。
そのタイミングで本ページを再作成したものです。

 FreeBSD 7.1での例です。

 導入と設定

導入

 導入を開始します。

# cd /usr/ports/japanese/mailman
# make install clean

 今回も日本語バージョンのportsから導入を行うことにしました。
MTAの選択画面が表示されますので、選択を行います。

 今回は sendmailとしましたので、これにクリックを入れて開始です。
※前回は、postfix版、Exim版、sendmail版のそれぞれがありました

You may change the following build options:
MM_USERNAME=mailman     The username of the Mailman user.
MM_USERID=91            The user ID of the Mailman user.
MM_GROUPNAME=mailman    The group to which the Mailman user will belong.
MM_GROUPID=MM_USERID    The group ID for the Mailman user.
MM_DIR=mailman          Mailman will be installed in /usr/local/mailman.
CGI_GID=www             The group name or id under which your web server executes CGI scripts.
IMGDIR=www/icons        Icon images will be installed in /usr/local/www/icons.

という表示がされています。
しばらくして気づくと導入は完了していました。

設定

 ウェブインターフェイスを持つツールなので、ウェブサーバがあることが前提になります。
今回はApache22に導入設定を行います。httpd.conf に追加する形で設定を加えます。

    ScriptAlias /cgi-bin/ "/usr/local/www/apache22/cgi-bin/"
    ScriptAlias /mailman/ "/usr/local/mailman/cgi-bin/"
    Alias /pipermail/ "/usr/local/mailman/archives/public/"

</IfModule>
.
.
.
<Directory "/usr/local/mailman/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>
<Directory "/usr/local/mailman/archives/public/">
    Options FollowSymLinks Indexes
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

 次に、 /usr/local/mailman/Mailman/mm_cfg.py に追加する設定です。

DEFAULT_SERVER_LANGUAGE = 'ja'

SENDMAIL_CMD = '/usr/local/etc/mail/jsendmail'

DEFAULT_REPLY_GOES_TO_LIST = 1
DEFAULT_URL_PATTERN = 'https://%s/mailman/'
PUBLIC_ARCHIVE_URL = 'https://%(hostname)s/pipermail/%(listname)s'
DEFAULT_SUBJECT_PREFIX = "[%(real_name)s:%%04d]"
DEFAULT_LIST_ADVERTISED = No
DEFAULT_ARCHIVE_PRIVATE = 1
DEFAULT_FIRST_STRIP_REPLY_TO = Yes
ARCHIVE_TO_MBOX = 2
OLD_STYLE_PREFIXING = No
DEFAULT_SEND_WELCOME_MSG = No
DEFAULT_SUBSCRIBE_POLICY = 2
DEFAULT_PRIVATE_ROSTER = 2
ALLOW_RFC2369_OVERRIDES = No
DEFAULT_MAX_MESSAGE_SIZE = 1000
DEFAULT_DIGESTABLE = No
DEFAULT_DEFAULT_MEMBER_MODERATION = Yes
add_virtualhost('ml.example.ne.jp', 'ml.example.ne.jp')

 のように記述します。

メーリングリストの管理者設定

 サイトのパスワードを決めておきましょう。

# cd /usr/local/mailman
# bin/mmsitepass
New site password:
Again to confirm password:
Password changed.
# bin/newlist mailman
Enter the email of the person running the list: foo@example.ne.jp
Initial mailman password:
To finish creating your mailing list, you must edit your /etc/aliases (or
equivalent) file by adding the following lines, and possibly running the
`newaliases' program:

## 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"

Hit enter to notify mailman owner...

# bin/genaliases -q > /usr/local/etc/mail/aliases
# bin/check_perms -f

 説明もなしにですが、上記のように操作して設定を進めてしまいます。

 以下は、/etc/mail 以下の.mcのファイルに追加した1行です。既存行と入れ替えて make cf install restartしておきましょう。

define(`ALIAS_FILE',`/etc/mail/aliases,/usr/local/etc/mail/aliases')dnl

/etc/rc.conf に

# mailman
mailman_enable="YES"

を追加して開始させましょう。起動したら、ちゃんと動いてしまうからすごい。

日本語対応

 さて、SENDMAIL_CMD に /usr/local/etc/mail/jsendmail を当てているので、これを作成していきます。
これもどなたのページを参考にして作成したものだったかがわからなくなりつつありますが、わかったタイミングで更新してリンクを振ります。

 要するに、内容を nkfで変換して処理する内容を書いている部分の話です。

#! /bin/sh
/usr/local/bin/nkf -j | /usr/sbin/sendmail $

とします。
nkfが未導入な方は、以下のように導入してから進みます。

# cd /usr/ports/japanese/nkf
# make clean install clean
# chmod 500 /usr/local/etc/mail/jsendmail
# chown mailman:mailman  /usr/local/etc/mail/jsendmail

jsendmailコマンドを作成すれば、できあがり。
個人的にパッチをあてて使っていたように思うのですが、これが失念しているのでデフォルトのままに。

 引越手順

2つのメーリングリストの統合

 前著の通り、2つのメーリングリストを統合することになりました。
詳細は書きませんが、1両方ともに FreeBSD上のMailmanで動作しています。(OSもMailmanのバージョンも異なります)
また、MTAもPostfixとsendmailと別々でした。

 まずは、それぞれのバックアップの実施。/usr/local/mailman/lists をtarで固め、同様に /usr/local/mailman/archives も実施します。

 FreeBSD 7.1で作成した新マシンに 最新のMailmanを導入を実施する。
上記でバックアップしたそれぞれの tarbボールを同位置で展開する。重複はしないので問題なし。

 aliasesファイルは、マージする形で手動で作成をしなおし。
これだけでおおよそは終了。

 ただし、このままだと前のホスト情報のままになっているので、更新をかける。

# cd /usr/local/mailman/bin/
# python -i withlist mailman
Loading list mailman (unlocked)
The variable `m' is the mailman MailList instance
>>> m.Lock()
>>> m.host_name
'OLD.example.ne.jp'
>>> m.host_name='OLD.example.ne.jp'
>>> m.host_name
'NEW.example.ne.jp'
>>> m.web_page_url
'https://OLD.example.ne.jp/mailman/'
>>> m.web_page_url='http://NEW.example.ne.jp/mailman/'
>>> m.web_page_url
'http://NEW.example.ne.jp/mailman/'
>>> m.Save()
>>>
>>>
Unlocking (but not saving) list: mailman
Finalizing
#

のように更新することで、新ホスト上の名前でおかしな挙動にならないように修正を行います。

 後は、今までのメーリングリストのシーケンスを同じ数値まで持ってこないと整合性がとれなくなりますので、上記同様に変更をかけます。

# cd /usr/local/mailman
# python -i bin/withlist LIST名
Loading list LIST (unlocked)
The variable `m' is the LIST MailList instance
>>> m.Lock()
>>> m.post_id
1.0
>>> m.post_id = 1281
>>> m.post_id
1281
>>> m.Save()
>>> (Ctrl +Dを入力)
>>> (Ctrl +Dを入力)
Unlocking (but not saving) list: LIST
Finalizing
#

のようにすればいいだけです。上記では 1から、1281に変更した内容です。

 管理者、ユーザの立場でウェブインターフェイス上で内容がおかしくなっていないかを確認し、テスト投稿を済ませれば完了です。
ここには書いていませんが、以前のページの通りに、SSLで実施するように設定は行っています。
 気が向いたら、過去のページに記述したTIPなども反映したい予定です。

【改訂履歴】作成:2009/03/09
2009/05/30 … 若干の修正
【参考リンク】
Mailman, GNU メーリングリスト管理システム … Mailman のオフィシャルページ

Copyright © 1996,1997-2006,2007- by F.Kimura,