ubuntu 10.04 をメールサーバーに (PostfixAdmin 設定編)

先日の記事で ubuntu 10.04 LTS Server Edition に、PostfixAdmin とそれを動かすのに必要なパッケージをインストールした。
しかしまだ単にインストールしただけなので、このままではまともに動かすことはできない。
引き続き PostfixAdmin を動かすための設定を行っていく。

先日の記事の最後で、PostfixAdmin のインストール中に選択、入力したデータベース関係の設定が /etc/postfixadmin/config.inc.php ファイルに書き込まれ、保存されていると書いた。
その他にも多くのパラメーターが /etc/postfixadmin/config.inc.php ファイルに書かれているので、これらのパラメーターを適切に編集していくことにする。

ただし、/etc/postfixadmin/config.inc.php ファイルを直接編集すると、今後 PostfixAdmin をアップグレードすることがあったときに書き換えられる可能性があるので、/etc/postfixadmin/config.local.php ファイルを作成してそこに記述、編集するようにする。
何故 /etc/postfixadmin/config.local.php ファイルかという理由は、以下に挙げるように /etc/postfixadmin/config.inc.php ファイルの最後の方の行を見れば分かる。

なお、/etc/postfixadmin/config.inc.php ファイルが PostfixAdmin のアップグレードで書き換えられる可能性を考慮すると、データベースに関する設定も /etc/postfixadmin/config.local.php ファイルに書き写しておく方が良いだろう。
それ以外の設定については、/etc/postfixadmin/config.inc.php ファイルの該当する行を /etc/postfixadmin/config.local.php ファイルに転記して修正する。
特に変更しなくても良さそうな設定については、/etc/postfixadmin/config.local.php ファイルに転記せず、そのままにしておく。

個々の修正内容を解説するとかなりの量になるので、今回作成した /etc/postfixadmin/config.local.php ファイルを以下に挙げておくことにする。
このファイルでポイントになるのは $CONF['encrypt'] = 'creartext' の箇所だ。
この値を 'creartext' 以外にすると、SMTP 認証などで使うハッシュの種類 (認証メカニズム) が限定されてしまう。

具体的には $CONF['encrypt'] を 'creartext' 以外にすると、CRAM-MD5 や DIGEST-MD5 などが使えなくなる。
PostfixAdmin の Web インターフェースの URL ($CONF['postfix_admin_url'] の値) と、MySQL に接続するときのパスワード ($CONF[]'database_password'] の値) は伏せ字にした

作成した /etc/postfixadmin/config.local.php ファイルの所有者とアクセス権を、/etc/postfixadmin/config.inc.php ファイルと同じにするため、以下のコマンドを実行しておく。

設定ファイルの修正ができたところで、続いてインストールした PostfixAdmin の Web インターフェースを有効にしよう。

Web インターフェースのための Web サーバーとして Lighttpd をインストールしておいた。
PostfixAdmin の Web インターフェースは Web サーバーの CGI を使って動作するので、まずは Lighttpd のCGI を有効にする。
そして PostfixAdmin の Web インターフェースのコンテンツファイルのディレクトリを Lighttpd に指示したら、Lighttpd に設定を読み込ませる。

上に書いたコマンドを実行した瞬間から、PostfixAdmin の Web インターフェースが有効になる。
PostfixAdmin の設定が全て終わったわけではないが、外部からの無用なアクセスを許さないように、セキュリティをしっかり確保しておこう(セキュリティについてはここに書かないのが、きちんと対処してあるものとする。)

ここまでくれば、PostfixAdmin の設定も残すは僅かだ。
Web ブラウザを使って Lighttpd の Web インターフェースにアクセスする。
ただし、接続する URL は Web インターフェースの URL に '/setup.php’ を繋げたものだ。
Web インターフェースの URL が http://****.compnet.jp/postfixadmin なら http://****.compnet.jp/postfixadmin/setup.php になる。

ところでちょっと待って欲しい。
Web ブラウザでその URL に接続する前にひとつだけやっておこことがある。
この URL に接続すると、PostfixAdmin がメールアカウントなどを登録するためのデータベースが構築されるのだが、なぜかテーブルの文字セットをわざわざ 'latin1' にして構築してしまう。
データベースに登録する情報がメールアカウントだけなら 'latin1' でも問題にはならないが、このままでは備考欄などに漢字で入力すると文字化けを起こしてしまう。

そこで、Web ブラウザで接続する前に、PostfixAdmin のスクリプトを少しだけ手直ししておく。
修正する箇所は /usr/share/postfixadmin/upgrade.php ファイルの 169 行目付近にある一行だけだ。
修正前と後を diff コマンドで比較した結果を以下に挙げておく。

/usr/share/postfixadmin/upgrade.php ファイルを修正したら、Web ブラウザで http://****.compnet.jp/postfixadmin/setup.php に接続する。
すると PostfixAdmin の設定をチェックして、メールアカウントを登録するためのデータベースが構築される。

postfixadmin_setup_php

最後に /usr/share/postfixadmin/setup.php ファイルの名前を変えておく。
これは間違えて http://****.compnet.jp/postfixadmin/setup.php にアクセスされたときのことを考えてのことだ。
再セットアップすることを考えないのであれば、/usr/share/postfixadmin/setup.php ファイルを削除してしまっても良いだろう。
ファイルの名前を変更するときは、拡張子を.php 以外にしておく方が良い。
ここでは /usr/share/postfixadmin/setup.php_orig に名前を変えておく。

最後に、PostfixAdmin に管理者としてログインするユーザーを登録するだけだ。
この最初の管理者ユーザーだけは MySQL で直接登録する必要があるので、以下のコマンドを使って登録する。

adminuser は管理者としてログインするユーザー名、passward はそのパスワード。
なお、passward は、/etc/postfixadmin/config.local.php ファイルで $CONF['encrypt'] を 'cleartext' にしているので、暗号せず平文のままにしておく。

それぞれの行の実行毎に 'Enter Password:' のプロンプトが表示されるので、MySQL をインストールしたときに設定した MySQL の root ユーザーのパスワード (ubuntu の root ユーザーではない) を入力して、Enter を押す。

これで PostfixAdmin のインストールと設定がすべて終わった。
以後は Web ブラウザで http://****.compnet.jp/postfixadmin に接続して、MySQL に直接登録した管理者ユーザーでログインすれば、メールアカウントの管理ができる。

関連記事

「ubuntu 10.04 をメールサーバーに (PostfixAdmin 設定編)」への6件のフィードバック

  1. ubuntu初心者です。
    こちらのサイトは、丁寧に手順をまとめられているので、非常に参考になります。
    いつも、ありがとうございます。
     
    VMware上にUbuntu 11.10 serverをセットアップし、手順に従い
    Postfixインストール → Postfixadminのインストールまで実施しましたが
    http://****.local/postfixadmin/setup.php
    にアクセスした際、403 – Forbiddenが返却されました。
    http://****.local/index.lighttpd.html
    は正常に表示されます。
    CGIも有効にしましたし、lighttpdの再起動も試してみましたが、状況は同じです。
    ほかに確認すべきところがございましたら、ご教示願いますと幸いです。
    以上、よろしくお願いします。

    1. [cci]/var/log/lighttpd/access.log[/cci] ファイルと [cci]/var/log/lighttpd/error.log[/cci] ファイルに何かヒントになるようなエラー情報が記されていないでしょうか?

      状況からすると、[cci]/etc/lighttpd/conf-enablee/99-postfixadmin.conf[/cci] ファイルが正しく作られていない気がします。
      このファイルは [cci]/etc/postfixadmin/lighttpd.conf[/cci] へのシンボリックリンクなので、もし無ければ [cci_bash]sudo ln -s /etc/postfixadmin/lighttpd.conf /etc/lighttpd/conf-enablee/99-postfixadmin.conf[/cci_bash] コマンドを実行してください。
      記事では ubuntu 10.04 を使っていて、ubu003 さまは 11.10 を使っているということなので、また記事の記述から少々時間も経っているため PostfixAdmin 自体もバージョンが上がっていると思います。
      これらのバージョンの差異で PostfixAdmin のインストール動作に違いがあるのかもしれません。

      1. VirtualBox に ubuntu 11.10 をインストールして確認しました。
        PostfixAdmin は最新の 2.3.4 を使ったところ、[cci]/etc/lighttpd/conf-enable/99-postfixadmin.conf[/cci] ファイルが作成されないようです。
        [cci]/etc/lighttpd/conf-available/postfixadmin[/cci] ファイルが作成されているので、これを有効にすれば ([cci]/etc/lighttpd/conf-enable/99-postfixadmin.conf[/cci] ファイルを作成すれば) 良さそうです。
        通常なら [cci_bash]sudo lilghttpd-enable-mod[/cci_bash] コマンドで有効にできるはずですが、ファイル名が異なっているためにこれが使えません。
        上のコメントのように [cci_bash]sudo ln -s /etc/postfixadmin/lighttpd.conf /etc/lighttpd/conf-enabled/99-postfixadmin.conf[/cci_bash] コマンドで [cci]/etc/lighttpd/conf-enabled/99-postfixadmin.conf[/cci] を作成して、[cci_bash]sudo service lighttpd restart[/cci_bash] コマンドを実行してください。

  2. さっそくご回答いただいた上に、再検証まで実施いただき、ありがとうございます。

    まず、ログの確認を行いました。
    なぜか、access.logは作成されていませんでした。
    少なくとも
    http://*****.local/index.lighttpd.html
    にはアクセスできていたので、このあたりに原因があるのかもしれません。

    error.logは以下の通りで、何か関係があるようなエントリがあるようには見えませんでした。
    (ntpの設定をしてないので時刻がずれてます)
    less error.log
    2011-11-23 22:29:37: (log.c.166) server started
    2011-11-24 03:38:33: (server.c.1396) [note] graceful shutdown started
    2011-11-24 03:38:33: (log.c.166) server started
    2011-11-24 03:38:33: (server.c.1512) server stopped by UID = 0 PID = 30980
    2011-11-24 04:17:03: (server.c.1396) [note] graceful shutdown started
    2011-11-24 04:17:03: (log.c.166) server started
    2011-11-24 04:17:03: (server.c.1512) server stopped by UID = 0 PID = 31099
    次にシンボリックリンクの確認ですが、ファイルは正常に作成されているように見えます。
    /etc/lighttpd/conf-enabled/99-postfixadmin.conf
    ls- l 99-postfixadmin.conf
    lrwxrwxrwx 1 root root 31 2011-11-24 03:26 99-postfixadmin.conf -> /etc/postfixadmin/lighttpd.conf
    less 99-postfixadmin.conf
    # Alias for Postfixadmin
    alias.url += (
            "/postfixadmin" => "/usr/share/postfixadmin",
    )

    続いて、2回目にいただいたコメントについて確認を行いました。
    > PostfixAdmin は最新の 2.3.4 を使ったところ、/etc/lighttpd/conf-enable/99-postfixadmin.conf ファイルが作成されないようです。
    申し遅れましたが、当方もPostfixAdmin 2.3.4で構築しております。
    /etc/lighttpd/conf-enable
    → /etc/lighttpd/conf-enabled
    の誤記であれば、上述の通り99-postfixadmin.confは作成されています。
    誤記でないのであれば、当方の環境では
    /etc/lighttpd/conf-enable
    というディレクトリは存在しておりません。
     
    また
    /etc/lighttpd/conf-available/postfixadmin
    というファイルは存在しませんでした。
    /etc/lighttpd/conf-available# ls -l
    total 80
    -rw-r–r– 1 root root 843 2010-08-19 08:24 05-auth.conf
    -rw-r–r– 1 root root  91 2010-06-01 05:20 10-accesslog.conf
    -rw-r–r– 1 root root 347 2010-08-19 08:24 10-cgi.conf
    -rw-r–r– 1 root root  36 2010-11-08 08:43 10-evasive.conf
    -rw-r–r– 1 root root 128 2010-06-01 05:20 10-evhost.conf
    -rw-r–r– 1 root root 104 2010-08-19 08:24 10-expire.conf
    -rw-r–r– 1 root root 181 2010-08-19 08:24 10-fastcgi.conf
    -rw-r–r– 1 root root  42 2010-11-08 08:43 10-flv-streaming.conf
    -rw-r–r– 1 root root  82 2010-06-01 05:20 10-no-www.conf
    -rw-r–r– 1 root root 853 2010-08-19 08:24 10-proxy.conf
    -rw-r–r– 1 root root 257 2010-08-19 08:24 10-rrdtool.conf
    -rw-r–r– 1 root root 402 2010-08-19 08:24 10-simple-vhost.conf
    -rw-r–r– 1 root root 103 2010-08-19 08:24 10-ssi.conf
    -rw-r–r– 1 root root 144 2010-08-19 08:24 10-ssl.conf
    -rw-r–r– 1 root root 464 2010-08-19 08:24 10-status.conf
    -rw-r–r– 1 root root 454 2010-08-19 08:24 10-userdir.conf
    -rw-r–r– 1 root root  38 2010-11-08 08:43 10-usertrack.conf
    -rw-r–r– 1 root root 539 2010-08-19 08:24 15-fastcgi-php.conf
    -rw-r–r– 1 root root 508 2010-11-08 08:43 90-debian-doc.conf
    -rw-r–r– 1 root root 843 2007-02-20 07:17 README

    手順はもれなく実施したはずですが、もしかすると何かタイプミス等あったのかもしれません。
    今後は手順を追えるように、TeraTermで常にログを保存する運用に切り替えることにします。
    とりあえず、access.logが出力されない原因を調査してみたいと思います。
    以上、よろしくお願いします。

  3. 何度も長文のコメントを付けてしまい、すみません。
    /etc/lighttpd/lighttpd.conf
    を確認すると
       "mod_fastcgi",
       "mod_cgi",
    が有効になっていないように見えますが、これでよいのでしょうか。
    less /etc/lighttpd/lighttpd.conf
    server.modules = (
            "mod_access",
            "mod_alias",
            "mod_compress",
            "mod_redirect",
    #       "mod_rewrite",
    )
    server.document-root        = "/var/www"
    server.upload-dirs          = ( "/var/cache/lighttpd/uploads" )
    server.errorlog             = "/var/log/lighttpd/error.log"
    server.pid-file             = "/var/run/lighttpd.pid"
    server.username             = "www-data"
    server.groupname            = "www-data"
    index-file.names            = ( "index.php", "index.html",
                                    "index.htm", "default.htm",
                                   " index.lighttpd.html" )
    url.access-deny             = ( "~", ".inc" )
    static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
    ## Use ipv6 if available
    #include_shell "/usr/share/lighttpd/use-ipv6.pl"
    dir-listing.encoding        = "utf-8"
    server.dir-listing          = "enable"
    compress.cache-dir          = "/var/cache/lighttpd/compress/"
    compress.filetype           = ( "application/x-javascript", "text/css", "text/html", "text/plain" )
    include_shell "/usr/share/lighttpd/create-mime.assign.pl"
    include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
    /etc/lighttpd/lighttpd.conf (END)
     
    ちなみにcgiを有効化するコマンドの実行結果は以下の通り。
    すでに有効。となっています。
    sudo lighttpd-enable-mod fastcgi
    Available modules: auth accesslog cgi evasive evhost expire fastcgi flv-streaming no-www proxy rrdtool simple-vhost ssi ssl status userdir usertrack fastcgi-php debian-doc
    Already enabled modules: fastcgi postfixadmin
    Enabling fastcgi: already enabled
    Run /etc/init.d/lighttpd force-reload to enable changes
    以上、よろしくお願いします。

    1. 返答が大変遅くなりました。

      再検証せずに回答しますが、ざっと確認したところ lighttpd で fastcgi だけが有効になっていました。
      具体的には /etc/lighttpd/conf-enabled には 10-fastcgi.conf と 99-postfixadmin.conf の二つのファイルだけが存在しています。

      ご迷惑をおかけしていますように、自身でもこの記事の記載に色々と漏れがあるような気がして仕方ありません。
      いつまでという保証はできませんが、後日 再検証して記事を書き直そうと思います。

コメントを残す