AD統合Webメールサーバ(Web)

ずいぶんと久しぶりになってしまいましたが、AD統合したWebメールサーバを作ろうというのが動き出したので、その実験というかを実行。

さてさて。本を参考にして必要なものを列挙するわけですが。
参考にした本はコレ。

ActiveDirectoryとLinuxによるシステム構築ガイト

ActiveDirectoryとLinuxによるシステム構築ガイト

ま、正直ちょっと古くなりつつありますが。あとRPMばっかりだし。
でも、「どういう考えで何が必要か」がわかるので、この本結構いい。


ともかく、

が必要との事。


順番にいれていこう。今日はWeb編。

Webサーバインストール


さてさて。WebサーバといえばApacheですが。
ここはApache2でいこうかと思います。

apt-get install apache2

さて。動作でも確認…っと。


「あなたの予想に反して、このページが見えているでしょうか?」


いつも思うのだが、このページの日本語を作った人間は本気で素晴らしいと思う。
というか、この「あなたの予想に反して」って聞いてニヤっとするかしないかで、その人のネットワーク度(というかサーバ度)が決まると思う。すでに合言葉レベル。


ともかく。
まぁ、動いたのでよしとしましょう。

SSL設定


Webメールサーバってのに、SSLも使わないのではセキュリティで突っ込まれること間違いなしなので、SSL化。
CAをOpenSSLで作る必要があるかなぁ、と思わせといて、Apache2ってコレが簡単にできるとしってちょっとびっくり。

まず、サーバ証明書の作成から。

apache2-ssl-certificate -days 365

このコマンドで実行されるわけですが、-daysオプションがないと、有効期限が10日の証明書になってしまうので注意。とりあえず、1年もので。

Country Name (2 letter code) [GB]:JP … 国コード
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:Tokyo
Organization Name (eg, company; recommended) []:Roads-to-Nodes
Organizational Unit Name (eg, section) []:3Min-Net … ここまでは所在地、会社名、組織なので任意
server name (eg. ssl.domain.tld; required!!!) []:debain3.rsn.local … 必須。そのサーバのFQDNで
Email Address admin@r2n.local

これで、/etc/apache2/sslapache.pemという公開鍵と秘密鍵が一緒になったサーバ証明書ができてるはず。


次に、SSLサイトを作る。Apache2ではこれをバーチャルホストで実現するわけです。
待ちうけポートが違うサイトって形で。
まず、設定ファイルのサンプルがあるので、それをコピー。

cp /usr/share/apache2/config/default-443 /etc/apache2/sites-available/ssl

でもってこれを編集。
このSSLバーチャルホストは、非SSLと同名のサイトになるわけです。

/etc/apache2/sites-availables/ssl

<IfModule mod_ssl.c>
	NameVirtualHost *:443 … 追加
	<VirtualHost *:443>
	    SSLEngine on
	    SSLCertificateFile    /etc/apache2/ssl/apache.pem … 先ほど作成した証明書に変更
	    SSLCertificateKeyFile /etc/apache2/ssl/apache.pem … 先ほど作成した証明書に変更
	    BrowserMatch "MSIE [1-4]" nokeepalive ssl-unclean-shutdown \
	                              downgrade-1.0 force-response-1.0  
	    BrowserMatch "MSIE [5-9]" ssl-unclean-shutdown
	    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
	
           ServerAdmin admin@r2n.local … アドミンのメールアドレス
           ServerName debian3.r2n.local … サーバのFQDN
	
           DocumentRoot /var/www … 非SSLサイトとおなじに変更
           <Directory />
               Options FollowSymLinks
               AllowOverride None
           </Directory>
           <Directory /var/www> … DocumentRootとおなじ
               Options FollowSymLinks MultiViews … Indexesがあるので削除しておく 
               AllowOverride None
               Order allow,deny
               allow from all
           </Directory>

           (ここにcgi-binの設定があるが、使用しないのですべてコメントアウト)
	
           ErrorLog /var/log/apache2/ssl-error.log … デフォルトではDocumentRootになってるので、
                                                      /var/logに変更
	
           LogLevel warn
	
	    CustomLog /var/log/apache2/ssl-access.log combined … デフォルトではDocumentRootに
                                                                   なってるので、/var/logに変更

	    ServerSignature On
	
	    Alias /icons/ "/usr/share/apache2/icons/"
	    Alias /manual/ "/usr/share/doc/apache2-doc/manual/"
	    <Directory "/usr/share/apache2/icons">
	        Options Indexes MultiViews
	        AllowOverride None
	        Order allow,deny
	        Allow from all
	    </Directory>
	</VirtualHost>
</IfModule>

変更すべきところだけ変更してあとはデフォルトで。


で、モジュールを有効化して。Apache再起動。

a2enmod ssl
/etc/init.d/apache2 force-reload

作ったSSLサイトを有効化。

a2nensite ssl … このsslは/etc/apache2/sites-availablesに作ったファイル名

待ちうけポートを設定。SSLは443がデフォルト。

/etc/apache2/ports.conf

Listen 80
Listen 443

Apache再起動。

/etc/init.d/apache2 restart

で、/var/wwwに適当なファイルを置いて、httpsで表示確認。


もちろん、トラストアンカのCAが発行した証明書を使ったSSLではないので、エラーがでるが。
まぁ、社内だからいいでしょう。

PHP設定


PHPをインストールする。Debian SargeのPHPの安定版はPHP4なので。5が欲しい人は探そう。

apt-get install php4 libapache2-mod-php4

ほっとくと、libapache-mod-php4しか入らないので、libapache2-mod-php4を指定してインストール。


動作確認。
/var/wwwに、test.phpでも置いて、動作を確認。

/var/www/test.php

<?php

phpinfo();

?>

PHPの情報が表示されればOK。


とりあえず、Webサーバまわりはこんなもんかな。