11    メッセージの送受信

この章では,次のコマンドのいずれか 1 つを使用して行う,ネットワーク上でのメッセージの送受信について説明します。

この章の例では,Mail ではなく mailx プログラムを使用します。 mailx を使用すると,次のようなタスクを実行することができます。

第 12 章で説明しているように,mailx を使用してファイル全体を送信することもできます。

write コマンドおよび talk コマンドは対話形式で実行されます。 この場合,受信側がログインしていなければなりません。 これらの対話式コマンドを使用する前には,第 10 章で説明している次のコマンドを使用して,ユーザやホストの名前およびアクセスが可能かどうかを確認します。

11.1    メール・メッセージのアドレス指定

mailx を使用すると,次の場所にいる 1 人または複数のユーザに対して,メッセージを送信することができます。

mailx コマンドの構文は次のとおりです。

mailx user [ @ { host domainhost.domain } ] ...

ローカル・ホスト上のユーザにメールを送信するには,mailx コマンドを入力し,各ユーザに対してパラメータ user を指定してください。 リモート・ホスト上のユーザに送信する場合は,アットマーク (@) の後に,ホストの位置を示す情報を追加しなければなりません。

たとえば,ホスト orange から同じローカル・ホスト上のユーザ smithjones にメールを送信するには,次のコマンドを入力してください。

orange% mailx smith jones
 

同じドメイン内の別のホスト pluto 上のユーザ hobbes にメールを送信するには,次のコマンドを入力してください。

orange% mailx hobbes@pluto
 

この例のユーザ hobbesplanets という別のドメインにいる場合は,次のコマンドに示すように,リモート・ネットワーク・ドメインの名前を追加します。

orange% mailx hobbes@pluto.planets
 

ドメインは,名前をピリオド (.) で区切って宛先をさらに細かく区分することがあります。 ネットワーク管理者によるネットワークの構成方法によっては,次に示すコマンドの例のように,ドメイン名だけを指定して,別のドメインにあるリモート・ホスト上のユーザのアドレスを指定することができます。

orange% mailx hobbes@planets
 

メール・メッセージのアドレス指定については,必要に応じてシステム管理者に問い合わせてください。

11.2    mailx を使用したメール・メッセージの送信

この節では,mailx を使用してローカル・ホスト上のユーザへメッセージを送信し,そのメッセージのコピーを他のユーザへ送信する方法について説明します。 例を開始するにあたって,まず,ユーザ Jones は,ローカルのシステム・プロンプト orange% から mailx コマンドを次のように入力します。

orange% mailx suzuki [Return]
 

Return キーを押すと,Subject: プロンプトが表示されます。 もう一度 Return キーを押すと,表題は空白のままになります。 この例では,ユーザ Jones は次のように,メッセージの表題を入力してから Return キーを押し,続いてメッセージを書き始めます。

Subject: Baseball question [Return]
 
Are there any Japanese baseball simulation games?
I want to compare Sadharu Oh's hitting statistics
to those of Hank Aaron.  To do this, I need to set
up a simulated baseball season having each hitter
play for one year in the other player's league.
 

次に示すように,ユーザ Jones は,空白行にピリオド (.) をタイプし,Return キーを押して,メッセージの入力を終了します。


.
.
.
play for one year in the other player's league. . [Return] Cc:  

この例では,メッセージはまだ送信されず,代わりにプロンプト Cc: (carbon copy) が表示されます。 これは,ユーザ Jones が,自分のホーム・ディレクトリにある .mailrc ファイルに set askcc を追加して,メール・セッションをカスタマイズしているためです。 メール・セッションのカスタマイズについては,11.6 節および付録 D を参照してください。

Cc: プロンプトによって,他のユーザにコピーを送信することができます。 コピーを送信しない場合には,Return キーを押して mailx を終了し,メッセージを送信してください。 すると,テキストの終端を示すメッセージ (EOT) と,その後にシステム・プロンプトが表示されます。

この例では,ユーザ Jones は,Cc: プロンプトに対して, ローカル・ユーザの cranton と,リモート・ユーザの gillis および vincep のそれぞれ適切なアドレスを指定します。 Return キーを押して mailx を終了し,メッセージを送信すると,コピーが送信されます。


.
.
.
Cc: cranton gillis@strato vincep@mlb.bbs.com [Return] EOT orange%  

mailx プログラムは,アドレス指定エラーから回復することができます。 たとえば,ローカル・ホスト上の受信者が cranton である場合に, 間違って crantom とタイプしたとすると,次のメッセージがすぐに画面に表示されます。

crantom... User unknown
 

メッセージはユーザに送り返されます。 ユーザはそれを保存して,正しい宛先に送信し直すことができます。

リモート・ホスト上の未知のユーザにメッセージを送信すると,mailx がそれをユーザに送り返すまでに最長で 3 日間かかることがあります。 送り返されたメッセージの保存と再送信の方法については,11.3.3.1 項を参照してください。

11.2.1    メッセージの編集

メール・メッセージを送信する前に編集するには,Subject: プロンプトに応答した後,次のエスケープ・コマンドのうちのいずれか 1 つを入力して,mailx 内でエディタを起動します。

~e コマンドを使用して, mailx 内でテキスト・エディタを起動するには,新しい行の先頭に ~e を入力してください。 チルダ (~) が表示されるまでは数回入力する必要があるかもしれません。 たとえば次のようになります。

Subject: network documentation meeting at 2 PM
Everyone, please bring the Table of Contents
for your manual so that we can look for areas
of overlapping subject matter and
~e
 

ユーザの .mailrc ファイルに set EDITOR=/usr/ucb/vi が記述されている場合,ユーザは vi エディタを使用して,最初の行の綴りの間違いを訂正して,メッセージを書き終えることができます。 編集セッションを終了すると,mailx に戻ります。 ユーザは,メッセージを書き終わって mailx を終了するか,または,vi を再び呼び出して,メッセージを書き続けることができます。

11.2.2    メッセージの打ち切り

メッセージの送信を中断することがあります。 メッセージを送信する前に打ち切る方法には 2 通りあります。

11.2.2.1    Ctrl/C を使用したメッセージの打ち切り

ユーザは,メッセージ内の任意の場所で Ctrl/C を 2 回押して,メール・メッセージを打ち切ることができます。 Ctrl/C を 1 回押すと,次のメッセージが表示されます。

(Interrupt -- one more to kill letter)
 

この時点で,メッセージを打ち切るかどうかをもう一度検討することができます。 打ち切らない場合は,続けてテキストを入力してください。 メッセージを打ち切る場合は,もう一度 Ctrl/C を押します。 すると,次のメッセージが表示されます。

(Last Interrupt -- letter saved in dead.letter)
 

これでメッセージは打ち切られ,mailx を終了して,システム・プロンプトが表示されます。

省略時の設定では,打ち切られたメッセージは,ユーザのホーム・ディレクトリの dead.letter ファイルに保存されます。 打ち切られたメッセージを保存しない場合は,set nosave をユーザの .mailrc ファイルに入力します。 詳細については,11.6 節および付録 D を参照してください。

dead.letter ファイルには最後に打ち切られたメッセージだけが保存されます。 メール・メッセージに打ち切られたメッセージを取り込むと,編集や再送信ができます。 メッセージにファイルを取り込む方法についての詳細は,11.2.3 項を参照してください。

次に,Ctrl/C を押してメール・メッセージを打ち切る例を示します。

orange% mailx sally
Subject: Update to reference page files
What should the mailx(1) reference page include
about sending to remote users?[Ctrl/C]
(Interrupt -- one more to kill letter)
[Ctrl/c]
(Last Interrupt -- letter saved in dead.letter)
orange% 
 

11.2.2.2    エスケープ・コマンドによるメッセージの打ち切り

空白行に ~q または ~x のエスケープ・コマンドを入力することによって,メール・メッセージを打ち切ることができます。 Ctrl/C を押してメッセージを打ち切る方法とは異なり,このコマンドでは,再考するためのプロンプトは表示されず,直ちにメッセージを打ち切ります。 ~q エスケープ・コマンドは,打ち切られたテキストをユーザのホーム・ディレクトリの dead.letter ファイルに保存しますが, ~x は,.mailrc ファイルに set save と設定していても,保存しません。

次の例は,~x エスケープ・コマンドを使用して,メール・メッセージを打ち切る方法を示しています。

orange% mailx sally
Subject: Update to reference page files
What should the mailx(1) reference page include
~x
orange% 
 

チルダ (~) が表示されるまでに数回入力する必要があるかもしれません。

11.2.3    メッセージへのファイルの取り込み

メール・メッセージ内に,任意のファイル (未変換のバイナリ・ファイルは除く) を取り込むことができます。 アドレスの指定を誤って返却されたメールを保存して再送信 (11.3.3.1 項参照) する場合や, ユーザのホーム・ディレクトリの dead.letter ファイルに保存している打ち切られたメッセージを編集して再送信する場合に,この方法が使用されます。

前述の例では,dead.letter ファイルには次のテキストが含まれています。

What should the mailx(1) reference page include
about sending to remote users?
 

追加情報を加えた後,このファイルをユーザ sally に再送信すると仮定します。 mailx 内では,~d エスケープ・コマンドを使用すると,現在の作業ディレクトリに関係なく,dead.letter のテキストがメール・メッセージに自動的に追加されます。

例 11-1 では,ユーザ sally へのメッセージを開始してから,~d コマンドによって dead.letter のテキストを追加します。

例 11-1:  dead.letter ファイルへの取り込み

orange% mailx sally
Subject: the mailx(1) reference page
The uucp(1) reference page has formatting
information for sending to remote users.
~d
"/usr/staff/r2/sally/dead.letter" 2/76
 

ファイルを取り込むと,完全パス名とともに,そのファイルの行数 (2) および文字数 (76) (Return キーまたは各行末の制御文字を含む) が表示されます。 この後,終了することも,続けてメッセージを書き込むこともできますが,~p エスケープ・コマンドで表示されないインクルード・ファイルの内容を参照したり,テキスト・エディタを使用してインクルード・ファイルの内容を変更したりすることもできます (たとえば,vi を使用したい場合は ~v と入力します)。

注意

dead.letter ファイルには,最後に打ち切られたメール・メッセージだけが保存されます。 送信したいテキストが含まれていることを確認しなければなりません。

メール・メッセージにファイル (dead.letter を含む) を取り込むには,~<,または ~r のいずれかのエスケープ・コマンドを指定してから,ファイル名を入力してください。 この 2 つのコマンドはどちらも同様に動作します。 ファイルのディレクトリが,mailx を入力したディレクトリと異なる場合には,ファイル名の前に完全パス名または現在のディレクトリに対する相対パス名を指定しなければなりません。

次の 例 11-2 では,~< エスケープ・コマンドを使用して,現在の作業ディレクトリの下の environ ディレクトリから,strato_prob というファイルを挿入します。

例 11-2:  mailx コマンドを使ったファイルの取り込み

orange% mailx sally
Subject: Dan, here's the stratosphere data file
~< environ/strato_prob
"environ/strato_prob" 41/1309
 

mailx ユーティリティによって,対話形式を使用しないでファイルを転送する方法については,12.1.3 項を参照してください。

11.3    メール・メッセージの受信

メール・メッセージを受信する場合には,次のいずれかを選択できます。

ユーザがログインしたとき,オペレーティング・システムのコマンドを入力したとき,または Return キーを押したときに,新しいメールが到着していれば,mailx プログラムはそれを通知します。 また,システム・プロンプトから mailx コマンドを入力して,新しいメールが到着しているかどうかを調べることもできます。

例 11-3 では,ホスト orange のユーザ Jones が mailx を入力して,2 件のメッセージが到着していることを確認します。

例 11-3:  mailx 環境に入る

orange% mailx
Mail $Revision: 1.1.6.4 $  Type ? for help.
"/usr/spool/mail/jones": 2 messages 1 new 1 unread
 U  1 root            Mon Jul 20 10:39 14/438   "System news"
>N  2 root            Mon Jul 20 11:30 11/292   "Welcome"
?
 

この例では,システム管理者 (root) からの 2 件のメッセージが到着しています。 1 件は,以前の mailx のセッションから未読のメッセージ (1 カラム目に U と示される) であり,もう 1 件は,新しく到着したメッセージです (N で示される)。 メッセージの最後に表示される疑問符 (?) は,mailx のプロンプトです。 この表示のヘッダおよび 11.4 節 で説明するように,このプロンプトからもう 1 つ疑問符を入力すると,使用可能な mailx のコマンドのリストを表示することができます。

mailx プロンプトで Return キーを押すと,未読のメッセージ・リストに (>) で示されている,メッセージ 2 を読むことができます。 たとえば,例 11-4 のように実行できます。

例 11-4:  mailx プロンプトでのメッセージ開封

? [Return]
Message  2:
From root Wed Aug  4 11:17:36 1999
Date: Wed,  4 Aug 1999 11:17:29 -0400
From: root (system administrator)
To: jones
Subject: Welcome
 
Welcome to the company computer network.  I'm the
person who manages this system.  If you have
questions or problems, send mail to root.  You
can also send mail to manager or admin; messages
will be forwarded to me.
 
I will be on vacation for the next two weeks after
this week... starting Monday, August 10.  I'll be
stdin[Space]
back on Monday, August 24.
? 
 

例 11-4 では, PAGER 変数が more (省略時の設定) に設定されているため,stdin が表示されています。 PAGER 変数が pg に設定されている場合には,何も表示されません。 また,上記の例では,ユーザ Jones が set crt=15.mailrc ファイルに追加して,mailx 環境をカスタマイズしているため, stdin はメッセージを 15 行表示した後に表示されます。 .mailrc ファイルの set crt= は, ページャ (pg または more) を呼び出す前に,残りのメッセージの 1 回に表示する行数を指定します。 例に示すように,メッセージが 15 行を超える場合,set crt は,15 行を表示した後にページャを呼び出すよう mailx に指示します。 スペース・バーを押すと,次の 15 行が表示されます。 set crt= を使用して,自分の mailx 環境をカスタマイズするようにしてください。 カスタマイズしない場合には,長いメール・メッセージが高速でスクロールするため,Hold Screen キーをすばやく押さなければなりません。 mailx をカスタマイズする方法についての詳細は,11.6.2 項および付録 D を参照してください。

他のメッセージを読むには,mailx プロンプトに対してメッセージ番号を入力してください。 メッセージのリストを再び表示するには, mailx プロンプトで h を入力します。 例 11-5 では,ユーザ Jones は,h コマンドを使用してメール・メッセージのリストを表示します。 最初のメッセージが未読であることを確認すると,? プロンプトから 1 を入力してそれを読みます。

例 11-5:  mailx プロンプトでの他のメッセージの開封

? h
 U  1 root   Mon Jul 20 10:39 14/438   "System news"
>   2 root   Mon Jul 20 11:30 11/292   "Welcome"
? 1
Message  1:
From root Mon Jul 20 11:30:07 1999
Date: Mon, 20 Jul 1999 11:30:04 -0400
From: root (system administrator)
To: jones
Subject: System news
 
The newest release of the text processing
software will be installed after 5 o'clock
today.  Send mail if you have questions or
concerns before or after the installation.
 
? 
 

ユーザが現在読んでいるメッセージを現在のメッセージと呼びます。 再読するには,Return キーを押してください。 次のメッセージを読むには,n を押します。 すると,このメッセージが現在のメッセージになります。 すべてのメッセージを連続して読む場合は,各メッセージを読み終えるごとに n を押します。 これは,付録 D で説明しているように, gonext 変数を修正することによって変更することができます。

11.3.1    メッセージの削除

ファイルまたはフォルダに格納する前後にユーザが削除しない限り,メッセージは mailx に保存されています。 現在のメッセージを読後に削除するには,mailx プロンプトに対して d を入力してください。 別のメッセージを削除する場合は,mailx プロンプトで,d コマンドの後にメッセージ番号を入力してください。 d コマンドの後にメッセージ番号を並べて入力すると,複数のメッセージを一度に削除することができます。 たとえば,メッセージ 7 および 9 を削除するには,mailx プロンプトで次のコマンドを入力してください。

? d 7 9
 

ある範囲のメッセージを削除するには,削除する最初のメッセージの番号と最後のメッセージの番号の間にハイフンを使用して指定します。 たとえば,メッセージ 7 から 11 までを削除する場合は,mailx プロンプトで次のコマンドを入力してください。

? d 7-11
 

メッセージを誤って削除した場合は,u (undelete) コマンドを使用すると,そのメッセージを回復することができます。 たとえば,メッセージ 7 を回復するには,mailx プロンプトから次のコマンドを入力してください。

? u 7
 

x の代わりに,q または quit を入力して mailx を終了した場合,すでに読んだメッセージで削除していないものは,ホーム・ディレクトリにある,それまでに削除していないメッセージを保存するための mbox というファイルの最後に追加されます。

11.3.2    メッセージへの応答

メール・メッセージへの応答は,メール・メッセージへの送信と同様に実行できます。 11.2 節で説明しているように,メッセージの編集,打ち切り,メッセージへのファイルの取り込みを同様に選択できます。

メッセージを読んですぐに送信者に応答する場合は,例 11-6 のように,メール・プロンプトから大文字の R (reply) コマンドを入力してください。

例 11-6:  メール・メッセージへの応答

Message 3:
From deedee Mon Jul 20 14:13:32 1999
Date: Mon, 20 Jul 1999 14:13:05 -0400
From: deedee (DeeDee Smith)
To: jones, mays@sf24.usernet, susannah@artwrk
Subject: Testing text-processing software
 
I think we should test the new text processing
software on the older machines as well as the
newer.  Remember that many customers still have
the older models.
 
? R
To: deedee
Subject: Re:  Testing text-processing software
I agree.  Also, we should test different machine
configurations to determine if, for example,
it performs satisfactorily when run remotely.
.
EOT
?
 

R を入力すると,受信者および表題が表示されて,受信者を確認することができます。

小文字の r を入力すると,元のメールの送信者のほかに受信者にも応答が送信されます。 例 11-6 では,deedee に応答が送信されるとき,mays@sf24.usernet および susannah@artwrk にも送信されます。

注意

メール・メッセージの送信者にだけ応答する場合は,メール・プロンプトで大文字の R を入力してください。 メール・メッセージの送信者とすべての受信者に応答する場合は,プロンプトで小文字の r を入力してください。

例 11-6 では,ユーザ Jones.mailrc ファイルに set askcc コマンドが記述されていないため,Cc: プロンプトは表示されません。

11.3.3    メッセージの保存

x または exit コマンドではなく, q コマンドを入力して mailx を終了する場合,読み終わったファイルは,ユーザのホーム・ディレクトリにある mbox ファイルに保存されます。

もっと有効な方法でメール・メッセージを格納するためには,以下の項で説明するように,個別に名前を付けたファイルやフォルダにそれらのメッセージを保存することができます。

11.3.3.1    ファイルへのメッセージの保存

ファイルに保存するメールには次のような種類のものがあります。

ユーザが読む短いメッセージ,または mailx によって返送されたメール・メッセージを保存する場合は,mailx プロンプトで s コマンドを入力して,ファイル名を指定してください。

次の例では,mailx コマンドによる出力の 2 番目の項目に,返送されたメッセージが表示されています。

orange% mailx
Mail $Revision: 1.1.6.4 $  Type ? for help.
"/usr/spool/mail/jones": 2 messages 1 new 1 unread
 U  1 root    Mon Jul 20 10:39 14/438   "System news"
>N  2 MAILER-DAEMON Wed Aug  5 09:39  19/498 "Returned mail: User unknown"
?
 

次の例で示すように,ユーザ Jones は,この例の返送されたメッセージを verify-resend というファイルに保存して,再送信する前に正しいアドレスを確認することを覚えておくようにします。


.
.
.
>N 2 MAILER-DAEMON Wed Aug 5 09:39 19/498 "Returned mail: User unknown" ? s verify-resend  

ファイル verify-resend は,明示的にパス名を指定しない限り,現在のディレクトリに保存されます。 たとえば,ユーザ Jones は,次のようにコマンドを入力すると,サブディレクトリ fix-later に,このファイルを保存することもできます。

? s fix-later/verify-resend
 

長いメッセージの場合に,オンラインでテキスト全部を読まずに保存するには,Ctrl/C を押してメッセージのスクロールを中断し,mailx プロンプトを表示させます。 この時点でメッセージを保存 (または削除) することができます。 次の例では,ユーザ Jones は,20 ページのレポートからなるメッセージ 1 を受信します。 Ctrl/C を押して mailx プロンプトを表示させ,ファイルを保存するためのコマンドを入力します。

? 1
Message  1:
From smith Wed Aug  5 16:43:42 1999
Date: Wed, 5 Aug 1999 16:43:41 -0400
From: smith (Cassandra Smith)
To: jones
Subject: 20-page report: host configuration results
 
Mortimer,
 
Here's the report on host configuration that the
[Ctrl/C]
Interrupt
?s sys-config-report
"sys-config-report" [New file] 2147/48353
?dp
   
.
.
.

前の例では,ファイルを作成した後,ユーザ Jones は,mailx プロンプトで dp (delete-proceed: 削除して続行) を入力して,この 20 ページの大きなファイルが mbox に保存されないようにし, 次のメール・メッセージの読み込みを開始します。 mailx コマンドの d (delete) を入力してから Return キーを押しても,同様の処理を行うことができます。

11.3.3.2    フォルダへのメッセージの保存

メッセージを参照情報で分類して,mbox ファイル (それ自身がフォルダ) のサイズを最小限にするには,フォルダと呼ばれるファイルにメッセージを保存します。 mbox 以外のフォルダを使用する前には,ユーザのホーム・ディレクトリにフォルダのサブディレクトリを作成し,.mailrc ファイルにフォルダへのポインタを追加する必要があります。 たとえば,ホーム・ディレクトリに sys-config というディレクトリを作成する場合は,set folder=sys-config という行をユーザの .mailrc ファイルに追加しなければなりません。

フォルダにメッセージを追加するには,mailx コマンド s の後にフォルダ名を指定してください。 たとえば,ホスト構成についてのメッセージをそのトピックに関する他のメッセージと一緒に保存するには,次の例のように,sys-config というフォルダにそのメッセージを書き込みます。

Message 7:
From smith Thu Aug  6 09:32:09 1999
Date: Thu, 6 Aug 1999 09:32:08 -0400
From: smith (Cassandra Smith)
To: jones
Subject: host configuration testing
 
According to the report that each LAN ...
? s sys-config
"sys-config [New file] 11/235
 

フォルダに最初のメッセージを保存すると,mailx はそのメッセージを格納して,New file というメッセージを表示します。 そのフォルダにさらに別のメッセージを保存すると,mailx はそれをファイルの最後に追加して,Appended というメッセージを表示します。

mbox 以外のフォルダに保存されたメッセージを読むには,次の 2 通りの方法があります。

フォルダを切り替える場合には,mailx は,クローズするフォルダに対して変更を加えてから,新しいフォルダをオープンします。

引数を指定しないで folder コマンドを使用すると,現在使用しているフォルダを確認することができます。 たとえば次のようになります。

? folder
"sys-config": 17 messages
 

11.3.4    メッセージの転送

例 11-7 は,mailxm コマンドと ~f エスケープ・コマンドを使用して,サブジェクト行とコメントを含めてメッセージ番号 3 のメッセージをユーザ deedee に転送する例です。

例 11-7:  Forwarding a Message

? m deedee [1]
Subject: forwarding a message [2]
I received this note from Gary.  Do you agree? [3]
~f 3 [4]
Interpolating: 3 [5]
(continue)
~p [6]
-------
Message contains:
To: deedee
Subject: forwarding a message
 
I received this note from Gary.  Do you agree?
 
From gary Wed Mar  4 16:10:48 1999
Date: Wed, 4 Mar 1999 16:10:48 -0500
From: To: csug@myhost.mydomain
Subject: Forwarding
Cc: smith
I think forwarding should be tomorrow's topic.
 
Gary
(continue)
.
EOT

  1. m コマンドでメッセージの作成を開始します。 [例に戻る]

  2. 新しいメッセージの件名を入力します。 [例に戻る]

  3. 新しいテキストを入力します。 [例に戻る]

  4. mailx~f エスケープ・コマンドでメッセージ番号 3 のメッセージを転送します。 [例に戻る]

  5. mailx コマンドは,メッセージの読み取り中であることを示し,その後,入力の受け付けが可能になるとプロンプトを表示します。 [例に戻る]

  6. 転送するメッセージが正しく取り込まれていることを確認する場合は ~p エスケープ・コマンドを使用します。 [例に戻る]

この例に示すように,~f および ~p コマンドを入力した後,書き込みを続けるか,または,メッセージを終了することができます。 現在のメッセージを転送する場合は,~f の後に番号を入力しないでください。

11.4    mailx からのヘルプ情報の参照

mailx を起動したときにメッセージが到着している場合は,次の行がヘッダの先頭に表示されます。

Mail $Revision: 1.1.6.4 $  Type ? for help.
 

これは,mailx プロンプトで疑問符 (?) をタイプすると,例 11-8 に示すように,使用できる mailx コマンドの簡単な説明が表示されることを,ユーザに知らせるためのものです。

例 11-8:  mailx の help コマンドからの出力

? ?
Control Commands:
   q            Quit - apply mailbox commands entered this session.
   x            Quit - restore mailbox to original state.
   ! <cmd>      Start a shell, run <cmd> and return to mailbox.
   cd [<dir>]   Change directory to <dir> or $HOME.
Display Commands:
   t [<msg_list>]  Display messages in <msg_list> or current message.
   n               Display next message.
   f [<msg_list>]  Display headings of messages.
   h [<num>]       Display headings of group containing message <num>.
Message Handling:
   e [<num>]        Edit message <num> (default editor is e).
   d [<msg_list>]   Delete messages in <msg_list> or current message.
   u [<msg_list>]   Recall deleted messages.
   s [<msg_list>] <file>   Append messages (with headings) to <file>.
   w [<msg_list>] <file>   Append messages (text only) to <file>.
   pre [<msg_list>] Keep messages in system mailbox.
Creating New Mail:
   m <addrlist>    Create/send new message to addresses in <addrlist>.
   r [<msg_list>]  Send reply to senders and recipients of messages.
   R [<msg_list>]  Send reply only to senders of messages.
   a               Display list of aliases and their addresses.
============================ Mailbox Commands ==========================
 

11.5    メールの終了

mailx の終了に使用できるコマンドは,3 つあります。

11.6    メール・セッションのカスタマイズ

新規ユーザのアカウントを設定するとき,システム管理者は,mailx の省略時の設定を /usr/share/lib/Mail.rc ファイルに定義します。 オペレーティング・システムで提供されるファイルには,次のような mailx の設定が含まれていますが,ユーザはこれを変更することができます。

ユーザは,ホーム・ディレクトリの .mailrc ファイルに,別名を定義したり変数を設定することにより,mailx セッションをカスタマイズすることができます。 次の 例 11-9 では,.mailrc ファイルの例を示します。

例 11-9:  .mailrc ファイルの例

alias sue susannah
alias wombats tom, jeff, craig, jim, ken
set ask
set askcc
set prompt=>
unset dot
set record=/usr/users/hale/outgoing
set folder=folder
set crt=20
 

11.6.1    メールの別名の作成

mailxalias コマンドを使用して,ユーザまたはユーザ・グループの代替名を作成できます。

注意

mailxalias は,シェルが使用する alias コマンドとは別のコマンドです。 シェルの alias コマンドでメール・コマンドを変更することはできません。

継続的に使用するメールの別名を定義するには,.mailrc ファイルに alias コマンドを記述して,別名と 1 つまたは複数のログイン名を指定します。 次の .mailrc ファイルでは,2 つの別名が定義されています。

alias sue susannah
alias wombats tom, jeff, craig, jim, ken
 

最初の別名は,sue という名前がユーザ susannah を意味するように定義されています。 これによって,ユーザは,sue という名前を使用して,susannah にメールを送信することができます。 2 番目の別名は,メッセージを wombats にアドレス指定することによって, Wombats というチームのメンバである tomjeffcraigjim,および ken にメールを送信することができます。 この行を別の方法で .mailrc ファイルに記述すると,次のようになります。

alias wombats tom,\
                 jeff,\
                 craig,\
                 jim,\
                 ken
 

バックスラッシュ (\) を使用すると,1 つの長いコマンドを複数行に入力することができます。

mailx セッションで,引数を指定しないで alias を使用すると,定義されている別名を確認することができます。 また,その mailx セッションのみで有効な一時的な別名を,mailx プロンプトから定義することもできます。

11.6.2    メール変数の設定

メール変数は,ユーザの .login ファイルに設定されている変数と同様です。 バイナリ,文字列,または数字のいずれかになります。

.mailrc ファイルにバイナリのメール変数を設定するには,set コマンドの後にオプション名を指定して入力してください。 サンプルの .mailrc ファイルには,次のバイナリ変数が含まれています。

set ask
set askcc
unset dot
 

文字列のメール変数は,文字または数を値として受け入れます。 サンプルの .mailrc ファイルには,次の 3 つの文字列変数があります。

set folder=folder
set record=/usr/users/hale/folder/outgoing
set crt=20
 

11.7    MH プログラム

mailx プログラムの代わりとして,MH (メッセージ・ハンドラ) プログラムがあります。 MH プログラムは,シェル・プロンプトから実行したいコマンドを入力して使用する,小さなメール処理プログラムの集まりです。

MH プログラムはオプションであるため,ユーザのホストにインストールされていないこともあります。 MH が利用できるかどうかを確認するには,/usr/bin/mh ディレクトリを検索してください。

MH を使用するには,.cshrc ファイルまたは .login ファイルの set path 行を編集して,パスに /usr/bin/mh ディレクトリを追加しなければなりません。 その後,ログアウトして再びログインするか,または次のコマンド (C シェルの場合) を入力することにより,シェルにパスの変更を通知します。

orange% source .login
 

パスが .cshrc に設定されている場合は,このコマンドで,.login ではなく .cshrc を使用してください。

Bourne,Korn,または POSIX シェルのいずれかを使用している場合には,この情報を .profile ファイルに追加し,次のコマンドを入力することによってシェルに通知します。

orange$ . .profile
 

MHプログラムを使用すると,フォルダは,mailx のフォルダとは異なる編成になります。 新たに届いたメールや未読のメールは,inbox と呼ばれるフォルダに保存されますが,ここには,ユーザが inc コマンドを使用して,システムのメールボックスに届くメールを移動します。 新しいメールの挿入は,毎回 inc コマンドを入力して行わなければなりません。

フォルダの選択は folder コマンドで行います。 フォルダ名を指定せずにこのコマンドを入力すると,folder は現在選択されているフォルダを表示します。

folder コマンドにオプション -all を指定すると,フォルダのリストおよびそれぞれのフォルダ内にあるメッセージ数を表示します。

showprev,および next コマンドを使用すると,それぞれ現在のフォルダの,現在のメッセージ,前のメッセージ,および次のメッセージを読むことができます。 show コマンドの後にメッセージ番号を指定すると,そのメッセージが現在のメッセージになります。 たとえば次のようになります。

orange% show 7
Message 7:
From deedee Mon Jul 23 10:02:10 1999
Date: Mon, 23 Jul 1999 10:01:25 edt
To: hale
Subject: Cafeteria hours
Cc:
Status: R
 
I'm sorry you didn't ask that sooner.  The cafeteria
closes its breakfast service at 10.  Lunch starts
at 11:30.
 

rmm コマンドは,現在のフォルダからメッセージを削除します。 引数を指定しないで rmm コマンドを使用すると,現在のメッセージを削除します。 1 つまたは複数のメッセージ番号を指定すると,指定されたメッセージが削除されます。 たとえば,メッセージ 25,および 7 を削除する場合は,次のコマンドを入力してください。

orange% rmm 2 5 7
 

表 11-1 に,ほとんどのMHコマンドをリストにします。 完全なリストは, mh(1) リファレンス・ページを参照してください。 各 MH コマンドの詳細については,それぞれのコマンドのリファレンス・ページを参照してください。

表 11-1:  MHプログラムのコマンド

コマンド 説明
ali 指定された別名のファイルを検索して,別名に対応するアドレスを表示する。
anno メッセージに注釈を付けて,メッセージの配信,転送,および応答を記録する。
burst 転送されたメッセージから元のメッセージを取り出し,転送ヘッダを破棄して,元のメッセージを現在のフォルダの最後に追加する。
comp 新規にメール・メッセージを作成して,テンプレートを提供し,エディタを起動してメッセージを完成できるようにする。
dist 現在のメッセージを,元の配信リストにないアドレスに再配信する。
folder フォルダを選択するか,または現在のフォルダを表示する。
folders すべてのフォルダと,各フォルダに含まれるメッセージの数をリストする。
forw 元のアドレス指定にはなかった受信者にメッセージを転送する。 メッセージはカプセル化され (Forwarded Message の通知を含む),ヘッダが追加される。
inc システム・メールボックスのメールを,ユーザの inbox フォルダに挿入する。
mark 現在のフォルダにある一連のメッセージに名前を付ける。 こうしておくと,pick コマンドを使用して,この方法でマークしたメッセージを選択できる。
mhl フォーマットされた MH メッセージをリストする。 more コマンドの代わりに,メッセージの表示に使用できる。
mhmail 指定されたユーザにメールを送信する。 ユーザを指定しない場合,mhmail は,inc コマンドと同じ動作をする。
msgchk システム・メールボックスや,新しく到着するメールを受信するファイルをユーザに代わってチェックして,新しいメッセージを検索する。 新しいメッセージが届いている場合,msgchk はそれを通知する。
next 現在のフォルダまたは指定されたフォルダの,次のメッセージを表示する。
packf フォルダを単一のファイルに圧縮する (各メッセージは通常,個別のファイルとして保存される)。 packf コマンドを pack コマンドと混同してはならない。
pick 内容,シーケンス名,または他の基準に基づいてメッセージを選択する。
prev 現在のフォルダの,前のメッセージを表示する。
prompter メッセージ作成用の簡易エディタを呼び出す。 prompter コマンドは,compdistforw,および repl によって呼び出されるため,prompter を直接呼び出す必要はない。
rcvstore 標準入力からのメッセージを直接フォルダに挿入する。
refile 現在のフォルダから,1 つまたは複数のフォルダにメッセージを移動する。
repl 現在のメッセージまたは指定するメッセージに応答する。
rmf フォルダ内のすべてのメッセージを削除した後,フォルダ自身も削除する。
rmm フォルダからメッセージを削除する。 メッセージ・ファイルは実際には消去されない。 代わりに,rmm は,ファイル名の先頭に番号記号 ( # ) を付加することによってファイル名を変更する。 ほとんどのホストでは,名前が番号記号で始まるファイルは,1 日に 1 度自動的に削除される。 実際に削除されるまでは,mv コマンドを使用してファイル名を変更することにより,削除されたメッセージを回復することができる。
scan フォルダ内のメッセージのリストを表示する。
send compprompter,またはその他のエディタを使用して作成したメッセージを送信する。
show メッセージの内容を表示する。
sortm フォルダ内のメッセージを,メッセージ・ヘッダの Date: フィールドに基づいて,時間順にソートする。
whatnow 作成したばかりのメッセージの処理方法を指定するように求める。 ユーザは,応答する元のメッセージを再度調べたり,新しいメッセージの編集を再開したり,または,メッセージの送信に関連する他のタスクを実行することができる。
whom メッセージのヘッダをアドレスにまで拡張し,オプションとしてメッセージがそれらのアドレスに送信されたかどうかを検査する。

次の例は,MH の msgchk コマンドによる新規メッセージの報告を示しています。

orange% msgchk
You have new mail waiting, last read on date
 

ユーザの最上位ディレクトリに .mh_profile ファイルを作成して,MH の機能を変更することができます。 MH リファレンス・ページに,ユーザが変更できる機能についての説明があります。

11.8    write を使用したメッセージの送受信

write コマンドを使用すると,同一または異なるホスト上の 2 人のユーザが,ビデオ表示端末,またはメッセージを紙に印刷する方式のビデオ以外のデバイス (テレタイプライタなど) 上での通信が可能になります。

write コマンドでは,電話による通信が不可能な相手にメッセージを送ることができます。 特に,応答を必要としない場合に便利です。 11.9 節で説明する talk コマンドも参照してください。

write コマンドは受信者の端末画面にメッセージを表示します。 ユーザは,ホーム・ディレクトリの .login ファイルに mesg n コマンドを入力すると,write および talk を介して通信できないようにすることができます。 スーパユーザ特権を持つユーザからのメッセージは,着信不能にすることはできません。

ローカル・ホストのユーザが write および talk コマンドからのメッセージの受信を不能にしているかどうかを確認するには,finger コマンドを使用します。 出力結果の最初の行に messages off 句が表示されているかどうかを調べてください。 次に例を示します。

Login name: smith   (messages off)  In real life: John Smith

.
.
.

リモート・ホストのユーザでは,write および talk が使用不能の場合,出力行の TTY フィールドにアスタリスク (*) が表示されます。 次に例を示します。


.
.
.
Login Name TTY Idle When Office chang Peter Chang *p1 2:58 Thu 10:16 103  

詳細は10.2.2 項および finger(1) リファレンス・ページを参照してください。

送信しようとしている相手が,干渉を防ぐために,一時的に write コマンドを使用不能にするコマンドを実行していることがあります。 その場合,送信者は,受信者が明示的に write を無効にしている場合と同様,次のようなメッセージを受け取ります。

Write: Permission denied
 

これは,受信者が明示的に write を使用不能にした場合と同じです。

write コマンドは,受信者がログインしている場合にだけ使用できます。 10.1 節で説明しているように,who コマンドを使用して現在のユーザをリストします。 たとえば,ユーザ smith がログインしていないときに,write を使用してメッセージを送信すると,次のようなメッセージがユーザの端末画面に表示されます。

smith is not logged on
 

次の手順は,ユーザ wang とユーザ chung がともにローカル・ホスト dancer にログインしている場合に,ユーザ wang がユーザ chung にメッセージを送信する方法を示しています。

  1. ユーザ wang は,システム・プロンプトから write コマンドを入力する。

    dancer% write chung
     
    

    write プログラムはベルを鳴らし,次のメッセージを chung の端末画面に送信します。

    message from wang tty04 Feb 14 10:32:45
     
    

    接続が確立されると,ユーザ wang の端末のベルが鳴ります。

  2. ユーザ wang はメッセージをタイプする。

    各行ごとに Return キーを押し,Ctrl/D を押してメッセージを終了します。 たとえば,wang は,ユーザ chung に,次のような 2 行のメッセージを送信します。

    The double-sided lab printer is working. [Return]
    Re-send your job and I'll check it. [Return]
    [Ctrl/D]
     
    

  3. wang が Ctrl/D を押す。

    ユーザ chung の画面に EOF (ファイルの終端) シグナルが表示されて,メッセージの終わりを知らせます。

注意

Ctrl/D で受信者の画面に end-of-file (EOF) シグナルが表示されない場合,または,送信者の端末でベルが鳴らない場合は,システム管理者に問い合わせてください。

新しいメッセージ行の先頭で感嘆符 (!) を使用すると,シェル・プロンプトにアクセスして,任意のオペレーティング・システムのコマンド (write コマンドを含む) を実行することができます。 たとえば,wang が,chung に現在のディレクトリからファイルを検索するように指示しなければならない場合に, 現在のディレクトリ名を忘れてしまっても,次のように !pwd コマンドを入力して,調べることができます。

dancer% write chung
You can copy the network user files from: [Return]
!pwd [Return]
/ufs/usr/staff/r0/net-dir/network_comm
!
/ufs/usr/staff/r0/net-dir/network_comm
[Ctrl/D]
dancer% 
 

write コマンドは対話式で使用できますが,メッセージの送信者および受信者ともに,いつ相手のメッセージが終了して,応答を待っているかどうかを判断するのは容易ではありません。 たとえば,wang が次のコマンドを入力したとします。

dancer% write chung
 

Wang は,この時点で chung の応答を待ちますが,chung も,wang が引き続きメッセージを送信すると思って待つかもしれません。

問題を最小限に抑えるために,write を対話式で使用するときは,簡潔で一時的なプロトコルを決めるとよいでしょう。 たとえば,ユーザ wang は,chung に送信するメッセージを次のように始めます。

dancer% write chung
I'll mark the end of each message with 'ZZZ' [Return]
and wait for a reply.  Please do the same. [Return]
I'll install a driver for the new printer. [Return]
Do you want to test it?  ZZZ [Return]
 

詳細は, write(1) リファレンス・ページを参照してください。

11.9    talk を使用したメッセージの送受信

talk コマンドを使用すると,同一のホストまたはリモート・ホスト上の別のユーザに,対話式で,write を使用するよりも容易に,メッセージを送信することができます。 ただし,talk は,ビデオ表示端末だけで使用できます。

write コマンド同様,talk を使用して,電話で連絡できない相手にメッセージを送信することができます。 また,write コマンドと同様に,talk コマンドは,メッセージを直接端末に送信して,応答が入力されるまで送信を続行するため,受信者の作業を中断させる場合があります。

talk (および,前述のように write) からのメッセージ (スーパユーザ特権を持つユーザからのメッセージを除く) の受信を不能にするには, .login ファイルに mesg n コマンドを入力します。 受信者がこれを実行しているかどうかを確認するには,10.2.1 項または finger(1) リファレンス・ページで説明しているように, finger コマンドを使用してください。

オンラインの talk セッション時には,送信ウィンドウおよび受信ウィンドウが各ユーザの端末でオープンされます。 talk が受信ウィンドウに他のユーザがタイプしている内容を表示する間に,ユーザは送信ウィンドウにタイプすることができます。

たとえば,同じローカル・ホスト apple 上のユーザ hoover にメッセージを送信するには,ユーザ coolidge は,次の talk コマンドを入力します。

apple% talk hoover
 

すると,プログラムは,coolidge の端末画面を二分割して,上半分を coolidge に,下半分を hoover にそれぞれ割り当てます。

その後,次のメッセージが画面の最上部に表示されます。

[No connection yet]
 

接続が確立すると,次のメッセージが表示されます。

[Waiting for your party to respond]
 

このメッセージ後に,hoover の端末でベルが鳴り,次のメッセージが表示されます。

Message from Talk_Daemon@apple at 16:18 ...
talk: connection requested by coolidge@apple
talk: respond with:  talk coolidge@apple
 

hoover がすぐに応答しない場合は,次のメッセージが coolidge の画面に表示されます。

[Ringing your party again]
 

hoover が応答すると,接続が確立したことを通知するメッセージが coolidge の画面に表示されます。 各ユーザはこの時点でテキストを入力することができます。 画面がいっぱいになると,talk は,画面の初めの部分からテキストを重ね書きしていきます。 どちらのユーザも,Ctrl/C を押して通信を終了することできます。 talk セッションの終了時には,次のように表示されます。

[Connection closing. Exiting]