JFP は、複数バイト言語国際化のために拡張された mailx (/usr/SUNWale/bin/mailx) を提供しています。以降、簡単な日本語メールの送受信を例にして、mailx の使い方とコード変換について説明します。
説明の中で、いくつかの mailx のコマンドと変数が登場しますが、それらの詳しい使い方については、国際化のために拡張された mailx(1) のマニュアルページまたは『OpenWindows ユーザーズガイド (上級編)』を参照してください。
まず、第 3 章「日本語対応 SunOS のユーザー環境設定」の 「コマンド検索パスの設定」を参考にして、/usr/SUNWale/bin/mailx を起動するように設定します。以下に述べるコード変換は、LC_CTYPE のロケールが環境変数 LANG または LC_CTYPE を介してja または japanese に設定されている場合に行われます。また、環境変数 LC_MESSAGES が ja または japanese に設定されている場合、mailx からの警告メッセージなどは日本語になります (メッセージ自体は JFP が提供します)。
メールを送るときは、mailx の引数に送り先のユーザー名を指定します。たとえば、grape というユーザーにメールを送る場合は、次のように指定します。
lemon% mailx grape Subject: |
mailx は Subject: の入力を要求してきます。Subject: にメールの用件を入力した後、メールのメッセージ本文を入力します。JFP の提供する日本語機能を利用して、日本語のメッセージを入力できます。
lemon% mailx grape Subject: Next Lecture 葡萄さん: 次回の講習会は 10月1日(木) 午後2:00開始 に変更されました。 |
メッセージをテキストエディタを使って作成することもできます。次のように ‾v と入力すると vi が起動します。起動するエディタは VISUAL 変数で指定します。デフォルトは vi です。mailx の変数は、mailx の起動中でも、起動ファイル (通常、ユーザーのホームディレクトリにある .mailrc) 内で設定できます。シェルの変数としても設定できますが、mailx を起動中に指定した値や起動ファイル内に指定した値が優先されます。
Subject: Next Lecture 葡萄さん: 次回の講習会は 10月1日(木) 午後2:00開始 に変更されました。 ‾v |
‾v と入力すると、vi の画面に切り替わります。
To: grape Subject: Next Lecture 葡萄さん: 次回の講習会は 10月1日(木) 午後2:00開始 に変更されました。 ‾ ‾ ‾ ‾ ‾ ‾ ‾ "/tmp/Re8570" 7 行、121 バイト |
ここで、日本語を追加入力します。
To: grape Subject: Next Lecture 葡萄さん: 次回の講習会は 10月1日(木) 午後2:00開始 に変更されました。 会場は未定です。 檸檬 ‾ ‾ ‾ ‾ ‾ ‾ ‾ ‾ :wq |
vi を終了すると元の mailx に戻りますが、画面には vi での編集イメージが残っています。作成したメッセージを始めから見たい場合は、‾p と入力してメッセージを再表示します。メッセージのサイズが大きいと画面が流れてしまい、内容をゆっくり読むことができません。これを防ぐためには、crt 変数と PAGER 変数をあらかじめ設定しておき、ページごとに表示させるようにします。たとえば、mailx コマンド起動中に以下のように設定します。
? set crt=20 ? set PAGER=/usr/bin/more |
行頭の ? は mailx からのプロンプトです。
この設定を、ユーザーのホームディレクトリにある .mailrc の中であらかじめ記述しておくと、mailx 起動時に常に実行されるので便利です。
‾p ------- メッセージの内容: To: grape Subject: Next Lecture 葡萄さん: 次回の講習会は 10月1日(木) 午後2:00開始 に変更されました。 会場は未定です。 檸檬 (つづく) |
作成したメールは、行の先頭に「 . 」(ピリオド) を入力するか、CTRL-D を入力すると送信されます。mailx は終了してシェルに戻ります。メールの作成は日本語 EUC で行われてきましたが、送信時は 7 ビット JIS コードに変換されます。
‾p ------- メッセージの内容: To: grape Subject: Next Lecture 葡萄さん: 次回の講習会は 10月1日(木) 午後2:00開始 に変更されました。 会場は未定です。 檸檬 (つづく) . 作成終了 lemon% |
作成の途中でメール送信を中止したいときは、割り込みキー (通常、CTRL-C) を入力します。割り込みキーを連続して 2 回入力すると、メッセージの作成を中止し、シェルに戻ります。途中まで作成されていたメッセージの内容は、dead.letter と呼ばれるファイル (あらかじめ設定されていない場合はユーザーのホームディレクトリにある dead.letter) に日本語 EUC で確保されます。
lemon% mailx grape Subject: Next Lecture 葡萄さん: 次回の講習会は 10月1日(木) 午後2:00開始 に変更されました。^C (割り込み -- メッセージ送信をやめるにはもう一度) ^C"/home/garden/lemon/dead.letter" 4/63 lemon% |
あらかじめ record 変数が設定されていると、送信するメッセージが record 変数で指定したフォルダに保存されます。record 変数は、デフォルトでは設定されていません。また、record 変数が設定されている場合に、mailx の変数 folderconv が設定されていると、メッセージは日本語 EUC で保存され、設定されていないと転送時の変換イメージ (7 ビット JIS コード) で保存されます。folderconv はデフォルトで設定されています。たとえば、record フォルダが ‾/.record の場合、以下のようにして、すでに送信したメッセージを参照できます。
lemon% mailx -f ‾/.record mailx version ALE5.0 Mon Sep 12 11:09:29 JST コマンドの概要は ? を タイプしてください。 "+.record": 2 個のメッセージがあります。 >O 1 lemon Tue Sep 29 21:33 13/249 Excursion O 2 lemon Tue Sep 29 21:47 15/245 Next Lecture ? |
行の先頭の ? は mailx からのプロンプトです。現在 2 個のメッセージがあります。先程転送したメール (Subject: Next Lecture) は 2 番目にあります。メッセージを読むコマンドはいくつかありますが、ここではメッセージ番号をそのまま入力する方法で実行します。
? 2 Message 2: From lemon Tue Sep 29 21:47:01 1992 To: grape Subject: Next Lecture 葡萄さん: 次回の講習会は 10月1日(木) 午後2:00開始 に変更されました。 会場は未定です。 檸檬 ? lemon% |
今度は、先程ユーザー lemon が送ったメールをユーザー grape 側から読んでみます。メールボックスに届いたメールを読むには、mailx を引数なしで起動します。メールボックスにメールが届いていると、次のように表示されます。なお、この場合も LC_CTYPE および LC_MESSAGES のロケールが、環境変数 LANG、または 環境変数 LC_CTYPE および LC_MESSAGES を介して ja または japanese に設定されているものとします。
grape% mailx mailx version ALE5.0 Mon Sep 12 11:09:29 JST コマンドの概要は ? をタイプ してください。 "/var/mail/grape": 2 個のメッセージがあります。 2 個新規。 > N 1 Y.Suzuki(Tokyo off Tue Sep 29 21:40 17/528 President's Report N 2 A.Lemon Tue Sep 29 21:47 21/513 Next Lecture ? |
到着したメッセージは日本語 EUC ではなく 7 ビット JIS コードに変換されていますが、表示されるときには自動的に日本語 EUC になります。
? 2 Message 2: From lemon Tue Sep 29 21:47 JST 1992 Date: Tue, 29 Sep 92 21:47:02 JST From: lemon (A.Lemon) To: grape Subject: Next Lecture 葡萄さん: 次回の講習会は 10月1日(木) 午後2:00開始 に変更されました。 会場は未定です。 檸檬 ? |
「メッセージの作成」の項で行なったように、変数 crt および PAGER を設定しておくと、大きなサイズのメッセージも画面上で流れることなく、ページごとに見ることができます。
mailx には、到着したメッセージを保存するためのコマンドが用意されています。s (save)、c (copy)、w (write) コマンドは、変数 folderconv が設定されていると、到着したメッセージを日本語 EUC にコード変換して保存します。save と copy は、フォルダの形式でヘッダー情報をつけて保存します。write はメッセージ本体だけを保存します。また、save を実行するとそのメッセージはメールボックスから取り除かれますが、copy の場合は保存後もメールボックスに残ります。
? save 2 folder.1 "folder.1" [新規ファイル] 22/481 |
save コマンドにより、メッセージ番号 2 のメッセージが folder.1 に保存されました。このときは日本語 EUC にコード変換されています。到着したメッセージを変換しないでそのままフォルダに保存したいときは、nsave または ncopy コマンドを利用して保存します。
? nsave 2 folder.2 "folder.2" [新規ファイル] 22/523 |
nsave コマンドにより、メッセージ番号 2 のメッセージが folder.2 にコード変換されずに保存されました。
一度読んだメールは特に明示的に保存しないと、mailx 終了時に mbox と呼ばれるフォルダ (あらかじめ設定していない場合はユーザーのホームディレクトリにある mbox) に保存されるように設定されています。この設定は mailx の変数の値と終了コマンドの種類によって変わります。mbox に保存される場合も、日本語 EUC にコード変換されてから保存されます。
? visual 2 |
v (visual) コマンドにより、到着したメッセージをテキストエディタを使って編集できます。起動されるエディタは VISUAL 変数で指定されます。デフォルトは vi です。編集するメッセージが日本語 EUC にコード変換されてから、エディタが起動します。
From lemon Tue Sep 29 21:47 JST 1992 Return-Path: <lemon> by sushi.Japan.Sun.COM (5.0/SMI-SVR4) id AA01421; Tue, 29 Sep 92 21:47:02 JST Date: Tue, 29 Sep 92 21:47:02 JST From: lemon (A.Lemon) Message-Id: <9209300939.AA01421@sushi.Japan.Sun.COM> To: grape Content-Type: text Content-Length: 112 Subject: Next Lecture X-Sun-Charset: ja_JP.euc 葡萄さん: 次回の講習会は 10月1日(木) 午後2:00開始 に変更されました。 会場は未定です。 檸檬 ‾ ‾ ‾ "/tmp/Rz8575" 18 行, 412 バイト |
実際にメッセージを変更すると、変更後は日本語 EUC でメールボックスに保存されます。
From lemon Tue Sep 29 21:47 JST 1992 Return-Path: <lemon> by sushi.Japan.Sun.COM (5.0/SMI-SVR4) id AA01421; Tue, 29 Sep 92 21:47:02 JST Date: Tue, 29 Sep 92 21:47:02 JST From: lemon (A.Lemon) Message-Id: <9209300939.AA01421@sushi.Japan.Sun.COM> To: grape Content-Type: text Content-Length: 112 Subject: Next Lecture X-Sun-Charset: ja_JP.euc **** 予定変更のお知らせ ***** 葡萄さん: 次回の講習会は 10月1日(木) 午後2:00開始 に変更されました。 会場は未定です。 檸檬 ‾ ‾ ‾ ‾ :wq |
「メッセージの読み取り」に戻り、受信したメールに返事を出してみます。
? 2 Message 2: From lemon Tue Sep 29 21:47 JST 1992 Date: Tue, 29 Sep 92 21:47:02 JST From: lemon (A.Lemon) To: grape Subject: Next Lecture 葡萄さん: 次回の講習会は 10月1日(木) 午後2:00開始 に変更されました。 会場は未定です。 檸檬 ? r To: lemon Subject: Re: Next Lecture |
r コマンドを実行すると、自動的に差出人宛てのメールを作成する状態になります。ここからは、「メッセージの作成」の項の説明に従って、‾p、‾v などを使ってメッセージを作成できます。返事の中に、現在読んでいるメッセージまたは別のメッセージを挿入したいときは、‾m または ‾f と入力します。どちらの場合も、挿入メッセージが日本語 EUC にコード変換されて挿入されます。
? r To: lemon Subject: Re: Next Meeting ‾m メッセージ挿入: 2 (つづく) |
‾m の入力時に特にメッセージ番号を指定しなかったので、現在読んでいる 2 番のメッセージが挿入されました。ここで、vi を起動して (‾v コマンドの実行) 返事を書きます。
To: lemon Subject: Re: Next Lecture From lemon Tue Sep 29 21:47 JST 1992 Date: Tue, 29 Sep 92 21:47:02 JST From: lemon (A.Lemon) To: grape Subject: Next Lecture 葡萄さん: 次回の講習会は 10月1日(木) 午後2:00開始 に変更されました。 会場は未定です。 檸檬 了解しました。 葡萄 ‾ ‾ ‾ :wq |
挿入したメッセージの各行の先頭にはタブが挿入され、段落がつけられています。この自動的に挿入される文字列は、変数 indentfix で設定します。デフォルトはタブです。文字列の段落付けは、‾f でメッセージを挿入するときには適用されません。
:wq "/tmp/Re8580" 21 行、333 バイト (つづく) . 作成終了 ? |
「メッセージの作成」の項の説明に従って作成を終了すると、メッセージは 7 ビット JIS コードに変換されて送信されます。mailx 自体の終了には、 quit、コマンド行の先頭での CTRL-D、exit などのコマンドが用意されています。quit と CTRL-D は、既読のメッセージを mbox に保存し、未読のメッセージをメールボックスに保存します。exit は、メールボックスを変更せず、メッセージを mbox に保存しないで mailx を終了します。mailx 終了時の動作は、 hold などの変数を設定してカスタマイズできます。
ここでは、comsat を利用したメール到着の通知を紹介します。まず、到着した日本語メールが正しくコード変換して表示されるように、第 4 章「日本語対応 SunOS のシステム環境設定」の 「in.comsat の設定」に従って、 inetd(1M) の構成を修正します。
次に、biff(1B) でメール受信の通知を行うように設定します。
grape% biff y |
このように設定すると、7 ビット JIS コードに変換された日本語メールが、到着時に日本語 EUC にコード変換され、画面にはじめの数行が表示されます。
New mail for grape has arrived: ---- Date: Wed, 30 Sep 92 11:56:35 GMT From: lemon (A. Lemon - Garden Company) To: grape Subject: Next Lecture 葡萄さん: 次回の講習会は ...以下省略... |