NT(IIS)でCmail.exeを使ってwwwmailを起動するとNTにタスクが残りメールが送信できません。
[上に]
[前に]
[次に]
松下
2000/01/19(水) 11:49:14
実現したいこと
質問コーナー(掲示板)を作成し、情報が更新されたら、回答担当者にメールを送信する。
メールの内容は問いません(「更新されたよ」という定形テキストでもかまいません)
質問内容
NT(IIS)でCmail.exeを使ってwwwmailを起動するとNTにタスクが残りメールが送信できません。
実際には、cmd.exeとCmail.exeのプロセスが発生しているようです。
なお、タスクマネージャーではプロセスを終了させることもできませんでした。
メッセージ「アクセスが拒否されました」
NTからコマンドプロンプトでCmail.exeを使ってメールの送信はできています。
下記は、動作したコマンド
Dir c:\ | e:\bin\cmail.exe 宛先アドレス -s 'TestMail'
環境
WindowsNT Server4.0(SP5)(部門用Webサーバ)
IISはWebとftpサーバとして運用しています。(CGIは動作しています)
../199911/99110371.htm
を見て、設定したのですが、メールが送信できません。
自己診断用のwwwmail.cgi?testではエラーが出ていません。
----------------設定ファイル-------------------
#!/usr/local/bin/perl
# ★ 送信先メールアドレス
$mailto = '実際はメールアドレスを記入してあります';
# ★ サブジェクト(件名)
$subject = 'TestMail';
# ★ メール送信コマンド
$sendmail = 'e:\bin\cmail.exe';
if (-x $sendmail) {
unless (open(OUT, "| $sendmail $mailto -s $subject > NUL")) {
---------------ここまで---------------------------
sendmailは、購入できません。
http://www.ant.co.jp/products/sm26_index.html
Mail Address申請中
2000/01/26(水) 11:54:17
便乗質問で申し訳有りませんが、私も同じ現象が出ています。
ただし、httpdというソフトを使うと正常に動作するのですが、
IIS上で動作させると、Mailが送れずタスクが残ってしまいます。
因みに、BLATJ及び、CMAIL共に使用してみましたが同じような現象
が出ています。
(BLATJはSubject無しで送っています。)
過去ログには目を通したのですがわかりません。
解決する手段が有りましたらご教授下さい。
よろしくお願いします。
無責任官庁
2000/01/26(水) 14:04:32
私のところではなんてことはなく動作しているので、
いまいち分からないですけど…
ちなみに環境は、NT4+IIS4+ActivePerl522+cmail.exe です。
CGIでは以下のようにしてます。
$mailprogram = "フルパスでcmail.exe指定";
$mailaddress = '送信先';
$mailsubj = "件名";
$kanrisyaddress = '送信者アドレス(管理者)';
$mailtext = "本文";
if(-e $mailprogram){
open (MAIL,"| $mailprogram $mailaddress -s $mailsubj -a $kanrisyaddress > NUL") ||
die "$mailprogramオープンエラー";
print MAIL "$mailtext\n";
close MAIL;
}
で、cmail.cfgの設定は、以下の二つのみ。
-l NUL
-S SMTPサーバのアドレス
ちょっと書き方が違うだけかな。(オリジナルだから当然か…)
if(-x ...) が使えないかもってのは、未確認。(思いつき)
あと、CGIのカレントディレクトリがすっ飛ぶんで、
CGIの頭にでも、chdir("e:/wwwroot/cgi-bin");
ってな感じでCGIディレクトリにカレントの移動をするのは必須。
(これはrequireより前に無いと意味ない)
ついでに、IISの設定で、「アプリケーションの拡張子マッピング」の所で、
“ファイルの存在を確認する”にチェックしておくと、ひょっとしたらエラーが
出てくれるかも…(アクセス権のチェックもしてくれるし)
予想では、cmailが黙り込むのは標準入力を待っている状態だと思うので、
必要な引数・データはすべて渡してあげて、その後cmailとの接続を切れば、
帰ってくると思います。
本文が無いと、「本文を入力してください」が内部で出てて、固まります。
hiro-kim
2000/01/26(水) 15:18:42
NT4(SP5) + IIS4 + ActivePerl517 + BlatJ 1.8.2 J1.1
でちょちょっと試してみました。動いています。
上記のとおり,if (-x $sendmail) が使えないのでコメントアウトしました。
chdir("e:/wwwroot/cgi-bin") はしていません。
BlatJの場合,version一覧 http://www.piedey.co.jp/softs/blat.html に
>1999年3月4日 1.7+J1.2 (x86)
>「標準入力からデータを読ませると落ちる」という症状の原因を調査した結果、
>MSVCRT.DLLを呼び出すと落ちるということが分かり、これを呼ばないように変更した。
とあります。一応,紹介しておきます。
松下
2000/01/26(水) 18:29:52
松下です。
お教えいただいた通り、
下記の項目を2行目以降に「追記」しました。
パールのバージョンは5.0.9.0です。
Cmailは2.07です。
wwwmail.cgiは3.00です。
chdir("c:/perl/bin");
$mailprogram = "e:/bin/cmail.exe";
$mailaddress = 'y-matsushita@sorryhide';
$mailsubj = "送信テスト";
$kanrisyaddress = 'y-matsushita@sorryhide1';
$mailtext = "テスト用本文";
とし、現在のメール送信のところをコメントアウトし、
if(-e $mailprogram){
open (MAIL,"| $mailprogram $mailaddress -s $mailsubj -a $kanrisyaddress > NUL") ||
die "$mailprogramオープンエラー";
print MAIL "$mailtext\n";
close MAIL;
}
をそのまま追記いたしました。
なお、「>NUL」を削除したところ、
エラーメールが返ってきました。
=======================
The original message was received at Wed, 26 Jan 2000 18:12:21 +0900
from [192.168.25.253] (may be forged)
----- The following addresses had permanent fatal errors -----
<:>
----- Transcript of session follows -----
sorryhide Lost input channel from [192.168.25.253] (may be forged)
<<< RCPT TO:<:>
550 <:>... User unknown
421 sorryhide Lost input channel from [192.168.25.253] (may be forged)
Reporting-MTA: dns; sorryhide
Received-From-MTA: DNS; [192.168.25.253]
Arrival-Date: Wed, 26 Jan 2000 18:12:21 +0900
Final-Recipient: RFC822; :@sorryhide
Action: failed
Status: 5.1.1
Last-Attempt-Date: Wed, 26 Jan 2000 18:12:21 +0900
=======メールの終わり=======================
よろしくお願いいたします。
松下%やっと解決
2000/02/01(火) 17:54:43
[[解決]]
教えていただいたソースの最後のところを
「>NUL」を 「-n」 に変更したところ自分宛てにメールが届きました。
変更したところは
open (MAIL,"| $mailprogram $mailaddress -s $mailsubj -a $kanrisyaddress -n") ||
です。
ちょっと変な感じで管理者には届きませんでしたが、
$mailaddressを変更すれば、何とかなりそうな気がしてきました。
どうもありがとうございました。
[上に]
[前に]
[次に]