サーバーの最近の記事

NuOnceをSun Cobalt, Class Cat Cute, BlueQuartz (2003年)からの移行用へと新調した。
旧サーバから新サーバへCGIを移行したが、一部上手く動かないものがある。
それは$ENV{'REMOTE_USER'}を拾ってるスクリプトである。

#!/usr/bin/perl

use Data::Dumper;

print "Content-Type: text/plain\n\n";
print Dumper \%ENV;

上のスクリプトを用意して

% w3m 'http://ユーザ:パス@ホスト/dump_env.cgi?aaa=aab' | grep \'REDIRECT | sort
'REDIRECT_QUERY_STRING' => 'aaa=aab',
'REDIRECT_REMOTE_USER' => 'ユーザ',
'REDIRECT_SCRIPT_URI' => 'http://ホスト/dump_env.cgi',
'REDIRECT_SCRIPT_URL' => '/dump_env.cgi',
'REDIRECT_STATUS' => '200',
'REDIRECT_UNIQUE_ID' => 'VJaXrH3OfAYAACdRTN8AAAAZ',
'REDIRECT_URL' => '/dump_env.cgi',

ふみゅ。
元のREMOTE_USERハッシュキーは存在せず、接頭辞REDIRECTが付いてるのに置きかわってる。
Apache2.0.48ぐらいから、そういう動作のよう。

BlueQuartzのCGIはCGIWrapが担当していて、Apacheが渡すまえに置きかえている。
で、正しいかな。

.htaccessに

Options +ExecCGI
#AddHandler cgi-wrapper .cgi
AddHandler cgi-script .cgi

とすれば、「接頭辞REDIRECT置き換え」はされないが、今度はユーザ権限がApacheのまま。

$ENV{'REMOTE_USER'} 系のスクリプトを書き直さずに動かすにはどうしたらいいんだろうか・・・

キー:internal redirect, internal_redirect

先日インストしたNuOnceで見事にハマりました。

Sendmailで外から受信、SMTP経由で外へ送信は問題ないものの
CGIやPHPから送れないという症状。
具体的には

% cat | /usr/sbin/sendmail -t -n -oi メアド
test
detu
CTRL-D

/home/ユーザ/dead.letter... Saved message in /home/ユーザ/dead.letter

と死んでしまう。

CGIで

open(MAIL, "| /usr/sbin/sendmail -t -n -oi メアド");

などとしていると、上のエラーが

print "Content-Type: text/plain\n\n";

などより先に出力されてしまったりして、malformed headerエラー。
(CPANレス系のCGIですが・・・)

% tail /var/log/maillog

すると

Jan 4 23:17:12 www sendmail[1919]: l04EH9f8001919: to=メアド, ctladdr=ユーザ (501/501), delay=00:00:03, xdelay=00:00:00, mailer=relay, pri=30008, relay=[127.0.0.1] [127.0.0.1], dsn=5.6.0, stat=Data format error

"Data format error"じゃ、分からんじゃんけ!

で解決の切っ掛けは-vオプション。

% cat | /usr/sbin/sendmail -v -t -n -oi メアド
〜省略〜
553 5.3.0 <ユーザ@ホスト名>... No such user here
/home/ユーザ/dead.letter... Saved message in /home/ユーザ/dead.letter

どうやら、No such user hereとバウンスされている様。

% grep 'No such user here' /etc/mail/*

すると

/etc/mail/virtusertable:@ホスト名 error:nouser No such user here

とバウンス壁が用意されてる。
このルールはBQの「仮想サイト」に登録されると、作られる。

結論
BlueQuartz(NuOnce Installer)では
「システムのTCP/IPのホスト名とドメインネーム」で設定したFQDNは
「仮想ホスト」に登録しないこと!
(登録すると、その「仮想ホスト」に登録したユーザしかコマンドインターフェイスではメールが送れなくなります)

NuOnce提供のNuOnce Installer(CentOS + BQ)をインスト。
Sun Cobalt, Class Cat, Bluequartzからの引越し用。

インストールはCDブートで非常にスムーズ。
IPの設定などをするだけで、他はなにも設定する必要なし。

Bフレッツ接続のためrp-pppoeをyum install。
BQ回りもyum updateできるよう。

手っ取り早く立ち上げられるが、TCOが高そうな悪寒。

ソフト、OSのソフト回りの選定、どうするか。

テキストベースでの設定。(一番馴れてるFreeBSD 4-Stable)

  • 一度設定してしまえば、安定動作が期待できる。
  • サーバーソフトの配布元の想定する設定方法に自然と準じることになるので、トラブルも起りずらい。

BlueQuartz

  • フリーウエア。
  • 初心者の視座を意識した分かりやすいGUIで設定できる。
  • 最近機能拡張のコミットが活発。それに付随して手元の環境ではトラブルも起きた。
  • OSはCentOSが最適か。
  • SAMBAなどファイル共有の設定はできない。

Plesk

  • シェアウエア。
  • 使ったことはありません。

Webmin

  • フリーウエア。
  • 割と玄人の視座を意識した構成のGUIで設定できる。
  • RAIDの管理やSAMBAも設定できる。
  • プラグインが豊富。
  • 対応OSは多い。FreeBSD可。
  • 活動も活発。
  • 顧客用のアカウントを切って、顧客自身で設定させる機能(権限の限定)もあるが、GUIの構成がちょっと難か。

RAQdevil

  • フリーウエア。
  • 2005年9月に開発開始した。
  • Sun Cobalt RaQ550のソースを元にしている。
  • FreeBSDのパッケージシステム、Portsからインストール可能。
  • 4-Stableでは動かないっぽ。
  • ぱっとみはBlueQuartzである。