ラピッドサイトでのmailmanのインストールと設定メモ

ラピッドサイトの方は説明を簡略化しているそうで、
Mailmanのインストール
だけではさっぱりなのでいろいろ調べながらインストールすることに。
ちなみにサーバはRV-7。
振り返るとrootユーザーでインストールしてたので、パーミッションエラーが連発した。
一般ユーザーで作業をすればよかったと反省。
あとマニュアルをちゃんと読まないとだめだと反省。

mailmanのインストール
vinstall mailman

途中でmailmanの管理者パスワード、mailmanのサイト管理者パスワードを入力。
管理者メールアドレスも入力する。

cd /etc/mail

なぜかviじゃないと開けないので(拡張子がないからemacsじゃ開けない?)、

vi virtusertable

と入力して以下を追記する。

mailman@DOMAIN-NAME.COM				mailman
mailman-admin@DOMAIN-NAME.COM			mailman-admin
mailman-bounces@DOMAIN-NAME.COM			mailman-bounces
mailman-confirm@DOMAIN-NAME.COM			mailman-confirm
mailman-join@DOMAIN-NAME.COM			mailman-join
mailman-leave@DOMAIN-NAME.COM			mailman-leave
mailman-owner@DOMAIN-NAME.COM			mailman-owner
mailman-request@DOMAIN-NAME.COM			mailman-request
mailman-subscribe@DOMAIN-NAME.COM		mailman-subscribe
mailman-unsubscribe@DOMAIN-NAME.COM		mailman-unsubscribe

DOMAIN-NAME.COM部分を自分のドメイン名に変更して、以下コマンドで設定を反映させる。

vnewvirtmaps

そして、

 ./bin/check_perms -f

を入力してパーミッションエラーを修正。

./bin/check_perms

を入力してエラーでないかを確認。
エラーが出る場合は再度、

 ./bin/check_perms -f

を入力してエラーを修正する。
そしてインストールディレクトリの所有者変更

chown -R mailman. /usr/lib/mailman/
chmod 755 /usr/lib/mailman/
mailmanの設定作業

続いてmailmanの設定ファイルの編集作業へ。
インストール先に移動。以下を開いて編集する。

emacs mailman/Mailman/mm_cfg.py

以下の該当部分を自分の環境にあわせて編集。

DEFAULT_URL_HOST = 'test.com'
DEFAULT_EMAIL_HOST = 'test.com'

以下はファイル内に追記する部分。
SSLサーバー証明書がなくSSLでアクセスしない場合は該当部分を変更。変更しないと403Forbiddenエラーでアクセスできない。

MTA = 'Manual' ←メールサーバーがPostfixの場合はPostfix。それ以外はManualと入力する。sendmailとか書くとエラーで動かない。
DEFAULT_SERVER_LANGUAGE = 'ja'
DEFAULT_URL_PATTERN = 'https://%s/mailman/' ←SSLじゃない場合は削除
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_SEND_REMINDERS = No

続いてクローン設定をば。

crontab -u mailman /usr/lib/mailman/cron/crontab.in

Webサーバーの設定。以下を開く。

emacs /etc/httpd/conf.d/mailman.conf

以下のように設定する。

ScriptAlias /mailman/ /usr/lib/mailman/cgi-bin/
<Directory /usr/lib/mailman/cgi-bin/>
    SSLRequireSSL ←SSLじゃない場合は削除
    AllowOverride None
    Options ExecCGI
    Order allow,deny
    Allow from all
</Directory>

Alias /pipermail/ /var/lib/mailman/archives/public/
<Directory /var/lib/mailman/archives/public>
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

mailman用ロゴファイルを所定ディレクトリへコピー

cp /usr/lib/mailman/icons/* /var/www/icons/

webサーバーの再起動して、mailmanを起動させる。

/etc/rc.d/init.d/mailman start

その後、
http://ドメイン名/mailman/
にアクセス。
ところが

Bug in Mailman version 2.1.14

We're sorry, we hit a bug!
Please inform the webmaster for this site of this problem. Printing of traceback and other system information has been explicitly inhibited, but the webmaster can find this information in the Mailman error logs. 

とのことで開かない。。。
ログを見ようとしたけどmailmanのログファイルが見当たらない。
どこにログがあるのか探しまわったらあった!
apacheのログを見ると、

IOError: [Errno 13] Permission denied: '/var/lib/mailman/logs/error'

の一文が。
なんでこっちに出力されてるのかわからないけど、

chown -R mailman. /var/lib/mailman/
chmod 755 /var/lib/mailman/
chmod 777 /var/lib/mailman/logs/error

で書き込み実行の許可を与えてブラウザから再度アクセス。
またもやエラー。
今度はエラーログが生成されてるので、

/var/lib/mailman/logs

を見てみる。

Permission denied: '/var/lib/mailman/data/adm.pw'

こちらもルートユーザーでインストールをしたことが原因だー。
パーミッションを変更して、再度ブラウザからアクセス。

新規作成時のエラーが消えない!

表示はされたけどメーリングリストの新規作成でエラーが。
ログを見てみると、

ImportError: No module named sendmail

とのエラーがでてる。
GNU Mailman - インストールマニュアル

Redhat では, たぶん python2-devel パッケージが必要でしょう.

とあるのでこれが原因かと思い、必要なものを入れてみる。

yum install python2-devel

だけど、

Error: Missing Dependency: /usr/lib/python2.3 is needed by package libxml2-python
Error: Missing Dependency: /usr/lib/python2.3 is needed by package libxslt-python

とのこと。
なによこれ。
調べたらyumの不具合らしい。
yum + pythonでMissing Dependencyエラー: BlueEyesBlue
ということでやってみる。

yum clean all

としてキャッシュをクリアして、pythonのアップデート。

yum update python

でも無理だった。途中でまた同じエラーが出た!

Error: Missing Dependency: /usr/lib/python2.3 is needed by package libxml2-python
Error: Missing Dependency: /usr/lib/python2.3 is needed by package libxslt-python

なんだろうか。
pythonのバージョンが古いから?とも思ったけど、

import libxml2
import libxslt

が問題ないので入ってるはず。
マニュアルを再度見直すとmm_cfg.pyのところで、

MTA = 'Manual'
ここは、’Manual’ か ‘Postfix’ かのどちらかです。MTA に Postfix を使っている場合に Postfix と Mailman の連携がうまくとれていれば、これを ‘Postfix’ にすることができます。そうでない場合には、’Manual’ にして、 /etc/aliases ファイルを手動で編集する必要があります。

との記述が!
普通にsendmailって書いてたよ!!
なのでこちらをManualと書き換えた。
どうやら以下のエラーの原因はこれだったようだ。

ImportError: No module named sendmail
やっと新規作成へ

これでメーリングリストの新規作成のエラーは消えた。
いそいそとブラウザから新規作成をおこなう。
あれ、できない。
なんで?
メーリングリストの作成と削除
ブラウザからの新規作成は正常に完了しないらしい。
なんぞそれ。
なので上記内容を参考にコマンドラインで新規作成をおこなう。

/usr/lib/mailman/bin/newlist メーリングリスト名

そして管理者メールアドレス、メーリングリスト管理用パスワードを入力。
## メーリングリスト名 mailing listから始まる内容をコピーして、
/etc/aliasesに追記(マニュアルには/etc/mail/aliasesと書いてあるけどなぜか保存できず)。

newaliases

で設定内容を反映させる。
続いてマニュアルでは/etc/mail/virtusertableを開いて、以下のように追記する。

メーリングリスト名@ドメイン名		メーリングリスト名
メーリングリスト名-admin@ドメイン名		メーリングリスト名-admin
メーリングリスト名-bounces@ドメイン名		メーリングリスト名-bounces
メーリングリスト名-confirm@ドメイン名		メーリングリスト名-confirm
メーリングリスト名-join@ドメイン名		メーリングリスト名-join
メーリングリスト名-leave@ドメイン名		メーリングリスト名-leave
メーリングリスト名-owner@ドメイン名		メーリングリスト名-owner
メーリングリスト名-request@ドメイン名		メーリングリスト名-request
メーリングリスト名-subscribe@ドメイン名		メーリングリスト名-subscribe
メーリングリスト名-unsubscribe@ドメイン名		メーリングリスト名-unsubscribe
@ドメイン名		error:nouser User unknown

そして、

makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable 

を入力して完了!
長すぎる。。。
http://ドメイン名/mailman/admin
を開けば先ほど作成したメーリングリストが表示される。