ubuntu 10.04 をメールサーバーに (PostfixAdmin インストール編)

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 の二つをインストールしておこう。

ここではパッケージの操作 (インストール、アンインストール) に aptitude コマンドを使っている。
ubuntu (debian 系 linux ディストリビューション) ではパッケージのインストール、アンインストールを行うコマンドが複数あるが、インストールされたパッケージが明示的に指定されたのか、依存関係によって非明示的にインストールされたのかを管理する方法が別であるため、これらを混在させて使用しない方が望ましい。

libmysqlclient16 や libdbi-perl、spawn-fcgi など、mysql-server-5.1 と lighttpd と一緒に、これら二つのパッケージが依存する (必要としている) パッケージがインストールされる旨の表示がされる。
「先に進みますか? [Y/n??]」のプロンプトに 'y' を入力して Enter を押す。

パッケージのダウンロードと展開、設定が順次行われていく途中で、MySQL の root ユーザーのパスワードの入力を求めるダイアログが表示される。
root ユーザー (ubuntu の root ユーザーではない) で使いたいパスワードを入力したら Enter を押す。
すると、もう一度 MySQL の root ユーザーのパスワードの入力を求めるダイアログが表示されるので、先ほど入力したのと同じパスワードを入力して Enter を押すと、ダイアログが閉じ、残りのパッケージの展開と設定が再開される。

entry_root_password_for_mysql
reentry_root_password_for_mysql

パッケージの展開と設定が全て終わると、コマンドプロンプトが表示される。
Lighttpd については特にここで設定する必要はないが、MySQL の方は以下のコマンドを使って /etc/mysql/conf.d/character-set.cnf ファイルを作成しておく。

作成する /etc/mysql/conf.d/character-set.cnf ファイルの内容は以下の通りだ。

/etc/mysql/conf.d/character-set.cnf ファイルを作成したら、このファイルの設定を読み込ませるために、以下のコマンドを実行して MySQL を再起動しておく。

これ以外に必要な設定については、PostfixAdmin をインストールしてから必要に応じて随時行う。

続いては PostfixAdmin のインストールだが、あいにくと PostfixAdmin は ubuntu の公式リポジトリでは提供されていない。
PPA (Parsonal Package Archive) にも登録されていない。

PPA とは ubuntu の公式リポジトリで提供されていないソフトウェアなどを、各自が自由にパッケージ化して提供できる仕組みだ。
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_web_site

postfixadmin のダウンロードページは SourceForge を使っている。
このページでもっとも目立つ位置にあるダウンロード用のリンクは tar ボールなので、間違ってこれをダウンロードしないように気をつけよう。
ダウンロードするのは、もっと下の方の「All Files」の一覧にある「postfixadmin_2.3_all.deb」だ。

postfixadmin_download_page

この「postfixadmin_2.3_all.deb」をダウンロードして、適当なディレクトリに保存しておく。
例えば以下のコマンドを実行すれば、カレントディレクトリにダウンロードされた postfixadmin_2.3_all.deb ファイルができるはずだ。

wget コマンドで指定する URI は Web ブラウザを使って知ることができる。

postfixadmin_get_url_to_download

「postfixadmin_2.3_all.deb」をダウンロードしたら、次はこれのインストールだ。
しかし、PostfixAdmin が依存している (PostofixAdmin を動かすのに必要な) パッケージをまだインストールしていないので、このままインストールしても間違いなくエラーになる。
postfixadmin_2.3_all.deb が依存しているパッケージを調べるには、以下のコマンドを実行すればいい。

コマンドの実行結果に含まれる Depens: の行に依存しているパッケージが表示されている。
'|' (バーチカルバー、縦線) で区切られているパッケージは、その中のどれか一つがインストールされていれば良いという意味だ。
この中で mysql-client は MySQL をインストールしたときに一緒にインストールされている。
以下のコマンドを実行して MySQL 以外のパッケージのインストールした後に、続けて postfixadmin_2.3_all.deb をインストールする。

PostfixAdmin のインストールでは設定ダイアログがいくつか表示されるので、それぞれ適切な値を設定する。
具体的には、まず最初に PostfixAdmin の Web インターフェースを表示するための Web サーバーの種類を選択するダイアログが表示される。
先に Lighttpd をインストールしているのでここでは当然「lighttpd」を選択する。

postfixadmin_select_web_server

次に表示されるのは、データベースの設定をこのインストール中に設定するかどうかを問い合わせるダイアログだ。
ダイアログの中に書かれている 'dbconfig-common' は、データベースへの設定が必要なパッケージが使う、ユーティリティ的なパッケージだ。
このダイアログで「dbconfig-common で設定しますか?」 と書かれている箇所を「インストーラーで設定しますか?」と読み替えてもいいだろう。

ここでは「はい」を選択して 'dbconfig-common' を使ってデータベースの設定を行うことにする。

postfixadmin_use_dbconfig-common

使用するデータベースの種類の選択では、「mysql」を選択する。
先に MySQL をインストールしているので、これは当然だろう。

postfixadmin_select_database

データベースの種類を選択したら、次はデータベース作成のために管理権限を持つユーザーのパスワードを入力する。
ここで入力するのは、MySQL をインストールしたときに設定した、MySQL の root ユーザーのパスワードだ。

postfixadmin_enter_mysql_root_pasword

次は、PostfixAdmin がMySQL に接続するときに使用するパスワードの入力だ。
ここで入力したパスワードは、PostfixAdmin の設定ファイルに書き込まれ、PostfixAdmin のプログラム内部でしか使用されない。
ここで適当な文字列を入力するのも良いが、何も入力せずに次に進み、ランダムなパスワードを自動的に作成させよう。

postfixadmin_enter_pasword_to_connect_mysql

最後に設定ファイルを書き換える方法を訊いてくる。
このダイアログの意味は、パッケージのインストール時にどのような処理が行われているかが分かっていないと理解できない。
実は「dbconfig-common で設定しますか?」と訪ねるダイアログの時点で、PostfixAdmin のインストーラーによる設定は一旦終了しており、これ以降のデータベースに関する設定は、PostfixAdmin のインストーラーによるものではないと考えればこのダイアログの意味がわかるだろう。
つまり、「dbconfig-common で設定しますか?」と訪ねるダイアログで PostfixAdmin の設定ファイルが作成され、その後のデータベースに関する設定で新しい設定ファイルが上書きされるという状況でのダイアログということだ。
このダイアログに記されている「パッケージメンテナ」とは、データベースに関する設定を行ったプログラム (dbconfig-common パッケージ) を指し、「パッケージメンテナのバージョン」とは、行ったばかりのデータベースに関する設定を反映した設定ファイルを指す。
また、「現在インストールされているローカルバージョン」は、データベースに関する設定を行う前の設定ファイルを指すことになる。

色々と解説したが、このダイアログでは「パッケージメンテナのバージョンをインストール」を選択するのが正解だ。

postfixadmin_select_config

ここまでの PostfixAdmin のデータベースに関する設定は /etc/postfixadmin/config.inc.php ファイルに以下の様に保存されている。

該当箇所のみを抜粋
なお、パスワードは伏せ字にした

これを見ると、PostfixAdmin がメールアカウントを保存するのは、postfixadmin だということが分かる。
このことは、後で Postfix および Dovecot でメールアカウントを参照するための設定を行うときに必要になる。
この postfixadmin データベースや、MySQL に接続するときのユーザアカウント、パスワード (それぞれ $CONF['database_user']$CONF['database_password'] の値) はインストーラーによって、MySQL に登録されているので、これらを変更してはいけない。

これでとりあえずインストールだけはできた。
しかしこれだけではまだ PostfixAdmin は使えない。
PostfixAdmin がきちんと動くようにするために、引き続き PostfixAdmin の設定を行っていく。

関連記事

コメントを残す