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

Mond.mailで書類添付

発言者:猫の手
( Date Wednesday, March 11, 1998 11:29:46 )


 mond.mailで書類を添付することは可能でしょうか?
本文中にエンコードした書類を埋め込んでおけばいいかなと、
漠然と思っているのですが。

 エンコードした文字列が添付書類だと認識させて、
例えば、ユードラに添付書類として保存させる方法があるのでしょうか。

田中求之 さんからのコメント
( Wednesday, March 11, 1998 13:52:58 )

メール添付の場合は、Multipart MIME 形式でメール本文を組み立てる必要が
あります(ファイル単独送付の場合は、もっと簡単です)。

以下のようなフォーマットのメールデータを自分で作成して送るようにしてください。

===ここから
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="============_-1322531550==_============"
Date: Wed, 11 Mar 1998 13:35:37 +0900
To: mact@antares.ecn.fpu.ac.jp
From: Motoyuki Tanaka <mact@antares.ecn.fpu.ac.jp>
Subject: Test

--============_-1322531550==_============
Content-Type: text/plain; charset="ISO-2022-JP"
Content-Transfer-Encoding: 7bit

ここには JIS で書かれたメールの本文


--============_-1322531550==_============
Content-Type: application/mac-binhex40; name="添付ファイルのファイル名"
Content-Disposition: attachment; filename="添付ファイルのファイル名"

(This file must be converted with BinHex 4.0)
以下 Binhex エンコードしたファイルのデータ

--============_-1322531550==_============--

====ここまで

ヘッダ部分で、かならず MIME のバウンダリーを指定し、そのバウンダリーを
使ってデータを属性ごとに分けて書きます。そして、最後のバウンダリーの部分
の末尾には -- をつけるのをお忘れなく。

また、改行は当然のことながら CR+LFです(これはソフトの方で自動変換して
くれるかな?)

田中求之 さんからのコメント
( Wednesday, March 11, 1998 13:57:06 )

ところで Mondo Mail って、自分でヘッダー部分を記述することはできましたっけ?
ヘッダーで Multipart であることを宣言しておくひつようがありますので、
ヘッダーをコントロールできない場合には、添付やバイナリ送付を行うことは
できません。念のため。

田中求之 さんからのコメント
( Wednesday, March 11, 1998 14:02:07 )

参考までに、単独でバイナリ送付(Binhex のデータを送る)場合は以下のような形式の
メールを組み立てます(この場合もヘッダー部分が重要)

===ここから
Mime-Version: 1.0
Content-Type: application/mac-binhex40; name=ファイル名
Content-Transfer-Encoding: 7BIT"
Content-Description: ファイル名
From: xxx@yyy.zzz.co.jp
To: aaa@bbb.ccc.co.jp
Subject: 

(This file must be converted with BinHex 4.0)
以下 Binhex エンコードしたファイルのデータ

====ここまで

猫の手 さんからのコメント
( Thursday, March 12, 1998 09:21:09 )

早速のコメントありがとうございます。
今出張先で、レスポンス出来ないので、
帰って実験をしてみます。

 何だか、期待は持てそうです。

猫の手 さんからのコメント
( Friday, March 13, 1998 16:52:51 )

 まだ上の、コメントに対して実験がすんでないですが、新たな質問として、

 マックを使っての話ですが、
メールを自動的に受信させて、新着のメールのみをまとめてファイルにして、
保存したいと思ったとき、どうするのがいいと思いますか?
TCP/IP から直接たぐって行くしかないのでしょうか。

よしもと さんからのコメント
( Friday, March 13, 1998 20:08:17 )

まあ、一番簡単なのは、メールサーバを立ち上げることかな。
EIMSなら確か簡単にできたはず。

#暫く使ってないから、記憶があやふやだけど... (^^;

あと、例えばPOP3経由でやるんだったら、TCP/IPを話せる言語
(AppleScript+NetEventやMacPerl、C/C++...)を使えば簡単
ですよ。まあ、一度STD53 (RFC1939)を眺めて見て下さい。

前田 隆博 さんからのコメント
( Friday, March 13, 1998 21:15:47 )

試していませんが、ChuckさんがEudoraのMailboxをDBに読み込めるようにする
Toolを出しているようですよ。



→  Eudora Mailbox to TSV

田中求之 さんからのコメント
( Saturday, March 14, 1998 15:46:49 )

>あと、例えばPOP3経由でやるんだったら、TCP/IPを話せる言語
>(AppleScript+NetEventやMacPerl、C/C++...)を使えば簡単
>ですよ。まあ、一度STD53 (RFC1939)を眺めて見て下さい。

POP からメールのデータが送られてくる場合、末尾の CRLF + . + CRLF
を検出する必要があるのだけど、NetEvents だとちょいと面倒だったりします。

TCP osax の方だと、特定の文字列が来るまでストリームを読み続ける
ってのが簡単にできるので、楽勝なんですが。


猫の手 さんからのコメント
( Monday, March 16, 1998 09:35:51 )

 いろいろコメントをありがとうございます。
 最終的なイメージを書いておきますと、
(これを最初にしなければいけなかったんでしょうが。)

 社内の環境でメールを使う場合に、社のほかの場所(例えば、本社とか)
に移動しても自分宛のメールを読みたいという要求があります。
私なら言った先で、適当にメールの設定を変えて、
自分のメールを受信してしまうのですが、
人によっては、自分の占有しているマシンで他人にメールを読ませて、
その内容を連絡してもらったりしています。なんだか、プライバシーだの、
全く関係ない世界で、読ませる方はいいかもしれないけど、
他人のメールを読ませられる方はけっこう迷惑なんですよね。

 で、webから自分のメールを読みにいって、
メールがあれば、web上に表示する。添付ファイルの受信もできるようにしたい。
受信したメールは、別のアクションで、自分宛にメールするようにすることで、
出先で見たメールが無くなることもない。

というような機能を作りたいと思っているのです。
前田さんの紹介してくださったツールは、
ダウンロードしたので試してみたいと思っています。
よしもとさん、田中さんのおっしゃるTCP/IP語が、本質的なんでしょうけど。
STD53 (RFC1939)というのは、どこで手に入りますか?

よしもと さんからのコメント
( Monday, March 16, 1998 10:42:03 )

RFCはたいがいのサイトでミラーしていると思います。
もし、自分の所でFTPサーバーを立てているなら、まずはそちらを
探してみて下さい。

で、無い場合は、いつも利用しているお近くのFTPサイトに行けば
まず置いていると思います。

ちなみに僕は自分の所(ftp.kek.jp)から、取ってきますが..

田中求之 さんからのコメント
( Monday, March 16, 1998 17:08:49 )

RFC については、私は以下のようなスクリプトを使って riken から取り寄せて
います。

set myT to text returned of (display dialog "Enter RFC Number" default answer "1000")
set myT to "rfc" & myT & ".txt"
set tgPath to "/pub/rfc/" & myT
set svPath to "MacHD:NetWork:RFCs:" & myT --- ファイルをセーブするパス

tell application "Anarchie"
  activate
  fetch file svPath host "ftp.riken.go.jp" path tgPath name myT
  quit
end tell

また、これとは別に、定期的に Index も取り寄せるようにしてます。

田中求之 さんからのコメント
( Monday, March 16, 1998 17:28:34 )

>メールがあれば、web上に表示する。添付ファイルの受信もできるようにしたい。
>受信したメールは、別のアクションで、自分宛にメールするようにすることで、
>出先で見たメールが無くなることもない。

これ、きちんと作ろうとすれば、けっこう大掛かりな CGI になりますよ。
特に添付メールを受信したいということであれば、サーバー上で展開して
テンポラリファイルにして、それに対してリンクを張るという処理が必要
になります(どのタイミングでファイルを消去するのかも判断が難しい)。

単にメールを読めるようにしたいというだけでも、処理の時間を考えると
Send Partial を使わないとタイムアウトになるでしょうから、一つの
CGIではすまないと思います(ブラウザのリクエストを処理する CGI と
POP からメールをとってきて MIME のデコードなどを行った上でページ
として送りだす CGI の2つは最低でも必要になります)。

もちろん、ブラウザには絶対にキャッシュが残らないようにする(じゃないと
他人にメールを読まれますから)、また、いったん送りだしたメールは
CONDITIONAL_GET でも請求できないようにする、といったプライバシーと
セキュリティの確保の部分をかなりきちんと考える必要があります。

ま、CGI として挑戦のしがいがあるのは確かですが、いい加減なものを
作ると、とんでもないセキュリティホールになる可能性があることは
覚悟してください。

猫の手 さんからのコメント
( Monday, March 16, 1998 19:14:07 )

 rtfの方は、うちの環境がftpはだめなので、ニフティー経由で、ちまちまとってきます。

 メール関連のcgiは、確かにキャッシュなどをクリアしないとまずいですね。
セキュリティーをあげるためには、かなり慎重にしなければいけないようで、
当面、私の手には負えないかもしれない。
ちょっと、ペンディングかな。

よしもと さんからのコメント
( Monday, March 16, 1998 22:40:15 )

RFCはメールでも確か取り寄せることができたはず...
STDの方もメールで取り寄せることができ、

To: rfc-info@ISI.EDU
Subject: getting std's

help: way_to_get_stds

というメールを送れば、ヘルプが返ってきます。

猫の手 さんからのコメント
( Tuesday, March 17, 1998 09:44:15 )

 吉本さん、ありがとうございます。
 試してみます。

清 秀紀 さんからのコメント
( Tuesday, March 17, 1998 13:34:02 )

こういうありがたいページもあったりします。


→  RFCJ -- RFC ならびに Internet Draft の日本語化文書集積/提供のページ 


猫の手 さんからのコメント
( Wednesday, March 18, 1998 08:04:15 )

 清さん、ありがとうございます。
吉本さんに教えていただいた1939の日本語がありましたので、
とりあえずgetして読むことができます。
あとは、メールでのgetの方法をチャレンジしなくちゃ。

 しかし、ネットワークは、知恵の宝庫やなぁ。

"きらきらひかる"が、終わってしまったのが寂しい。

田中求之 さんからのコメント
( Wednesday, March 18, 1998 16:36:36 )

POP からメールをダウンロードするスクリプトのサンプルが必要でしたら、
登録しますよ(ページに書き込むには長すぎるので)。

TCP/IP scripting osax + Tanaka's 1.25 が必要というものです
(PowerMac + OT でしかまともには動かないと思います)


猫の手 さんからのコメント
( Thursday, March 19, 1998 10:51:16 )

 そうですねえ、うちは475がサーバですから、
速度が問題であれば、ちょっと苦しいかな。
でも、もし、お手数でもよければ登録して頂けますか。
楽しみにしています。

田中求之 さんからのコメント
( Friday, March 20, 1998 17:25:59 )

NetEvents + Tanaka's osax 1.25 で、POP サーバーからメールを
ダウンロードするスクリプトをいかに登録しておきました。

スクリプト中のコメント、特に getMsg ハンドラーのコメントを読んで
もらえばわかりますが、データの受け取り部分を、若干の手抜きを行って
いますので、ローカルネット内にある POP サーバーでない場合には
メールを受け取りそこなえることがあるかもしれません。

このへんは、ご自分で改造してください(ちょっとスクリプトが込み入って
読みにくいとは思いますが (^_^;; )

→  getPopByNetEvents.hqx

田中求之 さんからのコメント
( Friday, March 20, 1998 18:37:15 )

スクリプトの修正点がありました。上記のスクリプトを使用される場合は、
QUIT の発行の前に RSET を発行するようにしてください。つまり、

      WriteStream sss data ("RSET" & crlf)
      getMsg(sss) of me
      
      WriteStream sss data ("QUIT" & crlf)
      CloseStream sss

というスクリプトに変更してください。これを入れないと、削除して
ないメールを Eudora などのメーラーで取得したとき、既読のメール
として扱われてしまいます。

田中求之 さんからのコメント
( Friday, March 20, 1998 19:24:49 )

修正版( RSET 発行を追加)を登録しました


→  getPopByNetEvents2.hqx

田中求之 さんからのコメント
( Friday, March 20, 1998 19:27:28 )

NetEvents ではなく、TCP/IP scripting addition 2.x を使ったものも
登録しておきました。

OpenTransport 環境を想定してスクリプトをかいてあります。

TCP/IP osax は、68K Mac の OT 環境では動作が不安定なのですが、
きちんと動く場合には、非常に高速です。

(PM8100 + TCP/IP osax 2.0.8 でテスト)


→  getPopByTCPosax.hqx

猫の手 さんからのコメント
( Friday, March 20, 1998 21:13:50 )

 結局、いろいろお手数をおかけしてしまいました。
ありがとうございます。

まだ、テストもできていないのですが、
じっくりとスクリプトをのぞいてみたいと思っています。

猫の手 さんからのコメント
( Tuesday, April 21, 1998 12:20:37 )

 古いところにコメントですが、TCP/IP script addがFedExで届きました。今から、試しています。

田中求之 さんからのコメント
( Tuesday, April 21, 1998 16:02:19 )

バージョンはいくつでしたか? 最新は 2.0.9 だと思うのですが。

なお、Mangotree はバージョンアップなどのお知らせや、アップデータの配付は
行っていないようです。ホームページを見て、バージョンが上がっていたときには、
作者にメールすれば、最新版を送ってくれます。

猫の手 さんからのコメント
( Tuesday, April 21, 1998 18:00:09 )

 確認してみたら、2.08でした。教えていただいたとおり、作者にメールをしてみます。MangoTreeから直接買ったと思うのですが、ちょっと悔しいな。