今回は、mailman + Postfix + Apache でメーリングリストを使ってみます。
GNU Mailmanと呼ばれることも多く、名前のとおりGPLライセンスで公開されており、 Barry Warsawによって開発されたメーリングリスト管理ソフトウェアです。
ソースコードは、一部C言語で記載されているが、ほとんどがPythonで書かれています。
一般的に、メーリングリストには、大きく2つのタイプがあります。
- 告知用リスト : 送信者への返信などはできないメーリングリストで、メールマガジンなどがこれに相当します。
- 討論用リスト : メーリングリスト用のメールアドレスへの投稿することで、スレッド(議論)を起こすこともができます。
上記のように mailman は、メールマガジンのような一方的な通知側のメーリングリストでなく、
メールのやり取りで討論、議論が行えて、なおかつ、その討論の様子をウェブブラウザで確認することができるようなものです。
では、早速、mailman + Postfix + Apache の設定から、簡単に解説してみたいと思います。
CentOS/Scientific Linux では、バージョンが 2.1.12 と現在の最新バージョンが 2.1.17 であることからすれば、かなり古いものになっています。
また、Debian/Ubuntu では、日本語化が今一つのバージョンとなっている模様で、ウェブページ、自動送信されるメールに関して 日本語と英語が混ざっているような状況(インストールの仕方が悪かった?のか)で、 通常、利用するには耐えられない程度のものだったです。
そのため、mailman + Postfix + Apache でメーリングリストを使ってみる(ソースインストール編) のように公式サイトから最新版をインストールすることをおすすめします。
- 目次
- 履歴
2014年2月28日 初版
mailman + Postfix + Apache でメーリングリストを使ってみる
mailman + Postfix + Apache でメーリングリストを使ってみたいと思います。
以降に、簡単に解説してみます。
mailman をインストールする
mailman は、単純に
CentOS/Scientific Linux では、yumで、
Debian/Ubuntu では、apt-getで
簡単にインストールできます。
|
|
mailman のインストール先は、基本情報は、 /usr/lib/mailman へインストールされます。
詳細については、各ディストリビューションによって異なります。
主要な設定情報は、全て /usr/lib/mailman/Mailman/Defaults.py に設定されていますので、
参考までに基本的な情報について以下に解説しておきます。
|
Defaults.pyは、編集しない点に注意してください。
また、Debian/Ubuntuの場合、インストールディレクトリとデータディレクトリをが同じディレクトリになっていますが、 mailmanの基本は、/usr/lib/mailmanへインストールされており、主要な /var/lib/mailman 配下のディレクトリ、ファイルは、/usr/lib/mailman へのシンボリックリンクとなっています。
mailman を設定する
- mailman の環境設定を行う
先に記述したようにmailman の設定は、
/etc/mailman/mm_cfg.py で行います。
以下に、必要最小限の設定内容を解説します。
ここでは、以下のように設定しています。
- Postfixが動作しているサーバー : mail.example.com
- Apacheでmailmanを使った討論を情報公開するサーバー : www.example.com
- mailmanで利用するドメイン : mail.example.com, example.com
... # デフォルトのウェブサーバーを指定します。 DEFAULT_URL_HOST = 'www.example.com' ... # デフォルトのメールサーバーを指定します。 DEFAULT_EMAIL_HOST = 'mail.example.com' ... # 最終行に以降を追加します。 # ロゴ画像のパスを指定します。# ウェブサーバーの設定に合わせる IMAGE_LOGOS = '/images/mailman/' # URLのアドレスパターンを指定します。%s = ウェブサーバー名になります。# ウェブサーバーの設定に合わせる DEFAULT_URL_PATTERN = 'http://%s/mailman/' # MTA に Postfix を指定指定します。 MTA = 'Postfix' # サーバーの言語を日本語に指定します。 DEFAULT_SERVER_LANGUAGE = 'ja' # 仮想ウェブサーバーを追加します。 add_virtualhost('www.example.com','example.com') # Postfixの仮想ドメインを設定します。 POSTFIX_STYLE_VIRTUAL_DOMAINS = ['example.com']
上記では、解説のために日本語を使っていますが、mailman 関連のファイルには、日本語を含めない方が良いです。
Debian/Ubuntu では、
mailman の日本語対応は、euc-jp で行っており、Linux系では、通常のファイル書き込みに UTF-8 を使いますから、 UTF-8で書かれた日本語は、エラーになることがあります。
- mailman で使用するファイルを作成する
続けて、必要となるファイルの作成を作成します。
# ディストリビューションによって、環境が異なるので以下のとおり、各ディストリビューション毎に設定イメージを書いておきます。 # CentOS/Scientific Linuxの場合 # mailman用エイリアスファイル、仮想アドレスファイルを作成します。 $ touch /etc/mailman/aliases $ touch /etc/mailman/virtual-mailman # ファイルの所有者、グループをmailmanが使用するユーザ、グループに変更します。 $ chown mailman:mailman /etc/mailman/aliases $ chown mailman:mailman /etc/mailman/virtual-mailman # 各ファイルをpostfixで読めるようにバイナリ変換します。 $ postmap /etc/mailman/aliases $ postmap /etc/mailman/virtual-mailman # Debian/Ubuntuの場合 # mailman用エイリアスファイル、仮想アドレスファイルを作成します。 $ touch /var/lib/mailman/data/aliases $ touch /var/lib/mailman/data/virtual-mailman # ファイルの所有者、グループをmailmanが使用するユーザ、グループに変更します。 $ chown list:list /var/lib/mailman/data/aliases $ chown list:list /var/lib/mailman/data/virtual-mailman # 各ファイルをpostfixで読めるようにバイナリ変換します。 $ postmap /var/lib/mailman/data/aliases $ postmap /var/lib/mailman/data/virtual-mailman
aliases, virtual-mailman のファイル名およびパスは、/usr/lib/mailman/Mailman/MTA/Postfix.py で設定してあります。
# CentOS/Scientific Linuxの場合 # --- mm_cfg.CONFIG_DIR は、CONFIG_DIR = '/etc/mailman' のこと。 LOCKFILE = os.path.join(mm_cfg.LOCK_DIR, 'creator') ALIASFILE = os.path.join(mm_cfg.CONFIG_DIR, 'aliases') VIRTFILE = os.path.join(mm_cfg.CONFIG_DIR, 'virtual-mailman') # Debian/Ubuntuの場合 # --- mm_cfg.DATA_DIR は、DATA_DIR = os.path.join(VAR_PREFIX, 'data') のこと。 # --- VAR_PREFIX = '/var/lib/mailman' なので、'/var/lib/mailman/data') のこと。 LOCKFILE = os.path.join(mm_cfg.LOCK_DIR, 'creator') ALIASFILE = os.path.join(mm_cfg.DATA_DIR, 'aliases') VIRTFILE = os.path.join(mm_cfg.DATA_DIR, 'virtual-mailman')
- mailman の環境チェックを行う
mailman には、動作環境が正しいか否かチェックしてくれるツール check_perms があります。
このチェックツールによって、最低限 mailman が動作するための環境に誤りがないか確認することができます。
# check_permsにてmailmanの環境チェックを行います。 # CentOS/Scientific Linuxの場合 $ /usr/lib/mailman/bin/check_perms ... # Debian/Ubuntuの場合 $ /var/lib/mailman/bin/check_perms ... 問題ありません ← このように出力されればOKです。
もし、問題があれば、-f オプションを追加して、再度、check_perms を起動すれば、自動的に問題を解消してくれます。
また、Debian/Ubuntu では、
出力情報は、日本語の場合は、euc-jp で出力されるので注意が必要です。(Linuxでは、ほとんどの場合utf8が使われているので切替が必要かもしれません。)
ウェブブラウザで記事の書庫(アーカイブ)を参照すると403が出力されることがあります。その際は、以下のように対応すると、403のエラーは消えます。$ chmod o+x /var/lib/mailman/archives/private
Postfix を設定する
smtpd_recipient_restrictionsは、/etc/postfix/main.cf で設定します。
|
Apache を設定する
ここでは、mailmanで必要な基本的な設定に関して解説しておきます。
通常、Apache の設定は、
CentOS/Scientific Linux では、/etc/httpd/conf/httpd.conf 、
Debian/Ubuntu では、apt-getでは、/etc/apache2/apache2.conf で基本的な設定を行います。
ここでは、必要な箇所にいつでも Include できるように mailmanに必要な設定内容を /etc/mailman/apache.conf に設定します。
|
mailmanの初期化をする
- mailmanのクーロンを設定する
# クーロンにmailmanの設定ファイルが存在するか確認します。 $ ls /etc/cron.d/mailman # -- ここで何も出力されない場合は、以下のようにクーロン用ファイルをコピーします。 $ cp /usr/lib/mailman/cron/crontab.in /etc/cron.d/mailman
- mailmanのエイリアスを初期化する
ここから先は、mailman のコマンドを使用します。
Debian/Ubuntu では、
mailman のコマンドの出力情報は、euc-jp で出力されるので、ターミナルの出力を euc-jp へ切り替えておいた方が良いでしょう。
$ /usr/lib/mailman/bin/genaliases
- mailmanのサイト管理パスワードを設定する
# ******** は、 パスワードを入力します。 $ /usr/lib/mailman/bin/mmsitepass ******** パスワードを変更しました.
- mailmanの管理用メーリングリスト(mailman)を作成する
$ /usr/lib/mailman/bin/newlist mailman # 管理者メールアドレスを入力します。 リスト管理者のメールアドレスを入力してください: root@example.com # 管理者のパスワードを入力します。(何も表示されません) mailman の初期パスワード: # Enter のみ Enter を押して mailman の管理者にメール通知する...
- mailmanメーリングリスト初期設定を行う
# CentOS/Scientific Linuxの場合 $ /usr/lib/mailman/bin/config_list -i /etc/mailman/sitelist.cfg mailman 標準でない値を修復: personalize # Debian/Ubuntuの場合 $ /usr/lib/mailman/bin/config_list -i /var/lib/mailman/data/sitelist.cfg mailman 標準でない値を修復: personalize
- mailmanを起動する
$ /etc/init.d/mailman start
- mailmanを自動起動設定する
# CentOS/Scientific Linuxの場合 $ chkconfig mailman on # Debian/Ubuntuの場合 # -- sysv-rc-conf インストールされている場合は、以下のような感じです。 $ sysv-rc-conf mailman on
Postfix, Apache を再読み込み or 再起動する
|
mailmanを使ってみる
- メーリングリストを作成する
http://www.example.com/mailman/create へアクセスすると、以下のようなメーリングリストを作成ページが表示されます。
必要事項を入力し、リストを作成をクリックします。
- リストの名前: 作成するメーリングリスト名を入力します。
- リスト管理者アドレスの初期設定: 作成するメーリングリストの管理者メールアドレスを入力します。
- 初期パスワードを自動生成しますか? ここでは、手動にてパスワードを設定したいので「いいえ」を選択します。
- 初期リストパスワード: 作成するメーリングリストの管理者パスワードを入力します。
- 初期パスワードの確認: 先に入力した管理者パスワードを再入力します。
- 無承認での投稿を許可するまで新会員を隔離しますか? このメーリングリストへの投稿を新しい会員については、承認するようにするかどうかを指定します。 ここでは、テスト用なので「いいえ」にします。(限られた人だけが投稿する場合は「いいえ」でも良いと思います。誰でも会員になれる場合は、「はい」が無難でしょう。)
- 使用する言語…: ここでは「日本語」を選択します。
- 「リスト作成完了」をメールで管理者に知らせますか? テストなので、管理者へメール通知が来るか確認したいので、ここでは「はい」を選択します。
- リスト作成者の認証パスワード: mailmanのサイト管理パスワードを入力します。
上記内容の入力を終えたら、「リストを作成する」ボタンをクリックし、メーリングリストを作成します。
無事作成完了すると、上記のようなページが表示されます。
- メーリングリストへ会員登録する
http://www.example.com/mailman/listinfo へアクセスすると、上記のようなメーリングリストの一覧ページが表示されます。
先に作成したメーリングリストの Test をクリックします。
- メールアドレス: メーリングリストへ登録するメールアドレスを入力します。
- 名前 (省略可): 名前を入力します。
- パスワードを入力してください: 登録するメールアドレスの管理者パスワードを入力します。
- 確認のため同じパスワードを再入力: 先に入力した管理者パスワードを再入力します。
- 表示に使う言語を選んでください: ここでは「日本語」を選択します。
- リストのメールを毎日1本にまとめて送りますか? ここでは「いいえ」を選択します。
上記内容の入力を終えたら、「入会を申し込む」ボタンをクリックし、メーリングリストへの登録申請を行います。
confirm xxxxxxxxxxxxxxxxxxxxxxxxxxx というタイトルの以下のようなメールが、先に登録したメールアドレス宛に送られてきます。
Test メーリングリストへの入会に関する確認。 test@exmaple.com メーリングリストに <hoge@exmaple.com> の入会 を要求するメールを 192.168.1.100 から 受け取りました。 メーリングリストへの入会を確認するために、このメールにそのまま返信して ください。その場合、Subject:(件名)の文字列を変更しないでください。 以下のWebページにアクセスして入会を確認することもできます。 http://www.example.com/mailman/confirm/test/xxxxxxxxxxxxxxxxxxxxxxxxxxx メールの本文に次のコマンドを記入して、test-request@example.com 宛に送信して入会 を確認することもできます。 confirm xxxxxxxxxxxxxxxxxxxxxxxxxxx ほとんどの場合、単にこのメールに返信するだけで入会の確認ができるはずで す。(Subject:には Re: が入ってもかまいません.) このメーリングリストに入会しない場合は、このメールに返信せず、単に削除 してください。 もし誰かのいたずらでメーリングリストへの入会要求が送られた可能性がある 場合、あるいは何か質問等があれば、 test-owner@rise43.com 宛のメールでご連絡ください。
ここで指定してある URLへアクセスすると、以下のようなページが表示されます。
「Testリストに入会」をクリックすると、以下のようなページが表示され、同時に以下のようなメールが着て、登録完了となります。
Test@exmaple.com メーリングリストへようこそ! このメーリングリストへの投稿は、以下のアドレスにメールを送信してください。 test@exmaple.com このメーリングリストの総合案内は、以下のページへ。 http://wwww.exmaple.com/mailman/listinfo/test 退会やオプションの変更(たとえば、まとめ読み設定の変更や、自分のパス ワードの変更など)は、自分の会員オプションページで行うことができます。 http://wwww.exmaple.com/mailman/options/test/hoge%40exmaple.com また、次のメールアドレスにメールを送信することで、これらのオプションを 変更することができます。 Test-request@exmaple.com このメールアドレスに件名(Subject)または本文に help と書いたメールを 送ると、操作方法が書かれたメールが送られてきます。 退会やオプションの変更には、以下のパスワードを使ってください。 yyyyyyyy exmaple.comメーリングリストから、毎月パスワードと 退会方法、オプションの変更方法などが書かれた備忘通知が届きます。 不要なら、この備忘通知の送信を停止することができます。 なお、パスワードがわからなくなった場合は、各自のオプションページには パスワードをメールで送信するためのボタンもあります。
メールクライアントツールやmailコマンドで、メーリングリストのアドレス (ここでは、test@exmaple.com)へ適当なメールを投稿してみます。
投稿したメールがアーカイブに表示されたことを確認してみます。
http://www.example.com/mailman/listinfo へアクセスすると、上記のようなメーリングリストの一覧ページが表示されます。
先に作成したメーリングリストの Test をクリックします。
赤枠 の Test保管書庫 をクリックすると、以下のようなページが表示されます。
続けて、赤枠 の スレッド をクリックすると、以下のようなページが表示されます。
これが、先のページ日付に投稿された記事の一覧になります。
ここでは、赤枠 の [Test]テストです。 というヘッダの記事をクリックすると、以下のようなページが表示されます。
このように投稿された記事の内容が表示されます。
CentOS/Scientific Linuxの場合は、まだ、ある程度utf8で出力してくれます。(一部文字化けしますが)
Debian/Ubuntuの場合は、かなり面倒です。文字コードもeuc-jpで統一されていて、出力を切り替えて環境設定を行う必要があり、非常に面倒です。 加えて日本語訳が中途半端で、各ページで英語と日本語が混ざって、デフォルトでは使えるものではありません。バイナリパッケージでなくソースコードからのインストールがおすすめでしょう。
最近ではクラウドのサービスで mailmanに近いサービスが提供されていますが、 討論用リストのオープンソースが少ないのか? mailmanは、今でも意外と用いられています。
社内的に議事録を残す代わりに、メール討論するのもありだと思います。履歴としてもウェブブラウザで確認できる点でも、まだまだ使い勝手があると思います。
CentOSなら意外と簡単にインストールできますから、試すには良いかもしれません。
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない、検索ができないことがあります。
コメントを投稿 :