Home arrow Debian FAQ arrow [Debianセットアップ]Poastfix.adminをメールサーバに組み込む
[Debianセットアップ]Poastfix.adminをメールサーバに組み込む プリント
Debian 環境セットアップ



アカウントの管理は少数であれば、特にツールを使う必要もないのですが、ユーザーが多数登録されているメールサーバの場合、ユーザーのパスワード管理だけでも、大変なものです。 個人のパスワード変更などの管理は、個人に任せたいと言うのが正直なところでしょう。
そこで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



setup_checker3.gif

ベーシック認証が入っているので、サーバー管理方針に従い変更する。
ここでは/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のインストールはこちらのページ に掲載していますので、必要であればそちらを参照して下さい。