CentOS 5の最近のブログ記事

SSHサーバーは既にインストール済みになっています。
これを使用することで、サーバーをリモートで操作出来るようになります。

  * クライアントPCにはターミナルエミュレーターをインストールします。(Windows)

     TeraTerm/Putty/Poderosa などがあります。

今のところ、愛用はTeraTermです。

SSHサーバーを端末で確認してみましょう。

①GNOME端末 により

  # yum list | grep openssh と入力します。

    openssh-clients.i386 4.3p2-29.el5 installed
    openssh-server.i386 4.3p2-29.el5 installed
    openssh-askpass.i386 4.3p2-29.el5 installed
    openssh.i386 4.3p2-29.el5 installed

  と有ればOKです。

②SSHサービスを有効にする。

  システム → 管理
        → セキュリティレベルとファイアウォールの設定
        → ファイアウォールのオプション

     一覧の中から SSH にチェックを入れ → 適用 → OK

③SSHサービスにログインしてみます。

   GNOME端末 により

    # slogin localhost と入力します。

     → ログインパスワード (→ 英語で表示 → yes)

   Last login : ・・・ と表示されれば使用可能です。

④rootログインを不許可にします。

  サーバーを侵入者から守る設定を施します。(乗っ取りの防止)
  ログイン名にrootを残しておくと、
  パスワードを解読されただけで侵入されてしまいます。

   GNOME端末 により root(# su -) ログインし

    # vi /etc/ssh/sshd_config と入力します。

        (省略)

     #PermitRootLogin yes
         → PermitRootLogin no (root でのログインを禁止)

        (省略)

     PasswordAuthentication yes
         → PasswordAuthentication no (通常パスワードの禁止
                              →ここは、秘密鍵を作成してから設定します。
     #PermitEmptyPasswords no
         → PermitEmptyPasswords no (空パスワードの禁止)

    へ修正し保存。

⑤再起動

   システム → 管理 → サーバー設定 → サービス(rootパスワード)

     サービス一覧から sshd を選び 再起動。

 以上の作業により、root でのリモートログインが出来なくなります。
 これで、乗っ取りの脅威から、チョットだけ安心できます。
 更に秘密鍵を作成します。(別途公開)

インターネット公開の準備としてDynamic DNSに利用の申請をします。
このサービスを扱っている中から、ここでは no-ip.com をご紹介します。

登録は、公開するサーバーのWEBブラウザから行います。(アドレスを自動で登録するため)

ロゴマークもだいぶ以前の駐車禁止のような色合いと違って、
今では落ち着いた色合いとなり好感の持てるデザインのサイトになっています。

英語のサイトなので、「おっ!!」となりますが、登録内容も少ないので、使い易くなっています。
初期の登録も簡単ですので、オススメです。

①登録はno-ip.com に移り

  No-Ip FREEを選びます。(他に有料のサービスも扱っています)

   登録の時、メールアドレスが必要になります。
   登録すると、このメールアドレスに返信が帰ってきます。

  返信されたメールの中に登録確認のアドレスがありますので、
  登録時のユーザー名とパスワードとメールアドレスでログインします。

   ホスト名とドメインを決定します。

②登録が完了したら

   システム → 管理 → ネットワーク → DNS(N)  のホスト名を変更

     → ホスト(タブ) → 新規 → アドレス(127.0.0.1)とホスト名(ホスト名のみ) → OK
       → 新規 → アドレス(127.0.0.1)とホスト名(ホスト名+ドメイン名) → OK
         → 保存 → 終了

    * アドレス(127.0.0.1) : ループバックアドレス
      この行を追加することにより、外部からの呼び出しに応えるようになります。
      (別の表現をすると、「私はココに居るんだよー」と言っていることになります。)
      複数のドメインを持っている場合は、複数記述します。

    * 念のために /etc/hosts に登録されているか
      確認しておきましょう。(最初からエディタで書けばこんな手間は要りません。)
      ここがおかしくなるとサーバーが立ち上がりません。
      うまく書き込めていない場合は、直に書き込んでしまいましょう。

    * hosts ファイルを変更するときには、一番初めにある、
      127.0.0.1 localhost.localdomain の行は絶対に削除しないように。
    * ::1 はIPv6対応の事を指しています。
        (IPv6対応のサーバーにするときに必要なので、今回は削除してもOKです。)

③再起動

  # reboot

   登録を反映するためにサーバーを再起動します。

④Dynamic DNSに自動でIPアドレスを送信する

  ここでは、DiCE を使います。

  ダウンロードしたファイルを GNOME端末 により

   # su - (root管理者権限+パスワード)

   # cd /usr/local/

   # tar zxvf /tmp/diced01914.tar.gz

     * 例は tmp ディレクトリにダウンロードした場合です。

  として解凍します。

   # /usr/local/DiCE/diced を入力し起動します。

     * 文字化けが発生した場合は、GNOME端末の文字コードをEUC-JPにします。
     * DiCEを実行しても応答がない場合は
      『バッファオーバーフロー対策(Exec-Shield)』が有効になっています。

     -- 確認 --

      # cat /proc/sys/kernel/exec-shield
       2

      --- 数値の意味 ---

       0:常に無効
       1:マークされたバイナリを有効にし、以外は無効
       2:マークされたバイナリを無効にし、以外は有効
       3:常に有効

      有効( 2 または 3 )になっている場合は、一時的 1 にレベルを下げます。

       # echo 1 > /proc/sys/kernel/exec-shield  →  1 にします。
       # cat /proc/sys/kernel/exec-shield  →  確認します。
        1

       * DiCE の設定が終了したら、上記の操作により、また元に戻します。

      -----------------------------


   : と現れたら ? を入力 (:?)

     DiCEのヘルプが表示されます。

     ****** 起動オプション ******

     diced [-s|-d|-h|-e] [-b] [-l]

     -s 起動と同時に開始します
     -d 起動と同時にバックグラウンドで開始します
     -h コマンドオプションを表示します
     -b イベント実行時にビープ音を鳴らします
     -l ログを作成します
     -e 指定のイベントを実行して終了します

     ****** コマンド一覧 ******

     exit   DiCEを終了します
     start   DiCEを開始します
     startd  DiCEをバックグラウンドで開始します
     setup  DiCEの環境設定を行います
     list    登録済のイベント一覧を表示します
     add   イベントを追加します
     edit < 番号>  イベントを編集します
     del < 番号> イベントを削除します
     enable < 番号> イベントを有効にします
     disable < 番号> イベントを無効にします
     event < 番号> イベントの情報を表示します
     exec < 番号>  イベントを今すぐ実行します
     logcr    ログをクリアします

    ***************************************

   : と現れたら add を入力 (:add)

  暫く画面の指示に従い登録します。

   * ログインユーザ名 : no-ip の場合メールアドレスになります。

  イベントの登録保存が終わると、

   : と再度表示されますので setup を入力 (:setup)

  暫く画面の指示に従い登録します。
  設定完了すると、

   : と再度表示されますので ex 0 を入力 (:exec 0)し動作確認をします。
     もしエラーが出るようであれば edit コマンドで修正し再度確認をします。

   :list
   :ev 0  →  イベント番号が 0 の場合。

  確認が上手く行ったら、

   : exit で終了です。 (:exit)

⑤自動起動の登録

  ④の最後より更に続けて

   # /usr/local/DiCE/diced -d -l

   # echo "/usr/local/DiCE/diced -d -l" >> /etc/rc.local

  と入力し登録完了です。

Web公開するツールとして、WordPress を搭載する方法を紹介します。
搭載に必要な動作環境

 動作環境 : Apache + PHP (v4.3以降) + MySQL(v4.0.x以降)

①WordPressの導入

  1. データベース作成

    GNOME端末より

     # su -
      パスワード  管理者権限パスワード

     # mysql -u root -p

      Enter password:パスワード  →  MySQLへログイン

      mysql> create database wp;  →  wp データベース作成(環境により名前は変更)

      mysql> use wp;   → wp デーダースへ接続

      mysql> grant all privileges on wp.* to abc@localhost identified by 'パスワード';

  →  データベース wp に権限を設定(ユーザーabcに全て許可)

     * ユーザー名とパスワードはデータベースの接続情報に合わせます。
      (データベースとの同期を取らないと項4.で行うインストーラがエラーを発生します。)

      mysql> exit

  2. WordPress のダウンロード(クライアントpcで作業します。)
    
     ダウンロードは WordPress | 日本語 の WordPress x.x をダウンロードリンクより。
      (今日時点での最新バージョンは WordPress 2.7.1 でした。)

     ダウンロードしたファイルをクライアントpcの任意の場所に解凍します。

  3. WordPress のアップロード

     公開しているディレクトリにファイルを全てアップロードします。

       * アップロードには FileZilla を使用しました。


  4. インストーラ の開始

     http://サイト名ドメイン名/設置ディレクトリ名/wp-admin/install.php をブラウザで開きます。

    * アップロード先のディレクトリのパーミッションを書き込みのできる権限に変更します。

     後は画面の指示に従い設定します。

      登録の時にある、

       ・テーブル接頭辞はデフォルトの "wp_" 以外の文字列に変更します。

         * 一寸安心なセキュリティ対策の為。


------------- コンフィグファイルを直接編集する場合 ------------- 

  1. コンフィグファイル(wp-config-sample.php)の編集

     解凍したファイル(wordpress)の中にある

       wp-config-sample.php をテキストエディタ(問題なく使えるテキストエディタ参照)で開き、

      * Windows の「メモ帳」で編集するとエラーの原因になります。
            (「UTF-8 BOM あり」でしか保存できないため)

       データベースの接続情報とプレフィクスの変更

        ・データベース名
        ・ユーザー名
        ・パスワード
        ・認証用ユニークキー

        ・プレフィクスはデフォルトの "wp_" 以外の文字列に変更します。

         * 一寸安心なセキュリティ対策の為。

        を登録します。
        次に、

        wp-config-sample.php  →  wp-config.php  としてファイルの名前を変更して保存。

         * ここでの作業は項4.にある install.php を実行し設定した内容と同一になります。
         (認証用ユニークキーは都度生成の為、同一ではない)
         (自動的にデータベースの接続情報と認証用ユニークキーが書き込まれ、
             wp-config.php が生成されます。)
-------------- -------------- -------------- -------------- -------------- -------------- 


  2. 問題なく使えるテキストエディタの例

     -- Windows --

      ・EmEditor (シェアウェア版/フリーウェア版あり)
      ・GreenPad (フリーウェア)
      ・Peggy Pad (フリーウェア)
      ・TeraPad (フリーウェア)
      ・UnEditor(タブ型)、NoEditor(非タブ型) (フリーウェア)
      ・サクラエディタ (フリーウェア)
      ・秀丸エディタ (シェアウェア)
      ・MK-Editor (フリーウェア)

     -- Mac OS X --

      ・TextEdit(テキストエディット)
      ・Smultron (フリーウェア)
      ・Jedit (シェアウェア)
      ・SubEthaEdit (シェアウェア)
      ・mi (フリーウエア)

     -- Unix --

      ・Kate (Linux、KDE)

-------------- -------------- -------------- -------------- -------------- --------------


②初歩的セキュリティ対策の設定

  1.管理画面の「ユーザー」→「新規追加」で管理者権限をもつユーザーを新しく作成

  2.ログアウトして新しく作成したユーザーでログイン

  3.「ユーザー」→「投稿者とユーザー」

     → admin アカウント上にマウスをホバーさせる

      →「削除」リンクが表示されるのでそれをクリック


      * 上記の設定だけでは投稿者としてユーザー名が出てしまいますので、
        更に、テンプレートの変更が必要になります。

③公開方法

  デフォルトのインストールでは作成されたディレクトリで、
  トップページが公開されてしまいます。
  トップページを別のディレクトリに見せる公開方法については
  Wordpressのドキュメントにあります。


内臓時計を合わせても其のままでは日を追う毎に正確ではなくなるので、
NTPサーバーによりサーバーのシステム時刻を日本標準時間に自動的に合わせる様設定します。

GNOME端末より 

   # rpm -q ntp  →  パッケージがインストールされているかを確認
                   (通常CentOS5には標準で搭載されています。)

   ------ インストールされていない場合は続けて下記を実行します。 ------

   # yum install ntp

   -------------------------------------------------------------------------------------

   $ su -

   パスワード (rootユーザー管理権限パスワード)

   # vi /etc/ntp.conf  →  ntp設定ファイルを編集します。

            (省略)

     # Hosts on local network are less restricted.
     #restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

       →  アンコメントを解除

     restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

       * 内部からの時刻同期を許可します。

            (省略)

     # Use public servers from the pool.ntp.org project.
     # Please consider joining the pool (http://www.pool.ntp.org/join.html).
     server 0.centos.pool.ntp.org  →  コメントアウト(#を追加)します。
     server 1.centos.pool.ntp.org  →  コメントアウト(#を追加)します。
     server 2.centos.pool.ntp.org  →  コメントアウト(#を追加)します。

     server gpsntp.miz.nao.ac.jp  →  追加
     server ntp1.jst.mfeed.ad.jp  →  追加
     server ntp2.jst.mfeed.ad.jp  →  追加
     server ntp3.jst.mfeed.ad.jp  →  追加
     server ntp.nict.jp       →  追加

      * NTPサーバーは休止したりする場合もあるので
        登録にあたり都度確認します。
      * また、サーバー設置場所から近くのNTPサーバーを登録する事をお勧めします。

   # chkconfig ntpd on  →  NTPサーバーを自動起動する様に設定

   # chkconfig --list ntpd  →  設定の確認

   # service ntpd start  →  NTPサーバーを再起動

既にCUI型で稼動しているメールサーバに管理効率化のため、
Postfix Admin を搭載し構築し直します。
これによりバーチャルドメイン対応でのメール運用がGUI化され、
Webブウウザより楽に運用可能となります。

初めてメールサーバを稼動させる場合はCUI型のFedora10(メールサーバー)も参考に構築します。

Postfix Admin はおおまかですが下記のような事がWebブウウザから操作出来ます。

  ・ ドメインの追加、変更、削除
  ・ メールアカウントやパスワード、転送設定等の追加、変更、削除

また、現在稼動しているデフォルトでのPostfixはMySQLに対応していないので、
MySQLに対応するように再構築します
更に、通信の暗号化対策としてSSLを運用します。


再構築後の動作環境

 Postfix(今回MySQL対応に再構築) + Dovecot + MySQL
                   + Apache + PHP + SSL + Postfix Admin


①PostfixAdminが使用するデータベース作成 

    # mysql -u ユーザ名 -p パスワード(例: mysql -u root -p mysql )
                     →  MySQLへログイン

     mysql> create database postfix;
                     →  postfix データベース作成(環境により名前は変更)

     mysql> use postfix;   → postfix デーダースへ接続

     mysql> grant all privileges on postfix.* to abc@localhost identified by 'パスワード';
                     → ユーザabcに全ての権限を付与しパスワードを設定

     mysql> exit;

②PostfixAdmin用のバーチャルドメインユーザーと専用ディレクトリを作成

     * PostfixAdminでは、データベース化されたユーザーにメールを配送します。

    # groupadd -g 10000 vuser
    # useradd -g vuser -u 10000 vuser
    # mkdir /home/mailvirtual
    # chown vuser:vuser /home/mailvirtual
    # chmod 771 /home/mailvirtual


③postfixをMySQLに対応させる

      * postfixのデフォルトパッケージはMySQLに対応していません。

    # cd /usr/local/src/  →  で作業します。
    # wget http://ftp.riken.jp/Linux/centos/5.2/os/SRPMS/postfix-2.3.3-2.src.rpm
    # mkdir -p /usr/src/redhat/SOURCES  →  SOURCESは大文字で!!
    # rpm -ihv postfix-2.3.3-2.src.rpm

      * 「警告:mockbuild は存在しません -root を使用します」と出ますが、
         ユーザー名 mockbuild が存在しないというだけで影響無いので無視します。

    #cd /usr/src/redhat/SOURCES
    # wget http://vda.sourceforge.net/VDA/postfix-2.3.3-vda.patch.gz
    # gunzip postfix-2.3.3-vda.patch.gz

    # cd /usr/src/redhat/SPECS/
    # cp postfix.spec postfix.spec.df  →  コピーしておきます。
    # vi postfix.spec  →  MySQLを有効にする設定とパッチの追加設定を行います。

      %define MYSQL 0  →  %define MYSQL 1 に変更 
         (省略)
      Patch10: postfix-2.3.3-vda.patch  →  追加
         (省略)
      %patch10 -p1 -b .vda  →  追加

    # yum -y install rpm-build db4-devel zlib-devel openldap-devel cyrus-sasl-devel pcre-devel mysql-devel openssl-devel
                       →  Postfixをリビルドする準備をします。(必要なものだけ)

       * リビルドするには下記パッケージが必要となります。

           # yum list | grep ファイル名(名前の一部でも可)

         としてインストール対象の確認をします。
              (installedと出たものは既にインストールされています。)

             ・ gcc
             ・ rpm-build
             ・ pkgconfig
             ・ db4-devel
             ・ zlib-devel
             ・ openldap-devel
             ・ cyrus-sasl-devel
             ・ pcre-devel
             ・ mysql-devel
             ・ openssl-devel


    # rpmbuild -ba postfix.spec  →  パッチをあてPostfixをリビルドします。

      * 暫し、先達たちの開発者に感謝しながら待ちます。

    # rpm -e postfix-2.3.3-2.1.el5_2  →  既にあるpostfixをアンインストールします。

      * 先の構築によりインストールしたpostfix関連のファイルで編集したものは、
                   xxx.xxx.rpmsave として保存されます。(同一ディレクトリ)

    # rpm -Uhv /usr/src/redhat/RPMS/i386/postfix-2.3.3-2.i386.rpm
                    →  出来上がったMySQL対応のpostfixをインストールします。

      * rpm -Uhv --force /usr/src/redhat/RPMS/i386/postfix-2.3.3-2.i386.rpm
        とすれば同一バージョンの場合はアンインストールとインストールが続けて行われます。

    # yum list | grep postfix  →  バージョンが変わっていることを確認。

    # vi /etc/yum.conf  →  postfixを自動アップデートしないように設定します。
                             (ここを飛ばすと後で大変なことになります。)

      exclude=postfix*  →  最後の行に追加

    # chkconfig sendmail off  →  sendmail の自動起動を停止
    # chkconfig postfix on  →  postfix の自動起動を開始


④バーチャル対応Postfixの設定(main.cfの編集)---右端の数値はおおよその行番号

      * postfixをアンインストールしたので新規の作成になります。
      * セーブ版より全コピーし修正すると間違いが発生する可能性大なので、
        ここは新規に作成としましょう。部分的に旧と同じところは、
                              rpmsave版 よりコピーします。

    # cd /etc/pki/tls/certs/
    # make mail.pem →  環境にあわせます。
    # /etc/postfix/main.cf

      myhostname = mail.abc.xyz.com →  追加71
      mydomain = abc.xyz.com →  追加79
      myorigin = $mydomain →  修正(アンコメント削除;必ず追加します)95 
      myorigin = $myhostname →  修正(アンコメント削除)96
      inet_interfaces = all →  修正(アンコメント削除)114
      #inet_interfaces = localhost →  修正(アンコメント追加)115
      #mydestination = $myhostname, localhost.$mydomain, localhost
                                   →  修正(アンコメント追加)159
     mydestination =
        →  空を追加(仮想サイトに登録したアドレス宛以外は受けない様にします。)163

      mynetworks = 192.168.0.0/24, 127.0.0.0/8 →  追加263
       relay_domains = $mydestination →  修正(アンコメント削除)294
      home_mailbox = Maildir/ →  修正(アンコメント削除)418
      smtpd_banner = $myhostname ESMTP unknown →  追加570
      #sendmail_path = /usr/sbin/sendmail.postfix →  修正(アンコメント追加)643
      sendmail_path = /usr/sbin/sendmail →  追加(CGIの挙動合わせ)644


----------------- 追加 ------------------------

     local_transport = virtual
     virtual_transport = virtual
     virtual_mailbox_base = /home/mailvirtual →  環境にあわせます。
     virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
     virtual_alias_domains = $virtual_alias_maps
     virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
     virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
     virtual_minimum_uid = 10000 →  環境にあわせます。
     virtual_uid_maps = static:10000 →  環境にあわせます。
     virtual_gid_maps = static:10000 →  環境にあわせます。

     smtpd_sasl_auth_enable = yes
     smtpd_sasl_type = dovecot
     smtpd_sasl_path = private/auth
     smtpd_sasl_local_domain = $myhostname
     smtpd_client_restrictions = reject_rbl_client bl.spamcop.net
                                       →  環境にあわせます。
     smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
     smtpd_sasl_security_options = noanonymous
     broken_sasl_auth_clients = yes

     smtpd_use_tls = yes
     smtpd_tls_cert_file = /etc/pki/tls/certs/mail.pem →  環境にあわせます。
     smtpd_tls_key_file = /etc/pki/tls/certs/mail.pem →  環境にあわせます。
     smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache
     tls_daemon_random_source = dev:/dev/urandom

----------------------------------------------------


⑤PostfixにあわせMySQL認証用ファイルを作成

    # vi /etc/postfix/mysql_virtual_alias_maps.cf

     user = abc
     password = ********
     hosts = localhost
     dbname = postfix
     table = alias
     select_field = goto
     where_field = address


    # vi /etc/postfix/mysql_virtual_domains_maps.cf

     user = abc
     password = ********
     hosts = localhost
     dbname = postfix
     table = domains
     select_field = domains
     where_field = domains
     additional_conditions = and active = '1'


    # vi /etc/postfix/mysql_virtual_mailbox_maps.cf

     user = abc
     password = ********
     hosts = localhost
     dbname = postfix
     table = mailbox
     select_field = maildir
     where_field = username


⑥MySQL用設定ファイル作成

    # vi /etc/dovecot-mysql.conf

     driver = mysql
     default_pass_scheme = PLAIN
     connect = dbname=postfix user=abc host=/var/lib/mysql/mysql.sock password=********
        →  環境にあわせ user host password を設定します。

     password_query = SELECT password FROM mailbox WHERE username = '%u' AND active = '1'
     user_query = SELECT concat('/home/mailvirtual/', maildir) as home, 10000 as uid, 10000 as gid FROM mailbox WHERE username = '%u' AND active = '1'


⑦TLS セッションキャッシュマネージャの設定(master.cf の編集)

     * SSLの利用に必要です。

    # vi /etc/postfix/master.cf

      submission inet n - n - - smtpd  →  アンコメントを外します。
      smtps inet n - n - - smtpd  →  アンコメントを外します。
      -o smtpd_tls_wrappermode=yes  →  アンコメントを外します。
      -o smtpd_sasl_auth_enable=yes  →  アンコメントを外します。


⑧Dovecot の設定(dovecot.confの編集)

    # cd /etc/pki/tls/certs/
    # make mail.pem  →  鍵を作成します。
    # openssl x509 -in mail.pem -outform DER -out mail.der
                    →  クライアント向けインポート用サーバー証明書作成
    # cp /etc/dovecot.conf /etc/dovecot.conf.save
    # vi /etc/dovecot.conf

----------------- 修正内容--右端の数値はおおよその行番号--------------------------------

      protocols = imap imaps pop3 pop3s  →  変更(アンコメントを外す)20
      listen = [::]  →  変更(アンコメントを外す)39
      log_path = /var/log/dovecot.log  →  変更(アンコメントを外しパス追加)61
      ssl_disable = no  →  変更(アンコメントを外す。disable+no = yes。へんなの!!)85
      ssl_cert_file = /etc/pki/tls/certs/mail.pem  →  変更(追加。鍵ファイルを指定)93
      ssl_key_file = /etc/pki/tls/certs/mail.pem  →  変更(追加。鍵ファイルを指定)94
      verbose_ssl = yes  →  変更(アンコメントを外しno→yes;ログ解析用)119
      mail_location = maildir:/home/mailvirtual/%d/%u  →  変更(追加)213
      first_valid_uid = 10000  →  変更(アンコメントを外し数値は環境に合わせ変更)330
      first_valid_gid = 10000  →  変更(アンコメントを外し数値は環境に合わせ変更)338
      protocol pop3 {  →  変更しません。575
       pop3_uidl_format = %08Xu%08Xv  →  変更(アンコメントを外す)626
      } →  変更しません。652
      auth_verbose = yes  →  変更(アンコメントを外しno→yes;ログ解析用)740
      auth_debug = yes  →  変更(アンコメントを外しno→yes;ログ解析用)745
      auth_debug_passwords = yes  →  変更(アンコメントを外しno→yes;ログ解析用)750 
      auth default {  →  そのまま。762
       #mechanisms = plain  →  変更(アンコメントを付ける)766
       mechanisms = plain login digest-md5 cram-md5 apop  →  追加771
       passdb pam {  →  そのまま。805
       }  →  そのまま。838
       passdb sql {  →  変更(アンコメントを外す)879
       args = /etc/dovecot-mysql.conf  →  変更(アンコメントを外しパス追加)881
       }  →  変更(アンコメントを外す)882
       userdb passwd {  →  そのまま。906
       }  →  そのまま。913
       userdb sql {  →  変更(アンコメントを外す)940
       args = /etc/dovecot-mysql.conf  →  変更(アンコメントを外しパス追加)942
       }  →  変更(アンコメントを外す)943
       socket listen {  →  変更(アンコメントを外す)988
       client {  →  変更(アンコメントを外す)999
       path = /var/spool/postfix/private/auth  →  追加(authは自動的に生成される)999
       mode = 0660  →  変更(アンコメントを外す)1005
       user = postfix  →  追加1006
       group = postfix  →  追加1007
       }  →  変更(アンコメントを外す)1008
       }  →  変更(アンコメントを外す)1009
       }  →  そのまま。1010
--------------------------------------------------------------

⑨認証ライブラリ関連のインストール

    # yum -y install cyrus-sasl-md5 cyrus_sasl_sql

      *  cyrus-sasl-plain も必要ですが、インストール済みでした。


⑩postfixadmin のインストール

    # cd /var/www   →  環境により変更
    # wget http://nchc.dl.sourceforge.net/sourceforge/postfixadmin/postfixadmin-2.3beta.tar.gz   →  ダウンロード

     * postfixadmin の最新版を確認します。バージョンpostfixadmin-2.3betaが最新版でした。

    # tar zxvf postfixadmin-2.3beta.tar.gz   →  展開
    # mv postfixadmin-2.3beta/ /var/www/postfixadmin   →  ディレクトリ名変更

⑪コンフィグファイルの編集

    # vi /var/www/postfixadmin/config.inc.php
----------------------------------------------------
     //$CONF['configured'] = false;
       $CONF['configured'] = true;   →  変更

     //$CONF['default_language'] = 'en';
       $CONF['default_language'] = 'ja';   →  変更

     $CONF['database_type'] = 'mysql';   →  既に登録されています。(mysqlの場合)
     $CONF['database_host'] = 'localhost';   →  既に登録されています。
     $CONF['database_user'] = 'abc';   →  登録
     $CONF['database_password'] = '********';   →  登録
     $CONF['database_name'] = 'postfix';   →  登録
     $CONF['database_prefix'] = '';   →  空のまま

     //$CONF['encrypt'] = 'md5crypt';
     $CONF['encrypt'] = 'cleartext';   →  変更

     $CONF['page_size'] = '100';   →  変更

     //$CONF['domain_path'] = 'NO';
     $CONF['domain_path'] = 'YES';   →  変更

     // Default Domain Values
     // Specify your default values below. Quota in MB.
     $CONF['aliases'] = '100';   →  変更
     $CONF['mailboxes'] = '100';   →  変更
     $CONF['maxquota'] = '300';   →  変更

     // Quota
     // When you want to enforce quota for your mailbox users set this to 'YES'.
     $CONF['quota'] = 'NO';   →  YESより変更
     $CONF['backup'] = 'NO';   →  YESより変更
     $CONF['sendmail'] = 'NO';   →  YESより変更
     $CONF['fetchmail'] = 'NO';   →  YESより変更
     $CONF['footer_text'] = 'Postfix Admin Top';   →  変更
     $CONF['footer_link'] = 'http://www.ホスト名ドメイン名/postfixadmin/';   →  変更
     $CONF['emailcheck_resolve_domain']='NO';   →  YESより変更
----------------------------------------------------

⑫Apache用の設定ファイル作成

    # vi /etc/httpd/conf.d/postfixadmin.conf

--------------  追加内容  (注:<>は大文字になっています。)--------------------------

     Alias /postfixadmin "/var/www/postfixadmin"

     <Directory "/var/www/postfixadmin">
      Order allow,deny
      Allow from all
     </Directory>

     <IfModule mod_rewrite.c>
     RewriteEngine On
     RewriteLog "logs/rewrite_log"
     RewriteLogLevel 0
     RewriteCond %{SERVER_PORT} !^443$
     RewriteRule ^/postfixadmin/(.*)?$ https://%{HTTP_HOST}/postfixadmin/$1 [L,R]
     </IfModule>
------------------------------------------------------------------------------------------

    # service dovecot start   →  dovecot の再起動
    # service postfix start   →  postfix の再起動
    # service httpd restart   →  Apache の再起動

⑬ファイアウォールの設定

   サーバーとルーターのポートへ設定

    465 番  SMTP over SSL
    993 番  IMAP over SSL
    995 番  POP3 over SSL

   を開けます。

    まさかと思いますが、25番(SMTP)、110番(POP3)、443番(https)もお忘れなく。

     * /etc/services にサービス名とポート番号の関連リストがあります。


⑬postfixadminのセットアップと管理者情報の登録

 クライアントpcより

   http://www.ホスト名ドメイン名/postfixadmin/setup.php を入力

     Postfix Admin Setup Checker が動作し環境のチェックをします。

      他はOKだったのですが

       # Warning: Depends on: IMAP functions - NOT FOUND
       To install IMAP support, install php5-imap

      と表示された(Warning情報は環境により違ってきます)ので、

     # yum -y install php-imap  としてインストール

            →  php5-imap の 5.1.6-20.el5_2.1 がインストールされました。

   再度

   http://www.ホスト名ドメイン名/postfixadmin/setup.php を入力 

     Checking for dependencies:の項目全て OK となりました。

   次にサーバーより

     # service httpd restart

   次にクライアントPCに戻り

      Postfix Admin Setup Checkerの最後にある、

       Admin(管理者のメールアドレス:唯のidなので架空アドレスでもok)、
       Password(パスワード) 
                                を入力しAdd Admin(登録)します。

         * 次の画面で表示された中にある click here からログインします。

⑭不要ファイルの削除

    # rm -f /var/www/postfixadmin/setup.php
    # rm -f /var/www/postfixadmin/motd*  →  不必要な表示をするので削除。


⑮動作確認

 クライアントpcより

   http://サイト名ドメイン名/postfixadmin/ を入力しログイン

 
 
 
 
いやー今回はハマリどころが多くどっぷりと浸かってしまいました。
とりあえずは完成です。
今回の構築をすることによりメールクライアントの設定も少々変更になります。
特にユーザー名にはPostfixAdminの仕様により「@ホスト名ドメイン名」が追加となります。

サーバー機能の応用例として、通信販売サイトを構築してみます。
通信販売サイトには EC-Cube を搭載します。

現在はレンタルサーバー各社が格安で高機能の通販型ショッピングカートを提供しているところが多くあります。
通常の通信販売サイトでは、業務工数を考えた場合、
レンタルのショッピングカートを利用したほうが対費用効果的には有効ですが、
ここでは、サーバー + α を目指し構築方法を取得します。

動作環境は下記の構築が済んでいる事を前提とします。
また、バーチャルホストが稼動している事も前提として設置しています。

  動作環境 : Apache(httpd) + PHP (v4.1.0以降) + MySQL(v4.1.x以降) + SSL(HTTPS通信)

先に構築したFedora10(EC-Cube)では、公開ディレクトリをホスト名の下の階層に取りましたが、
ここでは、ホスト名のアドレスで直に表示する方法を構築します。

①EC-Cube の導入

  1. データベース作成

    GNOME端末より

     # su + 管理者権限パスワード

     # mysql -u root -p

      Enter password:パスワード  →  MySQLへログイン

      mysql> create database ECCube;  →  ECCube データベース作成(環境により名前は変更)

      mysql> grant all privileges on ECCube.* to abc@localhost identified by 'パスワード';

  →  データベース ECCube に権限を設定(ユーザーabcに全て許可)

          * ユーザー名とパスワードはデータベースの接続情報に合わせます。

      mysql> exit;

     # /etc/rc.d/init.d/mysqld restart  →  MySQL の再起動

  2. 公開ディレクトリ作成

    GNOME端末より

     # su + 管理者権限パスワード

     # mkdir /var/www/html/virtual/++++++++.com/

        →  shop ディレクトリ作成(環境に合わせ変更します)

  3. EC-Cube のダウンロードと設置

    GNOME端末より

     # su -     + 管理者権限パスワード

     # cd /var/www/html/virtual/++++++++.com/

     # wget http://downloads.ec-cube.net/src/eccube-2.3.3.tar.gz   →  ダウンロードします。
          * 今日現在の最新バージョンは Version 2.3.3 でした。
          * EC|CUBE のサイトで最新版を確認しましょう。

     # tar xvfpz eccube-2.3.3.tar.gz   →  必ずpオプションを付けて解凍します。

          * パーミッションを保持したまま解凍する事ができます。
            (パーミッションを保持しないで解凍するとインストールの時に大変な事になります。)

     # rm eccube-2.3.3.tar.gz   →  不要ファイル削除

     # cd eccube-2.3.3   →  ディレクトリの移動

     # mv html /var/www/html/virtual/++++++++.com/   →  htmlディレクトリを、++++++++.com配下に移動します。

     # mv .htaccess /var/www/html/virtual/++++++++.com/   →  .htaccessを、++++++++.com配下に移動します。
  
     # mv data /var/www/html/virtual/++++++++.com/   →  dataディレクトリを、++++++++.com配下に移動します。

     # cd
 
     # rm -r /var/www/html/virtual/++++++++.com/eccube-2.3.3   →  空になったディレクトリは不要となる為、削除します。

     # chown -R abc:abc /var/www/html/virtual/++++++++.com/  →  所有者と権限を abc に変更

     # mv /var/www/html/virtual/++++++++.com/html/*.* /var/www/html/virtual/++++++++.com/

      →  htmlディレクトリ配下にあるフォルダーとファイルを全て、++++++++.com配下に移動します。(この時に.htaccessも忘れずに移動します。)

     # rm -r /var/www/html/virtual/++++++++.com/html   →  空になったディレクトリは不要となる為、削除します。


②ファイルの編集

    GNOME端末より

     # vi /var/www/html/virtual/++++++++.com/define.php

       /** HTMLディレクトリからのDATAディレクトリの相対パス */

        define("HTML2DATA_DIR", "/../data/");

          →  define("HTML2DATA_DIR", "/data/"); へ変更

       /** DATA ディレクトリから HTML ディレクトリの相対パス */

        define("DATA_DIR2HTML", "/../html/");

          →  define("DATA_DIR2HTML", "../"); へ変更

    インストーラ実行の時に読みにいくパスを変更しておきます。


③インストーラの開始

     http://サイト名ドメイン名/install/  →  ブラウザで開きます。

      後は画面の指示に従い設定します。


④インストールファイルの削除

    GNOME端末より

     # su + 管理者権限パスワード

     # cd /var/www/html/virtual/++++++++.com/install
     # rm index.php

⑤確認

   インストール時に設定したログイン名+パスワードで確認します。

     管理画面 http://サイト名ドメイン名/admin/

   お店の完成です。(、、、、、まだこれからでした。。)

     サイト http://サイト名ドメイン名/

複数のアドレスをWeb発信するために、バーチャルホストを構築します。
バーチャルホストにはIP ベースとNAMEベースがありますが、
IP ベースでは、機器の数が増えてしまい、現実的に無理があるので、
ここでは、NAMEベースでのバーチャルホストを構築します。

   * SSL セキュアサーバではアクセス時、最初に SSL の認証シーケンスが走り、
     証明書の交換は先頭のバーチャルホストのデータを元に行われます。
     従って、名前ベースのバーチャルホストでは、
     SSL は一つのバーチャルホストしか扱えません。

   * 名前ベースのバーチャルホストを導入すると、元々あったメインホストというものがなくなります。
     その為、VirtualHost ディレクティブの先頭に定義されたバーチャルホストがメインホストになります。
     従って、元々あったメインホストの設定やメインにしたいホストのデータは、
     先頭のバーチャルホストとして再度定義する必要があります。

①Apache の設定

  1. バーチャルホスト設定

    GNOME端末より

     # su -
      パスワード   管理者権限パスワード

     # mkdir /var/www/html/virtual
     # mkdir /var/www/html/virtual/++++++++.com

        →  バーチャルホストのコンテンツを格納するためのディレクトリを作成

     # chown -R abc:abc /var/www/html/virtual  →  所有者と権限を abc に変更

     # vi /etc/httpd/conf/httpd.conf  →  バーチャルホストの定義を設定ファイルに追加

-------------- 追加内容(VirtualHostのexampleの下へ) ------------------

NameVirtualHost *:80  →  ポートを指定

<VirtualHost *:80>  →  メインホスト情報
ServerName ********.com
</VirtualHost>

<VirtualHost *:80>  →  追加ホスト情報
ServerName ++++++++.com
DocumentRoot /var/www/html/virtual/++++++++.com
ErrorLog /var/log/httpd/error_log_++++++++.com
SetEnvIf Request_URI "default.ida" no_log
SetEnvIf Request_URI "cmd.exe" no_log
SetEnvIf Request_URI "root.exe" no_log
SetEnvIf Request_URI "Admin.dll" no_log
SetEnvIf Request_URI "NULL.IDA" no_log
SetEnvIf Request_URI ".(gif)|(jpg)|(png)|(ico)|(css)$" no_log
SetEnvIf Remote_Addr 192.168. no_log
CustomLog /var/log/httpd/access_log_++++++++.com combined env=!no_log
ScriptAlias /cgi-bin/ "/var/www/html/virtual/++++++++.com/cgi-bin/"  →  バーチャルホストでも CGI 等が実行できる様に設定します
<Directory /var/www/html/virtual/++++++++.com/cgi-bin>
AllowOverride All
Options Includes ExecCGI FollowSymLinks
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

-----------------------------------------------------------------

②SSL の設定

    GNOME端末より

     # su -
      パスワード   管理者権限パスワード

     # vi /etc/httpd/conf.d/ssl.conf  →  SSL 設定ファイルの編集

        (省略)

       # Per-Server Logging:
       # The home of a custom SSL log file. Use this when you want a
       # compact non-error SSL logfile on a virtual host basis.
       CustomLog logs/ssl_request_log
              "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"

------------------------------ 追加内容 --------------------
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteLog "logs/rewrite_log"
RewriteLogLevel 0
RewriteCond %{HTTP_HOST} !********.com$  →  メインホスト名を指定
RewriteRule ^/(.*)?$ http://%{HTTP_HOST}/$1 [L,R]
</IfModule>
------------------------------------------------------------------

</VirtualHost>

③Apache の再起動

    GNOME端末より

     # su -
      パスワード   管理者権限パスワード

     # /etc/rc.d/init.d/httpd restart  →  設定を反映させます。

④確認

    クライアントのpc のhosts ファイルを編集し動作を確認します。

     127.0.0.1 localhost
     192.168.0.1 abc.com ++++++++.com  →  ++++++++.comを追加します。

    webブラウザを再起動してurlにアドレスを入れ動作を確認します。

      * test用のhtml/shtml/cgi/php を作成し確認します。
          cgiファイルはパーミッションの指定にも注意しましょう。

Web公開するツールとして、Movable Type の個人ライセンス(無償)を使用します。
また、下記の動作環境が必要ですが、今回は Apache + Perl + MySQL の環境で構築します。

 ウェブサーバー(Apache)+ Perl + DB(MySQL、PostgreSQL、SQLite、Berkeley DBなど)


Movable Typeの導入

  ① ダウンロード(設置先は環境により読み替えてください。)
    
   ダウンロードはSix Apart - Movable Type のライセンスと購入について
   の個人ライセンス(無償)より。
   (今日時点での最新バージョンは Movable Type 4.25 でした。)

   書庫マネージャにより、ダウンロードの保存先として、/var/www/html を指定し解凍します。

   解凍すると MT-4.25-ja としてディレクトリが作成されます。

   次に、GNOME端末で

    # su -
     パスワード  管理者権限パスワード

    # cd /var/www/html

    # mv MT-4.25-ja mt  としてディレクトリ名を変更します。
               ディレクトリ名は先々使える汎用的な名前をオススメします。
               (Movable Typeのバージョンアップがスムースに実施出来ます。)
    # chown -R apache:apache /var/www/html/  → 権限を変更

     他の権限名でクライアントより操作する場合は予め、
     MySQLにユーザー登録が必要になります。

    # chmod 777 /var/www/html
    # chmod 777 /var/www/html/mt

           →  初期のインストール環境を整えるためにパーミッションを変更します。

    # mkdir /var/www/html/mt/mt-static/support
    # mkdir /var/www/html/mt/mt-static/support/uploads
    # mkdir /var/www/html/mt/mt-static/support/userpics
    # chmod 777 /var/www/html/mt/mt-static/support    
    # chmod 777 /var/www/html/mt/mt-static/support/uploads
    # chmod 777 /var/www/html/mt/mt-static/support/userpics

           →  ユーザー画像を書き込み出来るディレクトリを作成します。(バグと思われます。)

     * パーミッションは環境に合わせ、変更しましょう。

  ② データベース作成

    # mysql -u ユーザ名 -p データベース名(例: mysql -u root -p mysql )

        →  MySQLへログイン

     mysql> create database mt;  →  mt データベース作成(環境により名前は変更)

     mysql> use mt;   → mt デーダースへ接続

     mysql> grant all privileges on mt.* to abc@localhost identified by 'パスワード';

    →  ユーザー名:abc/パスワード:password を設定します。
      (ユーザー名とパスワードは
        Movable Typeのアカウント作成の時に使用するのでメモします)

    mysql> exit

  ③ インストール

     1. 初期準備

        CentOS 5.3 には Image::Magick を使うのに必要な 
         ImageMagick-perl が、インストールされていません。
           (リポジトリにはあるのですが、、、本体がインストールされているので5.3のバグと思われます。)

         # yum install ImageMagick-perl    でインストールしておきます。 

     2. 本番インストール開始       

     WEBブラウザのアドレスに  http://サーバアドレス/mt/mt.cgi  と入力します。

       Movable Typeへようこそ  →  開始

        システムチェック  →  次へ

        データベース設定

          データベースの種類
          データベースサーバ
          データベース名
          ユーザー名
          パスワード           を設定し  →  接続テスト

        データベースの設定を完了しました。 次のステップへ進みます。  →  次へ

        メール設定  メール送信プログラム

           SMTPサーバー  or  Sendmail  を選択します。
                            (Sendmailはサーバーにインストール済みです。)

        構成ファイル

           Movable Type の設定を完了しました。
            設定内容を以下のファイルに書き込みました。
              /var/www/html/mt/mt-config.cgi          →  次へ

        アカウントの作成

           ユーザー名
           表示する名前
           電子メール
           パスワード           を設定し  →  インストール

         しばらくすると  →  インストールを完了しました。 が表示されます。


初めての構築には、Fedora10(メールサーバー)を参照願います。

CentOS5では受信メールサーバーの dovecot は既にインストールされています。


①Postfix のインストール(送信メールサーバー)

     1. # su -   + root管理者権限パスワード を入力

     2. # yum -y install postfix cyrus-sasl system-switch-mail-gnome を入力

         Complete!

②ファイアーウォールの設定

   システム → 管理 → セキュリティレベルとファイアーウォールの設定 → 信頼できるサービス

     一覧の中から メール(SMTP) にチェックを入れる

    → その他のポート → 追加(下記を追加します)

        ポート       110 tcp
                   110 udp
                   143 tcp
                   143 udp
                   993 tcp
                   993 udp
                   995 tcp
                   995 udp   を入力 → 適用 → OK

③これより以降の設定については

   Fedora10(メールサーバー)構築の

       ⑤Postfixの設定(main.cfの編集) 以降を参考に構築します。

Dynamic DNSには no-ip.com にお世話になります。
no-ip.com では 5つまでのアドレスが無料で登録でき大変に有効です。

ここでは、DUC(Dynamic Update Client) を利用する方法を記載します。

①DUCのダウンロードと設置

     DUC(Dynamic Update Client)を搭載します。

     # cd /usr/local →  移動
     # tar xvzf /tmp/noip-duc-linux.tar.gz →  展開
     # mv noip-2.1.9 noip →  ディレクトリ名の変更
     # yum -y install gcc →  コンパイル用パッケージのインストール
     # make && make install →  makeでコンパイルしインストール開始

       Please enter the login/email string for no-ip.com →  [メールアドレス入力]
       Please enter the password for user '(メールアドレス)' →  [パスワード入力]
       Do you wish to have them all updated?[N](y/N) →  y
       Do you wish to run something at successful update?[N] (y/N) →  N

       New configuration file '/tmp/no-ip2.conf' created.
       mv /tmp/no-ip2.conf /usr/local/etc/no-ip2.conf

     # /usr/local/bin/noip2 →  アドレスを即時発行するために、一時実行します。

     # ps aux | grep noip
       nobody 6519 0.0 0.1 1844 732 ? Ss 21:19 0:00 /usr/local/bin/noip2
         →  これを即止めます。
     # /usr/local/bin/noip2 -K 6519 →  実行を止めます。
       Process 6519 terminated.

②自動起動の設定

     # cp /usr/local/noip/redhat.noip.sh /etc/init.d/noip
           →  ファイル名を変え自動起動先へコピーします。
     # chmod +x /etc/init.d/noip →  実行権限を付与
     # /sbin/chkconfig noip on →  再起動の時に自動起動する様に設定
     # /etc/init.d/noip start →  自動起動を開始
     # /usr/local/bin/noip2 -U 30 →  30分毎に実行
     # /usr/local/bin/noip2 -S →  確認します。


      * 30分毎に実行という事で設定しましたが、これでいくと最大29分59秒+の
        不通が発生してしまいます。かといって、1分毎に更新しても不通になることに
         変わり無く、更にはDDNSさんに多大なるご迷惑。
         時限稼動のサーバー向きと思います。
         常時稼動のサーバーには DiCE がおススメです。