====== 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公式サイト]]