メールサーバー構築 GUI管理ツール PostfixAdmin

(最終更新日時:2012-09-22 19:50:39)
postfixのユーザーアカウントおよびバーチャルドメインの管理をGUIで行うツール PostfixAdmin をインストールします。

ダウンロード

SourceForge.net Postfix Admin Project(http://sourceforge.net/projects/postfixadmin/)から次のファイルをダウンロードします。
PostfixAdmin 2.3.5 postfixadmin-2.3.5.tar.gz
 (※)下線部は 2012/09/21 現在の最新安定バージョンです。

事前準備

関連パッケージとして、下記を事前にインストールしておきます。
PHP
Apache Web Server
MySQL データベース

データベースには、PostgreSQL を使用することも可能です。

インストール

インストールするWebサイトディレクトリでアーカイブを展開します。
ここでは、/home/www/vhosts/system-act.com/www に展開します。
# mkdir /home/www/vhosts/system-act.com/www
# cd /home/www/vhosts/system-act.com/www
# tar xzvf ダウンロード先/postfixadmin-2.3.5.tar.gz
# mv postfixadmin-2.3.5 postfixadmin                          # アクセスしやすいディレクトリ名に変更します

データベース設定

MySQLにPostfixデータベースを準備します。
# mysql -h actmysql.server.localnet -u root -p mysql
Enter password: MySQL rootユーザーのパスワード
       :
-- Postfixデータベースを作成します
mysql> CREATE DATABASE postfix;
       :
-- Postfix管理ユーザーを作成し、Postfixデータベースへの権限を設定します
mysql> GRANT ALL PRIVILEGES ON postfix.*
    -> TO postfixadmin@gateway.server.localnet
    -> IDENTIFIED BY 'パスワード';
       :
mysql> exit


PostgreSQLの場合は、以下でPostfixデータベースを準備します。
# su - postgres                                               # postgresユーザーで行います
$ psql
Password: DBユーザー postgres のパスワード
       :
-- Postfix管理ユーザーを作成します
postgres=# CREATE ROLE postfixadmin WITH LOGIN PASSWORD 'パスワード';
CREATE ROLE

-- Postfixデータベースを作成します
postgres=# CREATE DATABASE postfix OWNER postfixadmin ENCODING 'UTF8';
CREATE DATABASE

postgres=# \q
$ exit

# PostgreSQLデータベースへの接続許可設定を行います
# vi /home/database/pgsql/pg_hba.conf
----------(vi ここから)----------
       :
# IPv4 local connections:
       :
host    postfix     postfixadmin 127.0.0.1/32         md5
       :
----------(vi ここまで)----------

# service pgsql reload

定義ファイルの編集

Postfix AdminのConfigファイルを編集します。
ローカル環境の定義は、config.local.php を作成し、config.inc.php の設定を上書きすることで行います。
# cd /home/www/vhosts/system-act.com/www/postfixadmin

# (ドメイン名を一括変換します)
# replace "change-this-to-your.domain.tld" "system-act.com" -- config.inc.php
config.inc.php converted

# vi config.local.php
----------(vi ここから)----------
<?php
/**
 * Postfix Admin
 *
 * File: config.local.php
 * Contains configuration options of local environment.
 */

$CONF['configured'] = true;

// Language config
$CONF['default_language'] = 'ja';                             // 日本語表示にします

// Database Config
$CONF['database_type'] = 'mysqli';                            // mysqli拡張サポートで接続します
$CONF['database_host'] = 'actmysql.server.localnet';          // MySQLサーバーのホスト名を設定します
$CONF['database_user'] = 'postfixadmin';                      // データベース設定で作成したPostfix管理ユーザーを設定します
$CONF['database_password'] = 'データベース設定で作成したPostfix管理ユーザーのパスワード';

// Mailboxes
$CONF['domain_path'] = 'YES';                                 // メールボックスはドメイン名のフォルダ内に作成します
$CONF['domain_in_mailbox'] = 'NO';                            // メールボックス名にはドメイン名を付加しません

// Fetchmail
$CONF['fetchmail'] = 'NO';                                    // fetchmail機能は使用しません

// link to display under 'Main' menu when logged in as a user.
$CONF['user_footer_link'] = "main.php";                       // ユーザー画面のフッターはメイン画面への遷移にします

// Footer
$CONF['show_footer_text'] = 'NO';                             // フッターのテキストを表示しません

// Welcome Message
$CONF['welcome_text'] = <<<EOM
ようこそ!Postfixメールシステムへ。

メールボックスの作成が完了しました。
EOM;
?>
----------(vi ここまで)----------

改修等

ブラウザがIE(インターネットエクスプローラー)で、かつSSLで接続している場合、バックアップでエラーになりますので対応します。
# cd /home/www/vhosts/system-act.com/www/postfixadmin

# vi backup.php
----------(vi ここから)----------session_cache_limiter('public');                              // IE & SSLサイト用の設定を追加します
require_once('common.php');
     :
----------(vi ここまで)----------


PHPのバージョンが5.4.0より前の場合、ドメインの「説明」やアドレスの「名前」の日本語が、ドメインやアドレスの一覧で文字化けしますので対応します。
# cd /home/www/vhosts/system-act.com/www/postfixadmin/templates

# vi admin_list-domain.php
----------(vi ここから)----------
     :(52行目)
         print "<td>" . htmlentities($domain_properties[$i]['description'],ENT_COMPAT | ENT_HTML401,'UTF-8') . "</td>";
     :
----------(vi ここまで)----------

# vi list-virtual.php
----------(vi ここから)----------
     :(317行目)
         print "      <td>" . htmlentities($tMailbox[$i]['name'],ENT_COMPAT | ENT_HTML401,'UTF-8') . "</td>\n";
     :
----------(vi ここまで)----------


データベースに MySQL を使用して、デフォルトキャラクタセットを utf-8 にしている場合、Version 318 へのデータベース更新でエラーになりますので対応します。
# cd /home/www/vhosts/system-act.com/www/postfixadmin

# vi upgrade.php
----------(vi ここから)----------
     :
function upgrade_318_mysql() {
     :(818行目)
            notified varchar(255) {LATIN1} NOT NULL,
     :(830行目)
        ALTER TABLE `$table_vacation_notification` CHANGE `notified`    `notified`    VARCHAR( 255 ) {LATIN1} NOT NULL
     :
----------(vi ここまで)----------


お知らせメッセージを編集します。
ドメイン管理者宛にお知らせが必要な場合は motd.txt を、一般ユーザー宛のお知らせは motd-users.txt を編集してください。
# cd /home/www/vhosts/system-act.com/www/postfixadmin

# vi motd.txt
----------(vi ここから)----------
<div class="standout">
=== お知らせ ===<br />
現在、<a href="mailto:<?php print $CONF['admin_email']; ?>">サイト管理者</a>からのお知らせはありません。<br />
============<br />
</div>
<br />
----------(vi ここまで)----------

# vi motd-users.txt
----------(vi ここから)----------
<div class="standout">
=== お知らせ ===<br />
現在、<a href="mailto:<?php print $CONF['admin_email']; ?>">サイト管理者</a>からのお知らせはありません。<br />
============<br />
</div>
<br />
----------(vi ここまで)----------

Webサーバー設定

apacheのホスト設定にPostfix Adminの設定を追加します。
# vi /usr/local/apache2/conf/extra/vhosts/www.system-act.com.conf
Alias /postfixadmin "/home/www/vhosts/system-act.com/www/postfixadmin"

# service httpd restart                                       # 再起動して設定を反映させます


パーミッションおよびオーナーを変更します
# cd /home/www/vhosts/system-act.com/www/postfixadmin
# chown -R apache *
# chmod -R 400    *

# chmod 500 css
# chmod 500 images
# chmod 500 languages
# chmod 500 templates
# chmod 500 model
# chmod 500 admin
# chmod 500 users

Postfix Adminの初期セットアップ

Webブラウザから http://WebサーバーのURL/postfixadmin/setup.php で初期セットアップ画面を表示させます。

最初に、セットアップ用パスワードの設定とハッシュキーの生成を行います。

(※)クリックすると別画面で拡大画像が開きます。
postfixadmin01.gif エラーの表示がないことを確認し、任意のセットアップ用パスワードを入力します。

Generate password hash』でセットアップ用パスワードに対するハッシュキーを生成します。
postfixadmin02.gif ハッシュキーが生成されます。


生成されたハッシュキーを config.local.php に設定します。
# cd /home/www/vhosts/system-act.com/www/postfixadmin

# vi config.local.php
----------(vi ここから)----------
     :
$CONF['configured'] = true;
$CONF['setup_password'] = '生成されたハッシュキー';----------(vi ここまで)----------


Webブラウザに戻り、特権管理者(ドメインの作成/削除ができます)のログインアドレスとパスワードを作成します。

(※)クリックすると別画面で拡大画像が開きます。
postfixadmin03.gif Setup password には、設定したセットアップ用パスワードを入力します。
(※)ハッシュキーではありません。

特権管理者のログインアドレスとログインで使用するパスワードを入力します。

管理者追加』で特権管理者を作成します。
postfixadmin04.gif 特権管理者が追加されました。

セットアップ画面を閉じます。

(※)Ver. 2.3から setup.php を削除する必要がなくなりました。

接続ユーザーの作成

postfixdovecot からのデータベース接続は、管理ユーザーとは別のユーザーで行うようにします。
# mysql -h actmysql.server.localnet -u root -p mysql
Enter password: MySQL rootユーザーのパスワード
       :
-- Postfix接続ユーザーを作成し、Postfixデータベースへの権限を設定します
mysql> GRANT SELECT ON postfix.*
    -> TO postfix@gateway.server.localnet
    -> IDENTIFIED BY 'パスワード';
       :
mysql> exit


PostgreSQL の場合は、以下で作成します。
# su - postgres                                               # postgresユーザーで行います
$ psql
Password: DBユーザー postgres のパスワード
       :
-- Postfix接続ユーザーを作成します
postgres=# CREATE ROLE postfix WITH LOGIN PASSWORD 'パスワード';
CREATE ROLE

-- Postfixデータベースへの権限を設定します
postgres=# \c postfix
You are now connected to database "postfix".
postfix=# GRANT SELECT ON domain  TO postfix;
GRANT
postfix=# GRANT SELECT ON mailbox TO postfix;
GRANT
postfix=# GRANT SELECT ON alias   TO postfix;
GRANT

postgres=# \q
$ exit

# PostgreSQLデータベースへの接続許可設定を行います
# vi /home/database/pgsql/pg_hba.conf
----------(vi ここから)----------
       :
# IPv4 local connections:
       :
host    postfix     postfix     127.0.0.1/32          md5
       :
----------(vi ここまで)----------

# service pgsql reload

Postfix Adminの運用

http://WebサーバーのURL/postfixadmin/ で管理者のログイン画面が表示されます。

(※)クリックすると別画面で拡大画像が開きます。
postfixadmin11.gif 特権管理者ログインアドレスとパスワードでログインすれば、新規ドメインの作成ができます。

ドメイン管理者ログインアドレスとパスワードでログインすれば、管理ドメイン内にメールアドレスの作成ができます。

一般ユーザーは、『一般ユーザーのログインはここをクリックしてください。』の部分をクリックすると、一般ユーザー用のログイン画面に遷移します。

(※)各管理者のログインアドレスとパスワードはメールサーバーとは別のものです。
postfixadmin12.gif 特権管理者でログインして新規ドメインの作成を行います。
postfixadmin13.gif 新規に作成するドメイン名とドメインの説明等を入力します。

ドメイン追加』でドメインが作成されます。
postfixadmin14.gif ドメインが追加されましたので、ドメインの管理者を設定します。
postfixadmin15.gif ドメインの管理者のメールアドレスとパスワードを入力し、管理対象ドメインを選択します。
同じドメインの管理者で複数の管理対象ドメインを選択することができます。

管理者追加』でドメインの管理者が作成されます。
postfixadmin16.gif ドメインの管理者でログインして、管理対象ドメイン内にメールアドレスを追加します。

管理者追加』でドメインの管理者が作成されます。
postfixadmin17.gif 追加するメールアドレスとパスワード等を入力します。

メールアドレス追加』でメールアドレスが作成されます。
postfixadmin18.gif ユーザーでログインした場合は、転送先の設定やパスワード変更ができます。

フィードバック

記事の内容についてのご質問、ご指摘、その他ご意見等は、Weblog/Twitter にて受け付けております。

System House ACT Weblog 内記事 : メールサーバー構築 GUI管理ツール PostfixAdmin

トラックバックまたはコメントにてお寄せください。

Twitter では .@systemact 宛につぶやいてください。
また、こちら から、この記事についてつぶやくことができます。
a System House to build an Accounting system by the Computer Technology