2.素人からみたWinXP Pro サーバ構築のポイント

 2.1 WWWサーバ
WebサーバApacheの下に、Interscripter Perl、Phpを組み込んでいる。通常Perlルートはusr/local/binであるがPerlにPOSTファイルが在る事から、これの利用を考慮しusr/binとし、apacheもこのルートに組み込んだ。 ApacheとWebのルートは完全に隔離し、httpd.confを編集して、apacheルートへのアクセスを拒否し、このルートにCGIを格納している。 Phpはプログラムヤードにインストールしているが、これをApacheの下で動作させるためには、php.iniをC:\windows\にコピーし、php4ts.dllをC:\windows\system32\にコピーし、httpd.confに
LoadModule php4_module "G:/xxx/php/sapi/php4apache2.dll"
AddType application/x-httpd-php .php
を追記すればOKである。hpttpd.confとphp.iniの編集箇所等の要点は以下の通り。
(1)hpttpd.confの編集箇所
・上記2項目追記  ・DocumentRootの変更  ・UserDirのDirとアクセス項目変更  ・DirectoryIndexの追記  ・Aliase Dirとアクセス項目の追記  ・ServerRootのAliase Dirとアクセス項目の追記  ・Perl manualのAliase Dirとアクセス項目の追記  ・ScriptAlias Dirとアクセス項目の追記  ・DefaultLanguageをjaに変更  ・LanguagePriorityの順番を変更  ・AddDefaultCharsetをshift_jisに変更  ・AddHandler cgi-script .plを追記  ・SSIのtypeとoutfilterの設定
(2)php.iniの編集箇所
・include_path = ".;G:\ddd\php\includes"に変更  ・user_dir = "G:\ddd\php"を記入  ・extension_dir = "G:\ddd\php\extensions"を記入  ・session.save_path = G:/xxx/tmpに変更   
(3)パスワード認証の方法
ホームページサイトxxx(フォルダ名)をパスワードで認証保護する場合はサーバルート以外に、パス用フォルダを作り、次項によりパスファイルを作ってhttpd.confに下記のように追記する(又は.htaccessを修正する)。
Alias /AAA/ "G:/aaa/bbb/xxx/"
<Directory "G:/aaa/bbb/xxx">
AuthType Basic
AuthName "By Invitation Only"
AuthUserFile "G:/***/パス用フォルダ(zzz)/パスファイル(psfile)(識別子無)"
AuthGroupFile "G:/***/パス用フォルダ(zzz)/グループファイル(Gfile)(識別子無)"
require group GroupName
</Directory>
*AuthGroupFileを削除(Gfileは作らない)しrequire valid-userとしてもよい。
*allow(or deny) from 192.101.205(10.1,10.1.0.0/255.255.0.0,10.1.0.0/16),allow(or deny) from apache.com(foo.apache.comも該当),allow(or deny) from keとして許諾OK
*orderを使いdeny,allowを組合せアクセスを制限OK(order deny,allow  deny from all  allow from dev.example.com)。
*パス制限の場合Satisfyを使う(Require valid-user Allow from 192.168.1 Satisfy Any(or All))

(4)パスワードファイルの作成要領
コマンドプロントを立上げ、サーバルートにパスファイル専用フォルダzzzを用意し、コマンドプロンプトを立上げパスワードファイルを作成し、このファイルと同一フォルダ内にnote.padでグループファイルを作成する。要領は以下参照。
-------------------------コマンドプロント作成例----------------------------------------
C:\Documents and Settings\***>g:---g:をタイプ
G:\>cd g:\apacheルート\bin\---cd g:\apacheルート\bin\をタイプ
G:\apacheルート\bin>htpasswd---htpasswdをタイプ→使い方が表示される
-------zzzフォルダにユーザグループ名とパスワードを記入したファイル(psfile)を作る----
G:\apacheルート\bin>htpasswd -c g:\***\zzz\psfile userG---htpasswd以降をタイプ、作成するファイル名(psfile)と利用するグループ名(userG)をタイプ
Automatically using MD5 format.
New password: ***---userGのパスワードをタイプ(***と隠し文字表示)
Re-type new password: ***---再度入力
Adding password for user userG
----psfileのuserGグループに属する構成員の名前とパスワードを追記する。(2人登録例)---
G:\apacheルート\bin>htpasswd g:\***\zzz\psfile user1
Automatically using MD5 format.
New password: ****
Re-type new password: ****
Adding password for user user1
G:\apacheルート\bin>htpasswd g:\***\zzz\psfile user2
Automatically using MD5 format.
New password: ****
Re-type new password: ****
Adding password for user user2
注)スペース入りフォルダ名は実行不可につき、他のフォルダで作成し所定フォルダに移動する。
-----------------g:\***\zzz\にグループファイルGfileを作成---------------------
note Padを立上げ GroupName: userG user1 user2と利用者名を列記しGfile名で保存
以上でIEアドレスにhttp://***.***.***/AAA/と入力するとXXXホームページにアクセスしユーザuserG~3名とパスワード***でログインができる。
--------------------------------------------------------------------------------------
 2.2 メールサーバ
ArgoSoft MailServer:  このサーバはPOP3認証に設定したユーザ名とパスワードを使ってSMTP認証をし、メールを送信します。Option画面の全般タブのDNS ServerはISPのネームサーバIPアドレスを呼込ませますが、このIPアドレスは「ローカルエリア接続のプロパティ/インタネットプロトコル(TCP/IP)のプロパティの全般タブ」の優先DNSサーバ記入IP及び「TCP/IP詳細設定/DNSタブ」のDNSサーバアドレスにタイプしたIPと同一になります。「ローカルエリア接続」ドライブでプロパティの設定したものがメールサーバに反映されるのですが、このIPはルータの感知したIPとは違っています。DNSサーバIPが変化するようであればルータのIP(192.168.0.*)で構いません。ルータはWANからのアクセスをサーバPCにつなぎ、WANにでるものは自分の認知したWAN側DNSサーバに託してくれます。実際にテストしてみたが調子よく動きます。
このサーバはWEBへのアクセスポートが必要ですが、機能しないので81とし、メーラにメールサイズ5MBを必記しておかねばなりません。メールチェッカは大変重宝で、メールが届くと知らせてくれ助かります。
詳細は鷹の巣さんのサイトがよく纏まっているので参照下さい。

XMail:  スパムメール対策のため上記メールサーバーから2005.6.30にこのサーバーに換装しました。
このサーバーはCTRL,SMTP,POP3,Finger,SMAIL各サーバーを内臓し、SMTP after POP3認証、スパム保護、ジャンクメール拒否、マルチドメイン対応、フィルタ、他高度の機能をもっています。Linuxのメールシステムで有名なQmailをWindows用に移植したもので、かの有名なSendmail.exeも内臓していますので、メーラーとしても利用できます。
難点はフォルダを用意し圧縮ファイルを手作業で解凍しシステムを構築しなければならないことです。構築の手順概要は以下の通りとなります。詳細はここを参照して下さい。
  1. メインフォルダCorD/E:\usrを作成、その中にxmail-1.21.win32bin.zipを解凍。フォルダxmail-1.21をxmailにリネームする。MailrootのプロパティパネルでSystem と Administratorsにアクセス許可の設定をする。
  2. C:\usr\xmail\mailrootフォルダ内にフォルダbinを作成。その中にc:\usr\xmail\XMail.exeファイルをコピィする。これでインストールは完了するので、以後は次項以降の管理ツールによりシステムを構築する。但し、????フォルダ名は途中でスペースの入った名前(例えばProgram files)では管理ツールが読めないので使えない。
  3. 管理ツールxmailCFGはcgiで作られているため、このファイルはApacheとPerlのルート内に作成する。Perlのルートは通常usr\local\binで、且つHTTPサーバー(apache)の管理下になければならないので、apacheはusr\apacheとしperl.exeが見えるルートにして置く必要がある。perlをusr\binとした方が容易にapacheが認識するのでベターである。xmailCFGはWeb(apache)ルートで動作するので、apacheのルートに組み込む必要がある。ここではCorD/E:\usr\apache内にXMailフォルダを作成し、httpd.confにこのフォルダのアクセス設定をした。
  4. XMailフォルダ内にxmailcfgとsmailフォルダを作成し、夫々XMAilCFG216g.lzhとk4_080c.lzhを解凍し、両方とも、setupフォルダないのupdate.batをダブルクリックすればインストールが完了します。
  5. IEを立上げURL(http://xxxx.xxx/xmailcfg/)をアドレスに書込んで、xmailCFGを呼込み、目次の基本セットアップで初期設定と登録、環境設定をガイダンスを見ながら設定し、Xmailを起動します。
  6. その後目次の各項目を開き、ガイダンスに従ってドメイン、ユーザ登録、その他の設定をします。
  7. OutlookExpressで各ユーザのアカウントを通常の要領で設定をし、内部ユーザ同士の送受信動作を確認、OKであれば外部アドレスへの送受信動作及び外部アドレスからの送受信動作を確認、不具合であればXmail,SMTP,POPのIP許可などの設定に問題があるので、調査修正をします。必ず、localhost(127.0.0.1),LANないPC(192.168.1.**)は許可しておく必要があります。ネットマスクでミスすることがありますので注意下さい。
    それから運開後に分ったのですが、メーラーのサーバータブの受信メールサーバーのアカウント名はメールアドレス(xxx@ドメイン名又はxxx:ドメイン名)としなければなりません。これはXmailがMIMEであるためで、さもないとパスワード要求パネルが表示されます。
  8. 以上が終ったら、NETWORK ABUSE CLEARINGHOUSEさんで不正中継テストを実施し、合格すれば晴れて開通OKです。
  9. 当PCはIISとXmail二つのメールシステムが独立して動いており、夫々sendmail.dllとsendmail.exeが動いている。このため、サーバーサイドのOutlook Expressから送受信すると、ループバックしてxmailに接続し受信又は送信される。POP after SMTP認証のため必ずPOP動作が行われる。POP接続はWAN側からLAN内へのアクセスとなるが、xmailから見るとルータがサーバーのように解釈されるので、ルータのIPアドレス(192.168.1.1)のPOPアクセス許可を設定しないとPOPエラー(-ERR Server does not like Your IP 0x800ccc90)となります。その他のサーバーのルータIP許可設定は不要です。
  10. 当サイトのWANアドレスは非固定IPとなっていますので、ネームサービスをインタネットのレジストラに委託しています。このようなダイナミックDNSサービスの場合はメールIPは変更の都度、レジストラの登録を手動変更することになります。この変更の二重てまを避けるためserver.tabのSmartDNSHostとDynDnsSetupをノートパッドでコメントアウト(先頭に#を挿入)します。XmailCFGの[環境設定/DNSルートの設定]のデフォルトはICANNの元締めに直接問合せる設定になっています。このようなネットワーク幹線接続は利用者への迷惑と混乱の元となりますので慎まなければなりません。又誤動作やメールが行方不明(2〜3日徘徊)になりますので当事者(ISP、NSサーバ(dynDNSレジストラ指定NSサーバ)、localhost)の直結ルートに変更します。
    localhost⇒ISPのDNSサーバIP⇒NS1サーバIP⇒NS2サーバIP⇒NS3サーバIPに変更し、Xmailを再起動します。
    これでXmailが軽快に機能するようになり、且つ、dynDNSのMX変更はレジストラサイトだけでOKとなります。
  11. 名前解決は、WAN側は、dynDNSサーバがWAN側になっていますのでそこでなされ、LAN側からの問い合わせは、信号がWANに向けて送られるためルータが自動的にポートを割り当ててなされます。このため、ポート53は開ける必要はありません。DNSサーバを自分のマシンに搭載した場合は必要となります。
  12. 管理ツールXMailCFGは4フレームで1頁を構成し、euc-jp、shift_jis、iso-2022-jp3種類のcharsetを混在して使用しており、又、IEにないmeta文chashe-controlを使っている。通常、サーバーはcharsetは母国語標準shift_jisにデフォルト設定している。このHTMLはecu-jp主文に他のものが混在しているため、サーバは混乱しデフォルトで描画した結果、全文文字化け(ecu-jp文をshift_jisで表示)します。同一のcharsetで作られていないのが原因です。ほとほと困り、shift_jisに変換して使っています。作者のホームページからダウンロードされ、トラブリに会われた場合はここ(xmail1.22,xmailCFG2.19d,k4082d以降は不要)において置きますのでご利用下さい。尚、本CFGを初期設定(全データやり直す)する場合は、config.local.cgiを削除して基本設定から初めて下さい。一部変更はこのデータを修正すればOKです。
  13. 2005.11.29情報、バージョンアップについて
    xmail1.22,xmailCFG2.19d,k4082dから文字化けのバグは解消され大変使いやすくなりました。xmailCFGとk4の設定データは夫々のcgiフォルダ内にconfig.local.cgiとして自動生成され格納されています。ダウンロードソースファイルには入っていませんので、上書きし、setup.batをクリックするだけでVUPが完了します。その後Perl5.8を使っている場合はK4082_perl58を上書きします。
    Xmaiについては、Xmaiフォルダ直下のexe,txt,html,cmdなどファイル一式は上書きするだけでよいのですが、XmailRootフォルダ内のtabファイルはソフトの設定データのため、ダウンロードと照合し新しく追加されたものだけにとどめる必要があります。特にserver.tab(xmaiCFGで書き込まれている)はこれでXmailが動いているので重要です。
    tabファイル、フォルダはソースと照合しソースに新しく追加されたものをインストールするよう注意が必要です。通常はXmail直下のファイルだけを上書き保存し、動作試験で様子を見たほうがベターです。tabファイルはシステムが異常動作しない限り変えないようにしましょう。
  14. 外部メールアドレスから自動受信する場合は、SMTPクライアント認証とメールボックスの同期(自動受信)を設定すればOKとなります。メールボックス同期だけでは、ISP(yahoo)のメニュには、POP before SMTPとSMTP-AUTHしかなく、POP認証単独では受信できません。尚、ISPのプラウザでメール転送を設定するとメーラーを使った送受信が不可能になりますので注意下さい。