カテゴリー
Linux

Mailman によるメーリングリスト構築

私が主催しているサークルでメーリングリストを作成することにしました。

無料で使えるメーリングリストありますが、勉強のために、自前でやることにします。

Mailman を自宅サーバーで稼働させることにしました。自宅サーバーは CentOS 5.7 と Postfix が稼働していますので、CentOS のリポジトリからインストールできる Mainman 2.1.9 を利用します。

1. mailman のインストール

mailman をリポジトリからインストールします。

# yum install mailman

2. mailman.conf の編集

mailman.conf が作成されていますので、mailman.conf 末尾の RedirectMatch の青字部分を自分のドメイン名に変更します。

# cd /etc/httpd/conf.d/
# vi mailman.conf
--- mailman.conf ---
...(省略)...
# Uncomment the following line, replacing www.example.com with your server's
# name, to redirect queries to /mailman to the listinfo page (recommended).
RedirectMatch ^/mailman[/]*$ https://www.xxx.com/mailman/listinfo
------------------

※ //www.xxx.com: を自分のドメイン名に修正

3. サイト パスワード設定

mailman サイトの管理用のパスワードを設定します。

# /usr/lib/mailman/bin/mmsitepass password

4. mailman 設定ファイルの編集

mailman の言語設定を日本語にするとともに、URLとメールのホストを指定します。
/usr/lib/mailman/Mailman/mm_cfg.py の末尾に青字部分を追記します。

# cd /usr/lib/mailman
# vi Mailman/mm_cfg.py
--- mm_cfg.py ---
...(省略)...

DEFAULT_SERVER_LANGUAGE = 'ja'
DEFAULT_URL_HOST = 'www.xxx.com'
DEFAULT_EMAIL_HOST = 'mail.xxx.com'
add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)

------------------

5. アップデートの確認

アップデートを実行して更新を確認します。
※Poderosa などで、Windows から SSH アクセスしている場合は、「エンコーディング」を utf-8 から euc-jp に変更します。

# cd /usr/lib/mailman
# bin/update
更新の必要はありません.

6. mailman サイトリストの作成

mailman サイト リストを作成します。

# cd /usr/lib/mailman
# bin/newlist mailman
リスト管理者のメールアドレスを入力してください: foo@xxx.com
foo の初期パスワード:
メーリングリストの作成を完了するには, /etc/aliases (または同等のファイル) に, 以下の行を追加してください.
また, `newaliases' コマンドの実行が必要でしょう.
## foo mailing list
foo: "|/usr/lib/mailman/mail/mailman post foo"
foo-admin: "|/usr/lib/mailman/mail/mailman admin foo"
foo-bounces: "|/usr/lib/mailman/mail/mailman bounces foo"
foo-confirm: "|/usr/lib/mailman/mail/mailman confirm foo"
foo-join: "|/usr/lib/mailman/mail/mailman join foo"
foo-leave: "|/usr/lib/mailman/mail/mailman leave foo"
foo-owner: "|/usr/lib/mailman/mail/mailman owner foo"
foo-request: "|/usr/lib/mailman/mail/mailman request foo"
foo-subscribe: "|/usr/lib/mailman/mail/mailman subscribe foo"
foo-unsubscribe: "|/usr/lib/mailman/mail/mailman unsubscribe foo"
Enter を押して foo の管理者にメール通知する...

7. エイリアスの編集

/etc/aliases の末尾に上記のリストを追記します。

# vi /etc/aliases
--- /etc/aliases ---
...(省略)...

## foo mailing list
foo: "|/usr/lib/mailman/mail/mailman post foo"
foo-admin: "|/usr/lib/mailman/mail/mailman admin foo"
foo-bounces: "|/usr/lib/mailman/mail/mailman bounces foo"
foo-confirm: "|/usr/lib/mailman/mail/mailman confirm foo"
foo-join: "|/usr/lib/mailman/mail/mailman join foo"
foo-leave: "|/usr/lib/mailman/mail/mailman leave foo"
foo-owner: "|/usr/lib/mailman/mail/mailman owner foo"
foo-request: "|/usr/lib/mailman/mail/mailman request foo"
foo-subscribe: "|/usr/lib/mailman/mail/mailman subscribe foo"
foo-unsubscribe: "|/usr/lib/mailman/mail/mailman unsubscribe foo"

------------------

次に、newaliases コマンドを実行します。

# newaliases

8. httpd 再起動

httpd を再起動します。

# /sbin/service httpd restart

9. mailman の起動

最後に、mailman のランレベルを設定して、起動します。

# /sbin/chkconfig mailman on
# /sbin/service mailman start
mailman を起動中:

以上です。

参考サイト:
https://minhtech.com/featuredlinux/install-and-configure-mailman/

カテゴリー
PHP

pear install pear/Cache_Liteでエラー

PHP の Web アプリケーションでキャッシュを利用してパフォーマンスの向上を検討しようとして PEAR の Cache_Lite を利用しようとしました。

ところが、Cache_Lite をインストールしようとしたらエラーが。。。

# pear install pear/Cache_Lite
pear/Cache_Lite requires PEAR Installer (version >= 1.5.4), installed version is 1.4.9
No valid packages found
install failed 

PEAR Installerが古いということで、次に下記コマンドを実行。

# pear upgrade PEAR
pear/PEAR dependency package "pear/Console_Getopt" downloaded version 1.3.1 is not the recommended version 1.2.3, but may be compatible, use --force to install
pear/Archive_Tar requires PEAR Installer (version >= 1.5.4), installed version is 1.4.9
pear/Console_Getopt requires PEAR Installer (version >= 1.8.0), installed version is 1.4.9
No valid packages found
upgrade failed

とアップグレードができないので、–force オプション付きでリトライ。

# pear upgrade --force PEAR
warning: pear/PEAR dependency package "pear/Console_Getopt" downloaded version 1.3.1 is not the recommended version 1.2.3
warning: pear/Archive_Tar requires PEAR Installer (version >= 1.5.4), installed version is 1.4.9
warning: pear/Console_Getopt requires PEAR Installer (version >= 1.8.0), installed version is 1.4.9
downloading PEAR-1.9.4.tgz ...
Starting to download PEAR-1.9.4.tgz (296,332 bytes)
.............................................................done: 296,332 bytes
downloading Archive_Tar-1.3.10.tgz ...
Starting to download Archive_Tar-1.3.10.tgz (18,294 bytes)
...done: 18,294 bytes
downloading Console_Getopt-1.3.1.tgz ...
Starting to download Console_Getopt-1.3.1.tgz (4,471 bytes)
...done: 4,471 bytes
upgrade ok: channel://pear.php.net/Console_Getopt-1.3.1
upgrade ok: channel://pear.php.net/Archive_Tar-1.3.10
upgrade ok: channel://pear.php.net/PEAR-1.9.4
PEAR: Optional feature webinstaller available (PEAR's web-based installer)
PEAR: Optional feature gtkinstaller available (PEAR's PHP-GTK-based installer)
PEAR: Optional feature gtk2installer available (PEAR's PHP-GTK2-based installer)
To install use "pear install pear/PEAR#featurename"

アップグレードが成功したので、もう一度 Cache_Lite のインストール。

# pear install pear/Cache_Lite
downloading Cache_Lite-1.7.15.tgz ...
Starting to download Cache_Lite-1.7.15.tgz (32,355 bytes)
.........done: 32,355 bytes
install ok: channel://pear.php.net/Cache_Lite-1.7.15

以上です。備忘録。

# pear -V
PEAR Version: 1.9.4
PHP Version: 5.1.6
Zend Engine Version: 2.1.0
Running on: Linux localhost 2.6.18-274.18.1.el5 #1 SMP Thu Feb 9 17:45:52 EST 2012 i686
カテゴリー
Linux

CentOS5x Apache mod_rewrite の設定

当サイトの「郵便番号住所検索サービス」サンプルのURL パラメータ(“yubin/?zipcode=1234123”) を階層として (“yubin/1234123/” ) 使用できるように、 mod_rewrite を使ってURLを置き換ています。

その方法をご紹介します。

mod_rewrite のインストールと有効化

まずは、mod_rewrite がインストールされているかを確認します。

CentOS インストール時または、後から apache を yum コマンドでインストールした場合は、mod_rewriteは入っていると思います。 下記フォルダを確認して、mod_rewrite.so があればインストールされています。

# ll /etc/httpd/modules/mod_rewrite.so

次に、httpd.conf で、mod_rewrite モジュールが読み込まれているかを確認します。コメントにされている場合は、コメントを外します。

--- httpd.conf 抜粋 ---
#
# Dynamic Shared Object (DSO) Support
#
# To be able to use the functionality of a module which was built as a DSO you
# have to place corresponding `LoadModule' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Statically compiled modules (those listed by `httpd -l') do not need
# to be loaded here.
#
# Example:
# LoadModule foo_module modules/mod_foo.so
#
...(省略)...
LoadModule rewrite_module modules/mod_rewrite.so
...(省略)...

mod_rewrite の設定

冒頭で説明したとおり、

.../yubin/getaddress/1234567/

へアクセスにきたら:

.../yubin/getaddress.php?zipcode=1234567

を実行し、ブラウザのURL表示はもとのURL(アクセスしたURL)を表示する。

これを実現するために、以下の yubin.conf を作成して、/etc/httpd/conf.d/ ディレクトリに配置します。

--- .htaccess ---
<Directory /wwwroot/samples/yubin>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^getaddress/([0-9]+)/?$ getaddress.php?zipcode=$1 [L]
</Directory>
--------------------------

RewriteEngine ディレクティブは、リライト(書き換え)エンジンを無効 (Off) または、有効化(On)にします。

RewriteCond ディレクティブは、ルールの条件を指定します。 %{REQEST_FILENAME} はサーバー変数(Server Variables) の一つで、上記の例の場合、ファイルが存在しないか、ディレクトリが存在しない場合にルールを適用するということになります。

RewriteRule はディレクティブはルールを記述します。アクセスにきた getaddress 以下の階層ディレクトリを正規表現で一致したパターンのURLに書き換え実行します。

ここで、apache を再起動します。

# service httpd restart

動作確認

https://www.northwind.mydns.jp/samples/webservice/getaddress/370/

を実行すると、CSV形式で郵便データがリターンされます。

また、以下の形式でも同じ結果が得られます。

https://www.northwind.mydns.jp/samples/webservice/getaddress.php?zipcode=370