インストール済※下記手順中にアップデートの必要がある場合があります。
下記手順ではメールサーバにPostfixを使用することを前提に進めています。
※今回使用しているPostfixはZoneExpress環境の既存のものよりバージョンアップしたものです。
以下の手順を行う前にPostfixバージョンアップをご実行ください。手順についてはこちら
ZoneExpress環境にインストール済みです。
作業ディレクトリへ移動します。※作業ディレクトリは任意ですがhome配下のディレクトリを推奨
# cd /home/admin/
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
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. 問題ありません
上記出力が確認出来れば次へ。
文字化けが確認された際にはターミナルの使用文字コードを”EUC”にご変更ください。
ここではメールサーバPostfixとの連携設定を記述します。
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の設定ファイルを変更します。
# 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側の設定ファイルを変更します。
# 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(Webサーバ)からも管理を可能にするための記述を行います。
新たにmailman用の管理ファイルを新規作成します。
# vi /opt/csw/apache2/etc/extra/mailman.conf
内容は以下の内容を貼り付けてください。
ScriptAlias /mailman/ /opt/csw/mailman/cgi-bin/ <Directory /opt/csw/mailman/cgi-bin/> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory>
続いて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 の管理者にメール通知する...<Enter>
以上の手順で設定した管理者アドレスへメールが届くので確認して、完了です。
Web上からの設定についてはこちら
■ 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 .... <exec_method type='method' name='start' exec='/opt/csw/mailman/bin/mailmanctl -s start' ....