====== Mailman導入手順 ======
==== 前提条件 ====
* 以下の手順はZoneExpressにMailmanをインストールする場合の手順となります。他のサーバにインストールする場合は設定が異なる場合があります。
* 以下の手順は mailman-2.1.11版のソースを用いて説明しています。バージョンにより内容が異なる場合がありますがご了承ください。
* 以下の説明はWindows上でFierfoxを用いて説明しています。
* インストールにはターミナルエミュレータを利用しています。ターミナルエミュレータについてはご自身でご用意ください。
* 弊社ではMailmanに関するサポートは行っておりません。Mailmanに関するご質問にはお答えできません。
==== Mailman必要システム ====
* Python2.3.5以降
インストール済※下記手順中にアップデートの必要がある場合があります。
* メールサーバ
下記手順ではメールサーバにPostfixを使用することを前提に進めています。
※今回使用しているPostfixはZoneExpress環境の既存のものよりバージョンアップしたものです。
以下の手順を行う前にPostfixバージョンアップをご実行ください。手順については[[postfix:install|こちら]]
* Apache
ZoneExpress環境にインストール済みです。
====== ■ファイルのダウンロード ======
作業ディレクトリへ移動します。※作業ディレクトリは任意ですがhome配下のディレクトリを推奨
# cd /home/admin/
[[http://mm.tkikuchi.net/|Mailman公式サイト]]より最新版のソース(09/2/16現在)を入手します。
# wget http://mm.tkikuchi.net/mailman-2.1.11.tgz
* ファイルの解凍
# tar -zxvf mailman-2.1.11.tgz
解凍されたディレクトリへ移動します。
# cd mailman-2.1.11
* インストール準備
configureを実行してMakefileの作成を行います。
./configure --with-cgi-gid=webservd --with-mail-gid=mailman --prefix=/opt/csw/mailman
今回指定しているオプションは下記の通りです。
|--with-cgi-gid=webservd|Mailmanで使用するCGIのGIDをApacheユーザに指定しています。|
|--with-mail-gid=mailman|Mailmanで使用するMailのGIDをMailmanユーザに指定しています。|
|--prefix=/opt/csw/mailman|インストールするディレクトリを/opt/csw/mailmanに指定しています。|
===== エラーケース =====
configure実行時に以下のようなエラーが確認された場合
checking for user name "mailman"... configure: error:
***** No "mailman" user found!
***** Your system must have a "mailman" user defined
***** (usually in your /etc/passwd file). Please see the INSTALL
***** file for details.
以下の手順を踏む必要があります
mailmanユーザの追加
# useradd mailman
mailmanグループの追加
# groupadd mailman
インストールディレクトリの作成
# mkdir /opt/csw/mailman
インストールするディレクトリへ移動
# cd /opt/csw/mailman/
適切なパーミッション設定を行います。
# chgrp mailman .
# chmod a+rx,g+ws .
mailmanのソースから展開したディレクトリへ移動します。
# cd /mailman-2.1.11
再度configureを実行してエラーがないことを確認出来れば、そのまま次の手順へお進みください。
# ./configure --with-cgi-gid=webservd --with-mail-gid=mailman --prefix=/opt/csw/mailman
* インストールの開始
# make install
===== エラーケース2 =====
make install実行時に以下のようなエラーが確認された場合
Traceback (most recent call last):
File "bin/update", line 46, in ?
import paths
File "/opt/csw/mailman/bin/paths.py", line 74, in ?
import japanese
ImportError: No module named japanese
gmake: *** [update] エラー 1
pythonのバージョンが古い可能性があります。
下記コマンドよりpythonの最新版をインストールすることで対応できます。
* パッケージの更新
# pkg-get -U
※オプションは大文字です。
* インストール
# pkg-get -i python
再度mailmanのmake installを実行します。
# make install
エラーが出ないことを確認できれば完了です。
====== ■パーミッションの変更 ======
インストールしたディレクトリへ移動します。
# cd /opt/csw/mailman
初期環境ではMailman各ファイルのパーミッションが適切ではないため
修正オプションをつけ、パーミッション修正ファイルを実行します。
# ./bin/check_perms -f
実行後パーミッションに問題ないことの確認
# ./bin/check_perms
Warning: Private archive directory is other-executable (o+x).
This could allow other users on your system to read private archives.
If you're on a shared multiuser system, you should consult the
installation manual on how to fix this.
問題ありません
上記出力が確認出来れば次へ。
Mailmanファイル実行時に出力が文字化けする場合がございます。
文字化けが確認された際にはターミナルの使用文字コードを"EUC"にご変更ください。
====== ■Postfixとの連携 ======
ここではメールサーバPostfixとの連携設定を記述します。
===== 実行ファイル変更(Mailman) =====
Mailman側の実行ファイル内容を変更します。
# vi /opt/csw/mailman/Mailman/Defaults.py
POSTFIX_ALIAS_CMD = '/usr/sbin/postalias'
POSTFIX_MAP_CMD = '/usr/sbin/postmap'
上記箇所を下記の通りに修正します。
POSTFIX_ALIAS_CMD = '/opt/csw/sbin/postalias'
POSTFIX_MAP_CMD = '/opt/csw/sbin/postmap'
更新ファイルと元ファイルのdiff結果は以下の通りです。
# diff /opt/csw/mailman/Mailman/Defaults.py /opt/csw/mailman/Mailman/Defaults.py.org
c410,411
< POSTFIX_ALIAS_CMD = '/opt/csw/sbin/postalias'
< POSTFIX_MAP_CMD = '/opt/csw/sbin/postmap'
---
> POSTFIX_ALIAS_CMD = '/usr/sbin/postalias'
> POSTFIX_MAP_CMD = '/usr/sbin/postmap'
===== 設定ファイル変更(Mailman) =====
Mailmanの設定ファイルを変更します。
# vi /opt/csw/mailman/Mailman/mm_cfg.py
最下行に下記の文章を追加します。
△△△には使用しているホスト名を入力してください。
#Webサーバ名を指定します。
DEFAULT_URL_HOST = '△△△.jp'
#メールサーバ名を指定します。
DEFAULT_EMAIL_HOST = '△△△.jp'
add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)
#メールソフトウェア名の指定します。
MTA = 'Postfix'
#使用言語に日本語を指定します。
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_REPLY_GOES_TO_LIST = 1
#メーリングリスト宛への投稿時に送信者への配送は行われません。
DEFAULT_NEW_MEMBER_OPTIONS = 258
#非会員メンバーからの投稿は拒否します。
DEFAULT_GENERIC_NONMEMBER_ACTION = 2
===== 設定ファイル変更(Postfix) =====
Postfix側の設定ファイルを変更します。
# vi /etc/opt/csw/postfix/main.cf
## Maps ##
...
alias_maps = dbm:/etc/opt/csw/postfix/aliases
上記箇所に以下の通りに追記します。
## Maps ##
...
alias_maps = dbm:/etc/opt/csw/postfix/aliases,dbm:/opt/csw/mailman/data/aliases
続いてもう1つ変更箇所があります。
## Restrictions ##
...
smtpd_recipient_restrictions =
permit_sasl_authenticated,
reject_unlisted_recipient,
上記箇所に下記のように新たに一文を追加します。
## Restrictions ##
...
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unlisted_recipient,
更新したファイルと元ファイルのdiff結果は以下の通りです。
# diff /etc/opt/csw/postfix/main.cf /etc/opt/csw/postfix/main.cf.org
85d84
< permit_mynetworks,
111c110
< alias_maps = dbm:/etc/opt/csw/postfix/aliases,dbm:/opt/csw/mailman/data/aliases
---
> alias_maps = dbm:/etc/opt/csw/postfix/aliases
====== ■Apacheとの連携 ======
ここではApache(Webサーバ)からも管理を可能にするための記述を行います。
新たにmailman用の管理ファイルを新規作成します。
# vi /opt/csw/apache2/etc/extra/mailman.conf
内容は以下の内容を貼り付けてください。
ScriptAlias /mailman/ /opt/csw/mailman/cgi-bin/
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
続いてApacheの管理ファイルを変更します。
# vi /opt/csw/apache2/etc/httpd.conf
最下部に以下の文章を追加します。
# Mailman
Include etc/extra/mailman.conf
SMFよりサービスの再起動を行い、設定の再読込を行います。
# svcadm restart http
以上で設定は完了です。
====== ■管理用メーリングリストの作成 ======
下記コマンドからメーリングリストの管理者の作成を行います。
# /opt/csw/mailman/bin/newlist mailman
リスト管理者のメールアドレスを入力してください: <管理者用のアドレス>
mailman の初期パスワード:<任意のパスワードを入力>
メーリングリストの作成を完了するには, /etc/aliases (または同等の
ファイル) に, 以下の行を追加してください.
また, `newaliases' コマンドの実行が必要でしょう.
## mailman mailing list
mailman: "|/opt/csw/mailman/mail/mailman post mailman"
mailman-admin: "|/opt/csw/mailman/mail/mailman admin mailman"
mailman-bounces: "|/opt/csw/mailman/mail/mailman bounces mailman"
mailman-confirm: "|/opt/csw/mailman/mail/mailman confirm mailman"
mailman-join: "|/opt/csw/mailman/mail/mailman join mailman"
mailman-leave: "|/opt/csw/mailman/mail/mailman leave mailman"
mailman-owner: "|/opt/csw/mailman/mail/mailman owner mailman"
mailman-request: "|/opt/csw/mailman/mail/mailman request mailman"
mailman-subscribe: "|/opt/csw/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe: "|/opt/csw/mailman/mail/mailman unsubscribe mailman"
Enter を押して mailman の管理者にメール通知する...
以上の手順で設定した管理者アドレスへメールが届くので確認して、完了です。
Web上からの設定については[[setting|こちら]]
====== ■Mailmanのエラーについて ======
■ pidファイルエラー
mailman起動失敗時に下記の様なログが確認される。
[Errno 2] No such file or directory: '/opt/csw/mailman/data/master-qrunner.pid'
* 契機
バックアップからの復旧時や、以前のpidファイルが残ったまま等のケースで起こりうるエラーです。
* 対処
mailman起動コマンドのオプションに"-s"をつける。
これによってmailman側で使われていないロックファイルを削除し起動します。
SMF登録している場合はmanfiestファイル内のstartコマンドに-sをつけると恒久的対処となります。
ex.Manifestファイル設定例
# vi /var/svc/manifest/network/mailman.xml
....
====== ■参考リンク ======
[[http://mm.tkikuchi.net/|Mailman公式サイト]]