ubuntu 10.04 LTS Server Edition をインストールして、さらに Postfix をローカル用に設定した。
ここからはローカル用に設定した Postfix の設定を変更すると共に、いくつかのパッケージを追加して、クライアント PC で動くメーラー (MUA) からの受け取った送信メールをきちんと配送し、外部から当てられてきたメールを保存してメーラーに渡すことができるような、極めて一般的なスタンドアロンのメールサーバーにしていく。
通常 linux で動作するメールサーバーは、linux のユーザーアカウントそのものをメールアカウントとして使用しており、linux に登録されているユーザアカウントにメールサーバーアプリケーションに設定したドメインを繋げたものが、メールアドレスになっている。
つまりこれは、メールアカウントを持つ人は、全員が linux のユーザアカウントを持つということであり、linux に直接ログインすることも可能ということだ (実際にログインを許すかどうかは別。)
ubuntu で動作する Postfix であってもこの例に漏れない。
しかし、スタンドアロンのメールサーバーとして運用することを考えると、メールアドレスを持つ人全員が linux にログインできるようでは問題があるし、そもそもログインできるようにしたいとも思わない。
幸いなことに Postfix を含むほとんどのメールサーバーアプリケーションには、linux のユーザーアカウントとメールアカウントを別にする機能を持っているのでこれを使うことにしよう。
今回はメールアカウントの管理も楽になるように PostfixAdmin というパッケージを追加でインストールすることにする。
この PostfixAdmin は、メールアカウントをデータベースに保存し、メールアカウントの追加や編集に Web インターフェースを使うことができる。
PostfixAdmin でメールアカウントを保存するデータベースは MySQL する。
また、Web インターフェースのための Web サーバーは Lighttpd にする。
それでは、PostfixAdmin をインストールする前に以下のコマンドを実行して MySQL と Lighttpd の二つをインストールしておこう。
ubuntu (debian 系 linux ディストリビューション) ではパッケージのインストール、アンインストールを行うコマンドが複数あるが、インストールされたパッケージが明示的に指定されたのか、依存関係によって非明示的にインストールされたのかを管理する方法が別であるため、これらを混在させて使用しない方が望ましい。
1 |
sudo aptitude update; sudo aptitude install mysql-server-5.1 lighttpd |
libmysqlclient16 や libdbi-perl、spawn-fcgi など、mysql-server-5.1 と lighttpd と一緒に、これら二つのパッケージが依存する (必要としている) パッケージがインストールされる旨の表示がされる。
「先に進みますか? [Y/n??]」のプロンプトに 'y' を入力して Enter を押す。
パッケージのダウンロードと展開、設定が順次行われていく途中で、MySQL の root ユーザーのパスワードの入力を求めるダイアログが表示される。
root ユーザー (ubuntu の root ユーザーではない) で使いたいパスワードを入力したら Enter を押す。
すると、もう一度 MySQL の root ユーザーのパスワードの入力を求めるダイアログが表示されるので、先ほど入力したのと同じパスワードを入力して Enter を押すと、ダイアログが閉じ、残りのパッケージの展開と設定が再開される。
![]() |
![]() |
パッケージの展開と設定が全て終わると、コマンドプロンプトが表示される。
Lighttpd については特にここで設定する必要はないが、MySQL の方は以下のコマンドを使って /etc/mysql/conf.d/character-set.cnf ファイルを作成しておく。
1 |
~$ sudo vi /etc/mysql/conf.d/character-set.cnf |
作成する /etc/mysql/conf.d/character-set.cnf ファイルの内容は以下の通りだ。
1 2 3 4 5 6 7 8 |
[mysqld] default-character-set = utf8 [mysql] default-character-set = utf8 [mysqldump] default-character-set = utf8 |
/etc/mysql/conf.d/character-set.cnf ファイルを作成したら、このファイルの設定を読み込ませるために、以下のコマンドを実行して MySQL を再起動しておく。
1 |
~$ sudo service mysql restart |
これ以外に必要な設定については、PostfixAdmin をインストールしてから必要に応じて随時行う。
続いては PostfixAdmin のインストールだが、あいにくと PostfixAdmin は ubuntu の公式リポジトリでは提供されていない。
PPA (Parsonal Package Archive) にも登録されていない。
PPA で提供されているパッケージの URI をリポジトリとして登録しておけば、aptitude や apt-get などを使って公式リポジトリであるかの如くに操作できる。
しかし PPA で提供されているパッケージは、そのパッケージの作者を除き、誰も担保していないことは覚えておくべきだろう (窓の杜や Vector で紹介されているフリーウェア程度の信頼性だと考えておけば、ほぼ間違いないと思う。)
PostfixAdmin は GUN ライセンスで提供されているされているので、公式リポジトリに収録しない理由は無さそうに思えるのだが、それを追求しても意味がないだろう。
PostfixAdmin の本家 Web サイト (英語) で Debian 用のパッケージが提供されているので、これを使うことにする。
ubuntu は Debian の testing リリースを元に作られているのは周知の事実だ。
しかしこれは Debian 用に作られたパッケージがそのまま動くということではない。
そうはいうものの、PostfixAdmin は PHP だけで作られた Web アプリケーションなので、Debian 用がそのまま ubuntu で動く可能性は大だ (実際、何の問題もなく動いているが、保証はしないので悪しからず了承いただきたい)。
postfixadmin の Web サイトからリンクを辿り、ダウンロードページに移動して Debian 用のパッケージをダウンロードする。
![]() |
postfixadmin のダウンロードページは SourceForge を使っている。
このページでもっとも目立つ位置にあるダウンロード用のリンクは tar ボールなので、間違ってこれをダウンロードしないように気をつけよう。
ダウンロードするのは、もっと下の方の「All Files」の一覧にある「postfixadmin_2.3_all.deb」だ。
![]() |
この「postfixadmin_2.3_all.deb」をダウンロードして、適当なディレクトリに保存しておく。
例えば以下のコマンドを実行すれば、カレントディレクトリにダウンロードされた postfixadmin_2.3_all.deb ファイルができるはずだ。
1 |
~$ wget http://sourceforge.net/projects/postfixadmin/files/postfixadmin/postfixadmin_2.3_all.deb/download |
wget コマンドで指定する URI は Web ブラウザを使って知ることができる。
![]() |
「postfixadmin_2.3_all.deb」をダウンロードしたら、次はこれのインストールだ。
しかし、PostfixAdmin が依存している (PostofixAdmin を動かすのに必要な) パッケージをまだインストールしていないので、このままインストールしても間違いなくエラーになる。
postfixadmin_2.3_all.deb が依存しているパッケージを調べるには、以下のコマンドを実行すればいい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
~$ dpkg -I postfixadmin_2.3_all.deb 新形式 debian パッケージ、バージョン 2.0。 サイズ 1009418 バイト: コントロールアーカイブ = 6887 バイト。 95 バイト、 3 行 conffiles 320 バイト、 15 行 * config #!/bin/sh 1093 バイト、 21 行 control 15146 バイト、 181 行 md5sums 837 バイト、 29 行 * postinst #!/bin/bash 746 バイト、 32 行 * postrm #!/bin/sh 529 バイト、 24 行 * prerm #!/bin/sh 269 バイト、 6 行 templates Package: postfixadmin Version: 2.3 Architecture: all Maintainer: Norman Messtorff <normes @NORMES.ORG> Installed-Size: 2760 Depends: debconf (>= 0.5), dbconfig-common, wwwconfig-common, apache2 | lighttpd, libapache2-mod-php5 | php5-cgi | php5, php5-imap, php5-mysql | php5-pgsql, mysql-client | postgresql-client Recommends: postfix-mysql | postfix-pgsql, mysql-server | postgresql-server Suggests: squirrelmail-postfixadmin, dovecot-common | courier-authlib-mysql | courier-authlib-postgresql Section: admin Priority: optional Homepage: http://postfixadmin.sourceforge.net Description: Virtual mail hosting interface for Postfix Postfixadmin is a web interface to managing virtual users and domains for a Postfix mail transport agent. The web interface is written in PHP. It supports Virtual mailboxes, aliases, forwarders and vacation. . Allows administrators to delegate the handling of domains to the domain administrators. Allows users to login and change their own settings (e.g. forwarders, vacation, passwords etc). . Provides easy integration into dovecot, courier or cyrus. |
コマンドの実行結果に含まれる Depens: の行に依存しているパッケージが表示されている。
'|' (バーチカルバー、縦線) で区切られているパッケージは、その中のどれか一つがインストールされていれば良いという意味だ。
この中で mysql-client は MySQL をインストールしたときに一緒にインストールされている。
以下のコマンドを実行して MySQL 以外のパッケージのインストールした後に、続けて postfixadmin_2.3_all.deb をインストールする。
1 2 |
~$ sudo aptitude install dbconfig-common wwwconfig-common php5-cgi php5-mysql php5-imap ~$ sudo dpkg -i postfixadmin_2.3_all.deb |
PostfixAdmin のインストールでは設定ダイアログがいくつか表示されるので、それぞれ適切な値を設定する。
具体的には、まず最初に PostfixAdmin の Web インターフェースを表示するための Web サーバーの種類を選択するダイアログが表示される。
先に Lighttpd をインストールしているのでここでは当然「lighttpd」を選択する。
![]() |
次に表示されるのは、データベースの設定をこのインストール中に設定するかどうかを問い合わせるダイアログだ。
ダイアログの中に書かれている 'dbconfig-common' は、データベースへの設定が必要なパッケージが使う、ユーティリティ的なパッケージだ。
このダイアログで「dbconfig-common で設定しますか?」 と書かれている箇所を「インストーラーで設定しますか?」と読み替えてもいいだろう。
ここでは「はい」を選択して 'dbconfig-common' を使ってデータベースの設定を行うことにする。
![]() |
使用するデータベースの種類の選択では、「mysql」を選択する。
先に MySQL をインストールしているので、これは当然だろう。
![]() |
データベースの種類を選択したら、次はデータベース作成のために管理権限を持つユーザーのパスワードを入力する。
ここで入力するのは、MySQL をインストールしたときに設定した、MySQL の root ユーザーのパスワードだ。
![]() |
次は、PostfixAdmin がMySQL に接続するときに使用するパスワードの入力だ。
ここで入力したパスワードは、PostfixAdmin の設定ファイルに書き込まれ、PostfixAdmin のプログラム内部でしか使用されない。
ここで適当な文字列を入力するのも良いが、何も入力せずに次に進み、ランダムなパスワードを自動的に作成させよう。
![]() |
最後に設定ファイルを書き換える方法を訊いてくる。
このダイアログの意味は、パッケージのインストール時にどのような処理が行われているかが分かっていないと理解できない。
実は「dbconfig-common で設定しますか?」と訪ねるダイアログの時点で、PostfixAdmin のインストーラーによる設定は一旦終了しており、これ以降のデータベースに関する設定は、PostfixAdmin のインストーラーによるものではないと考えればこのダイアログの意味がわかるだろう。
つまり、「dbconfig-common で設定しますか?」と訪ねるダイアログで PostfixAdmin の設定ファイルが作成され、その後のデータベースに関する設定で新しい設定ファイルが上書きされるという状況でのダイアログということだ。
このダイアログに記されている「パッケージメンテナ」とは、データベースに関する設定を行ったプログラム (dbconfig-common パッケージ) を指し、「パッケージメンテナのバージョン」とは、行ったばかりのデータベースに関する設定を反映した設定ファイルを指す。
また、「現在インストールされているローカルバージョン」は、データベースに関する設定を行う前の設定ファイルを指すことになる。
色々と解説したが、このダイアログでは「パッケージメンテナのバージョンをインストール」を選択するのが正解だ。
![]() |
ここまでの PostfixAdmin のデータベースに関する設定は /etc/postfixadmin/config.inc.php ファイルに以下の様に保存されている。
1 2 3 4 5 |
$CONF['database_type'] = 'mysql'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'postfixadmin'; $CONF['database_password'] = '************'; $CONF['database_name'] = 'postfixadmin'; |
なお、パスワードは伏せ字にした
これを見ると、PostfixAdmin がメールアカウントを保存するのは、postfixadmin だということが分かる。
このことは、後で Postfix および Dovecot でメールアカウントを参照するための設定を行うときに必要になる。
この postfixadmin データベースや、MySQL に接続するときのユーザアカウント、パスワード (それぞれ
$CONF['database_user'] 、
$CONF['database_password'] の値) はインストーラーによって、MySQL に登録されているので、これらを変更してはいけない。
これでとりあえずインストールだけはできた。
しかしこれだけではまだ PostfixAdmin は使えない。
PostfixAdmin がきちんと動くようにするために、引き続き PostfixAdmin の設定を行っていく。