メール転送できない、と思ったら、パーミッションだった

2009/12/18 15:27:09
カテゴリ:Web > Server

会社のメール、ずーっとメール転送が出来てませんでした。
いっくらWebmin(Usermin)から設定しても、何しても、まったく駄目でした。

「手動で設定しよう」と、「.forward」を直書きしたりもしたんですが、駄目でした。

そんなこんなで2年。

たまたま、自分のユーザーディレクトリのパーミッションが、
何故か「757」になっていたので「?」と思いつつ、「755」に設定。

そしたら、メール転送も復活しました。

要するに同一サーバ上の他人が改変できるところに置いた
「.forward」は、生きない、ということですね。

他にも同様の設定ファイルもあるんでしょうねぇ。恐い恐い。

っていうか、新管理者!何やったんだ!?

[PHP]: You don't have permission to access /php/php.exe/index.php on this server. => Windowsで、PHP4のCGIモードが動かないのは、Apacheのバージョン

2008/08/27 20:05:19
カテゴリ:Web > Server

結論から言うと、Windows上にインストールした「Apache2.2 + PHP4.4.9」では、"CGIモード"はおろか"モジュールモード"でも動きませんでした。
で、Apacheを、「2.2」から「2.0」にバージョンダウンさせたら、"CGIモード" も "モジュールモード" も、難なく動作しました。

PHP5では「php5apache2_2.dll」があるんでモジュールモードのときは"httpd.conf"からこいつをロードしてあげればいいわけですが、PHP4.4.9には「php4apache2_2.dll」がありません。
「php4apache2_2.dll」をダウンロードできるサイトを紹介しているブログもいくつかありましたが、該当するファイルは削除されてしまったようでしたので、「Apache2.0」へのバージョンダウンで対応。

なんでこんなことで、今日一日はまってたか、と言うと・・・

普通、PHPでシステム組むときに共有サーバなんて使いませんよね。
でも今回はお客さんの都合(稟議がどうたら、とか、決済がどうたら、とか)で「どうしても現在借りてるホスティングサーバで」と押し切られ、 当然と言えば当然ですが共有サーバのPHPはCGIモードで、モード切り換えも不可。
しかもPHPは、「PHP4」とのこと。

んで、CGIモードで動くテスト環境を作ろう、として「はまった」わけです。

具体的には、

Apache 2.2.9 (apache_2.2.9-win32-x86-no_ssl-r2.msi)
PHP 4.4.9 (Windows Binaries)

で普通にXPにインストール。
で、Apacheまでは普通に動作確認して、PHPの設定をCGIモード用に、httpd.confで、

ScriptAlias /php/ "c:/php4/"
AddType application/x-httpd-php .php .html
Action application/x-httpd-php "/php/php.exe"

として、Apache再起動して、"http://localhost/index.php"にアクセスしたら、

Forbidden
    You don't have permission to 
        access /php/php.exe/index.php on this server.

になっちゃいました。

ちゃんと、「php.exe/index.php」で実行しようとしてる、ってことは"CGIモード"で動こうとはしてるってこと?
と思いながらも、「環境変数が~!」とか、「MIMEタイプが~!」とか、「ディレクトリは"/"か"¥"か~!」とか、さんざっぱら試行錯誤したあげく、 ググってるうちに前述の「php4apache2_2.dllじゃないと動かないっぽい」という情報にたどりつき、 「要するに、Windows上でApache2.2にPHP4.4.9を入れなければいいだけじゃん?」という結論に達したわけです。

あ~、めんどかった。
他にも共有サーバの落とし穴がありそうで怖いです。
頼むからうちで借りてるサーバに引越してくれ~!

[Server]:DNSを「外出し」したら、動作を確認するのに手間取りました

2008/07/04 18:44:30
カテゴリ:Web > Server

社内に、10年くらい前に会社が引き受けて設置したらしいWebサーバと、DNSサーバがあります。 まだ会社が小さく(今でも充分小さいけど)、幼かったころ(今でも全然成長してないけど)の遺産です。

一応UPSが付いてるんですが、ビルごと停電の時とか、当然止まってます。 サイトが小規模、ユーザーさんもライトユーザー、ということで今まで放置していたんですが、さすがによろしくないんじゃないかということで、外出しすることにしました。

サーバ管理者がメインで作業してるんですが、デザイナがほとんどの我が社では「プログラミングが出来る理系」ってだけで、この辺の作業のお鉢が回って来ます。

で、しゃーないのでやりました。 最近のホスティング会社の設定画面は、簡単ですねぇ、なんて設定したはいいんですが・・・

動作確認ができない・・・

新しいWebサーバのApacheに、移植したいドメインのバーチャルドメイン追加して、そのドメインのドキュメントルートにデータをアップして、DNSの設定を新しいWebサーバのIPアドレスに設定して、、、待ちました。
DNSの設定は、情報が浸透するまで時間がかかります」とは良く聞きますが、設定して、どんだけ待っても新サーバの情報を見に行ってくれない。
ひたすら古いWebサーバを見に行く。(稚拙だけど、新旧それぞれ、ちょっとだけ表示するテキストを変えたんですよ。)

なぜ?
と思いながらも家に帰って、家から見たら、ちゃんと変わってる!
なぜ?
会社のDNSサーバだけ仲間はずれにされてるの?
ん?
会社のDNSサーバ!?

そうか!
会社から見てるときは、ルータの外に出ないで、ローカルで直接社内DNSを見に行ってるわけか。 それで今回設定した社外のDNSの設定が、社内からは反映されないのか。
なるほろ。
でもこんなんじゃ面倒ですねぇ。

で、サーバが良く分からないなりに、調べたので、以下にメモ。

方法1.外部の関係ないところに設置した、ドメインチェックフォームで確認する

要は、外から見ればいいってことで、こういうフォームを作りました。 こんなの他所にいくらでも有りますけど、まぁ何事も自分でやってみる、ってことで。

で、今回のドメインも、ちゃんと移設先のサーバで稼働していることが確認できました。

方法2.nslookupで調べる

いろいろググッたら、「nslookup」とか「dig」とかのコマンドで調べる方法がありましたが、Windowsのプロンプトから使えるのは「nslookup」だけだったので、これでやってみました。
仮に、条件を以下とします。

調べたいドメイン:www.example.com (新IP:aaa.aaa.aaa.aaa/旧IP:bbb.bbb.bbb.bbb)
社外に新設のDNS:ns.example-new.net (IP:ccc.ccc.ccc.ccc)
ローカルのルータ:local.router (IP:192.168.0.1)

んで、コマンドプロンプトで、「nslookup」と打つと、

>nslookup
Default Server:  local.router
Address:  192.168.0.1

と帰ってきます。
ここで、調べたいドメイン「www.example.com」と打つと、

> www.example.com
Server:  local.router
Address:  192.168.0.1

Non-authoritative answer:
Name:    www.example.com
Address:  bbb.bbb.bbb.bbb

となりまして、やっぱり古いサーバのIPで見に行ってます。
でもここで、ネームサーバを設定してあげることができるので、「server」で新設のネームサーバを設定してあげます。

> server ns.example-new.net
Default Server:  ns.example-new.net
Address:  ccc.ccc.ccc.ccc

> www.example.com
Server:  ns.example-new.net
Address:  ccc.ccc.ccc.ccc

Name:    www.example.com
Address:  aaa.aaa.aaa.aaa

これで、「ns.example-new.net」では「www.example.com」に対して、新しいIPアドレス「aaa.aaa.aaa.aaa」が引き当てられているのが見れました。

でも、サーバ素人な自分的には、どうもこの内容よりも、「1.」の方が感覚的で、「OK!大丈夫!」な感じが得られました。