260 ・ 13 章電子メール ホスト名を与えるため、絶対アドレスと呼ばれています。 本来の UUCP システム環境で普及している形式は、 path!host!user でした では、 path にメッセージが接続先ホストに到達する前に通るべきホストのつながり を記述していました。この書き方は、感嘆符を「バン」と読むことから、バンパス表 己法と呼ばれます。今日では、 UUCP べースのネットワークの多くも RFC 822 を採 用しており、このタイプのアドレスを理解します。 ところで、これら 2 つのタイプのアドレス指定方法をうまく混ぜるのは簡単ではあ りません。 hostA!user@hostB というようなアドレスを考えてみましよう。これで は、アットマーク (@) がパス ( ! ) よりも優先するのか、その逆なのかがはっきり しません。つまり、メッセージをまず hostB に送って、それが hostA!user にフォ ワードされるのでしようか、それともまず hostA にメッセージを送って、それが user @hostB にフォワードされるのでしようか。 異なるタイプのアドレスオペレータを混ぜたアドレスは、複合アドレスと呼ばれて います。上に上げたのは最悪の例です。複合アドレスは、通常、 @記号をパスよりも 優先させて解釈して、上のような問題を解決します。上の例では、これは最初にれ ostB にメッセージを送ることを意味します。 しかし、 RFC 822 に適合した経路指定法があります。く@hostA, @hostB : user @hostC 〉は、 hostC 上の user のアドレスを表します。この場合、 h0StC には hostA と hostB を ( この順序で ) 経由して到達します。このタイプのアドレスは、しばし ば route-addr アドレスと呼ばれます。 そのほかに、 % というアドレスオペレータがあります。 user%hostB@hostA は、 まず hostA に送られ、そこで一番右側 ( この場合は 1 つしかない ) のパーセント記 号から@記号までが取り出されます。それによって、アドレスは user@hostB とな り、メーラはそのメッセージを hostB にフォワードし、それが user にメッセージ を配達します。このタイプのアドレスは「 Ye Olde ARPAnet Kludge ( 古き ARPAnet の小細工 ) 」と呼ばれることがあり、あまり使わない方がよいでしよう。 とはいえ、多くのメール転送工ージェントは、依然としてこのタイプのアドレスを生 成します。 さらに異なるアドレス指定方法があります。たとえば、 ほかのネットワークには、 DECnet べースのネットワークでは、アドレスセパレータとして 2 個のコロンを使用 一三ロ
8.7 旧設定オプション・ 1 5 1 を自分自身の IP アドレスとして、後を相手側のアドレスとして使用しようとします。 もし相手側が IPCP 要求をどちらか一方を拒絶すると、 IP リンクは確立されませ ん注 9 ローカルアドレスのみを指定して、相手側には好きなアドレスを使わせるときは、 remote addr 部分を取り除きます。たとえば、ⅵ ager に自分自身の IP アドレスで はなく 130.83.4.27 を使用させるには、コマンド行に「 130.83.4.27 : 」を付けます。同 様に、リモートのアドレスのみを設定するには、 local_addr フィールドを空白にし ます。すると pppd は、ホスト名に対応するデフォルトのアドレスを使用します。 多くのクライアントサイトを扱うある PPP サーバは、アドレスを動的に 0 割り当てます。アドレスは、呼び出しを行ったときにのみシステムに割り当 てられ、終了した後には回収されます。そのようなサーバにダイアルするときは、 pppd がサーバに特定の IP アドレスを要求しないよう気をつけましよう。むしろ、サーバ が使用するように要求してきたアドレスを受け入れるようにします。これはつまり、 lccal addr 引数を指定してはいけないということです。さらに、 noipdefault オプ ションも使用しなければいけません。これをつけると、 pppd は、ローカルホストの アドレスを使用する代わりに、相手側が IP アドレスを提供してくれるのを待ちます。 8.7.2 PPP リンク経由の経路制御 ネットワークインタフェースをセットアップした後、 pppd は相手だけに対してホ スト経路をセットアップします。リモートホストが LAN 上にあるならば、相手の「背 後の」ホストにも接続したいでしよう。要するに、ネットワーク経路のセットアップ が必要だということです。 すでに、 defaultroute オプションで pppd にデフォルト経路を設定させられるこ とは説明しました。ダイアルアップする PPP サーバがインターネットゲートウェイ として動作するのであれば、このオプションは非常に役立ちます。 また、逆のケースとして、自分のシステムが単独のホストのためのゲートウェイと 、相 して機能する場合も、比較的容易に実現できます。たとえば、バーチャル・プル 注 9 pppd に ipcp-accept-local と ipcp-accept-remote オプションを付けることによって 手の PPP にこちらの与えた IP アドレスを強要することができます。 ーワ
12 ・ 1 章ネットワークへの序論 ることです。これはインターネットワーキング (internetworking) と呼ばれ、その 延長にある、インターネットワーキングによるネットワーク全体をインターネット (internet) と呼びます。小文字ではじまるインターネット (internet) とインターネ ット (lnternet) の間の微妙な違いに注意してください。 lnternet は、ある特定の世 界規模の internet の公式名称です。 もちろん、 IP はハードウェアに依存しないアドレス割り当てを必要とします。 れは、各ホストに IP アドレスと呼ばれる 32 ビットのユニークな番号を割り当てる ことで行われます。通常、 IP アドレスは、 8 ビットずっドットで区切った 4 つの 10 進数で表されています。たとえば、 quark の IP アドレスが 0X954COC04 であるとす ると、 149.76.12.4 と表すことができます。この書式をドット表記と呼びます。 以上、異なる 3 つのタイプのアドレスが登場しました。まず第 1 に、 quark のよ うなホスト名、第 2 に IP アドレス、最後に、 6 バイトのイーサネットアドレスのよ うなハードウェアアドレスです。 rlogin quark と入力すると、ネットワークソフト ウェアは quark の IP アドレスを何らかの方法で見つけ出し、 IP がデータを物理学 科のイーサネットに送る際に IP アドレスに対応するイーサネットアドレスを何らか の方法で見つけます。 こでは、アドレスを検索するステップを 2 章ではこれらの具体例を解説します。 覚えておきましよう。ホスト名を IP アドレスにマッピングすることをホスト名解決 (hostname resolution) と呼び、 IP アドレスをハードウェアアドレスにマッピング することをアドレス解決 (address resolution) と呼びます。 1 . 3.5 シリアルライン上の IP シリアルラインでは、 SLIP (Serial Line (P) という規格がよく使用 されています。 SLIP の変種には、 CSLIP (Compressed SLIP) と呼ば RFC 1 055 RFC1144 れるものもあります。 CSLIP はシリアル接続の狭い帯域幅を効率的に利 用するために IP ヘッダを圧縮します。 PPP (P0int-t0-Point Protocol) というシリ アルプロトコルもあります。 ppp は、 SLIP よりも多機能で、接続時の交渉 ( negotia - tion) が可能です。 ppp の SLIP にはない最大の利点は、 IP データグラムだけでな く、どのような種類のデータグラムも転送できるように設計されていることです。
2.4 旧の経路制御・引 は、 IP アドレス 149.76.12.4 から相手のホストが別の物理的なネットワークに属す ることを直ちに理解します。したがって、相手のホストへはゲートウェイ ( デフォル トでは sophus) を通してのみ到達することができます。 SOPhus 自身は 2 つの異なったサプネット、すなわち数学科とキャンパス・バック ボーンに接続されています。それぞれ別々のインタフェース、 ethO および fddiO を 通してアクセスします。では、どのように IP アドレスをそれぞれのインタフェース に対して割り当てればよいでしようか。サプネット 149.76 ュ . O 、あるいは 149.76.4. O 上で与えるべきなのでしようか。 答えは両方です。数学科 LAN の上のホストと通信するときは、 sophus は 149.76.4.1 の IP アドレスを使用し、バックポーン上のホストと通信するときは 149.76.1.4 を使用しなければなりません。 したがって、ゲートウェイにはネットワークごとに 1 つの IP アドレスが割り当て られます。これらのアドレスは、対応するネットマスクを使って、サプネットにアク 最後のエントリーは、前に述べたループバック・インタフェース 10 を示しています。 ースとアドレスの対応は次のようになります。 セスするためのインタフェースに接続されます。したがって、 sophus のインタフェ インタフェースアドレス ethO fddiO 10 149.76.4.1 149.76.1.4 127 ℃ .0.1 ネットマスク 255.255.255. O 255.255.255. O 255. O. O. O 図 2 ー 2 は、 Groucho Marx 大学のネットワーク・トボロジーの一部を示しています。 2 つのサプネット上にまたがっているホストは、両方のアドレスで示されています。 一般には、ホストに対してアドレスを割り当てるのか、そのインタフェースに対し てアドレスを割り当てるのかの微妙な差は、無視することができます。 erdos のよ うに、 1 つのネットワークのみに属するホストについては、一般にホストの IP アド レスを特定できます。厳密には、イーサネット・インタフェースが IP アドレスを持 つのです。けれども、この区別が本当に重要なのは、ゲートウェイをアクセスすると きのみです。
24 ・ 2 章 TCP / 旧ネットワークの話 ケットの送受信を扱うものです。 ネットワークで使用する各周辺デバイスに対応するインタフェースは、カ ーネル内に存在しなければなりません。たとえば、 Linux のイーサネット・ インタフェースは、 ethO や ethl などであり、 SLIP インタフェースは、 slO や S11 などです。これらのインタフェースの名前は、設定の際にカーネルに対して 特定の物理的デバイスを指名するために使用されます。それ以上の意味はありません。 TCP/IP ネットワークを使用するためには、 IP アドレスがインタフェースに割り 当てられなければなりません。インターフェースは外の世界と通信する際に IP アド レスで識別されます。このアドレスは、前述のインタフェース名とは異なります。イ ンタフェースをドアにたとえるなら、アドレスはそれに取り付けられた標札のような ものです。 もちろん、ほかにも設定すべきデバイスパラメータがあります。そのうちのひとつ は、データグラムの最大サイズです。これは、 MTU (Maximum Transfer Unit) と呼ばれ、ハードウェアで処理される最小単位となります。そのほかの属性について は後で説明します。 2.2 ー P アドレス 前章で述べたように、 IP ネットワークプロトコルで解釈されるアドレスは 32 ビッ トです。ネットワーク環境においては、各マシンにはユニークなアドレスが割り当て られなければなりません。外部のネットワークと TCP/IP 通信を行わないローカル ネットワークを運営しているのであれば、自由にアドレスを割り当てることができま す。しかし、インターネット上のサイトには、中心となる組織である NIC ( Network lnformation Center) 注 1 によって番号が割り当てられます注 2 。 より読みやすくするために、 IP アドレスはオクテットと呼ばれる 4 つの 8 ビット 注 1 注 2 日本における IP アドレスの割り当ては、 JPNIC ( 日本ネットワークインフォメーションセン ター ) で行われています。 IP 接続のための IP アドレスは、プロバイダによって割り当てられることが多いのですが、メ ールを hostmaster@internic.net に送ることによって、ネットワークの IP アドレスを直接 NIC から割り当ててもらうこともできます。
ローカルアドレスにメールを配信する・ 289 14.8 ローカルアドレスにメールを配信する 14.8 たェイリアスファイルが、誰でも書き込み可能になっているような場合 ) 。 マンドを実行しないような配慮がされています ( たとえば、そのアドレスを取ってき リティ上の問題が生じるため、アドレスが疑わしい方法で取得された場合は、このコ その呼び出しが空白を含むときは、二重引用符で囲まなければいけません。セキュ ェイリアスを設定します。 用して、このメーリングリストからの全メールをそのスクリプトに配送するローカル gateit といった名前のシェルスクリプトを使用します。具体的には、、コ gateit" を使 たとえば、あるメーリングリストをローカルニュースグループに流し込むには、 ルに渡します。メッセージそのものは、このコマンドの標準入力に供給されます。 す。これがきた場合、 smail は最初にある。にを除いて、コマンドとその引数をシェ パイプコマンドは、パイプ記号 ( いの後に UNIX コマンドが付いているもので ファイルがないときは、そのファイルを生成します。 照 ) 。ファイルに配信されたとき、 smail はそのファイルにメッセージを追加します。 ボックス中のフォワーディングエントリーから取られた場合にだけ可能です ( 下記参 ューザのホームディレクトリを指し、ファイル名が . forward ファイルまたはメール ファイル名は、スラッシュ ( / ) またはチルド ( ~ ) で始まる文字列です。後者は けです。 きません。フォワーディングまたはェイリアスファイルから取られた場合に使えるだ ドレスではないので、たとえば/etc/passwd@vbrew.com にメールを送ることはで たタイプの異なるローカルなメール転送先も処理できます。これらは本来の意味のア このような普通のアドレスのほかに、 smail はファイル名やパイプコマンドといっ は新しいローカルまたはリモートアドレスのリストに展開されます。 ーザによるメールフォワード指示だったりします。これらの場合、ローカルアドレス れます。場合によっては、ローカルアドレスはェイリアスやメーリングリスト名、ユ 場合には、メールはユーザのメールポックス /var/spool/mailuser-name に配信さ ローカルアドレスはユーザのログイン名そのものであるのが最も一般的です。その
sendma ⅱ . cf ファイル・ 299 15.3 ・ mailertable リモートホストまたはドメインの特別な動作を定義する。 ・ uuc pxtable DNS 形式のホストにメールの UUCP 配信を強制する。 ・ pathtable リモートホストまたはドメインの UUCP バンパスアドレスを定義する。 ・ uucprelays 有名なリモートホストへのパスェイリアスパスを設定する。 ・ genericfrom 内部アドレスを外部世界で通用する一般的なアドレスに変換する。 ・ xaliases 一般的なアドレスと正当な内部アドレスを相互変換する。 ・ decnetxtable RFC 822 アドレスを DECnet 形式のアドレスに変換する。 15.3 sendmail. cf ファイル Sendmail 十 IDA 用の sendmail. cf ファイルを直接編集することはありません。ロ ーカルシステムの管理者が作成する m4 設定ファイルから生成されます。このファイ ルを、 sendmail. m4 と呼ぶことにします。 このファイルは 2 、 3 の定義を含んでいますが、あとは実際に仕事を行うテープル を指しているだけです。一般に、このファイルには、以下の情報を指定するだけです みます。 0 0 0 ローカルシステム上で使用されるパス名とファイル名。 email 用に使用されるサイト名。 デフォルトで利用したいメーラ ( そして場合によっては、スマートリレーホス ローカルサイトの動作を確立したり、組み込みの設定項目を変更するために、さま
286 ・ 14 章 sma ⅱの設定と運用 みつけたルータが選択されます。 joe@f00.bar.com 宛のメールがあるとしましよう。 あるルータは、ドメイン bar.com のすべてのホストに対するデフォルトの経路を知 っているが、別のルータは f00.bar.com 自体に対する情報を持っているとします。 この場合、後者のほうが前者よりも詳しいので、後者が選ばれます。最良のルートを 2 つのルータがみつけたときは、 routers ファイルの中で先にあるほうが選ばれます。 選ばれたルータは使用する転送プロトコル ( たとえば、 UUCP) を決定し、新しい 転送先アドレスを生成します。新しいアドレスは、そのメッセージをフォワードすべ きホストのアドレスと一緒に転送モジュールに渡されます。上の例で、 f00. bar. co 爪 には、パス ernie ! bert を使用して UUCP で到達しなければならないということを smail が知ったとしましよう。この場合、 smail は bert!foo.bar.com/user という新 しい転送先アドレスを生成し、 UUCP 転送モジュールに、これを ernie に渡すェン べロープアドレスとして使用するよう伝えます。 デフォルトの設定を使用する場合、以下のルータが利用できます。 ・転送先ホストアドレスが gethostbyname または gethostbyaddr ライプラリ コールを使用して解決できるとき、そのメールは SMTP を介して配信されます。 唯一の例外は、そのアドレスがローカルホストを指しているとわかったときで、 比較されます。もし隣接ホストであるなら、メールは UUCP 転送モジュールを 隣接ホストではないかどうかをチェックするために、 uuname コマンドの出力と ホストアドレス (末尾の . uucp を除いたもの ) は、転送先ホストが実は UUCP みつかったパスを使用して UUCP で配信されます。 す。このルータを使用して一致したアドレスへのメールは、データベースの中で 送先ホスト ( 末尾の . uucp を除いたもの ) をこのファイルの中から探そうとしま pathalias データベース /usr/lib/smail/paths が存在する場合、 smail は転 ポートしないので使用されません。そのような場合は、以下を見てください。 マシンがインターネット上にある場合、これらのルータは MX レコードをサ ルアドレスとして、 scrooge@[ 149.76.12.4 ] を使用してもかまいません。 たにありませんが、 quark.physics.groucho.edu 上の scrooge に対するメー 区切り方式の IP アドレスを有効なホスト名として認識します。たとえば、めっ また、 gethostbyaddr コールを使用して解決できるかぎり、 smail はドット この場合はディレクタモジュールに手渡されます。
13.4 メール経路制御・ 261 するので、アドレスは host : : user のような形式になります注 3 。さらに X. 400 規格 では、まったく異なるアドレス指定方式を使用します。そこでは、国と組織のような 一組の属性値の対によって受信者を記述します。 FidoNet では、各ユーザは 2 : 320 / 204.9 のようなコードによって識別されます。 これは、ゾーン ( 2 はヨーロッパ ) 、ネット ( 320 はパリ市とパリ郊外 ) 、ノード ( ロ ーカルハプ ) 、ポイント ( 個々のユーザの (C) を表す 4 個の番号からなっています。 Fidonet アドレスは RFC 822 に対応づけることができ、上のアドレスは、 Thomas. Quinot@p9.f204.n320.z2.fidonet.org と書かれます。ドメイン名が実に覚えやす いことがおわかりいただけるでしよう。 以下の節からわかるように、これらの異なるアドレス指定の使用にはそれなりの意 味があります。しかし、 RFC 822 環境の中では、 user@host.domain の形をした絶 対アドレス以外はめったに使いません。 13.4 メール経路制御 メッセージを受信者のホストに配達するプロセスは、経路制御と呼ばれています。 送信サイトから転送先に至るまでのパスをみつけるほかに、エラーチェックおよび速 度とコストの最適化も行います。 UUCP サイトの経路制御とインターネットサイトの経路制御には、大きな違いが あります。インターネット上では、データを受信ホスト ()P アドレスによって指定 される ) に配送する主要な仕事は IP ネットワーク層によって行われます。一方、 UUCP ゾーンでは、経路はユーザが指定するか、メール転送工ージェントによって 生成されます。 13.4.1 インターネット上でのメール経路制御 インターネット上で、どのようなメール経路制御が行われるかは、転送先のホスト に完全に依存します。デフォルトでは、 IP アドレスを調べることによって転送先ホ 注 3 RFC 822 環境から DECnet へは、 "host::user"@relay という形式のアドレスを使用して到 こで、 relay は既知のインターネット -DECnet 間リレーの名前です。 達できます。
5.5 旧アドレスの割り当て・ 77 す。それらのローカルホスト名は、 vale などのように、名前の最初の要素だけです注 2 。 しかし、ローカルホスト名はホストの IP アドレスを調べるのによく使われるので、 リゾルバライプラリがホストの IP アドレスをちゃんと参照できるようにしなければ いけません。そのためには、通常、 /etc/hosts にローカルホスト名を記入しておく 必要があります。 domainname コマンドを使用して、カーネルから見たドメイン名を FQDN ( 正式 なドメイン名 ) の残りの部分に設定すればいいという説があります。こうすれば host - name と domainname の出力を結合して FQDN を得ることができるというわけで す。しかし、これは必ずしも正しいとはいえません。一般に、 domainname は、ホ ストの NIS ドメイン ( 「 10 章 NIS : ネットワーク情報システム」参照 ) を設定する ために使用されます。 NIS ドメインは、ホストが属する DNS ドメインとはまったく 違う場合があるのです。 5.5 旧アドレスの割り当て ホスト上でスタンドアロンのネットワークソフトウェアの設定を行うだけであれば ( たとえば、 INN ネットニュースが走るようにしたい場合など注 3 ) 、この節はとばし てもかまいません。この場合、必要な唯一の IP アドレスはループバックインタフェ ースのアドレスであり、それは必ず 127.0.0.1 だからです。 ィーサネットのような実際のネットワークでは、事態はもう少し複雑です。既存の ネットワークにホストを接続したいならば、このネットワーク上で IP アドレスをく れるように管理者に頼む必要があります。自分だけでネットワークを設定するときは、 自分で IP アドレスを割り当てなければいけません。 通常、ローカルネットワーク中のホストは同一の論理的な IP ネットワークを共有 しています。したがって、同一の IP ネットワークアドレスを割り当てなければいけ ません。複数の物理的なネットワークがあるならば、それらに別々のネットワーク番 注 2 注 3 本章で出てくるバーチャル・プルーワリー社のホスト名は、ビールの名前の前にバーチャルの 「 V 」をつけたものです。 ale 、 lager 、 stout などはビールの種類の名前です。私は dark ale や bock が好きです ( 監注 ) 。 日本では、かな漢字変換サーバを使うのが一般的です ( 監注 ) 。