このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

guestMail.acgi(NE版)がうごきません

発言者:柾木 博行
( Date Monday, May 12, 1997 21:19:00 )


田中先生、皆さん今晩は。

さっそくですが、Tanaka's CGI Kit1.3にある(NE版)が動きません。
正確にいうと、CGI自体は動いているのですが、メールを指定したメールアドレスに
送ってくれません。

Tanaka's osaxは1.1を入れていますし、NetEvents 1.0b4もWebSTARと同じフォルダ
に入れて立ち上げています。カスタマイズの仕方が悪いのかと思って、CGI Kit1.3に
あるguestMail.acgiに、メールの設定だけして、付属のguestmsg.htmlファイルを
そのままWebSTARフォルダ内においてみましたが、やはり同じです。
ブラウザー側からメッセージをPOSTするととNetEventsが動いて、
ブラウザーには「メッセージをありがとうございます」とredirectしてくれますが
、指定した私のメールボックスにはいつまでたってもメールが届きません。
もちろん、メールアドレスのミスなどはありません。

TCP/IP Scripting Additon用のguestMail.acgiは、いくつかカスタマイズしたものを
動かしていますので、それと大きな違いはないと思ってためしているのですが、
どうしてもうまくいきません。最近、TCP/IP Scripting Additonがわるさしているのか、
ちょくちょくサーバーがダウンするので、これを機会にとNetEventsに切り替えようと
しております。どなたか、ご指導のほど、よろしくお願いします。

田中求之 さんからのコメント
( Monday, May 12, 1997 21:55:52 )

メールサーバーは何をお使いですか? また、CGI と同じマシン上でメールサーバーも
動いているのでしょうか?

あと、CGI のスクリプトの中の send_message ハンドラーを手動で呼び出して
メールを送るという実験を行ってみてくれますか? これでもうまくいかない
のであれば、スクリプト or NetEvents の問題であることが確定します
ので。


それと、NetEvents は最新版が 1.0b7 になってますので、取り換えたほうが
よいですよ(トラブルには関係ないとは思いますが)。

柾木 博行 さんからのコメント
( Tuesday, May 13, 1997 11:56:59 )

田中先生、さっそくのRES、ありがとうございます。
さて、メールサーバーですが、UNIXのメールサーバーを動かしています。
ただ、サーバーのソフトの種類は、担当者が今いないので確認できません。
ということで、CGIとメールサーバーは別のマシンで動いています。

>あと、CGI のスクリプトの中の send_message ハンドラーを手動で呼び出して
>メールを送るという実験を行ってみてくれますか?
手動で呼び出してメールを送るというのが、よくわかりません。具体的にはどう
いう手順になるのでしょうか?

それからNetEventsは、昨日ダウンロードしてきたばかりなので最新版と思って
いたのですが、1.0b7というのはどこにアップされているのでしょう?

何から何まで教えていただく形で申し訳ありませんが、よろしくお願いします。

田中求之 さんからのコメント
( Tuesday, May 13, 1997 12:45:07 )

>手動で呼び出してメールを送るというのが、よくわかりません。具体的にはどう
>いう手順になるのでしょうか?

メール送信テスト用のスクリプトを、今日の夜にでも登録しておきますね。

NetEvents は以下の URL のページから最新版が落とせます


→  NetEvents Info

田中求之 さんからのコメント
( Tuesday, May 13, 1997 22:21:32 )

いかに、NetEvents のテスト用のスクリプトを登録しておきました。

あなたのメールアドレスとホストのアドレスを指定してコンパイルし、走らせて
みてください。NetEvents を使って1行のメッセージをあなた向けに送るよう
になってます。

これがちゃんと動き、メールが受け取れるようであれば、NetEvents の処理には
問題がないということになります(これがうまくいかないとなると、私には原因は
わかりかねるのですが、さて?)


→  NetEvents テスト用スクリプト

柾木 博行 さんからのコメント
( Wednesday, May 14, 1997 12:23:54 )

田中先生、さっそくスクリプトを登録していただきありがとうございます。
テストしてみましたが、やはりだめです。もちろん、NetEventsは教えていただいた
場所から1.0b7をダウンして入れ換えてみたのですが……。
NetEvents自体は問題ないようですが(ちゃんと処理しているようなログメッセージ
を表示します)、スクリプトの結果の方がエラーをいっています。
エラーの内容は、

"ERORR Unable to send mail

501 HELO requires domain address
 "
というものです。

メールアドレスとホストのアドレスはちゃんと最初の2行に指定しているのですが
それいがいにも指定する必要があるのでしょうか?

まさか、TCP/IP Scripting Additonが入っているとバッティングするなんてことは
ないですよね?

それから、今回の問題とは直接は関係ないかもしれませんが、NetEvents1.0b7の
BG版を最初ためしてみたのですが、立ち上げるとフリーズしてしまいました。
これは田中先生のところでは起きてませんでしょうか?

よしもと さんからのコメント
( Wednesday, May 14, 1997 13:21:58 )

これはエラーメッセージにあるとおり、スクリプトの中で
"HELO"しか送っていなから出るエラーですね。

この部分を

HELO <SP> <domain> <CRLF>

のような形に変更すれば良いと思います。
この辺りの詳しい話はRFC 821 「Simple Mail Transfer Protocol」
に載っていますので、興味がありましたら一度目を通されてはいかが
でしょうか。  

柾木 博行 さんからのコメント
( Thursday, May 15, 1997 13:24:53 )

よしもとさん、こんにちわ。 コメントありがとうございました。RFCを探すのに時間が
かかってしまい、ご返事が送れて失礼しました。

田中先生から送っていただいた NetEvents テスト用スクリプトでは、Connection Opening
の部分は以下のような記述になっていました。

  --- SMTP セッション
  tell application "NetEvents 1.0b7"
    
    try
      set tgAddr to NameToAddr MailHost
      
      set sss to OpenStream tgAddr port 25
      try
        readresponse(sss) of me
        WriteStream sss data ("HELO" & crlf)
        readresponse(sss) of me
        WriteStream sss data ("mail from: <" & YourEMail & ">" & crlf)
        readresponse(sss) of me
        WriteStream sss data ("rcpt to: <" & email_address & ">" & crlf)

    〜〜〜〜〜〜〜〜〜〜 以 下 省 略 〜〜〜〜〜〜〜〜〜〜

この中の、
>  WriteStream sss data ("HELO" & crlf)
を、WriteStream sss data ("HELO" & "myDomain" crlf)
という内容に変更すればいいのかと思って、書き直しました。スクリプトの最初の方で
> property MailHost : "myDomain" --- あなたのメールサーバー( SMTP サーバー)を設定してください
となっているので、スクリプトの変更を
WriteStream sss data ("HELO" & MailHost  & crlf)
としてためしてみましたが、やはりうまくいきません。
今度のエラーは、

"ERORR Unable to send mail

500 Command unrecognized
 "
というものです。

まるでScriptの添削を皆さんにお願いしているようで申し訳ないのですが、
問題点がお分かりでしたら、ご指摘をお願いします。

よしもと さんからのコメント
( Thursday, May 15, 1997 14:08:01 )

えっと、

"HELO" & MailHost

だと、HELOとMailHostの間にスペースが入らないんじゃないですか?

"HELO " & MailHost

とすれば上手く行くのではないでしょうか?

田中求之 さんからのコメント
( Thursday, May 15, 1997 18:31:41 )

よしもとさんが指摘しているように、HELO の後ろにスペースが絶対に必要ですよん。



田中求之 さんからのコメント
( Thursday, May 15, 1997 18:44:44 )

もう一点、HELO コマンドの domain は、メールを送る側のドメイン名を名乗る
わけですから、MailHost ではなくて、CGI が動いているマシンのドメイン名を
使うはずです。ちなみに、 RFC821 では

      In the HELO command the host sending the command identifies
      itself; the command may be interpreted as saying "Hello, I am
      <domain>".

と書かれています。

ですから、たとえば、私のサーバーであれば

HELO fpu.ac.jp

あるいは IP アドレスで

HELO [157.6.48.132]

としないといけないと思います。違うかな?>よしもとさん

柾木 博行 さんからのコメント
( Thursday, May 15, 1997 18:47:57 )

あ、そうですね。でも本当にそんなことで送れなくなるもんですかねぇ……。
と思いながら試してみたら、みごと動きました!
よしもとさん、ありがとうございます。

田中先生も、元になるスクリプトを作っていただき、ありがとうございました。
ちょっと今、自分自身のマシンが使えないために、まだ、Tanaka's CGI Kit1.3にある
guestMail.acgi(NE版)自体ではテストしてませんが、多分問題なく行きそうです。

皆さんのご指導に感謝いたします。

よしもと さんからのコメント
( Friday, May 16, 1997 08:30:25 )

>> としないといけないと思います。違うかな?>よしもとさん

そうですね。つまり、メールを送る側が受け取る側に

「自分はここから送っているよ」

と伝える為に送るわけですから、メールを送り出すホスト名を入れる
のが正解でしょう。ただ、一つ気になるのは、決まったホスト名をも
たないPCからEudraのようなMUAでメールを送る場合、ここには何を入
れるんでしょうね?

#ソースを見れば分かるかな?

田中求之 さんからのコメント
( Friday, May 16, 1997 15:13:15 )

>一つ気になるのは、決まったホスト名をも
>たないPCからEudraのようなMUAでメールを送る場合、ここには何を入
>れるんでしょうね?

Eudora が動いているマシンの IP アドレスを入れてます。

HELO [157.6.48.xxx]

といったコマンドを発行してますね。


よしもと さんからのコメント
( Friday, May 16, 1997 15:36:27 )

やはりそうしていますか。
まあ、こうするしかないもんね。

どうもわざわざ調べていただき、有り難うございます>田中さん

田中求之 さんからのコメント
( Friday, May 16, 1997 16:20:39 )

>どうもわざわざ調べていただき、有り難うございます>田中さん

わざわざ調べたわけではないですよ。 Eudora の表示を見てたらわかっただけ
ですもの。

速いマシンとディスクを使っている人にはわからないかもしれない… (^_^;;

よしもと さんからのコメント
( Friday, May 16, 1997 16:45:26 )

確かに、気をつけて見てみる、そう表示されますね(笑)

>> 速いマシンとディスクを使っている人にはわからないかもしれない… (^_^;;

うん、7600だと一寸僕の動態視力じゃ厳しかったです (^^;

柾木 博行 さんからのコメント
( Friday, May 16, 1997 16:54:56 )

Eudoraで、メールを送るときに出ている「HELO [XXX.XX.XX.XXX]」って、
その意味だったんですか!(ひょっとして、これってこの会議室では最低限の常識?)
私のマシンは、9500ですがこのメッセージははっきり見えます。
よろこんでいいんだか、わるいんだか……。

田中求之 さんからのコメント
( Saturday, May 17, 1997 12:28:43 )

>Eudoraで、メールを送るときに出ている「HELO [XXX.XX.XX.XXX]」って、
>その意味だったんですか!(ひょっとして、これってこの会議室では最低限の常識?)

常識ではないでしょう。SMTP と POP3 に関するプログラミングを自分でやった
ことがある(あるいは RFC を読んだことがある)人なら、「ほぅ、こういうコ
マンドを送ってるわけね」というのがわかって楽しめるわけです。

どうせなら、コマンド履歴を記録できればいいのにな。