< 質 問 >
XMailCFG,K4でハマった点

XmailCFGとK4を利用させてもらおうとしています。
便利なツールを提供して頂いて大変ありがとうございます。

ISAPI等使っているのでWin2k+IIS5なのですが(ActivePerl,XMailCFGは6/19最新版)、様々な場所でハマっています。
作者の方の手を煩わせるべきではないので解決は自力でと思いますが、事後報告はしたいと思います。

1.ctrlclntで障害発生
ctrlclnt.exeを実行したがエラーを返した場合、web画面上では成功した場合と区別がつかず、なぜうまくいかないのか理解できませんでした。
実行文をweb上に出し、手で実行してみてエラーを返している事が判明。
ctrlclntを実行する場合
system("$ctrlclnt xxx");
よりも
print "Content-type: text/html\n\n";
...
open(CLNT,"$ctrlclnt xxx |");
$OutputInfo = <CLNT>;
close(CLNT);
print "$OutputInfo<br>"
といった感じで、簡易で構いませんからctrlclntの実行結果をユーザーに伝えていただけると参考になります。
もちろん組み込むのも手間ですので、頭の片隅にでもとどめておいていただければ。
ちなみに、ctrlclntが失敗していたのはctrlaccounts.tabのパスワードフィールドが理由はわかりませんが空白になってしまっていた為でした。(手作業で復元)

2.ファイルが書けない
「ユーザーの管理」でuseradminhtml1.cgiが useradmin1.htmlを作成してくれません。print FILE<<"EOF";のFILEを取ると画面に出力するので、cgi実行エラーではないようです。
IIS5なので、カレントディレクトリの違いで書き出す場所を間違えているのかと思いましたが、ディスク中探しても出力されていません。
open (FILE,">$p2/$target");で失敗しているのではないかと思い、openの戻り値をチェックしなければ、と考えているところです(今手元にないのですが)。
他にもopen等ファイル系関数で戻り値をチェックしていないところが多いのですが、ユーザーとして一番時間と手間がかかるのは失敗のチェックですので、贅沢ですがエラーチェックがもうちょっと入っているとありがたいです。個人的には、使わせてもらっているのだから不明な動作不具合があったらそれくらい毎回自分でやれ!とは思いますが。

3.Linux
Linux対応予定は無いですよね。自分でもWindows版使ってくせに何言ってるのか>おれ

metys (06.20/01)


【 cop (06.20/01) 】

metys さん
レポートとアドバイスありがとうございます。
ハマってしまいましたか。(笑)
申し訳ないことですが、これからもハマるかもしれません。

1. 戻り値を正確に知らせるべきであるという点については
  徐々にそうしたいと思っています。
  手探りの状態で突貫工事のように XMailCFG を作ったので
  手抜きのところや不適切な内容が多々あると思います。

2. ctrlaccounts.tab のパスワードの問題でトラブルになると
  いうのはよく聞きます。これについてもトラブル内容を
  ユーザに知らせる方法を考えてみます。

3. Linux 対応版については頭にはありますが、いつに
  なるかは‥‥。一日がせめて 30 時間あれば‥‥。
  sendmail よりも明らかに XMail Server の方が
  すぐれていると思っています。

4. useradmin1.html が生成されない件については、
  Professional/Server + IIS 5.0 で再現できないので
  今のところなんとも言えません。
  とりあえず、
  
<html><head>
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-control" content="no-cache">
<meta http-eqiv="expires" content="-1"></head>
<frameset cols="170,*" border=0 frameborder=0 framespacing=0>
<frame src="cgi/useradmin0.cgi?_+_+0" name="f1" marginheight=0 marginwidth=2 scrolling="auto">
<frame src="cgi/useradd0.cgi" name="f2" marginheight=4 marginwidth=4 scrolling="auto">
</frameset></html>

  という useradmin1.html を XMailCFG のルートに置けば
  急場をしのげると思います。

そのほか、

●IIS では XMailCFG は仮想ディレクトリのルートに
インストールする必要がある。
●PerlIS.dll では XMailCFG は使えない。

というところでしょうか。

--
metys さん、これからもご指導ください。



【 senshu (06.20/01) 】

copさん、いつもどうもありがとうございます。

>metys さん、これからもご指導ください。

頭が下がります。私はいつも要求を出す側であり、コードを寄付できないでいることが歯がゆいです。

とりあえず、XMail server の改善に協力をしたいと思います。



【 metys (06.21/01) 】

使わせて頂いているのはこちらですのに、丁寧なレスポンスまで頂いて恐縮です。
ファイル生成の件は、open()を open()||die "message";にしたところやはりopen失敗でした。
確認したところ、なぜかxmailcfgのディレクトリがEveryoneの書き込み属性が抜けていました。
自分ではアクセス権限を変更した覚えは一切無いのですが、気づかないうちにwwwrootの下に一度XMailCFGのzipを展開し、それをInetPub下に移動したためだろうと思います。(wwwrootはEveryoneが書き込み不可なため、フォルダ移動後もその属性が継承された)
お騒がせして大変申し訳ないです。



【 metys (06.21/01) 】

ユーザー管理画面でアカウント追加を実行したところ、以下のエラーが表示されました。
----------------------------------
CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:

Undefined subroutine &main::html called at C:\Inetpub\xmailcfg\cgi\useradd1.cgi line 30.
----------------------------------
関数 html を呼んでいるのにその関数が存在しないと言われました。
エラー発生時に html を呼ぶのですが、requireしているファイルを含めてその関数定義が存在しないようです。

調べたところ、関数 html を呼んでいるのに関数定義が存在しないファイルは、上記を含めて4個ありました。
admin1.cgi
smtpauth1.cgi
useradd1.cgi
useradmin2.cgi
一応ご報告まで。私の方の環境設定のミスでしたら大変申し訳ありません。



【 metys (06.21/01) 】

実は私はperlには無知で作ったことも無く、エラーの度に適当に検索エンジン等で拾って調べているだけだったりします。
その為に的外れなことを言ってるようでしたら、大変失礼しました。



【 cop (06.21/01) 】

metys さん

不具合情報ありがとうございます。
&html が存在しない件については次の版で修正します。v1.32 以降の改造で &error とするべきところを間違っていました。

--
今後とも遠慮なく指摘をしてください。
実際に助かっています。冷汗も出ますが。
私もぜんぜん大したことはありません。自分を進歩させたいと思ってやっています。



【 metys (06.22/01) 】

実際のところ、エラーの時は.cgiの何行目でエラーが発生したと表示してくれるほうが手っ取り早いこともありますので、特に急いで修正して頂く必要は無いと思います〜

で、useradd1.cgiの30行目で本来発生していたエラーですが、
$k4dir\\cgi\\config.local.cgi
が存在しないというものでした。
この時の、くだんの&html関数で表示しようとしているメッセージは
『K4 関連情報を取得できません。「環境設定」-「XMailCFG 環境設定」-「K4 のインストールフォルダ」を確認してください。』
というものです。K4のインストールフォルダ自体は間違っていなくて、単にK4のセットアップ(configファイル作成)が済んでいないだけですので、エラーメッセージの前に「ファイル[xxx]が開けません。」とでも追加されたほうがよろしいかと思います。



【 senshu (06.22/01) 】

copさん、metysさん、活発な意見の交換、素晴らしいです。まるで、メーリングリストのようですね。

さて、XMailCFG も ver 1.32b が出たようですが、エラーチェックを強化したことで、以下の状況が発生してきました。

「TABファイルの表示」で以下のメッセージが表示されます。

The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:

syntax error at c:\usr\XMail\XMailCFG\cgi\view.cgi line 29, near "elsif"
Execution of c:\usr\XMail\XMailCFG\cgi\view.cgi aborted due to compilation errors.

また、管理者登録を行った後、ユーザー登録などのメニューを選ぶと、管理者の登録が済んでいない、との警告を受けます。

これは、ctrlaccounts.tab 内のパスワードのフィールドが空のためでした。手動で XMCrypt で作成したパスワードを入力すると正しく動作するようです。

報告まで。



【 senshu (06.22/01) 】

view.cfg がエラーを起こす件ですが、elsif の前にあった if()文が削除されたのが原因のようです。以前の版にあった行を追加して、とりあえず運用を続けます。



【 cop (06.22/01) 】

metys さん、senshu さん

1. K4 がインストールされていない場合の対策
2. view.cgi の不具合の修正

などのための差分を公開しました。

ctrlaccounts.tab ファイルのパスワードが空白になる件についてはよく分かりません。差分に更新方法を変更したもの(admin1.cgi)を入れましたので試してみてください。



【 senshu (06.22/01) 】

さっそく、差分を適用してみました。

その結果、

1. TAB の表示 ○
2. ctrlaccounts.tab の更新 ×

という結果です。 IIS 4.0 がおかしいのかも
しれません。この作業は、頻繁に行うものではないので、エディタによる方法を書いておけば、当面不自由はありません。



【 cop (06.22/01) 】

その後もう少し改善してみました。
v1.32c です。



【 senshu (06.22/01) 】

v1.32c では、上記の問題は起きません。

これで、安心して利用できますね。(^_^)/



【 SINDBAD (06.23/01) 】

よかったね〜
寝られて



【 metys (06.25/01) 】

最新版頂きました。
ctrlclntもこまめにエラーチェックもされているようで、こんなに早く対応していただけるとはどうもありがとうございます。安心して使えます。
今のところ順調です。


記事の先頭へ▲ 
SUPER LABORATORY