Mailman導入手順

前提条件

  • 以下の手順はZoneExpressにMailmanをインストールする場合の手順となります。他のサーバにインストールする場合は設定が異なる場合があります。
  • 以下の手順は mailman-2.1.11版のソースを用いて説明しています。バージョンにより内容が異なる場合がありますがご了承ください。
  • 以下の説明はWindows上でFierfoxを用いて説明しています。
  • インストールにはターミナルエミュレータを利用しています。ターミナルエミュレータについてはご自身でご用意ください。
  • 弊社ではMailmanに関するサポートは行っておりません。Mailmanに関するご質問にはお答えできません。

Mailman必要システム

  • Python2.3.5以降

インストール済※下記手順中にアップデートの必要がある場合があります。

  • メールサーバ

下記手順ではメールサーバにPostfixを使用することを前提に進めています。

※今回使用しているPostfixはZoneExpress環境の既存のものよりバージョンアップしたものです。

  以下の手順を行う前にPostfixバージョンアップをご実行ください。手順についてはこちら

  • Apache

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=webservdMailmanで使用するCGIのGIDをApacheユーザに指定しています。
–with-mail-gid=mailmanMailmanで使用する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/
<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上からの設定についてはこちら

■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

....
        <exec_method
                type='method'
                name='start'
                exec='/opt/csw/mailman/bin/mailmanctl -s start'
....

■参考リンク

mailman/install.txt · 最終更新: 2009/11/11 13:34 by admin
SolarisVPS/ZoneExpress Boot OpenSolaris Creative Commons License Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0