図 5 メールの酉医 mail メールホスト domain A メールホスト ( リレーホスト ) domain B メールホスト domain D ・メールホスト domain C sarumata . この、すかたん ! ちゃんとやっとかんかい。 monkey . はあーい。 4 これは電子メールにかぎらす、はカⅵアプリケーションに関しても同様の 3 メールホスト以タ P ) マシンは、、、側属ホスト " とも呼はれます。 ( あまり ) 意迂すにメールシステムか構築できます 4 。 ェイの設定 ( ルーティングなど ) が正しければ、これらを り、ネットワークがきちんと接続されていて、ゲートウ 名にもとづいてメールが中継されると考えられます。つま つながれたメールホスト ( リレーホスト ) 間で、ドメイン ステムだけをとりあげると、図 5 のように、仮想的な線で イ・マシンを中継して配送されます。しかし、メールシ メールもバケットとして送られますから、ゲートウェ トやリレーホストと呼びます 3 ( 図 5 ) 。 うマシンか存在します。このマシンのことを、メールホス が、メールに関してもゲートウェイと同じような彳齬リを担 たように、バケットの中継はゲートウェイがおこないます も、、バケツリレー方式 " でおこなわれます。前号にも書い ネットワーク上を流れるバケットと同様、メールの醋 なりません。 をやりとりするときは、設定ファイルに手を加えなけれは クから構成される環境や、外部のネットワークともメール ははとんど不要です。しかし、複数の ( サプ ) ネットワー 勿ロ、設疋ファイル (/etc/sendmail. cf など ) の変更 ローカルなネットワークのなかだけでメールを運用する どうなってんのやろ ? メールホストを設定することになりました。 また、「すかたん ! 」と怒られてしまった monkey 君、 28 ことがいえます。 独立したネットワークとしてメールも運用したい場合、 メールホストを 1 つ作って、 ・メールホストは、外部ネットワークの適当なメールホス トにメールを中継する ・メールホスト以外のマシンは、外部へのメールをメール ホストに送る という設定が一イ勺です。管理をメールホストに集中でき るので管理の負担か軽くなります。 一方、引も丘は、 BIND システム (DNS 、あるいはネー ムサーバーと呼はれることもあります ) などを用いて、メ ールの送り先のドメイン名からメールホストを特定し、直 接送ることができます。このガ去を用いるには、メールを 設定する前に BIND システムをセットアップしなければ なりません。しかし、正しく設定するにはかなりの修業が 必要で、駆出し管理者の monkey 君にはまたが重いよ うです。 そこで今回は、わりと単純な構成のネットワークでの メールホストのセットアップを紹介します。 monkey-net の構成は前回紹介しましたが、メールシステムとして捉え たネットワーク構成を図 6 に示します。 図 6 ではゲートウェイ banana および boss がメールホ ストとなっていますが、ゲートウェイがメールホストと同 ーである必要はありません。去も匠のワークステーションの 性能向上は目覚ましく、 CPU パワー的には両者を兼ねる くらいは平気でやってのけるでしよう。しかし、 CPU パ ワーはあり余っていても、スプール領域 (/var/spool) のディスク容量が足りす、メールが溢れてしまうことも考 UNIX MAGAZINE 1993.9
特集ドン一ときたら困るけど、ネットワーク卸里・・・ 設定項目としては、ドメイン名および工イリアスの設 定だけです。メールホストの設定と同様に、 / usr / lib / sendmail ・ subsidiary. cf を適当なところにコピーし、 Dm ( 必要ならば師 ) を追加します。通常、メールホストと は Ethernet て寸妾続されていますから、メーラーは ether のままでいいでしよう ( あらかじめ ether が定義されて います ) 。 設定ファイルに関してはこれだけで OK です。次は、 メールホストに関する設定をおこないます。コピーした 設定ファイルでは、メールホストの名前 ()R と CR で 指定 ) は mailhost となっていると思います。このた め、 /etc/hosts を変更して 5 、メールホストのエントリ に mailhost という工イリアス名を追加します。 monkey-net の場合、メールホストは banana ですか ら、 /etc/hosts のエントリは次のようになります。 133. 1 . 13. 1 banana mailhost 追加 「おっと、忘れたらあかんちゅうやつやな」 これに対し、 /etc/sendmail. cf ファイルのなかの、 DRmai1host CRmai1host を、 DRbanana CRbanana に書き換えてしまうガ去もあります。しかし、なんらかの 理由でメールホストか変更された場合、すべての ( メール ホスト以外の ) マシンの /etc/sendmail. cf を書き換え なくてはなりません。 /etc/hosts を NIS で管理してい れば、マスターサーバー上の /etc/hosts の書換えだけ ですみますから、なるべく sendmail. cf には手を加え ないほうがよいでしよっ 「なるほど、この手もあったか」 こまでくれば、あとはスプール・ディレクトリを確 して /usr/lib/sendmail を起動するだけですが、新 川い しい sendmail. cf もテストしておきましよう。自分の 5 NIS を使用している場合は、マスターサーバー上の /etc/hosts を変更 してから NIS データベースを更新します。 6 NIS を使っていなければ、すべてのマシンの / etc 。 sts を書き換え なければいけませんが・・ UNIX MAGAZINE 1993.9 ネットワークだけか被害を受けるならともかく、ドメイン 名の設定を間違えると、メールがどこかに飛んでいってし まいます。外部から、、お荷物ネットワーク " と言われない ためにも、心には念を入れて・ 注意 3 メールスプールの これまでの設定で、電子メールが使えるようになります。しか し、この設定では不便なこともあります。 user@hostname とい うアドレスでメールを出すと、このメールはん os 腕佖 me という計 算機のスフ。ールロ褓内されます。 つまり、ユーザーがこの言 t 機にログインしないかぎりこのメ ールは読まれることはありません。これでは不便です。できれは、 ドメイン内のどの計算機にログインしてもメールか第売めるように 設定をしたいものです。 1 つの去としては、 ・ドメインのメールはすべてある計算機のスプールに集める ・そのはかの計機は、そのスプールを NFS マウントする ことが考えられます。、ええ考えやな。さっそくやろ " と早合点し てはいけません。これだけでは、メールを失ったり ( 損モード ) 、 倍に増えたり ( お得モード ) してしまうことがあります。原因は、 1 つのファイル ( この場合はメールのスプール ) を別々の言算機 この場合は、 /usr/ucb/mail などの の複数のプロセスから メールを読むプログラムとスプールに書き込もうとするメーラー とのあいだで一一読み書きしてしまうからです。 たとえは、ユーサーが自分の計算機十て、 /usr/ucb/mail のサ プコマンドなどを使ってメールを削除しようとしているときに新 たなメールが届き、メールホストのスプールにメールか書き込ま れた場合、そのユーサーのスプールの内容は壊れてしまいます。 1 つの言算機のなかで、プログラムが 1 つのファイルの読み書 きに対してうまく折合いをつけるのはそれはど難しくないのです が、 NFS を介してアクセスしている場合には、なかなかうまくい かないのです。去も丘は、 /usr/ucb/mail や MH 、 mush 、 rmail など、メールを読み書きするプログラムがたくさんあるので、折合 いをつけるのがますます難しくなっています。 9 割ぐらいならなんとか大丈夫というガ去はあるので、次回以 降で紹介します。 こまでは、いわば「電子メール : 設疋編」でした。 電子メールは、正しく設定するのはもちろんですが、ふ だんから目を光らせて運用状況にも十分に注意を払う必要 があります。そこで、最後に「電子メール : 運用編」とし て、メールに関するトラブルへの対処や、メーリングリス トの作り方などを紹介します。 ロ 電子メールの管理 31
特集ドン一ときたら困るけど、ネットワーク里・・ 図 6 monkey-net のメールシステム構成 monkey 君の社内ネットワ メールホスト banana (mailhost) : メールホスト bOSS ドメイン mon-proj. kani. co. jp (monkey-net) ドメイン saruyama. kani. co. jp ・ % (saruyama-net) . 外のネットワーク えられます。このようなことも考慮して、メールホストに どうもそのようですね。 m 。Ⅱ key 君にはもうちょっと頑 するマシンを慎重に選びましよう。 張ってもらいましよう。 Sun の場合、設疋ファイル sendmail. cf の叩き台と 図 6 の構成でメールの酉当を考えると、 monkey-net の して、 なかでは、 /usr/lib/sendmail . main . cf ・ローカルドメイン mo Ⅱー proj . kani ・ co ・ jp 宛のメール /usr/lib/sendmail . subsidiary. cf は、メールホスト banana に送るか、 ( マシンカ甘旨定さ が用意されています。このうち、メールホストの設定には れている場合は ) 妾該当するマシンに送る sendmail . main. cf を利用します。 これ以外のドメイン宛のメールは、メールホスト ba- ます、オリジナル・ファイルを壊さないように、適当な nana に送る。 banana は、隣のネットワーク (saru- ディレクトリに sendmail. main. cf をコピーします。 yama-net) のメールホスト boss に送る banana# cp /usr/lib/sendmail . main. cf \ /tmp/sendmail. cf となります。皆さんの糸目織で設定ファイル sendmail. cf banana# や設定方法に関するガイドが用意されている場合は、それ に従って成疋するのがいいでしよう。なけれは、メーカー 以降の設疋ファイルの変更は、コピーしたファイル ( こ が用意した設定ファイルを自分で変更しなければなりませ の場合は /tmp/sendmail. (f) を使います。 ん。あまりにも朱な環境は別ですが、メーカーの用意し メールホスト banana のおもな彳難リは、、、他ドメイン た叩き台を利用すれば、とりあえず外部とメールがやりと 宛のメールを、リレーホストである boss に送ること " で りできるようになります。 す。したがって、成疋ファイルのなかで、 それでは、メールホストとそれ以タ P ) 場合について、メ ・自分のドメインの名前 ( とそのェイリアス ) ールの設定を紹介します。 ・リレーホストの名前 メールホストの設定 ・リレーホストとの接続去 ( メーラー ) を指定する必があります。 「そうか、さっきは、知らんメールはメールホストに出す ます自分のドメインの設定です。これは、設定ファイ ようにしといたらええねんなと思って安じ、してたけど、も しかして、これもわしが設定せなあかんちゅうことか ? 」 ルのなかの Dm で始まる行を捜し ( コメントアウトされて 29 UNIX MAGAZINE 1993.9
図 1 電子メール 1 —S /etc/sendmail . cf /usr/lib/sendmail /usr/bin/mail 5 /etc/sendmail . cf /usr/lib/sendmail /usr/bin/mail /usr/spool/mail/sarumata 給料は高いほうが ええと思います。 0 4 4. その結果、目的地がこの計算機であれば、 /usr/bin/ mail を起動して、 sarumata さん宛のメールのスプー ルである /usr/spool/mail/sarumata にメールの内 容を書き込みます。 /usr/spool/mail/sarumata 22 定することなのです。 子メールの設定とは、 / etc / sen 面 ail. cf ファイルを設 述したファイルが / etc / sen 面 ail. cf です。つまり、電 そして、宛先の解析や各を決定する規則などを記 という処理をおこないます。 mail にメールの内容を送り出す む。そうでない場合は、 sendmail 自身がほかの send- mail を起動して、ローカルのメールスプールに書き込 4. 目的地にたどり着いた場合は、メーラ—/usr/bin/ ム ( メーラー ) を起動する 3. それに従って、実際にメールの酉占逶をおこなうプログラ 2. メールの醋当斈路を決定する 1. メールの宛先を角斤する ると、 sendmail は、 際の酉当はすべて sendmail がおこなっています。まとめ このように、電子メールの酉占医の際の宛先の解釈や、実 れます。 る /usr/spool/mail/sarumata にメールか書き込ま にたどり着き、 sarumata さんのメールのスプールであ 設定にもとづいてメールを酉占医します。いつか、目的地 た sendmail もまた、その算機の sendmail. cf の sendmail にメールを送り出します。メールを受け取っ 5. 別の言 t 算機に送る場合には、その計算機で動いている 電子メールの基本的な設定 「いよいよ電子メールの設定やな。えっと、 sendmail ちゅうプログラムが sendmail. cf とかいう設定ファイ ルを読んでメールを処理してくれるんやったな。そしたら 設定ファイルをうまいこと書いてやったら、それで万事 OK ちゅうことになるはすや」 そうです。さきほど紹介したように、実際にメール を配送する /usr/lib/sendmail プログラムは、 /etc/ sendmail. cf ファイルに日当された規則に従って重川乍し ます。ですから、この sendmail . cf の書き方を間違えな けれは、正常に機能します。 「どれどちょっと、 sendmail . cf を覗いたろ。どっ ひやー ! なんやこ呪文か書いたあるぞ ! 」 sendmail . cf の読み方はもちろん、書き方もたいへん 複雑で、最初から自分で書くのは不可能でしよう。そこで、 ある程度の情報を与えて自重加勺にこのファイルを生成する mailconf というプログラムが用意されています。また、 すこし変更を加えるだけで実際に使える、 ・ /usr/lib/sendmail . subsidiary. cf ・ /usr/lib/sendmail . main. cf という 2 つのテンプレート・ファイルが用意されていま す。ここでは、もっとも簡単な「 sendmail. subsidiary . cf を利用した設定力法」を紹介します。 「 subsidiary ってどんな意味なんや ? どれどれ・・ るほど、、、補助、補足 " か。ということは、 公にはなられへん奴に使えは・ええんやな」 ロ な こいつは主人 UNIX MAGAZINE 1993.9
それぞれの対タ去は「メールのトラブル・シューティン グ」の項で説明します。 一度送信に失敗したメールは mqueue に保存され、 定時間ごとに sendmail デーモンによって再送か試みら れます。 「そんな悠長なことゆうてられへん。さっさと送りなおし てくれへんのか ? 」 せつかちな ( ? ) 人ややむをえない理由で至急再送が必 要な人のために、手動て再送する手段があります。具ー勺 % /usr/lib/sendmail —q とすると、 /usr/spool/mqueue にある未酉占医のメー ルをただちに再送します。ただし、送信の前に失敗した原 因を取り除いておかないと、また同しことになってしまう ので注意しましよう。 「ん一、これですっきりした。やつばり用を足したあとは ちゃんと流しておかんとな・・ えっ ? なんかちゃうっ てか : ー ) 」 間違うてるで ! 「あらら、せつかく出したメールカってきてるやんか。 何カ墹違っとったんやろ ? 」 メールの出し方や設定が正しくないと、エラーメールと して返送されてきます。 monkey 君の場合はどんな間違い だったのでしようか。 そんなユーサーはおらへんで 「なになに、、、 User unknown" やと ? 宛先を間違った かな ? 」 図 9 を見てください。 Subject の行からも分かるよう に、メールの宛先のユーサーがいない ( 該当するアカウン トがない ) 場合、このようなメールがメールシステムから 返ってきます。こういうメールカ区ってきたら、メールの 宛先 ( ューサー名、メールアドレス ) をもう 1 回よく石忍 してから、送りなおしましよう。 そんなアドレスはあらへんで 「今度はなんや。、、 Host unknown" やて ? なんで知らん のや ! これくらいちゃんと知っとけ ! 」 m 。 nkey 君はむちゃくちゃなことを言ってます。メー ルの宛先が間違っていては、届きようがありません。 34 れは、ユーサー名を間違えた場合と同しです。このような ときは、図 10 のようなエラーメールが届きます。これも、 Subject を見れば一目瞭然です。宛先のホスト名をもう 1 回石忍しましよう。 これとよく似たエラーで、ドメイン名 ( ホスト名より後 ろの部分 ) を間違うと返ってくるものもあります。具イ列 は挙げませんが、これも Subject 行を見れば返ってきた 理由が分かりますし、何を間違ったかもエラーメールの中 身で分かります。 ピンポンしとるで 「またエラーか・ いのがきたなあ」 。今度はいったいなんや ? えらい長 メールの送り先のユーザーが設定を間違えている場合 も、メールカ堀かないことがあります。メールの配送シス テムの性質上、メールの中継はデフォルト・で最高 17 回と なっています。したがって、受信者に到達するまで中継が 18 回以上の場合は、途中でエラーメールとなって送信者 に戻されます。 このような例か図 11 です。この例は、メールが 2 台 ( 実 際には 3 台 ) のホスト間でたらい回しにされた挙旬、送信 者に戻ってきたものです。このエラーメールは ( 状況設定 は図 12 ) 、 1. あるユーザー (katayama) が、 ape と baboon という ワークステーションにアカウントをもっている 2. katayama のそれぞれのワークステーション上のホー ムディレクトリカ嗹う 3. ape の . forward で、メールを baboon に送るよう設 定している 4. baboon の . fo て矼 d で、メールを ape に送るよう設 定している 5. baboon ・・ ape でメールの押しつけあいをする 6.17 回目の押しつけで、それ以 - ヒのたらい回しをやめる 7.18 回目の押しつけをやめたワークステーションが、送 信者の monkey にその旨を伝えるメールを出す という理由から起きました。このような場合にはメールの ヘッダを詩べ、 ・受信側のワークステーションが、ネットワーク的に遠す ぎないか ? UNIX MAGAZINE 1993.9
特集ドン ! ときたら困るけど、ネットワーク里・・・ 下に住む " ようなものですから、誰かの不注意で大事な家 カ隣えてしまわないよう、各人の、、防災意識 " を高めてい きましよう。 今回は、「電子メールの設定と管幽について紹介しま す。さきほど偉そうなことを書いてしまいましたが、設定 がむちゃくちやでシステムがまともに動かなけれは、ユー サーのモラルを云々するどころではありません。「電子メ ール」はネットワーク・サービスの基本中の基本であり、 、、使えて当然 " のように思われがちです ( そこカ理者のっ らいところ ) 。階のイ頁を得るための第一歩」だと思って 9 ロ sarumata: それをゆうなら、自画自賛やで。 りあえす、ここまでのところで自画絶賛しとこ もた。メールの設定すんの忘れてるわ。ま、ええわ、 ごいもんやな。さて、ちょっと報告のメールを・・ monkey: NFS もできるし、 NIS も使っているし、 ワークもかなり整備されてきました。 monkey 君の努力により、プロジェクト用のネット やつはり電子メールは必要 きっちりマスターしてください す UNIX MAGAZINE 1993.9 monkey : いや、もう、ぜんぜん。 sarumata: あやしいなあ。なんぞ、隠してるやろ。 monkey : いや、別に sarumata : こらこら、どこへ行くねんな。 monkey . 失礼しました・ sarumata: それもゆうなら、「ばくら」やろ ! monkey . ばつ、しもた。ばつ、ばつ、はくらは少・・ ころでやな、あっ、「はっちしです」はあかんぞ。 sarumata : 何をしようもうないことゆうてんねん。と なってますねん。 聞くと、自重加勺にロが「ばっちしです」ってゆうように ・・」ちゅうの monkey: そうでしたね。「ところでな・・ sarumata : なんにもゆうてへんがな。 monkey: ああ、それはもう、ばっちしです。 sarumata: わかった、わかった。ところでな・ 参加すんのはやめてもらえます ? monkey: あー、びつくりした。ひとの独り言に勝手に sarumata : はんまやろな。 定に従って、受け取ったメールの宛先を角斤します。 3. sendmail は、成疋ファイノレ /etc/sendmail. cf の設 ます。 として起動し、その sendmail にメールの内容を渡し 2. mail コマンドは /usr/lib/sendmail を子プロセス 電子メールの仕組み 給料は高いほうがええと思います。 % mail —s "Onegai" sarumata 1. monkey 君が mail コマンドでメールを発信します。 ような動きになります ( 図 1 ) 。 メールを送ったとしましよう。すると、内部では、次の mail コマンドで、 monkey 君から sarumata さんへ monkey 君、お得意の泥緲に勉強を始めました。 強しよ」 とカ躋理はしにくいやろな。ちょっと、虎の巻を読んて勉 子メールがどんな仕組みになってるか知っとかんと、設定 「電子メールの設疋かあ。設定する前に、やつばり、電 メールの設定に取り組むことになりました。 またまた、怒られてしまった m 。 nkey 君、今回は電子 monkey : はあーい。 sarumata: この、すかたん ! ちゃんとやっとかんかい。 monkey : なんで、わかるんです ? メールができへんのとちゃうやろな。 sarumata: なんや ? もしかして、設定してないから、 monkey : メール ! ? メールですか ? いや、そのお・ 忘れてた。このあいだのあれ、メールしてくれたか ? sarumata : そうか、そうか。ようやったな。で、そや monkey : ばっちしです。 んやけどな。 けやない。ちゃんとできてるんやったら、それでええ sarumata: 悪かった、悪かった。別にうたごうてるわ て確かめたらよろしいですやん。 monkey: そないゆうんでしたら、引・算機にログインし 21
特集ドン ! ときたら困るけど、ネットワーク卸里・・ ましよう。さもないと、いつまでたってもそのメール はポストのなかで送り出されるのを待つだけになってし まいます。 ・ Deferred : Host Name Lookup Fai1ure BIND を利用している場合、このようなメッセージが 残ることがあります。これは、 BIND からメールを送 信するホストのアドレスを取得しようとしてタイムアウ メー丿トラブル・シューティング トしたことを示しています。このような場合、このメッ セージを残してメールが暑己送になります。 「おや ? せつかく、、 sendmail -q で送り出したはすのメ BIND がなんらかのトラブルを抱えていると思われる ールが、まだ出ていってへんなあ。まだどっか悪いよう ので、 BIND の管理者に問い合わせてみましよう。 や。どうしたもんやろかいな」 メールに関するトラブルは、まだまだ挙げればきりがな さきほど後回しにした、酉当土されないメールがあるとき いのですが、 こて挙げた 3 つの対策だけでもしばらくは の対策を考えましよう。 mailq コマンドで未酉土のメール 大丈夫でしよう。もちろん、自分て管理しているワークス を石信忍したときに、配達できなかった理由か書かれていま テーションのメールシステムが、元璧であることか則提で した。その理由ごとに対策を考えましよう。 あるのはいうまでもありません : ー ) このことを石忍してか ・ Deferred: Connection refused by xxx ら、よそにお願いするようにしましよう。 このメッセージは、「 xxx というホストにメールを送ろ うとしたけど、断わられてしもた」という意味です。原 因は、たとえはそのメールの受取り先 ( あるいは中継ホ スト ) である xxx に sendmail デーモンか存在しない 場合が考えられます。仕方がありませんので、そのホス トの管理者と連絡をとって、「 x に refuse されたか らなんとかして」とお願いするしかありません。 ・ Deferred: Connection timed out during user open XXX このメッセージは、「 xxx というホストにメールを送ろ うとして叫各したけど、返事がなかったで」という未 です。これにはいくつかの原因が考えられます。 1. xxx か落ちている 2. ネットワーク的に xxx に届かない 3. x の負荷が重いので、 xxx の返事か時間内に返っ てこなかった などか挙げられるでしよう。このような原因でメールが 送れなくなったのなら、とりあえす状況か汝云するのを 待っしかありません。当然、「ネットワークの経路情報 に間違いはないのか」「なぜ xxx か重くなったのか」と いったことも考えなくてはなりません。もしそれで原因 が分かれは、関係者と協力して原因を取り除く努力をし 4 意 広域ネットワーク上で漣用するメーリングリストは注意が必要 です。あるメーリングリストを管理しているホストから、もっと も遠いメンバーのホストまでの HOP 数が 9 を超えると往復で 18HOP となり、エラーメールとして処理されてしまいます。 のような場合は、専用のソフトウェアを用いることになります。 今回は、電子メールについて説明しました。電子メール は、その他のネットワーク機能、たとえば NFS や NIS とは違って、ユーサーが直接、その効能を実できる機能 です。ですから、設定を終えて「みんな、電子メールっこ うてや」と発表すると、ユーサーから「ありがとう、助か るわ」と褒めてもらえます。これは、逆に言うと、動かな くなった場合には「なにしてんねん。ちゃっちゃっとなお さんかい」とすぐに怒られてしまいます。 こんなことにならないように、しつかり系財寺管理をしま しようね。 ( おかやま・きよひこ、かたやま・よしあき大阪大学 さかした・しゅう ASTEC) 37 UNIX MAGAZINE 1993.9
連載 インターネットの 利用と仕組み 電子メール ( その 2 ) 吉村伸 はじめに 今回は、前半は前回に続いてサーピスの話、後半で ることがあります。 た。そのため、これカイ吏えないとけっこう悲しい思いをす Mail Extension) があちこちで使われるようになりまし この日本、ツダと MIME (MuItipurpose lnternet WIDE プロジェクトでは、さっそくテストの段階から、 テムでは暗号のような文字列か現れます。 ただし、これをサポートしていないメールシス ました 1 Subject や From 行に、日本語が正しく入るようになり 使われるようになり、 NIFTY-Serve からの電子メールの とのゲートウェイで、この方式によるエンコーディングが ことでしよう。 7 月 1 日から、 NIFTY-Serve と WIDE ているガ去がヘッダに日本語を用いるのに使われはじめた 今回のもっともホットな話題は、 RFC1342 に言当され 電子メールの機能の復習 MIME 関係の話題をとりあげます。 UNIX MAGAZINE 1993.9 た、厳密には正しくないものでした 1 いままでも日 : 吾が入っていましたが、エスケープ・シーケンスの含まれ ォーマットをしています。宛先や日付、配送にかかわる情 インターネットの電子メールは独特のメッセージ・フ 電子メールのヘッタ のドキュメントにより規定されています。 通信です。インターネットの電子メールは RFC822 など 電子メールの基本は、もちろん person-to-person の 報をへッダ、メールの本文をボディと呼びます。ヘッダ とボディは 1 行の空行によって分けられます。 発信者が通常指示するものは、 To: ( 宛、 Cc: (car- bon copy : 副受取人、なくてもよい ) 、 Subject: ( 題名 ) 。 m : は発信者 ( のアドレス ) 、 Date : は発信した日 付、日該リです。 Message-ID: は電子メールを特定する ために付記されるユニークな ID で、マシン名と時系列か ら生成される文字列の組合によって世界中で同一 ID が ないようになっています。 Received: は途中で経由した システムと、そのタイムスタンプです。 情報が多くて長いときは折り返して次の行へ続けます。 このときは、頁に 1 個以上の空白文字 ( スペース、タフ ) を置きます。空白文字て始まる行は継続行とみなさ前 の行に続けて解釈されます。図 1 の例では、 Received: の はかに Cc : も次の行にまたがっています。 RFC822 で規定されているヘッダには、電子メールに 不可欠な情報と、配送を確実におこなうために必要な情報 が含まれています。 RFC822 自体は、基本的なヘッダの フォーマットか第当されただけの屯なものです。これに 続く RFC で、 822 を参照、拡張するかたちでいくっかの 規定がおこなわれています。その代表的なものが MIME です。 電子メールの同報 電子メールのメリットとして挙げられるのが、同報カ瑢 易なことです。図 1 の例でも、 To: と Cc : で 3 人に同報し ています。 このように To: や Cc: にいくつものアドレスを書けは、 同時に指定したぶんだけ電子メールを送ることができま 49
特集ドン一ときたら困るけど、ネットワーク里・・ ことを確認します。 2. テスト用 sendmail. cf のコピー /etc にコピーします。オリジナルのバックアップをか 保存します。それから、いま作った sendmail. cf を ます、オリジナルの /etc/sendmail. cf をコピーして # cp /tmp/sendmail. cf /etc/sendmail. cf # mv /etc/sendmail . cf /etc/sendmail . cf . bak ならすとってください。この場合は、 ・—bd オプションの意味は次のとおりです。 # /usr/lib/sendmail —bd —q15m のようにします。 次に、 sendmail プログラムを起動します。たとえば次 3. /usr/lib/sendmail の起動 とすれはいいでしよう。 UNIX MAGAZINE 1993.9 banana% tail —f /var/spool/mqueue/syslog 書き込まれます。そこで、 または /var/spool/mqueue/syslog というファイルに ましよう。メールの送受信の情報は、 /var/log/syslog この Try and Error の段階て便利なガ去を 1 つ紹介し Error じゃ困りますけど : ー ) ください。、 Try and Error" ってやつですオす一つと んが、ひとつひとっ原因を突き止めながらチャレンジして 到着するカ蔀寉認しましよう。最初は失敗するかもしれませ はすです。アカウントのあるユーザー宛にメールを出し、 トした結果が正しければ、正常にメールの送受信ができる さあ、ごれで準備は整いました。 -bt オプションでテス ムの事情を考慮して決めます。 っているメールの処理を試みます。この値は、システ です。この例の場合は、 15 分間隔でスプール内に残 単位は s ( 秒 ) 、 m ( 分 ) 、 h ( 時間 ) 、 d ( 日 ) 、 w ( 週 ) ( 未醋のメール ) を再送する時間間隔を指定します。 ー q オフションは、メールキューに溜まったメール ・一 q15m 信要求を待ちます。通常はこの状態で運用します。 デーモンとなってバックグラウンドでメールの送受 す。このオプションを付けて起動した sendmail は、 sendmail プログラムをデーモンモードて起動しま などとして、メールの送受信の様子を監視すると、 ろ分かって便利です。 注意 2 sendmail. fc ファイル sendmail に -bz オプションを付けて実行すると、 いろい /etc/ sendmail. fc という、フローズン・ファイル " ができます。 れは、 /etc/sendmail. cf がソースファイルだとすると、コンパ イル後の実行ファイルに相当し、 sendmail の処理を効率よくお こなうために設けられたものです。 このファイルを利用する場合、もとの sendmail . cf ファイル を変更したら、かならすフローズン・ファイルも更新します。さ もないと、 sendmail を再起動しても設定が斑央されません。 計算機か高速になった現在、フローズン・ファイルを利用して も、目に見えて速くなるわけではありません。トラブルの原因にも なりかねないので、あまり使わないはうがいいでしよう。 ロ ほカネットワークメールの送信 monkey: そういえは、 sarumata さん、月リに「このあ いだのあれ、メールしてくれたか ? 」って、ゆうてはっ たな。また怒らんれように、ちょっと、メールしとこ 今回は、感心なことに、言いつけを忘れすにメールを書いて いる monkey 君でしたが・ sarumata : monkey 、メール送ってくれたか。 monkey : もう、ばっちしです。 sarumata: あやしいなあ。 monkey: そないゆうんやったら、ログインして確かめ てくださいよ。 sarumata : ほんまやな。ええと、 from で見たら・・ きてへんぞ ! monkey : っ ? sarumata : あらへんで。どこ宛に出したんや ? monkey : sarumata 宛ですけど。おかしいなあ。 で読んでます ? sarumata: 〇△にログインして from したぞ。 どこ monkey : へ ? それって、 monkey-net の外のやっ ? sarumata : 当り前やがな。わしは、いつもここで仕事 しとる。 monkey : それはするい。 sarumata: なにゆうてんねん。 monkey-net の外にはメール、 やろ ! monkey : あたり ! ははあ、わかったぞ。 まだ、出されへんねん 27
・ user@hostname.mon—proJ . kani. co ・ JP 自分のドメイン名・ mon-proj . kani. co ・ jp を付けても かまいません。社 se ん os 佖 me と同し意 3 未です。 最初に次の 2 点を決めておかなければなりません。 ・メールホストは誰 ? ・ドメイン名ってなに ? メールホストとは、 /etc/hosts (NIS を利用している 環境では NIS マッフ ) で、 mailhost という別名をもつ ホストです。登録されていない場合は、計算機管理者の偉 い人に訊いてみましよう。 ドメイン名は、自分が管理する電子メール関連の計 算機の集まりに付ける名前です。簡単にいってしまう と、 user@hostname でメールが届く計算機の集まりで す。これも、計算機管理者の偉い人と相談するといい でしよう。勝手に付けると、ネットワークはつながっ ているのにメールのやりとりができない、という不便 なことになってしまいます。 monkey 君の会社全体は kani ・ co ・ jp というドメイン名なので、サブドメインは mon-proj ・ kani ・ co ・ jp としました。 こまで袂まったところで、いよいよ sendmail . cf を 作ります。 sendmail.cf の用意 sendmail. subsidiary. cf を sendmail. cf にイ士立 てあげれはええわけや。さて、どないしよ」 ます、 /usr/lib/sendmail. subsidiary. cf をとり あえす sendmail. cf という名則で / tmp などにコピー し、このコピーしたファイルを修正します。 工デイタ ( ⅵなど ) でファイルを開きます。呪文のよ うな行がたくさんありますが、 こでは詳しい説明はしま せん。詳しく知りたい方は、「 UNIX Communication Notes 」 ( 1989 年 5 月号 ) あるいは rsun システム管 眦 ( アスキー ) を参考にしてください。 それでは、どこをどのように変えるのでしようか。ま す、 # my official hostname Dj $w. $m という行を見てください。これはコメントにもあるよう このワークステーションの正式なホスト名 " を定義 24 します。 $ w にはホスト名、たとえば banana が入ります。 一方、 $m には本来その細織のドメイン名が入ります。し かし、この sendmail . cf のなかでは定義されていない ので、このファイルを使ってメールを送ると送信ホスト 名が、 banana . になってしまいます。メールを送るだけならこれでもかま いませんが、 monkey 君が管理しているネットワークの 外にメールを送った場合、どこからきたメールなのか分か りにくくなってしまいます。そこで、 Dm を使ってこの $m を正しく定義します。具ー勺には、次のような行を追加し ます。 # 10Ca1 domain name Dmmon—proj ・ kani ・ co ・ JP mon-proj ・ kani ・ co ・ jp の部分がドメイン名です。ド メイン名を省略形で書く場合には別名 ( 省略名 ) のクラス を定義します。それにはを使って、 # 10Ca1 domain name aliases Cmmon—proj mon-pr0J . kan i というように、スペースで区切って省略名あるいは別名を 定義します。 「よっしや、 こまではできたぞ。次は何をするんや」 えっと次は・・ しつはこれだけです。編集したフ ァイルは、図 2 のようになっていると思います。これで、 、、知っているホストへは直接メールを送信 " し、、、知らな いホストへのメールは責任者 ( メールホスト ) にメールを 送信 " するシステムがとりあえす出来上がりました。 「なんや。たったのこんだけかいな。そしたら、もうつこ うてもええんやな」 定意 1 電子メールの設定を間違えると、 ( 場合によっては世界中の ) ワークステーションや管理者に迷惑をかけてしまいます。ですか ら、かならすテストをしてから使うようにしてください。 sendmail . cf のなかに、 OX 、 Ox という 2 つのエントリが用 意されていることがあります。これらは、、ワークステーションの ロードアベレージ ( 負御がここで指定されたイ可丿ま . の場合、メー ルの酉占医をストッフする " ために利用します。たとえは、 UNIX MAGAZINE 1993.9