アカウントの管理は少数であれば、特にツールを使う必要もないのですが、ユーザーが多数登録されているメールサーバの場合、ユーザーのパスワード管理だけでも、大変なものです。 個人のパスワード変更などの管理は、個人に任せたいと言うのが正直なところでしょう。
そこでWebベースのアカウント管理のソフトウェアを使用することになります。 Postfixの場合は、Postfix.Adminというツールが使えます。
PHPとmysqlがあれば、 Webベースでアカウント管理ができるので、アカウント管理のわずらわしさが軽減します。
○apache2のインストール
Postfix.adminを使って、ブラウザからユーザー管理をしたいので、まずはApacheをインストールする。
(1)Apacheをインストールする。
DebianのApacheには、mpm-prefork、mpm-worker、mpm-threadpool、mpm-perchildなどがあるが、一般的なWebサーバであれば、mpm-preforkで問題なし。
# apt-get install apache2-mpm-prefork (2.2.3-4)
(2)ここで一般的な設定を行っておく。
# vi /etc/apache2/sites-available/default
----------------------------------------
<VirtualHost *>
DocumentRoot /home/www/htdocs (ドキュメントルート変更)
Indexesオプション削除
AllowOverride All (.htaccessの有効化)
##RedirectMatch ^/$ /apache2-default/ (デフォルトのコメント)
ServerSignature Off (サーバー名表示の無効化)
# vi /etc/apache2/apache2.conf
----------------------------------------
Servername www.fulldigit.net →なくても動作に問題はないが、起動時にwarningが表示される。
ServerTokens Prod →クラッカーに対して余計な情報を与える必要はない。
ServerSignature Off →これも同じくクラッカーに対して余計な情報を与える必要はない。
User www
(3)ユーザーを追加する。
今回は例としてWWWを追加している。
# useradd www
# mkdir /home/www/htdocs
# passwd www
(4)後はApacheを再起動して、ブラウザでページが見えるか確認しておきます。
# /etc/init.d/apache2 restart
○apache2 SSLの設定
(1)証明書の作成する。
Apache2.0.xxまでは存在していたapache2-ssl-certificateは、現時点のDebian etchのapache2.2-commonにはないため、OpenSSLで個別に組み込むこととする。
・まずは最初にOpensslの設定を変更
# vi /etc/ssl/openssl.cnf
---------------------------
[usr_cert]
nsCertType=server ←コメントを外す
[v3_ca]
nsCertType=sslCA,emailCA ←コメントを外す
---------------------------
・サーバ個別の証明書を作成する。
# cd /usr/lib/ssl/misc/
# ./CA.sh -newca
CA certificate filename (or enter to create) ←そのままenter
Making CA certificate ...
Generating a 1024 bit RSA private key
.......................++++++
............++++++
writing new private key to './demoCA/private/./cakey.pem'
Enter PEM pass phrase: ←適当なフレーズ
Verifying - Enter PEM pass phrase: ←上記と同じ
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Ishikawa
Locality Name (eg, city) []:Kanazawa
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Full Digit, Inc.
Organizational Unit Name (eg, section) []:fulldigit
Common Name (eg, YOUR name) []:www.fulldigit.net
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/./cakey.pem:
Check that the request matches the signature
Signature ok
~中略~
Write out database with 1 new entries
Data Base Updated
・自己証明レベルなので、パスフレーズを消す
# openssl rsa -in ./demoCA/private/cakey.pem -out ./demoCA/private/cakey.pem
Enter pass phrase for ./demoCA/private/cakey.pem: ←最初に設定したパスフレーズ
writing RSA key
・証明書を作成します
# openssl x509 -in ./demoCA/cacert.pem -out ./demoCA/cacert.crt
・ブラウザ用のderファイル作成します(あると警告が出なくなる)
# openssl x509 -inform pem -in ./demoCA/cacert.pem -outform der -out ./demoCA/ca.der
○証明書をapache2に登録します
# cd /usr/lib/ssl/misc/demoCA
# mkdir /etc/apache2/ssl
# cp ./cacert.crt /etc/apache2/ssl/
# cd private/
# mkdir /etc/apache2/ssl/private
# cp ./cakey.pem /etc/apache2/ssl/private/
# cd /etc/apache2/sites-available
# gunzip -c /usr/share/doc/apache2.2-common/examples/apache2/extra/httpd-ssl.conf.gz > httpd-ssl.conf
# ln -s /etc/apache2/sites-available/httpd-ssl.conf /etc/apache2/sites-enabled/httpd-ssl.conf
# vi httpd-ssl.conf
-------------------------------------
<VirtualHost 192.168.0.2:443>
DocumentRoot "/home/www/htdocs"
ServerName www.fulldigit.net:443
ServerAdmin
このメールアドレスはスパムボットから保護されています。観覧するにはJavaScriptを有効にして下さい
SSLCertificateFile /etc/apache2/ssl/cacert.crt
SSLCertificateKeyFile /etc/apache2/ssl/private/cakey.pem
-------------------------------------
(2)apache2にsslモジュールを組み込む
作成した証明書をWebサーバに組み込みます。
# a2enmod ssl
Module ssl installed; run /etc/init.d/apache2 force-reload to enable.
(3)秘密鍵と証明書を別々に指定することができないPOPサーバがあるため
メール用証明書作成しておきます。
# cd /etc/apache2/ssl/
# (cat cacert.crt ; cat private/cakey.pem) > courier.pem
(4)apache2を再起動する
# /etc/init.d/apache2 restart
○phpの組み込み
Postfix.adminはPHPで動くソフトウェアなので、php4をインストールする。
# apt-get install php4 (4.4.4-8+etch4)
# apt-get install php4-mysql (4.4.4-8+etch4)
PHPがロードしていない場合はここをチェック
/etc/apache2/mods-enabledにphpのシンボリックリンクがない
# a2enmod php4
Apacheを再起動して、PHPの動作を確認する。
# /etc/init.d/apache2 restart
webテスト用のスプリクトを作る
# vi /home/www/https/test.php
------------------------------
<?php phpinfo() ?>
ここでブラウザよりtest.phpを参照してみて、PHPの情報が表示されたらOK.
※画面の確認ができたら、test.phpは忘れずに消しておこう。(サーバーの設定が丸見えになるので..。)
○mysqlの準備
こちらも、Postfix.Adminのためにmysqlをインストールする。
# apt-get install mysql-server (5.0.32-7etch5)
mysqlのroot管理者権限を設定
# mysqladmin -u root password 'abcdefg'
・ユーザーの確認
mysql> select host,user,password from mysql.user;
+-----------+------------------+-------------------------------------------+
|
host |
user
|
password
|
+-----------+------------------+-------------------------------------------+
| localhost |
root
| *D75CC763C51A420D28A227AC294ADE26A2F2 |
| test |
root
|
|
| localhost | debian-sys-maint | *D8632BAE842E391F45830332B82010F7F2C |
+-----------+------------------+-------------------------------------------+
・匿名ユーザーがあったら削除
mysql> delete from mysql.user where user="";
mysql> flush privileges;
・パスワードなしもら削除
mysql> delete from mysql.user where host="test";
○postfix-admin インストール
ソースは、本家サーバーからpostfix-adminをダウンロード。
http://sourceforge.net/projects/postfixadmin/
現時点('08.02.25)の最新版は postfixadmin-2.1.0.tgz
# cd /home/www/htdocs
# tar zxvf postfixadmin-2.1.0.tgz
解凍したら、ディレクトリ名を好きな名前に変更。
# mv postfixadmin-2.1.0 mail
・パーミッションの変更(もしくは確認:下記のように644になっていればOK)
# cd mail
# chmod 644 *.php *.css
# chmod 644 admin/*.php admin/.ht*
# chmod 644 images/*.png
# chmod 644 languages/*.lang
# chmod 644 templates/*.tpl
# chmod 644 users/*.php
・セットアップcheckプログラムにアクセス
ブラウザからsetup.phpを実行して下記の画像が表示されればOK
https://192.168.0.2/mail/setup.php
config.inc.php - NOT FOUNDは、これから作成するので無視してもOK
・コンフィグファイル(copnfig.inc.php)を作成する。
# cp -pr config.inc.php.sample config.inc.php
config.inc.phpを作成して再度リロードすると、NOT FOUNDのエラーは消えて、「setup.phpを削除して」といったメッセージが出るので、setup.phpファイルを削除する。
# rm setup.php
ベーシック認証が入っているので、サーバー管理方針に従い変更する。
ここでは/home/wwwにパスワードファイル(.htpasswd)を作成した。
# cd admin
# vi .htaccess
パスワードファイル
# htpasswd -c /home/www/.htpasswd admin
New password: *******
Re-type new password: *******
アナウンスの情報を表示しているファイルは、リネームしておく。(削除でもOK)
# cd /var/www/htdocs
# mv motd.txt motd.txtORG
# mv motd-admin.txt motd-admin.txtORG
# mv motd-users.txt otd-users.txtORG
・config.inc.phpを修正する。
変更する点は、「change-this-to-your.domain.tld」となっている部分。メールとURLの部分を自サーバの環境に合わせる。
# vi config.inc.php
$CONF['admin_email'] = '
このメールアドレスはスパムボットから保護されています。観覧するにはJavaScriptを有効にして下さい
';
$CONF['default_aliases'] = array (
'abuse' => '
このメールアドレスはスパムボットから保護されています。観覧するにはJavaScriptを有効にして下さい
',
'hostmaster' => '
このメールアドレスはスパムボットから保護されています。観覧するにはJavaScriptを有効にして下さい
',
'postmaster' => '
このメールアドレスはスパムボットから保護されています。観覧するにはJavaScriptを有効にして下さい
',
'webmaster' => '
このメールアドレスはスパムボットから保護されています。観覧するにはJavaScriptを有効にして下さい
'
$CONF['vacation_domain'] = 'www.fulldigit.net';
$CONF['footer_text'] = 'Return to www.fulldigit.net';
$CONF['footer_link'] = 'http://www.fulldigit.net';
管理画面を日本語の表示に変更する。
$CONF['default_language'] = 'en'; → $CONF['default_language'] = 'jp';
・日本語表記ファイルがないので、jp.lang を作成してアップする。
language/の下に配置します。
・mysqlにパスワードがMD5で暗号化された場合、popを使って直接認証ができないため、
この場合はクリアテキストで保存する。
//$CONF['encrypt'] = 'md5crypt';
$CONF['encrypt'] = 'cleartext';
・デザインテンプレートの変更(文字コードを変更)
(管理画面はテンプレートを使って表示している)
# vi templates/header.tpl
iso-8859-1 → Shift_JIS
デザインを変更したい場合は、templates/下のファイルを好きなように修正すればOK
・最後にpostfix.admin用のテーブルを作成する
mysqlのデータベースにテーブルを作る場合は、DATABASE_MYSQL.TXTを使う。
# mysql -u root -p < DATABASE_MYSQL.TXT
Enter password:*********(rootのパスワードを入力)
mysqlに入って、データベースへのID、パスワード作成
# mysql -u root -p
mysql> set password for postfix@'localhost'=password('abcdefg01');
mysql> set password for postfixadmin@'localhost'=password('abcdefg02');
mysql> flush privileges;
config.inc.php内のデータベースパスワードを変更しておく。
なお、ここで変更するのはpostfixadminのみ。postfixは後述するpostfixのコンフィグファイルで指定する。
# vi config.inc.php
$CONF['database_password'] = 'abcdefg01';
・管理画面にアクセスする
https://192.168.0.2/mail/admin/
あとは実際にドメインとアカウントを作成してデータベースに登録されていれば(一覧表示されれば)、インストール完了ということになります。
ちなみにドメイン管理者と一般ユーザーのログインURLは以下のとおり
(1)ドメイン管理者のログイン
https://192.168.0.2/mail/login.php
(2)一般ユーザーのログイン
https://192.168.0.2/mail/users/login.php
なお、postfixのインストールはこちらのページ に掲載していますので、必要であればそちらを参照して下さい。
|