Human68k 誰でも作れるインターネットアプリ


●繋がった!その後

PPP を使えば、X68K から直接インターネットに接続することができるようになります。 長年の夢であった、あなたの X680x0 が IP アドレスを持つのです。

しかし、繋がったのはいいのですが、一体何をすればいいのでしょうか??

他のパソコン、特に初心者がインターネットにひかれてパソコンを購入するのは、 その 99% がおそらく WWW 目当てだと思われます。 WWW は今のインターネットの発展と普及を支える花形であり、そこにはものすごい魅力とパワーがあります。

まずは X680x0 でも、テキストブラウザ lynx を入手していろいろと WWW 上の情報にアクセスしてみるのもいいと思います。

ただしこの Web は基本的にパブリックな情報公開であって、個人同士の情報伝達の中心手段ではありません。 例えるなら Web は TV や雑誌で、もちろんみんなそれを好んで見ますが、 実際に自分が何かを伝える手段として使うのは電話や手紙なのです。

TV は無くても生きて行けますが(そうでない人もいますが)、 電話がなければ仕事もできないでしょう。

そう、インターネットを支えている本当に重要なサービスは、メールなのです。


と、強引に仮定を作ったところで、さてその次は‥

●メールアプリケーションを作ろう

まずメールの送受信ツールを作りましょう。

メールが無ければインターネットは何も始まりません。 しかし、メールといえどサーバーにアクセスして実際に転送するには、 専用の転送プロトコルを使うネットワーククライアントのプログラムを書かなければなりません。

そんな知識も資料もないよー、という方もご安心を。

メール送受信のプロトコル部分だけを受け持つコマンドを作成致しました。

msmtp.x は、メール送信プロトコルを使って、任意のファイルをメールとして勝手に送信してくれるコマンドです。 ファイルや送り先を与えるだけで、ややこしいプロトコルは不要です。

同様に mpop.x はメール受信を行います。 受け取ったメールはファイルとして保存します。

これらコマンドは、あくまで転送部分だけ行います。 だから、インターフェース部分だけ作って、あとはメール送受信にこれらプログラムを チャイルドで呼び出すだけで、誰でも簡単にメール送受信ツールが作れるというわけ。

逆に言えば、マクロが使えるテキストエディタなどでは、マクロを書いて上記コマンドを呼び出すようにするだけで、メールツールになってしまう、なんてこともありです。

ぜひ皆さん挑戦してみて下さい。そしてさまざまなメールソフトが登場することを期待します。


●では具体的にメールソフトの作り方

【メール送信】

まずメール送信に必要な情報をまとめましょう。

(1)送り先のメールアドレス ユーザーが毎回入力
(2)送り主(自分)のメールアドレス プロバイダ契約時に決定
(3)メール(SMTP)サーバーのアドレス プロバイダ契約時に決定
(4)ドメイン名 プロバイダ契約時に決定

この4つが分かれば、取り敢えずメールを送ることができます。 2〜4の3つは、プロバイダと契約してメールアカウントをもらうときに、必ず教えてもらうはずです。

あとはこれを msmtp.x のオプションに指定するだけで、任意のファイルをメールとして送れます。(オプションでなく環境変数を使うこともできます)

msmtp -h(3) -d(4) -t(1) -f(2) 送るファイル

例: msmtp -hpop.denden.or.jp -ddenden.or.jp -toga@dgw.yz.yamagata-u.ac.jp -foga@denden.or.jp  mail.txt

送るファイルは普通のテキストファイルで OK です。 ただし、このファイルの内容は必ず 7bit でなければなりません。

SJIS 漢字は送信できないので、7bit の JIS コードに変換しておく必要があるのです。 もちろん半角仮名も 8bit なので、そのままでは送れません。

漢字コード変換には ack を使います。 とにかくこのプログラムを入手して「ack -j 入力ファイル 出力ファイル」 と実行すれば、勝手に文字コードを送信できる形に変換してくれるのであとは何も考えなくて OK です。( -j は必ず小文字)

取り敢えず、任意のテキストファイルをメールとして送信できるバッチファイルを作ってみましょう。

send.bat
-----------------------------------------------------------------------
ack -j %2 mailtmp.tmp
msmtp -t%1 -dドメイン -hサーバー -f自分のメールアドレス mailtmp.tmp
del mailtmp.tmp
-----------------------------------------------------------------------
これで「send 送り先アドレス 送るファイル」 でメールが出せます。これを他のアプリに組み込むのも簡単でしょう。

注意: tcppacka.lzh 付属の etc/services には、smtp や pop3、nntp などのエントリが無いので、あらかじめ追加しておいて下さい。 詳しくは こちら を参照して下さい。


【メール受信】

同様にして、メール受信時に必要な事項は次の通りです。

(1)サーバー(POP3)のアドレス プロバイダ契約時に決定
(2)メールアカウント(ユーザー名) プロバイダ契約時に決定
(3)メールパスワード プロバイダ契約時に決定
(4)受け取ったメールを保存する場所 メールソフトの設定で決める

このように、受信時にはユーザーが毎回入力しなければならないような項目はありません。 メールは一度に複数届くこともあります。 だから、受信メール格納先の指定はファイルではなく、ディレクトリを与えます。

recv.bat
-----------------------------------------------------------------------
mpop -hサーバー -uメールアカウント -pパスワード -s保存するディレクトリ
-----------------------------------------------------------------------

例: mpop -hpop.denden.or.jp -uoga -ppassword -sA:\MAIL
このバッチファイルを作っておくと、recv コマンドを実行するだけでメールが届いているかどうか調べてディレクトリに勝手に取り出します。

これを他のアプリに組み込む場合は、「メール受信」の操作で上記の recv.bat に相当する内容を実行します。 そして、受信ディレクトリの内容(例えば A:\MAIL)に、新たにファイルが増えたかどうかを確認するだけでいいのです。 (受信したファイルは 1 から順にファイル名が付きます)

もちろん、メールの中身は 7bit (JIS 7bit)コードです。 これを X680x0 が読める普通の内容に変換するには送信時と同じように ack を使い「ack -s 受信したファイル 出力ファイル」のように実行することができます。

ただしこれだと Subject: (メールタイトル) に MIME ヘッダがあっても日本語になりません。 よって、受信したメール(やニュース)のコード変換には smime.x を使うといいでしょう。 これはコード変換だけでなく、メールヘッダの MIME デコードも一緒に行ってくれます。


●もうちょっと高度な処理も行いたい

上記の方法だけで、既にメール送受信ができるアプリケーションを作ることができるようになっています。 でも何か足りないな、と感じてる人もいると思います。

例えば、メール送信時のメールタイトル(Subject:)の指定方法がありません。 また受信したメールのうち、 送り主の(From:)やタイトル(Subject:)を取り出すにはどうしたらいいのかが書いてありません。 送り主のアドレスが分からないと返信ができないわけですから。 (実際に受信したファイルを見れば大体見当がつきますが)

これらの処理を行うには、メールのヘッダの付け方を知っておかなければなりません。 しかし、 送信時にタイトル(Subject:)に日本語を入れる場合は特殊なエンコードが必要になったりと、意外にやっかいなのです。 よって詳しい説明は省きますが、興味ある方はぜひ挑戦してみて下さい。

簡単に主なヘッダの説明
-------------------------------------------------------------------------
From: 送り主の名前 <送り主のメールアドレス>
	<〜>がある場合はその中がメールアドレスです。無い場合はメール
	アドレスは直接書いてあり、(〜) の中が送り主の名前になります。つま
	り「<〜> , かっこなし , (〜) の中」の順で、メールアドレスを取
	り出すためのフィールドの優先順位が低くなります。名前に漢字を使う
	ときは MIME エンコードしなければなりません。
Subject: タイトル (7bitのみ 日本語は MIME エンコードする)

ヘッダは複数行に分けて記述することができます。空白で始まる行が連続行です。
ヘッダ部の終りは改行のみの行で、それ以降が本文になります。
-------------------------------------------------------------------------
これ以上詳しい説明は RFC を参照して下さい。


●メール以外のツール

同様にして NNTP を使ったニュースリーダーもできるはずです。 詳しくは mnntp.x のドキュメント を参照して下さい。

ftp も本当は作りたかったのですが、まだ余裕が無くて実現していません。 telnet は、 ちゃんとターミナルエミュレーションして複数のセッションを同時に開けるプログラムを作ってあります。これはそのままで使えるはずです。 mtelnet が手に入るページ


山大サーバー dipsw2 の表示が遅いという方はこちらからどうぞ(vector-ftp)

mpop121.lzh msmtp121.lzh mnntp121.lzh smime120.lzh ack139bx.lzh mteln101.lzh

Indexに戻る


小笠原博之 oga@dgw.yz.yamagata-u.ac.jp
ちと推敲不足だけどなんとか書き上げた‥ 綿密に調べる時間も無いので全部記憶だけ書いてます。ごめん。