JFP ユーザーズガイド

電子メールの送受信

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: 

mailxSubject: の入力を要求してきます。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) を入力してください。その場合、1 回目の割り込みキー入力で本当に途中で中止してよいかどうか尋ねてきます。そこでもう一度割り込みキーを入力すると、作成は中止されシェルに戻ります。このとき、途中まで作成されていたメッセージの内容が、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%

メッセージの読み取り

今度は、先程送ったメールをユーザー 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 にコード変換して保存します。savecopy はフォルダの形式でヘッダ情報をつけて保存します。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-Dexit などのコマンドが用意されています。quitCTRL-D は、既読のメッセージを mbox に保存して未読のメッセージをメールボックスに保存します。exit はメールボックスを変更せず、mbox に保存することなく mailx を終了します。mailx 終了の動作は、 hold などの変数を設定してカスタマイズできます。

メール到着の通知

ここでは、comsat を利用したメール到着の通知を紹介します。まず、到着した日本語メールが正しくコード変換して表示されるように、第 4 章「日本語対応 SunOS のシステム環境設定」「日本語対応 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

葡萄さん:
次回の講習会は
...以下省略...