メールの仕組み2003.9.20


 

インターネットメール
 

 Windows95で受信トレーを整備しましたか。一台のPCにポストオフイスを作りLan内でメールのやり取りをしたことがあります。その時、Lan内メール とインターネットメールは仕組が違うのは、理解しました。 両方のメーラーをセットする必要がありましたから。outlookとoutlookexpress 。なんだかスッキリしませんでしたね。結局outlookexpressしか使わなくなりました。
 メールはインターネットメール。もうそんな時代ですね。ところうが、 CGIを勉強し出すと、毎日使うメールの仕組みが分っていないのに気付く。少し頭の整理をしてみました。

 

SMTPとPOP
 

 インターネットの中には、大きなポストオフィスはありません。 サーバー同士が転送しあっているだけです。投函されたメールは速やか に受取り人のサーバーに送られます。サーバー同士はSMTP(Simple Mail Transfer Protocol)というプロトコル で会話をしています。メールを何処へ転送するのが一番いいかは、表があるそうです。
 電話と違って、メールは受取り人が受信手続きをするまで配達されません。 ですから、サーバーに一時蓄えられるものとしてプロトコルが作られています。 もっと基本的なことをいえば、投函、転送のプロトコルと、受取るプロトコル は全然別物ということです。受取るプロトコルはPOP(Post Office Protocol)といいます。メーラー の設定で、popとsmptをセットするのは、そのためだったのです。

 さて、CGIの話で、メールを送ることを考えてみます。ページ のフォーム入力は、CGIで手元に集まります。返事をページに書き送ること もCGIでできます。でも、内容は掲示板と同じで、誰もが見れてしまいます。それではいけません。例えば、パスワードの発行。 個人宛の情報はメールでお知らせする必要があります。ということで、ページから直接メール出力することを考えてみます。
 しかも、サーバー内部で生成した データーを自動的に配信するようにします。結局、CGIで直接SMTPにデーター を流す方法をマスターしなければなりません。

 

sendmail
 

 Unixのサーバー同士がメール交換するには、sendmailを 使います。これはサーバーソフトです。インターネットのメールサーバーはSMTPサーバーとPOPサーバーがありますが、sendmailを使うSMTPサーバー にアクセスする方法が必要です。

 プロバイダーでsendmailは利用できたのですが、 スパムメールが多くなり、最近では、ほとんどが利用許可をしていません。

 会員にはUnixのOSのコンソールを開放してsendmailを利用させる。 そんなtelnetサービスもありました。これも、もうほとんで開放されていません。
 telnetでメールを送る方法はこんな風でした。
telnet  ***.***.***(SMTPサーバ名) 25

helo *****(ホスト名前)

mail from: ****@*****.co.jp

rcpt to: *****@***.ne.jp

DATA

subject: *******
********************
*********************
.

QUIT

 一行目の25はSMTPで使われるポート番号の25番です。niftyのパソコン 通信のLOGIN手続きに似ていますね。結局パソコン 通信は大型コンピユータのリモート端末を操作していたということでした。

 

フリーソフトと自己責任
 

 sendmailが使えません。メール送信のCGIは諦めますか。 それとも、他人の迷惑を恐れながらも挑戦しますか。プロが作ったものを、お金を出して使いますか。

 フリーソフトのCGIスクリプトがあります。信頼できるものを利用するのが賢明でしょう。でも、フリーソフトは自己責任で 利用するのが前提です。「知らなかった」では済まされないことが起きる かもしれません。プログラムは、実際動かして見ないとわからない所が あります。エラーを見ながら改良していきます。公共のインターネットで 「おばかさん」をする勇気はありません。

 そこで、社内LANの中にWebサーバーを整備することにしました。 外部には接続しない閉じたネットでTCP/IPで動くサーバーを立てます。すでにProxyサーバーは動かしています。調べてみると 、この簡易サーバーはWebサーバーにもなります。CGI,SSIもOK。
 将来、Linuxでapache。それは決めています。でも、今はMSwindows98 の環境。sendmailはUnixのツール。windows98でこれに代わるものが必要です。 検索してみると。Blatj というツールがあるそうです。

 

blatj
 

 blatjはwindowsNTのツールです。windows98でも動くという 情報です。試してみました。

 問題無くtextファイルが送信されました。もちろん、自分で自分宛におくったのですが。REGISTRYを確認してみましたが、Public Domain¥Blatというキー でinstallの情報が書き込まれていました。この時の情報が以後smptアドレスとして、規定値に使われていくようです。

 そこで、これを利用してメール送信CGIを準備しました。 KENTWEBさんのpostmail.cgiを利用しました。

 送信処理スクリプトは下記のようです。
 open(MAIL,"| blatj $tempfile -t $mailto -s \"$subject\" -q");
 close(MAIL);

blatjのコマンドリファランスの一部は下記ですが、 これに従い、標準入力(キーボード)から打込んだようにスクリプト されています。ファイルコマンドでパイプ「 | 」を利用しています。 この場合、左に | がありますから、キーボードに出力ということです。 手動でタイプインするのとまったく同じ結果です。 「ナルホド」といったところです。
  Blat <filename> -t <recipient> [optional switches (see below)]
-t <recipient> : recipient list (comma separated)
-s <subj>      : subject line
-q             : supresses *all* output.
 

CGIテスト環境
 

 簡易Webサーバーとsendmaild代換策の目処がつきました。 すこし気合を入れてCGI,SSIの勉強をしてみます。Perlに慣れる ということが中心課題なのでしょうが、環境としては良好です。

 FORTRANでプログラムを覚え、Basicで仕事に活用した経験 はあります。表計算のマクロも少々。javaScriptも少々。プログラム 言語をマスターするコツは知っていますが、Perlに挑戦 など考えてもいませんでした。インターネットという大きなブームの 中、避けては通れないのでしょう。


2003.9.20
by Kon