このプログラムは VMS Mail にたまったメールを UNIX の動いているマシン上に 持って来て、よく使われているであろう MH で読める形式に変換する perl の script です。MH で読める形式といっても、特別なことをしているわけではなく 一つずつメールを切り分けて順番にファイル名に番号をふるというだけです。 (header については凝ったことをしていますが詳しくは解説で。)
このソフトウェアによっていかなる損害が発生しようとも田島靖久 (tajima@kgphys.kj.yamagata-u.ac.jp)は責任をとりません。御自分の責任で 使用して下さい。
このプログラムは perl を使って書かれています。ですから perl の入っていない マシンには perl をインストールする必要があります。使用する perl の version は 手元に perl-4 のマニュアルしかないので、 perl-4 の文法以上のことは書けません でしたので、 perl-5 でも perl-4 のどちらでも動くようです。vms2mh.plの スクリプトはここから持って行って下さい。
またこの作業はメールごとにファイルを作成するので VMS から移行する先の UNIX の環境で実行したほうがよいでしょう。
メールを取り出す VMS の環境に応じてカスタマイズが必要です。 プログラム中変数をあなたの環境にあわせて書き直してください。 変更部分は全てプログラムの初めの変数で設定することができます。 設定には難しいところやあなたのホストに特有の設定もありますので 良く分からない場合にはその VAX の管理者やネットワークの管理者に 確認して下さい。
From: MX%"user@host.domain"のようになるはずです。ここでは使用される envelope を指定しています。 私の身近に出て来るものについては初めからいれてありますが、それ以外に ある場合については追加して下さい。ULTRIX 等で SMTP - DECnet Mail gateway を している場合は ULTRIX::"user@host.domain" のようなアドレスで届きますが、 これは自動的に外すようになっていますので追加する必要はありません。同様に forward 先に届いた場合 VAXVMS::MX%"user@host.domain" のようになりますが これも MX% のみ登録してあれば問題ありません。
USER%VAX.decnet@host.domain や USER%VAX.dnet@host.domainのような形式 (user%host.***@host.domain) で送れば VAX::USER に送られる 設定になっている場合が多いようです。ここではここの .decnet@host.domain 等を 登録しておきます。このような gateway を意識して設定していない場合は
'VAX::USER'@host.domainの形式で送ることのできる可能性があります。この場合には $FWD_ADRS に '@host.domain' を指定して、$FWD_MODE = 1; に変更しておきます。 どのようにしたら送れるかはホストの管理者に確認をして下さい。
あるVMS Mailのフォルダーにある全メールをとりだします。
VAXVMS$ mail MAIL> select <移したいメールのあるフォルダー> MAIL> extract /all mail.txtこれでこのフォルダーにある全メールが mail.txt というファイルに 書きだされました。このファイルをどうにかして(ftp でも mail でも なんでもよい。ただし ftp のときは ascii 設定を忘れないこと。) UNIX 上に 持ってきます。
UNIX$ ls -F mail.txt vms2mh.pl* # mail file と プログラム UNIX$ mkdir vax_mail # メールを展開するディレクトリを作ります。 UNIX$ cd vax_mail UNIX$ nkf -j mail.txt | ../vms2mh.plこのあとこのディレクトリにはメールの番号の付いたファイルがメールの 数の分だけできたはずです。
UNIX$ ls 1 11 12 13 .... 9この展開したディレクトリをメールのディレクトリ(~/Mail/等)に持って いけば読めるはずです。(動作確認はmew1.70+mh-6.8.3-jp, mew-1.92.4 on Debian-LINUX 1.3.1で行ないました。)
UNIX$ cd .. UNIX$ mv vax_mail ~/Mail/この後の操作に付いては MH 等のマニュアルに沿って行なってください。 漢字コードは nkf などを使って環境にあわせて変えた方がよいでしょう。 VMS で作られるファイルは DEC 漢字コード(≒ EUC)です。どの漢字コードで 保存すべきかは管理者に相談をしてください。
基本的には真面目に技術資料やマニュアルを読まずに実際のファイルやメールを みて作りましたので、間違った理解や設定があるかもしれません。もし気づいた 点がありましたら私まで連絡を下さい。(最近真面目に RFC822 を読もうかと思い ファイルはとってきましたがまだ読んではいません。)
extract される VMS Mail のフォーマットは
From:\t[<HOST>::]<USER> ["<USERNAME>"] dd-mmm-yyyy hh:mm:ss.ss To:\t[<HOST>::]<USER>[,<HOST>::<USER>...] CC:\t[<HOST>::]<USER>[,<HOST>::<USER>...] Subj: <SUBJECT> <Body>のような形になっています。(正確には宛先には DIS file で @foo なども使える。) また一部には <USER>@<HOST> なんていう記述のできるところもあるようです。
MAIL> extract /all <FILENAME>で VMS 上で作成されるファイルは
^L <1番目のメール> ^L <2番目のメール> ^L : ^L <n番目のメール>の様に改ページで分割されて出力されるようです。
MX のようなソフトウェアで SMTP のメールを VMS で受け取る場合、RFC 822 の ヘッダーは
MX%"user@host.domain"の様に表示されます。この他に SMTP%, WINS% などがあるようです。
UNIX 上のメーラーで MH は標準設定では ~/Mail 以下に適当なディレクトリを つくり、これをフォルダーとしてその中にはプレインテキストのメールを 番号をファイル名として入れてあるようです。 mail の mbox の形式等は良く知りませんのでそれに対応して欲しいと いわれても知りませんので誰か教えてくれるまではできません。
このプログラムでやっていることは
From: Personal Name <user@host.domain> From: user@host.domain (Personal Name)の形式が許されているみたいです(最終的にちゃんと確認をしていません。)。 ここでは順番の変わらない後者の表記に変換します。
Ex. MX%"user@host.domain" -> user@host.domain(普通は RFC 822 のヘッダーが付いているから変換せずに捨てているが DECnet 経由のみで着いているが CC: に入っているときには有効である。)
HOST1::HOST2::HOST3::USER -> HOST3::USERとなります。
私は 1989年に原子核実験の研究室に所属しました。当時の素粒子原子核 業界の多くの研究室がそうであった(?)ように、使える計算機といったら 大計の大型計算機か PC9801 (当時は RA がでたころかな。)か VAX/VMS しか ありませんでした。VAX/VMS だって当時はとっても(今は相対的にもっと) 高いので簡単に手にはいるようなものではなかったですが、運が良かったか 悪かったか研究室に入ったばっかりの μVAX3100 がありました。当時は UNIX なんてのはこの業界では使えないものという感じがまだありましたので、 ネットワークにつながる計算機としては研究室で唯一で VMS が使えないと 実験もできないというわけでした。ですから好きだろうが嫌いだろうが VMS を 使わざるを得ないわけでそのときからメールは VMS Mail だったわけです。 VMS Mail は All in One で何でもできますので初心者にも簡単に使えますし、 凝ったことをしようとしなければフォルダーの分類も出来ますので、それ なりに便利なメーラーでした(と個人的には思っています)。
時もすぎて現在、10万円もせずにかつての大型計算機をしのぐ性能の CPU が出まわり、AT 互換機が大幅に値崩れし、フリーの PC-UNIX 全盛の時代に なりました。 VAX/VMS は Alpha/VMS に変わりましたが、 VMS 自身が衰退の一途を たどるようになってしまい、 DECnet のルーティングも危うくなってきています。 (もっと大変なのは DEC 自身がなくなってしまうかもしれません。) さらに気が付くと私自身が研究室を出ていかなければならない歳にもなって しまっており、 Mail 環境も新しいところに移さないといけないなぁ、という ことになりました。さて過去のメールはどうしようと思ったときに VMS Mail は ちょっとやっかいです。簡単なテキストで保存されているのではなく、専用の フォーマットですからそう簡単には移れないようでした。実験も忙しく、面倒 だから後でいいやということにしてしまって、きっとだれか何とかうまい方法 を見付けてくれるだろうと人まかせにしておりました。 VAX/VMSにpop serverが走っている場合には全部のメールを新着にして、 pop clientで取り出せば、header等はどうなるかはよくわかりませんが、 簡単に移行できます。また、Unixではpopで取り出して、mh形式に保存する 自動スクリプトもあるようです。 また、KEK の坪山 透氏が解決法を紹介しているのが、 「KEKVAX にたまった大量のメイルを簡単にワークステーションに移す方法」 でした。詳しい内容はそちらを読んでいただくとして、簡単にいうとフォルダー 内のメールを全部をまとめてテキストファイルにして、それを UNIX に持って いって分割すれば MH で読めるようになるということでした。ともかくこれを 使えば何とかなると思い、分割の FORTRAN のプログラムを使ってみようと しましたが、なんか format 関係でエラーになってしまいうまくいきませんでした。 また、これらはやはりVAX/VMS上にpop serverのある特殊な環境や、あくまでもある domain内での移動ということになっているようでした。
また、今では多くの VMS では Commercial, Free-ware のソフトウェアのおかげで Internet 経由のいわゆる SMTP を使ったメールも扱えるようになっています。 そこには大抵もともと(RFC 822 に沿った)のヘッダーがついていますので、 この情報を生かせば UNIX に持ってきた場合でもソート、検索がしやすくなります ので、可能な限り SMTP できたメールは原型を取り戻したいと考えました。 私は様々なところで実験をしていて、メールアカウントも各地にありそれを DECnet経由でforwardしていました。おかげでメールはいろんな形式で届いており、 さらにメールを置いていた東工大から出ていくことになっていたので、明かに 一筋縄ではできないようでした。そのメールをなんとかして後で不自由のない 形にして持って行きたいと思い、どんどんheaderの書き換えに凝っていって 作ったのがvms2mh.plです。この手の作業はパターンマッチングが 多いので坪山氏も書いていらっしゃるように perl で書くのが一番ということで 構想2年、方針決定1日、製作1日で初期versionは完成しました。
余談ですが、perl の使えるような若い人は VMS Mail なんて使わないという話 もありますが、半分はその通りだと思います。でも、とりあえず使うなら VMS Mail が一番簡単なのではないかとも思います。rmail より簡単でしょ、 jmail + send/edit で日本語のメールもすぐ書けますし、help も充実しています から教える手間が最小限で済みます。でも今 VMS Mail を使っている人っていうのは どれだけいるのでしょうか。 またVMS Mail互換のUNIX上のメーラーってあるのでしょうか。 ご存知のかたがいらっしゃいましたら教えて下さい。
御意見、御感想、御質問は tajima@kgphys.kj.yamagata-u.ac.jp までお願いします。 基本的には自分のメールがちゃんと移せればいいやというつもりですので あまり大きな変更はしないかもしれませんが本人のやる気がでれば変わる かもしれません。またこう変更したらよくなったというのはどんどん歓迎 します。このプログラムは特に著作権は主張しません。だいたいどの程度 需要があるかもよくわかりませんから。ですが、使った場合には連絡を 頂けると本人はとてもうれしくなるのでよろしくお願いします。