6 章生活環境の整備 6.2.4 メールに関連した情報 これまでは各メイラに関する紹介をした。 話題について簡単に解説する。 ■転送 こでは、 メ ール一般に関する ューザーが複数の場所でアカウントを所有している場合、スプールディレ クトリが分散されていることになる。このような場合、電話の転送サービス のようにメールにも転送機能がほしくなる。実は転送先のアドレスをホーム ディレクトリの . forward というファイルに記述することにより、そのユーサー に届いたメールはすべて、そのアドレスに転送される。この機能は se Ⅱ面 ail によって実現されている。また、アドレスは複数記述することもできる。 % hostname nakasu. nakasu-u. ac ・ JP % cat . 土 0 て a て d shuji@cs . chofu-u. ac ・ jp, shuji—sec@cs. chofu—u. ac ・ JP この機能を利用すると、たとえば大学のセンターにもアカウントがあり、 普段は研究室で活動しているような場合には、センターのホームディレク トリに . forward を設定してセンター宛のメールが研究室に転送されるよう にしておく。すると、すべてのメールが研究室で読めるようになる。また、 「 8.5.5 sendmailJ で詳しく説明するが、 /etc/aliases ファイルでアドレス の別名を設定できる。 . f 。 rward で設定したアドレスに対しても、 sendmail は 別名があれば置き換えようとする。このときアドレスの先頭にヾ \ 〃を前置す ると、別名での置換を禁止する働きがある。 はかに応用例としては複数のワークステーションでホームディレクトリを NFS などで共有しているような場合には、スプールディレクトリを持っワー クステーションを 1 つ決めて、そのワークステーションに転送するように設 定する。このようにすれば 1 つのスプールディレクトリだけを管理すれは良 い。なお、この転送先のアドレスが自分自身である場合には転送することは ないので、メールがループするようなことはない。ただし、設定を間違える とメールが無意味に往復し、最終的にはエラーとなって返送されてしまうの 310
9 章ネットワーク環境 9.5.5 sendmail sendmail はメール配送機構の核をなすプログラムで、実際の、、仕分け〃など を行っている。 sendmail は /etc/sendmail. cf ファイルから配送規則を読み、 それに沿って 1 通すっ受け取ったメールを処理する。 sendmail はさまざまな配送規則に対応するために、動作のほとんどの 部分を /etc/sendmail. cf で書くように作られている。 sendmail は /etc/send mail. cf のインタープリタであるといっても過言ではないくらいである。各シ ステムの管理者は、この規則をそのシステムに合わせて記述しなければなら ない。しかし、 /etc/sendmail. cf の記述は非常に複雑で、初心者にとってはむ ずかしいかもしれない。特殊な配送規則を書くのでない限り、 sendmail. cf を 生成するためのプログラムである中村素典氏の CF や田中啓介氏の mailc 。 nf る場合の左辺、右辺のパターンの記述規則を表 9 ー 3 に示す。 /etc/sendmail. cf での記述規則を表 9 ー 2 に、ヾ R クを使ってルールを記述す ・アドレスの書き換え ・ルールセットの集まり ( 通信プログラムの定義 ) ・ヘッダ形式の定義 ・ sendmail に対するオプション ・いろいろな記号に対する値や集合の定義 ( 変数宣言 ) /etc/sendmail. cf は基本的に次のような構造をしている。 などを使うとよい。 表 9 ー 2 sendmail の基本規則 規則 S [ 番号 ] D [ 記号 ] [ 値 ] C [ 記号 ] [ 値のリスト ] F [ 記号 ] [ 値のリストが入ったファイル名 ] M [ 名前 ] , [ フィールド ] = [ 値 ]... R [ 左辺 ] [ 右辺 ] [ コメント ] 454 説明 [ 番号 ] はルールセット番号 [ 記号 ] に [ 値 ] を代入 [ 記号 ] に値の集合を定義 [ 記号 ] にファイル内の集合を定義 メール通信プログラムの定義 [ 左辺 ] にマッチしたバターンの [ 右辺 ] への変換
ー丿レ # eliminate 10Ca1 host if $ : $ 23S present a relay host $#re1ay$@$1$X$ : $ 2 $#re1ay$@$1$2$: $ 3 9.5 @thishost . @thishost thishost ! . %thishost 電子メ # pass everything tO M10ca1 , Mprog , Mre1ay, MAILER DEFINITIONS 図 9 ー 13 sendmail . cf の例 P= [IPC] , F=mDFMuX , S = 11 , R = 29 , A=IPC $h, E=\r\n , L = 2040 P=/bin/sh, F=1sDFMeuP , S = 10 , R = 20 / 0 , D=$z : / , A=sh —c $u P=/usr/1ibexec/mai1.10Ca1 , F=1sDFMmrn, S = 10 , R = 20 / 0 , A=mai1 —d $u この例では実際のアドレスの解析を行う SO は非常に簡単で、他のルー ルセットの呼び出しすらしていない。実際にはⅡ u11. def はスプールを持た ないホストが使うテンプレートだと述べられているように、郷げ@ os な ルなん。 s s 催などのアドレスを受け取ったとき、 s ん。の部分をデフォルトの ドメイン名に変換しているだけである。あとはすべて、ヾ S 〃に定義されてい る hood. cs. chofu-u. ac. jp にフォワードしている。 sendmail. cf の記述を行ったら /etc/sendmail. cf と置き換える則にテスト をする。テストは % /usr/sbin/sendmail —bt —Cmysendmai1. cf とすることで行うことができる。テストの様子を図 9 ー 14 に示す。 457
9 章ネットワーク環境 9.8.3 アプリケーションの動作かおかしい場合 ネットワークアプリケーションを使用していてその動作がおかしいとき、そ れがテキストべースのネットワークプロトコルを使用している場合、 telnet を使って自分が悪いのか相手側が悪いのかを調べることができる。 telnet ( ま % telnet RemoteHost RemotePort のようにして相手側のポート番号を指定して起動することができる。 e 襯 0 物には実際に番号を指定することも /etc/services で記述されてい る名前で指定することもできる。 たとえばメールが送れないような場合、相手のホストの sendmail が異常 な動作をしているのか、自分のメールシステムの調子がおかしいのかを相手 の sendmail (SMTP のポート ) に telnet してみることによって調べることが できる。実際には % telnet hostname smtp とすることによって相手の sendmail に接続し、動作を調べる。接続したあ との操作については本章の SMTP の部分を参照してほしい。 9.8.4 Simple NeM'ork Management Protocol—SNMP ネットワークを管理するためのプロトコルとして SimpleNetworkManage ment protocol (SNMP) がある。 SNMP は Management lnformation Base (MIB) と呼ばれる情報べースにアクセスするためのプロトコルである。現 在、さまざまなネットワーク機器に MIB が定義されており、それらにアク セスすることで機器の監視や設定を行うことができる。また、 SNMP を使っ たアプリケーションもさまざまなものが用意されており、これらを使って視 覚的にネットワークの監視を行うことができる。 474
9 章ネットワーク環境 460 れば、 sendmail. cf に書くルールをいちいちホストごとに変える必要がない また、運用しているホストがインターネットに直接アクセスできるのであ 利である。 作させたまま MX のプリファレンスを替えることで実現できるため非常に便 ドメイン名に対するサーバホストを替える作業が、 2 つのサーバホストを動 合はプリファレンスの小さいほうにコネクションが張られる。これは、ある MX レコードはプリファレンスを記述でき、複数の MX レコードを持っ場 ストに対して SMTP コネクションを張り、メールを送る。 れば、その相手のアドレスのホストに送る代わりに MX で指定されているホ イン名が MX のレコードにあるかどうかを調べる。もし、 MX レコードがあ いる。 sendmail は SMTP のコネクションを開く前に相手のアドレスのドメ sendmail では、バージョン 5.54 以降でこの MX レコードをサポートして ルを配送するかを記述している。 外のドメイン名をメールアドレスに使用している場合にどのようにしてメー MX レコードはインターネットに直接接続されていないホストやホスト名以 対応するために BIND では MX (Mail eXchanger) レコードを定義できる。 ではメールをどこに送ってよいか分からない場合がある。このような場合に ことに注意してほしい。このような場合、単にネームサーバを検索しただけ こで、メールアドレスとホスト名はかならすしも一致しない を検索する。 も SMTP を使ってメールを送る際、ネームサーバを引いて相手のアドレス 現在、インターネットは BIND システムを使って運用されている。 sendmail 9.5.7 MX 図 9 ー 16 S MTP によるアドレスの展開 Connection closed by foreign host. 221 00d. cs . chofu—u. ac ・ jp closing connection quit 250 Char1ie R00t く \ て 00t9h00d. cs. chofu—u. ac ・ jp> expn postmaster@hood.cs.c五0 土ⅡーⅡ・ ac ・ JP 250 Keisuke UEHARA くkei@hood. cs . chofu—u. ac ・ JP>
9 章 ネットワーク環境 自 難 Internet/LAN ←〇 Mailer sendmail SMTP UUCP Remote System ィールド From Sender To Cc Received Message-ID Subj ect Mime—Version Content-Type 452 図 9 ー 10 電子メールシステムの構造 説明 差出人 差出人 ( 実際に送った人 ) 主受取人 副受取人 経由した転送システムの名前 メッセージの識別子 題名 MIME のバージョン ボディ部のコンテキストタイプ
9.5 電子メ ー丿レ ルールの記述規則 表 9 ー 3 左辺 説明 0 個以上のトークン 1 個以上のトークン 1 個のトークン 記号に定義されている集合に含まれる 1 個のトークン 記号に定義されている集合に含まれない 1 個のトークン 説明 左辺でマッチした個目のトークン ルールセットを呼び出す [ 名前 ] で定義された通信プログラムに引き渡す ホストの指定 ューザーの指定 ルールセットを記述する場合、 sen 面 ail. cf の 0 ~ 4 のルールセットは特別 な意味を持っことに注意しなければならない。 sendmail. cf のルールセット は図 9 ー 12 のような流れで処理される。ルールセット 3 は渡されたアドレス に対して Name CanonicaIization と呼はれる処理を行う。これはアドレスを local—part@host—domain¯spec という形式に変換する処理のことをいう。ルールセット 3 が終了した後、ルー ルセット 0 が呼び出される。ルールセット 0 は実際にアドレスの解析を行い 配送先を決定する。もし、ルールセット 3 が解析した結果に、、@クがなければ こで、可能なら送信者のドメインが付加される。そ モジュール D に渡り、 の後、送信者アドレスはルールセット 1 で、受信者アドレスはルールセット 2 で処理され実際に書き換えが行われる。その後、ルールセット 4 で、すべ てのアドレスに対して、組織内部のアドレスから外部で使用されているアド レスに変換されて送信される。 /etc/sendmail. cf の記述例の一部を図 9 ー 13 に示す。この例は CF ー 3.3 、 Vb2 を使っていちばん簡単なテンプレートである nu11. def のホスト名と OS タ イプを変えて作ったものである。 十 $ # [ 名前 ] $@[ ホスト ] 455
9 章 ネットワーク環境 sendmail —bt —C. /gladys. cf ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter く ruleset> く address> > 0 keiQcs. C五0土ⅡーⅡ . ac ・ JP rewrite: ruleset rewrite : ruleset lay $@ h00d . cs > 0 kei rewrite : ruleset rewrite : ruleset lay $@ hood . cs > 0 ke 土 910Ca1 ost rewrite : ruleset rewrite : ruleset $ : kei @ hood 9.5.6 SMTP 0 input : 0 returns : chof u—u 0 input : 0 : chofu—u 0 input : 0 returns : chofu CS 図 9 ー 14 kei cs $ # re ke i $ # re . JP . . JP . $ : kei chofu $ : kei kei localhost $ # relay $@ 00d ・コ P CS CS chofu—u chofu—u ・ JP ・ JP sendmail . cf のテストの様子 メールをインターネットプロトコルで接続されたネットワーク上のホスト 458 見ることができる。 了している。 HELP コマンドを使うことにより、多少のヘルプメッセージを らせる。ボディを送った後は QUIT 〃を使って、 SMTP のコネクションを終 を使ってメールボディを送信し、 . 〃でボディを送り終えたことを相手に知 を、 "RCPT TO:" を使って、相手のアドレスを宣言する。その後、、、 DATA" テムのドメイン名を相手に送り、 FROM:" を使って自分のアドレス のは相手のホストの sen 面 ail である。最初に HELO 〃を使って、自分のシス ルを送るときの様子を図 9 ー 15 に示す。この例で実際に telnet に答えている を使って実際に動作を見ることもできる。 telnet で SMTP に接続してメー ロトコルである。 SMTP は ASC Ⅱキャラクタベースのプロトコルで、 telnet プロトコルが使われる。 SMTP は RFC821 で定義されている非常に単純なプ に配送する場合、 SMTP (SimpIe MaiI Transfer protocol) と呼ばれる TCP 上の
seek ・ sendmail ・ shar ・ shell モード・ shift ・・ showdots ・ sinocode ・ SLIP ・ SMTP ・ strip ・ stdout ・ stdin ・ stderr ・ startx ・・ spell ・・ 500 timezone ・ time ・ thebibliography ・ tgif ・ TFM ・ TeX ・ termios ・ telnet ・・ tee ・ tcsh ・ TCP ・ tbl ・・ tar ・ tangle ・ tail ・ tabular 環境・ syslog ・ symlinks ・ ー . SYMDEF ・ SunRPC ・ 索 ・・ 91 , 425 ・・ 85 , 106 sdb ・ sed ・ ・・ 85 , 110 引 ・・ 323 ・・ 357 ・・ 370 ・・ 62 ・・ 367 ・・ 265 ・・ 369 ・・ 218 ・・ 323 ・・ 411 ・・ 41 ・・ 41 ・・ 41 ・・ 343 ・・ 441 ・・ 479 ・・ 341 ・・ 206 ・・ 186 ・・ 394 ・・ 379 ・・ 388 ・ 198 ・・ 206 ・・ 443 ・・ 382 ・・ 387 ・・ 387 ・・ 414 ・・ 397 ・・ 363 ・・ 478 ・・ 403 , 405 ・・ 191 , 321 , 343 ・・ 172 , 249 ・・ 305 , 458 ・・ 305 , 454 tip ・ top touch ・ tperiod ・ trap ・ troff ・ tsort ・・ TTL ・ LJ ucbmail ・ UDP ・ umount ・ unifdef ・ unlimit ・ update ・ URL ・・ uucp ・ uuencode/uudecode ・ UUX ・ vat ・ VFS ・ virtex ・ W3 ・ wait ・ weave ・ WEB システム・ who ・ whois ・ Wnn ・ write ・ wtoc ・・ ・・ 437 ・・ 300 ・・ 347 ・・ 204 ・・ 370 ・・ 401 ・・ 341 ・・ 100 ・・ 305 ・・ 146 ・・ 376 ・・ 208 ・・ 356 ・・ 357 ・・ 467 ・・ 312 ・・ 450 ・・ 304 ・・ 60 ・・ 390 ・・ 308 ・・ 60 ・・ 300 ・・ 467 ・・ 49 ・・ 388 ・・ 388 ・・ 300 ・・ 465 ・・ 284 ・・ 62 ・・ 299 ・・ 208 , 242 ・・ 116 , 449
9 章 9 . 1 9 .2 9 . 3 9 .4 9 . 5 12 目次 8.12 グラフ 9 . 5 . 8 . 1 2 . 1 xg 「 aph ・ 8.12.2 gn u plot ・・ ネットワーク環境 ARP テーブルの操作・・ 甲層の設定と運用・ インターフェイス層の設定と運用・ インターネットプロトコル系ネットワーク 9 . 1 . 1 9 . 1 . 2 9 . 1 . 3 9 . 1 4 9 . 1 . 5 9 . 1 . 6 ルーティングプロトコルとルーティングテーモン・ アプリケーション層・ U DP/TCP 層・ UUCP 系ネットワーク 9 . 2 . 1 U U CP の設定・・ 管理用アプリケーション 9 . 3 . 1 N FS ・・ 9 . 3 . 2 DN S ・・ 基本的なユーサーアプリケー ション 9 . 4 . 1 9 . 4.2 9 . 4.3 電子メール 仮想端末システム・ ファイル転送システム・ リモート実行・・ 9 . 5 . 1 9 . 5 . 2 9 . 5 . 3 9 . 5 . 4 9 . 5 . 6 9 . 5 . 7 9 . 5 . 8 5 電子メールの仕組みの概要・ メッセージフォーマット・・ メールアドレス・・ メイラ・ sendmail ・ SMTP ・・ MX ・・ POP ・・ ・・ 41 9 ・・ 41 9 ・・ 420 ・・ 424 ・・ 424 ・・ 430 ・・ 431 ・・ 43 2 ・・ 435 ・・ 436 ・・ 436 ・・ 43 7 ・・ 440 ・・ 440 ・・ 441 ・・ 442 ・・ 442 ・・ 444 ・・ 449 ・・ 451 ・・ 451 ・・ 451 ・・ 453 ・・ 453 ・・ 454 ・・ 458 ・・ 460 ・・ 461