【Linux】Mailmanのインストール、設定、移行、Postfixも少し

社内の物理マシンから仮想マシンの移行に伴いMailmanのインストールと移行を行ったときのメモ。環境はCentOS5.3

Mailmainはメーリングリストを構築できるオープンソースのソフトウェア。ダウンロードはこちらから。

基本的なインストール方法は公式ドキュメントを参考に。

以下は自分用のメモ

まずはmailman用のユーザーとグループを追加する
# groupadd mailman
# useradd -c 'GNU Mailman' -s /sbin/nologon -d /no/home -g mailman mailman

インストールディレクトリを作成とパーミッションの設定
# mkdir /usr/local/mailman
# chgrp mailman /usr/local/mailman
# chown mailman /usr/local/mailman
# chmod a+rx,g+ws /usr/local/mailman

コンパイルに必要なツールのインストール
# yum install kernel-devel gcc python-devel

mailmanのインストール。configureのオプションはマニュアルを参照。--with-cgi-gidオプションはapacheの実行ユーザーを指定。デフォルトはnobody
# tar xzvf mailman-2.1.12.tgz.tar
# cd mailman-2.1.12
# ./configure --with-cgi-gid=apache
# make
# make install

インストールのチェック
# cd /usr/local/mailman/
# ./bin/check_perms –f
# ./bin/check_perms –f

このとき文字化けする場合は文字コードをEUCで設定する(Teratermの場合は設定→端末)。

image

エラーの報告がなるまで./bin/check_perms –fを繰り返すらしい。

ここで気付いた
# yum install mailman
ができることを・・・。だけど、httpdが勝手にインストールされてしまうのでlamppで連携したい場合はやっぱりコンパイルからやらないと駄目。

webサーバーの設定。次のようなconfファイルを記述して再起動。lamppの設定などはこちらの記事を参考に。

次の設定はLAN内からのアクセスしか認めない場合の例。

# For mailman

ScriptAlias /mailman/       /usr/local/mailman/cgi-bin/
<Directory /usr/local/mailman/cgi-bin/>
    #SSLRequireSSL
    AllowOverride None
    Options ExecCGI
    Deny from all
    Allow from 127.0.0.1 192.168.0.
</Directory>

Alias   /pipermail/     /usr/local/mailman/archives/public/
<Directory /usr/local/mailman/archives/public/>
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Deny from all
    Allow from 127.0.0.1 192.168.0.
</Directory>

iconファイルをコピーする。
# cp /usr/local/mailman/icons/* /opt/lampp/icons/

メールサーバーの設定。MailmanはPostfixと相性がいいらしいので素直にPostfixを使う。

# yum install postfix

# vi /etc/postfix/main.cf

設定する項目は主に次の項目

myhostname = aurora.exbridge.jp
mydomain = exbridge.jp
myorigin = $myhostname
inet_interfaces = $myhostname

#
# For mailman
owner_request_special = no
recipient_delimiter = +

詳しくはPostfixのドキュメントを参照。

myoriginはデフォルトのドメイン。これを変更すると別ドメインの送信元でメール送信できるけど、不正なメールサーバーとして判断されることがあるため素直にIPアドレスで名前解決(AレコードかMXレコード)されるドメインを入れておく。

ちなみに上の設定はhoge@aurora.exbridge.jpというメーリングリストを立ち上げる場合。

メールサーバの起動と自動起動の設定
# /etc/rc.d/init.d/postfix start
# chkconfig --add postfix

sendmailを起動している場合は停止してpostfixを使うように切り替える。
# /etc/rc.d/init.d/sendmail stop
# chkconfig sendmail off
# alternatives --config mta

2 プログラムがあり 'mta' を提供します。

  選択       コマンド
-----------------------------------------------
*+ 1           /usr/sbin/sendmail.sendmail
   2           /usr/sbin/sendmail.postfix

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2

送信テストはmailコマンドを使う。前の記事を参考に。

次はmailmanの設定。基本設定は/usr/local/mailman/Mailmn/Defaults.pyに記述されている。この設定と変更したい項目だけ同じディレクトリにあるmm_cfg.pyに記述する。

# cd /usr/local/mailman/Mailman/
# vi mm_cfg.py

# Put YOUR site-specific settings below this line.
DEFAULT_URL_HOST = 'aurora.exbridge.jp'
DEFAULT_EMAIL_HOST = 'aurora.exbridge.jp'
add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)
MTA = 'Postfix'
DEFAULT_SERVER_LANGUAGE = 'ja'
OWNERS_CAN_DELETE_THEIR_OWN_LISTS = Yes (メーリングリストをweb上から削除可能にする)
DEFAULT_SUBJECT_PREFIX = "[%(real_name)s:%%d] " (件名に記事Noを付与する)
DEFAULT_REPLY_GOES_TO_LIST = 1 (返信先を投稿者ではなくリストにする)
DEFAULT_NEW_MEMBER_OPTIONS = 258 (投稿した本人にはメールを送らないようにする)
DEFAULT_GENERIC_NONMEMBER_ACTION = 2 (非会員からのメールには拒否応答)

管理者用パスワード設定
# cd /usr/local/mailman/
# ./bin/mmsitepass (パスワード)

cronの設定
# crontab -u mailman ./cron/crontab.in

確認するときは
# crontab –u mailmain –l

aliases設定
# ./bin/genaliases
# chown mailman. data/aliases*
# chmod g+w data/aliases*
# vi etc/postfix/main.cf

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

mailmanの起動
# cp scripts/mailman /etc/rc.d/init.d/
# /etc/rc.d/init.d/mailman start
# chkconfig --add mailman

この辺の設定はここのサイトを参考に。

ここから別サーバーのmailmanを移行させるやり方。

基本は単純にファイルをコピーするだけ。コピーするファイルは
/usr/local/mailman/lists/
/usr/local/mailman/archives/
だけ。

コピーしたあとはコマンドで確認。一覧が表示されるはず(EUC-JP)。
# ./bin/list_lists

aliasesの再設定
# ./bin/genaliases

念のため再起動
# /etc/rc.d/init.d/mailman restart

以前のmailman管理画面のアドレスが一致している場合は、管理画面にメーリングリストの一覧が表示される。mailman管理画面のアドレスを変更した場合は、何かしら修正する必要がありそう。

メーリングリストの内容を修正する場合はconfig_listコマンドが使えるかも。ここを参考に。
# ./bin/config_list -o /tmp/test.txt <mailing_list_name>