html - みる会図書館


検索対象: UNIX MAGAZINE 2005年4月号
28件見つかりました。

1. UNIX MAGAZINE 2005年4月号

連載 / Perl 活用のヒント メー丿データを見る方法 メールの生データを頻繁に扱う人もいると思うが、そうではな い人も多いだろう。そこで、メールの生データを見る方法をいく つカ齠介しよう。メール・ソフトウェアの多くは、個々のメール の生データを表示する機能をもっている。操作例は以下のとおり で、いずれもメールを j 尺した状態でおこなう。 ・ Mozilla Thunderbird : 、表示 " メニューから、メッセージ のソース " を i 尺する。 ・ Becky! lnternet Mail 2 : 、、表示 " メニューから、ソース表 示 " を i 尺する。 ・ Outlook Express : Ctrl-F3 を押す 図 2 MIME の構造 multipart/mixed text/htm ー image/png そのため、 MIME (Multipurpose lnternet Mail Ex- tensionso 、、マイム " と読む ) が標準化され、 RFC2045 ~ 2049 などで規定された。これは既存のメールの枠組みを 使用しており、メールサーバーの変更を極力抑えつつ上記 の要求を満たしている。 リスト 1 のメールは PNG 形式の画像ファイルが添付 された HTML メールであり、 MIME の枠組みに従って いる。その構造は図 2 のようになる。まず 3 行目で、メ ールの本文全体が multipart/mixed 形式、構成要素の区 切りが、 = ー 1107603799 ー 3568 ー 0 " であることが 規定されている ( 誌面の都合上、で折り返しています。 以下同様 ) 。 Content—Type : multipart/mixed ; boundary==> ー 1107603799 ー 3568 ー 0 ” そして、以下の 2 つの要素で構成されている。 ・ 16 ~ 24 行目の第 1 要素 (text/html 形式 ) ・ 26 ~ 34 行目の第 2 要素 (image/png 形式 ) 96 ちなみに、、 Express" カイ寸かない本家の Outlook 2003 に は、メールの生データ全体を表示する機能がない ( ヘッダを見る ことはできる ) 。とくに、 Exchange Server へ MAPI (Mi- crosoft の独自プロトコル ) で接続している場合は、サーバーか ら生データ全体を取得する手段がないようだ。一方、 MAPI で はなく POP か IMAP でメールサーバーに接続している場合 は、レジストリの操作によりメールの生データ全体を見ることが できるようだ ( ただしはっきりとは確認していない ) 。 GoogIe で ” outlook 2003 ” view source" をキーワードに検索するとそ の方法を解説したページがみつかるだろう。 図 3 HTML 版とプレーンテキスト版を含むメールデータの構造 multipart/mixed multipart/alternative text/plai n text/htm ー リスト 1 は比較的単純な構造だが、 MIME では任意の深 さの構造を表現することができる。たとえば、リスト 1 の メールをメール・ソフトウェアで送った場合を考えてみよ image/png UNIX MAGAZINE 2005.4 のデータ ( 文書の HTML 表現 ) が入る。 ータ ( 文書のプレーンテキスト表現 ) と、 text/html 形式 alternative 形式となり、そのなかに text/plain 形式のデ で text/html 形式になっている文書の部分が multipart/ メールデータの構造は図 3 のようになる。つまり、図 2 テキスト版もいっしょに送るのが普通である。その場合の ソフトウェアが HTML メールを送信する際は、プレーン 版だけで、プレーンテキスト版はない。しかし、メール・ う。 emailform が送信するメールの文書の部分は HTML

2. UNIX MAGAZINE 2005年4月号

連載 Pe 日活用のヒント 今聿英世 emailform Web ページから HTML メールを送る ( 3 ) 今回は、 HTML フォームから添付ファイル付き HTML メールを SMTP で送信するプログラム emailform の解 説の締めくくりとして、以下の 3 つの内容をとりあげる。 1. 添付ファイル付き HTML メールデータの作成 2. データの保存方法 3. その他のコードを読む手がかり 1 は重要な内容だが、コーディングとしては既存のモジ ュールを呼び出しているだけなので、おもに技術的な背景 を説明する。一方、 2 はデータ保存のためにクラスを独自 ここカ吟回のハイライトになる。 に定義しており、 emailform は perl 5.6 / 5.8 を対象としており、 UNIX 環境 (*BSD や Linux 、さらに Cygwin も含む ) であれ は動作するはずである。動イ寉認は Linux と Cygwin の Apache HTTP サーバー上でおこなっている。 この連載でとりあげるプログラムは原則として私が -- - ・か ら書いたものであり、これまでに紹介したぶんも含めて以 下の URL で公開している。 ・ http://www.geocities ・ jp/himazu3/ emailform は表 1 のパッケージを利用しているので、 れらをあらかじめインストールしておく必要がある。 添付ファイ丿イ寸き HTML メールテータ乍成 2 月号では、 HTML メールを SMTP で送信するプロ グラムの例を示した。そのときの主眼は SMTP でメール を送信する方法を説明することだったので、メールデータ の作成には触れなかった ーでは、メールデータの作成 94 について詳しく説明する。 表 1 emailform に要なパッケーシ パッケージ名 IO-stringy MailTo 01S 配布元 URL MIME-Base640 MIME-tools DateTime HTML-Ternplate http://www.srekcah.org/jcode/ jcode. pl encode-j p-ut i16 http://www.geocities.jp/himazu3/ htm12tmplC aperl 付属のものより新しいバージョンカ陀要わ 2004 年 4 月号で紹介 C2004 年 3 月号で紹介 メールデータの概要 メールデータの作成方法を理解するには、メールデータ に関する知識が必要である。 emailform ではもつばら既 存のモジュールを使ってメールデータを作成しているが、 その場合でもメールデータの知識は不可欠である。 ーでいう まずはメールデータの概要を説明しよう。こ 、、メールデータ " とは、メールサーバーとクライアント間、 あるいはメールサーバー間で実際にやりとりされるメール のデータを指している。 メールデータの基本的な枠組みは RFC28221 で定めら れている。 1 つのメールは複数の行で構成されており、行 末は CRLF (OxOd OxOa) で表される 2 。メールの中身は ヘッダと本文の 2 つの部分に大別される。ヘッダの終りは 1 つの空行で表され、その空行より後ろはすべて本文であ る。ヘッダは複数のフィールドから構成される。各フィー 1 http://www.ietf.org/rfc/rfc2822.txt 2 これは、メールデータを SMTP や POP 、 IMAP などでやりとりする 際の決まりであり、メールデータを保存する場合はかならずしも内音研にの行 末を CRLF にする必要はない。 http://www.cpan ・ org/ UNIX MAGAZ 工 NE 2005.4

3. UNIX MAGAZINE 2005年4月号

ー① 9 10 11 12 13 14 15 16 17 18 19 20 21 22 Net : : SMTP; 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 5 7 58 59 60 61 62 63 64 104 local 引 BEGIN { 連載 / PerI 活用のヒント package Emai1Form ; print "Content—Type : text/html ; open (STDERR, ">&STDOUT" ) ; CGI qw(escapeHTML) ; charset=euc—jp\r\n\r\n" use use reqtllre Date : : Format ; : Temp1ate ; MIME: :Base64; MIME: :Entity; jcode . pl" ・ HTML : use use use Encode: :JP: :Uti1; FormRepository ; ExtToMIMEType ; FormConfig ; constant PAGE—TMPL = > "email—form—tmpl . html" # Ⅱ 0 Ⅱ 00 stuff my ($options , mk—options { exit 0 ; print $ ー [ 0 ] , sub abort { s ub sub $select) my $result for my $i ( 0.. $#$options ) { $select ) ? " my $selected = ( $i selectedl' qq{<option value="$i"$selected>$options—> [$i] く /option>\n} ; $result $result ; xfer—cgi—param—to—tmpl—param { my ($cgi , $tmpl—param) = ⑩ー foreach my $i ( $cgi¯>param ) { if ( $EXCLUDED-IN-DISPLAY{$i} Ⅱ $i $cgi → delete ($i) ; else { if ( $i eq "urgency" ) { /*attachment/ ) { $cgi—>param("urgency") Ⅱ 0 ; my $ 0 $tmpl—param—>{urgency-options} = mk—options (\@URGENCY , else { $tmpl—param—>{urgency} = $URGENCY [ $ 0 ] ; UNIX MAGAZINE 2005.4

4. UNIX MAGAZINE 2005年4月号

・ %FIELD-ID-TO-NAME 連載 / Pe 日活用のヒント ・ @ASCII-FIELD 定義している。 フィールド ID とフォーム上のフィールド名との対応を 英数字が含まれていた場合、それらを半角 ASCII 文字 ィールド ID を列挙する。ただし、チェックの際に全角 ASCII 文字のみの入力を想定しているフィールドのフ ・@SINGLE-ADDR ASCII-FIELD にも列挙される。 こで挙げられたフィールド ID は、 @ を列挙する。 メールアドレスを記入するフィールドのフィールド ID ・@EMAIL-FIELD に変換する。 リスト 2 form ・ cgi されたフォームの表小がある。 form. cgi を、、 view-arch= これまで触れていなかった form. cgi の機能として、保存 form ・ cgi のがよいだろう。 もの ) を運用しているのであれば、それに問い合わせる よるディレクトリ・サービス ( オンライン名簿のような の肩効性を確認するのカましい。細織内で LDAP に 際に使うのであれば拡張し、より確実な方法でアドレス る正規表現とマッチするかどうかで判断しているが、実 は真を返し、そうでなけれは偽を返す。現在は単純に、あ 正当なメールアドレスかどうかを判断する。正当であれ ・ sub valid-email れないもののフィールド ID (name 属性 ) を列挙する。 ータやアーカイプしたフォームを表示する際には反映さ フォームのⅲ put タグのなかで、メール内の HTML デ ・ @EXCLUDED-IN-DISPLAY を列挙する。 スを 1 つしカ授け付けないフィールドのフィールド ID メールアドレスを記入するフィールドのなかで、アドレ ファイル名 " というパラメータを含む URL で呼び出すと、 指定したフォームが表示される。 保存されたフォームの表示は archive. cgi がおこなう のが自然と思うかもしれないが、そうすると form-tmpl. html を form. cgi と archive. cgi の両方か皷うことにな る。それより form-tmpl.html は form. cgi だけカ甘及い、 archive. cgi はアーカイプ内容のリスト表示に徹するのが プログラムの構造として好ましい。 archive. cgi さきほど述べたように、 archive. cgi はアーカイプ内容の リスト表示だけをおこなっている。これまでにも述べたよ うに、 emailform カイ乍成するアーカイプは月ごとにまとめ られており、パラメータなしで archive. cgi を呼び出した 場合は、現在の月のアーカイプを表示する。、、 arch = 2005 ー 02 " のようにパラメータで年と月を指定すると、その月のア ーカイプを表示する。 ☆ ( いまづ・ひでよモルガン・スタンレー証券 ) ある。 perl でどう書くべきかを考える一助になればさいわいで の具体例になっている。皆さんがこれらの技術を理解し、 MIME 形式のメールの送信など、 PerI が得意とする処理 データの生成、 HTML フォームの受付け / 保存 / 取出し、 際に使えるわけではないが、テンプレートによる HTML がかりをとりあげた。 emailform はそのままの状態で実 タの作成、データの保存方法、それ以外のコードを読む手 今回は、 emailform の解説の最終回として、メールデー 1 3 4 6 7 8 # ! /usr/bin/perl ー use strict ; # $ld: form. cgi,v 1.2 2005 / 02 / 09 21 : 16 : 33 himazu Exp $ # See . /LICENSE for terms of distribution . # (c) 2005 Morgan Stan1ey Dean Witter and Co . UNIX MAGAZINE 2005.4 103

5. UNIX MAGAZINE 2005年4月号

連載 / Pe 日活用のヒント ・ form. cgi ( リスト 2 ) ・ FormRepository. pm ・ ExtToMIMEType. pm ・ archive. cgi のほか、以下のファイルから構成されている。 102 emailform がおこなっている日本語特有の処理として グを使うのカましい。 上、半角カタカナが定義されている日本語ェンコーディン ない。ユーザーが半角カタカナを入力する可能性がある以 また、 ISO-2022-JP では半角カタカナが定義されてい い。 HTML のテンプレートの処理でも問題はない。 く、プログラム内の文字列に漢字を入れても問題が起きな Shift-JIS のように漢字の部分に、、 \ " が含まれることはな は、処理がいちばん楽だからである。 ISO-2022-JP や ンコーディングがあるなかで EUC-JP を使っているの ISO-2022-JP 、 EUC-JP 、 Shift JIS などの日本語工 form では必要ないのでいっさい使っていない。 perl 5.8 であれば Unicode を簡単に扱えるが、 email- ンコードする例は稀だからである。 日本語の subject フィールドを ISO-2022-JP 以外で工 ある。 こでは ISO-2022-JP を使っている。なぜなら、 唯一の例外は、 j 言するメールの subject フィールドで 週言するメールの中身 ・テンプレート・ファイル ・プログラム内の文字列 使っている。具体的には以下の箇所で使用している。 ほとんどすべての局面で漢字コードとして EUC-JP を 冫哭子 を使っている。 ト・ファイル (form-tmpl.html と archive-tmpl.html) が、そのほかに HTML::Template 用の 2 つのテンプレー emailform を構成するプログラム・ファイルは以上だ 設疋や定数を定義している。 ・ FormConfig. pm 流用している。 張子と種類の対応には Apache カ駛っているデータを ファイル名の拡張子からファイルの種類を判断する。拡 は以下のものが挙げられる。 ・ ASCII 文字のみの入力カ咽定されているフィールドに 全角英数記号があった場合、それらを半角に変換する。 ・メールの subject フィールドの値となる文字列に半角カ タカナが含まれていたら全角に変換する。 FormConfig ・ pm FormConfig. pm は、ファイルの名前が示すとおり設疋 をおこなう。 PerI の言語要素の観点から分類すると、定 には以下の 3 種類がある。これらはすべてェクスポートさ 実彳デ尉竟に依存する項目 ・フォームの内容を表す項目 実行環境に依存する項目 に分類できる。 これらは定義している値の働きの観から、以下の 2 っ ・関数 ・定数として扱う変数 ・ use constant で定義する定数 れている。 必顎項目のフィールド ID を列挙する。 ・@REQUIRED-FIELD の値を使って緊急度フィールドの選択肢を作成する。 刀く、 ートからフォームの HTML データを生成する際に 緊急度の選択肢を定義している。 form. cgi はテンプレ ・ @URGENCY りである。 そして、フォームに合わせて変更する項目は以下のとお フォームの内容を表す項目 ・ SMTP-PASSWD ・ SMTP-USER ・ SMTP-SERVER ・ EMAILDOMAIN ・ DEST-EMAIL も分かるだろう。 れらの未は前回説明したし、ソースコードを読むことで で、いずれも use constant て疋義される定数である。 実行環境に合わせて適宜変更する項目は以下のとおり UNIX MAGAZINE 2005 . 4

6. UNIX MAGAZINE 2005年4月号

連載 /UNIX Communication N0tes の利用 文字コードによるチェック 202 私にとっては、とくに、、文字コードによるチェック " カ港 力的である。最近受け取る SPAM には、ノ、ングルやキリ ル文字で書かれているものがけっこうたくさん含まれてい るからだ。 SpamAssassin は Perl で言杢されているため、ほとん どすべてのプラットホームで利用できる。また、メールサ ーバーとの組合せについても、多種多様な方法が用意され ているので、既存のメールサーバーへの細込みも比較的容 易である。 SpamAssassin のインストールはとくに難しくないが、 MTA との連携など、いくつかのバリエーションがある。 そこで、導入方法については次回にまとめて説明する。 SPAM の送信側の工夫 こまでに説明したように、 SPAM を破棄するためにさ まざまな手段が考案され、使われている。一方、 SPAM を 送る側も対抗策の考案に余念がないようだ。 初期の SPAM 対策ソフトウェアでは、語句解析による フィルタリングがよく使われていた。ところが、最近は単 純な語句解析では十分に機能しないことが多い。 よくみかける SPAM のカテゴリーの 1 つに、薬の通イ言 販売や住宅ローンの借換えなどがある。これらの SPAM の場合、前者では、、 Viagra" という語がよく使われていた し、後者なら、、 refinance" が何度も出現する。かっては、 これらの語を検出したら SPAM として処理すればよかっ たが、 SPAM の送信者側もいろいろと考えているようだ。 前者の例なら、 ・ Vi a gra ・ Vi gra ・ Vi@gra ・ V-i-a-g-r-a などと書くことで、単純な語句解析をすり抜けようとする。 最近はこのようなテクニックが常態化し、単純な語句解析 ではとうてい太刀打ちできなくなってしまった。 また、 Bayesian フィルタへの対才亢策も考案されている。 Bayesian フィルタは、 SPAM と判定されたメールに含ま れる語集合と、それ以外の普通のメールに含まれる語集合 38 はかなり異なるという暗黙の肘是のうえに成り立っている。 そこで、 SPAM の送信側は、 SPAM に普重のメールでよ く使われる語を大量に交ぜ、 Bayesian フィルタの精度が 上がらないような工夫を始めた。たとえば、 HTML 形式 の SPAM の文末に、サイズの小さい文字で大量の語句を 書き連ね、しかも文字色を白にしてユーザーに気づかれな いようにしている。これによって、 Bayesian フィルタの 網をかいくぐろうとしているのである。 HTML 形式の SPAM では、メッセージをすべて画像 として作成し、それだけを埋め込んで送ってくるものもた くさんある。このようなメールについては語句解析はまっ たく無力なので、せつかくの SPAM フィルタもあまり役 に立たない。 こまでに説明したように、 SPAM であるにもかかわら ず普通のメールと判定されてしまうメールは、おおむね次 のような牛を満たしている。 ・ HTML 形式のメールで、メッセージそのものカ哂像と して埋め込まれている。 文末に、無関係な語旬が大量に書かれている。 ・ SPAM フィルタで検出されそうな、、危ない語 " を、異な る文字や記号を使って別の語として認識させようとして いる。 今回は、 Mozilla Thunderbird や SpamAssassin で 使われている Bayesian フィルタなど、 SPAM を破棄す るための基本的な技術について説明し、送信者側のいくつ かの対抗策を紹介した。 次回は、 SpamAssassin の導入方法、 SPAM 破棄以外 の技術的な取組みについて説明する予定である。 ( やまぐち・すぐる奈良先端利・判支術大学院大学 ) [ 赭文献 ] [ 1 ] PauI Graham, ス P れル 7 、 SPAM, 2002 (http://www.paulgraham.com/spam.html) ☆ UNIX MAGAZINE 2005 . 4

7. UNIX MAGAZINE 2005年4月号

連載 / Pe 日活用のヒント image/png image/jpeg text/htm ー multipart/related text/plai n multipart/alternative multipart/mixed 含むメールテータの構造 図 4 HTML 版 ( インライン画寸き ) とプレーンテキスト版を 3 行目 Content-Type: multipart/mixed; ンコーディングのメールを目にすることがある。 ィールドで charset を才彳定していない ISO-2022-JP 工 MIME-Version フィールドがなく、 Content-Type フ JP 工ンコーディングで送られていた。その名残もあり、 語のメールは MIME が規定される前から ISO ー 2022 ー ASCII のプレーンテキストと解釈される。しかし、日本 規格上はこのフィールドがないと MIME 形式ではなく、 値になっているのを私は見たことがない。 ジョンは 1.0 だけであり、このフィールドが 1.0 以外の 準拠していることを表す。現在のところ MIME のバー このメールが MIME 形にで、バージョン 1.0 の規格に 5 行目 MIME-Version: 1.0 リスト 1 の詳細 html と image/jpeg が入るのである。 った部分が multipart/related になり、そのなかに text/ 図 4 のような構造になる。つまり、図 3 で text/html だ さらに、文書の部分にインラインの JPEG 画像があると boundary= = ー 1107603799 ー 3568-0 ” 16 行目 Content-Type: text/html; charset=euc-jp UNIX MAGAZINE 2005.4 27 行目 Content-Type: image/png; narne=* ” 2005 ー 02 ー 05 ー 20431 & 999800 ー b8 ー al. png ” データの形式を表している。データ形式名は、、形式 / サ プ形式 " である。テキスト形式のデータは文字セットを charset パラメータで才旨定できる。 charset パラメータ がなければ ASCII と解釈される。 4 行目 Content-Transfer-Encoding: 7bit 18 行目 Content-Transfer-Encoding: base64 Content-Type で指定された形式のデータをメールで 送るため、どのようにエンコードするかを表す。よく使 われるのは、上記の、、 7bit" 、、 base64 " のほか、 、 8bit ' quoted-printable" である。このフィールドは省略可 能で、省略した場合は 7bit と解釈される。 7bit とは、データが 7bit の範囲内のテキストデータで、 7bit の通信路で問題なく送れることを未する。 8bit は任意のバイナリデータが許されるのではなく、 0X80 ~ Ox 仕を使用する charset 、たとえば Shift JIS や ISO ー 8859 ー 1 、 UTF-8 などのテキストデータをその まま入れるという未である。 8bit 以外はメールのデータのなかに 0X80 ~ 0x 仕か覿れ ない。 base64 工ンコーディングは MIME のために考案され た方式で、任意のデータをテキストデータとしてエンコ ードする。 base64 工ンコーディングは画像などのバイ ナリデータに適用されることが多いが、テキストファイ ルに使うこともある。 base64 の詳細は RFC などを参照してほしいが、大雑 把にいえば 3 バイトの任意のデータを 64 種類の文字 (A 、、 0 ~ 9 、 / 、 . ) を使って 4 字で表す。 quoted-printable 工ンコーディングも MIME のため に考案された。テキストデータに含まれる ASCII E 卩刷 =AI " のように = と 16 進 可能文字以外のバイトが、 数 2 字 ( かならず大文字 ) の組合せで表される。また、元 データの長い行カそのままメールデータに現れるのを防 ぐため、行末の、、 = " で継続行を表す。つまり、 quoted- という部分があった場合は、、 abcdef " とデコードされ def abc= printable でエンコードされたデータに 97

8. UNIX MAGAZINE 2005年4月号

「・ 2004 年 4 月 ~ 2005 年 3 月 (5)OSPF プロトコル・・・・ 2004 / 05 70 ・ 2004 / 07 67 (6)OSPF プロトコル ( 2 ) ・・ (7)BGP ・・・・・・ 2004 / 09 45 2004 / 12 73 (8)BGP ( 2 ) ・ ・ 2005 / 03 103 (9)BGP ( 3 ) ・・ ・ JavaServer pages ( 荒井美千子 ) ・ 2004 / 04 115 (38)Struts ( 9 ) ・・ (39)JavaServer pages 総まとめ・・・・・・ 2004 / 05 105 ・ perl 活用のヒント ( 今聿英世 ) ( 7 ) 日本語処理・・・・・・ 2004 / 04 63 (8)File::SyncNMod ーディレクトリの内容をミラーする・・ 2004 / 05 78 (9)Windows の / 忖支を perl で書く・・・・・・ 2004 / 06 125 (10)extract-log. pl ーー HTML::Tree を利用した HTML ファ イルの加工・・・・・・ 2004 / 07 114 (11)PerI/Tk による GUI プログラミング・・・・・・ 2004 / 09 105 2004 / 10 (12)PerI/Tk による GUI プログラミング ( 2 ) ・・ 160 ( 13 ) C 言言吾で書かれたモジュールのコンパイル・一Ⅵⅱ n32 : ℃ⅱ p ー (12)DVD-R の作成・・・・・・ 2004 / 06 177 (11)X-CD-Roast ・・・・・・ 2004 / 05 135 (IO)CD-R の利用・・・・・・ 2004 / 04 171 ・ Red Hat Linux のツールたち ( 本甦 ) ・ 2005 / 03 115 (16)emailform ー - Web ページから HTML メールを送る ( 2 ) 2005 / 02 147 (15)emailform ーー Web ページから HTML メールを送る・ 139 (14)UNIX/Windows 対応の GUI プログラム・・ board の修正・・ ・ 2004 / 11 154 2005 / 01 2005 / 03 159 (I)SFU の導入と NFS の設疋・・・・ 2004 / 05 115 ・ Services for UNIX ( 及川卓也 ) (21)Fedora Core 3 でプリンタを使う・ (20)Fedora Core 3 ・・ 2005 / 02 168 179 (19)Fedora Core 2 で DVD マルチドライプ・・ ・ 2005 / 01 2004 / 12 177 (18)Fedora Core 2 のカスタマイズ ( 3 ) ・・ ・ 2004 / 11 181 (17)Fedora Core 2 のカスタマイズ ( 2 ) ・・ (16)Fedora Core 2 のカスタマイズ・・・・・・ 2004 / 10 177 (15)Fedora Core 2 のインストール・・ ・ 2004 / 09 110 (14)Red Hat Linux 9 ・・ 2004 / 08 108 ( 13 ) リカバリー CD/DVD の作成・・・・・・ 2004 / 07 174 ( 2 ) アカウント管理の一元化と UNIX 環境の実現・・・・ 2004 / 06 ( 3 ) メールサービス・・・・・・ 2004 / 10 118 ( 4 ) Ⅵ発 b メールサービス・・・・・・ 2004 / 11 162 ・ UNIX Communication Notes ( 山口英 ) 2004 / 12 47 ( 198 ) 広帯域インターネット時代の情報共有 ( 9 ) ー ( 197 ) 次のドアカく日・・ 2004 / 11 61 ・・ 2004 / 10 49 ( 196 ) 広帯域インターネット時代の情報共有 ( 8 ) ー XOOPS ( 4 ) 2004 / 09 38 ( 195 ) サーバー言気の架さ・・ ・ 2004 / 08 58 ( 194 ) 広帯域インターネット時代の情報共有 ( 7 ) ー XOOPS ( 3 ) ・ 2004 / 07 53 ( 193 ) 広帯域インターネット時代の情報共有 ( 6 ) ー XOOPS ( 2 ) 2004 / 06 57 ( 192 ) 広帯域インターネット時代の情報共有 ( 5 ) ー 2004 / 05 54 ( 191 ) 広帯域インターネット時代の情報共有 ( 4 ) 2004 / 04 54 ( 190 ) 広帯域インターネット啣弋の情報共有 ( 3 ) ー WebDAV ( 2 ) ストレージ・ XOOPS ・・ Wiki の活用 (44)Mew と Namazu でメールを検索・・・・・・ 2004 / 10 138 ( 43 ) ⅥハⅥーベージのチェック・・ ・ 2004 / 08 102 ( 42 ) 方寸線検知器と MRTG ・・・・・・ 2004 / 07 168 (41)DarwinPorts ・・ 2004 / 06 140 (40)anacron ・・ 2004 / 05 159 (39)GPS 孑第電話で遊ぶ・・・・・・ 2004 / 04 138 ・ UNIX イ財リ帖 ( 宮下イき甫 ) (201)SPAM だらけのメールポックス・・・・・・ 2005 / 03 36 2005 / 02 47 ( 200 ) 情報漏洩対策の考え方・・・ ( 199 ) 気になることはすぐに片づける・・・・・・ 2005 / 01 49 110 (3)Interix の応用・・・・・・ 2004 / 07 132 ・ SFU の活用 ( ー之 ) ( 1 ) イ乍業工竟の整備・・・・・・ 2004 / 08 119 (2)Web サーバーとリモートアクセス・サー 154 182 ノミーー ・ 2004 / 09 ( 45 ) 。 I で差込み、印刷・・・・・・ 2004 / 11 118 ・ 2005 / 01 158 (46)portaudit ・・ 2005 / 02 117 (47)NeoOffice/J ・・ 2005 / 03 152 (48)Tux Paint ・・ ・ zaurus with Linux ( 石島悌 / 林治尚 ) ( 10 ) ログの活用・・・・・ 2004 / 04 128 ・ 2004 / 05 174 ( 11 ) 続・キーポード・・ ・インターフェイスの街角 ( 増井俊之 ) (74)PC でセンサーを活用する・・・・・・ 2004 / 04 180 (75)MouseFieId ・・ 2004 / 05 181 ( 76 ) 短い名前の活用・・・・・・ 2004 / 06 186 ( 77 ) 矢印キーの活用・・・・・・ 2004 / 07 186 (78)Processing ・・ 2004 / 08 171 ( 79 ) どこでもメモ・・・・・・ 2004 / 09 173 ( 80 ) 本棚コミュニケーション・・・・・・ 2004 / 10 187 ( 81 ) 傾きインターフェイス・・・・・・ 2004 / 12 188 ( 82 ) 位置コミュニケーション・・ ・ 2005 / 01 189 ( 83 ) 職丘の可正・・・・・・ 2005 / 02 180 ( 84 ) ファイルシステムによる階層型データの管理・・ 180 ・ 2005 / 03 UNIX MAGAZINE 2005.4

9. UNIX MAGAZINE 2005年4月号

連載 / U N Ⅸ便利帖ー 0 図 4 いま宣伝したサービスか表示されている p 垣 ( m 6 Rendezvous について MIYASHITA kensuke ( ヴ MY HOME PAGE リスト 1 豕庭内向けの index. html く html> く head> く titIe>My I'HOMEII page く /title> く /head> く body> く h1>We1come to My HOME! く / hl > く /body> く /html> 引数を付けずにコマンドを実行すると、簡単な説明カ俵 示されますにの例では、、サービスのタイトル " カ啌白を含 むため二重引用符で囲んでいます ) 。、、サービスの種類 " で は、先頭に、、一プロトコル名 . " と記述し、続いて TCP な ら、、一 tcp. " 、 UDP なら、、 -udp. " と書きます。最後の、、 & " は、上記のコマンドをバックグラウンドで実行するための ものです。 このコマンドを実行してから、同じネットワーク ( 家庭 内 LAN) に接続されたマシン上の Safari のブックマーク にある、、 Rendezvous " をクリックすると、図 4 のように なります。さきほどの図 2 と見くらべると、いま宣伝した サービスが追加されているのが分かります。 ちょっと横道に逸れますが、 mDNSProxyResponder- posix コマンドではほかの有用なサービスを宣伝するこ ともできます。たとえば、次のようにすれば G 。 ogle を google. local" という名前で使えるようになり、図 4 と同 様にブックマークに自動的に表示されます。 % mDNSProxyResponderPosix www.google . com google Google -http . —tcp . 80 & WWW サイトを家庭内向けに変更 この時点では、 WWW サイトの設定はまだ変えていま せん。したがって、このまま Safari から図 4 に表示された 、、 MY HOME PAGE" をクリックすると、外部に公開し ている WWW ページが表示されてしまいます。そこで、 家庭内専用の WWW ページが表示されるように WWW 第第 Rendezvousv 92 サイトの定を変更しましよう。 まず、家庭内専用の WWW ページを用意します。と りあえす、リスト 1 のようなごく簡単なファイルを作成 し、 /usr/local/www/data.rendezvous ディレクトリに 保存します。 そして、 WWW サイトの設定を変更します。このサー バーでは Apache か動いているので、バーチャルホスト機 能を使ってこれを実現します。それには、リスト 2 の内容 を httpd.conf に追加します ( リストの行頭の数字は説明 のための行番号です ) 4 1 行目は、 IP アドレス 10.0.0.1 のホスト ( このサーバ ー ) に対してバーチャルホスト機能を有効にするという宣 言です。 2 ~ 5 行目は、従来のサーバー名 (www.example.jp) で アクセスされたときの設疋です。これは httpd.conf のほ かの部分で詳細に設疋してあるので、この部分ではサーバ ー名と WWW ページがどこにあるかだけを指定していま す。 6 行目以降が家庭内専用 WWW サイトの設定です。さ きほどの mDNSProxyResponderPosix コマンドの引数 からも分かるように、 Rendezvous からみたこのサーノヾー のホスト名は www.local なので、これをサーバーの別名 として 8 行目で指定しています。 9 行目に書いているのは、 さきほど index. html を置いたディレクトリ名です。続く 10 ~ 11 行目では、エラーとアクセスに関するログの保存場 所をしています。 こまでの設定が終ったら、 Apache を再起動します。 % sudO apachectl restart そして、さきほどの Safari で Rendezvous ブックマー クにある、、 MY HOME PAGE" をクリックすると、図 5 のように家庭内専用の www ページが表示されます。 Windows で Rendezvous 自宅を訪問する人がすべて PowerBook や iBook を持 っていればこれでよいのですが、実際にはそうもいきませ ん。最近、私の周囲では Macintosh のユーザーがずいぶ 4 このサーバーでは、これまでノ←チャルホスト機能を使っていなかったので、 リストの体熔を httpd.conf に書き加えましたが、すでにこの機能を利用 しているときは書き換えてください。 UNIX MAGAZINE 2005 . 4

10. UNIX MAGAZINE 2005年4月号

連載 / ネットワークとセキュリティ 58 ・ http://www.packetfactory.net/Pr0jects/sentinel/ sentinel ニッファー調査プログラムを紹介します。 ないため、 こでは *BSD や Windows 上で動作するス Sniffdet は、残念ながら Linux 上でしか正常に動作し その他のスニッファー調査プログラム echo ) 192 + 168 * ( 256 1 ) + 100 * ( 256 2 ) + 2 * ( 256 3 ) 凵 bc で表現した形式に変換する例を示します。 トごとに区切った形式から、 32 ビットをそのまま 10 進数 以下に、 bc コマンドを使い、 IP アドレスを 1 オクテッ ンパイルをおこないます。 gus-pkt—>dest-ip の値を 40151232 に書き換え、再度コ この IP アドレスを 192.168.100.2 に変更するには、 bo - bogus-pkt->dest—ip = 1611643336 ; されています。 lib/latencytests. c の 302 行目にハード・コーディング テスト用の宛先 IP アドレスは、ソースコードの src/ ことをお勧めします。 ストをおこなう場合には、バケット中の IP アドレスを変更する ません。しかし、 IDS の言盟衾知や、万が一 - ーのことを考え、このテ め、通前はバケットがネットワークの外部に j 言されることはあり せます。宛先 MAC アドレスには架空アドレスカ甘旨定されるた ポート番号、宛先ポート番号が 23 番のバケットを大量に発生さ BraziI に割り当てられている IP アドレスプロック ) で、 j 言元 ているマシン、宛先 IP アドレスが 200.185.15.96 (Yahoo! このテストでは、送信元 IP アドレスがテストをおこなっ 直な感想です。 tency テストはあまり実用的とはいいがたいというのが正 結果が得られるわけではないことです。現時点では、 La- ワーク、 D 。 S 対策の状況などにより、かならずしも正確な は 600MB ~ 1.7GB ) 、調査対象ホストの CPU やネット トに多大なトラフィックを発生させること ( テスト環境で す。デメリットとしては、調査対象のネットワークとホス 装に関係なくスニッファーの存在を推定できる点がありま この手法のメリットとしては、調査対象のホストの実 の解釈がユーザーに委ねられています。 れる ping の応時間をそのまま表示するため ( 図 9 ) 、値 sentinel は、 OpenBSD 、 FreeBSD 、 NetBSD 、 Linux で動作するリモート・スニッファー調査プログラムです。 スニッファーの調査手法としては、 ARP 、 DNS 、 ICMP Etherping のそれぞれを利用する方法に対応しています。 Sniffdet か動作しない *BSD 系の OS でも動くのが大き な特徴です。ただし、タイムアウトの処理が甘く、テスト 対象のホストによっては正しい結果が得られない場合があ ります。 また、 Linux でコンパイルをおこなうには、 pthread の 実装の関係上、 detect. c の 123 行目と 124 行目を以下の ように書き換える必要があります。 pthread—mutex—init (&th—mutex , NULL) ; pthread—mutex—init (&local—mutex , NULL) ; PromiScan ・ http://www.vector.co.jp/soft/winnt/net/ Se326372. html ・ http://www.securityfriday.com/jp/contents/ promiscan. html PromiScan は、 SecurityFriday によって作成された Windows 用の promiscuous モード検知ツールです。 ARP を利用する手法を用いており、さまざまなパラメー タを設定できます。プログラムにはフリー版と、巡回チェ ック機能などが強化された商用版が用意されています。 スニッファーは、ネットワーク管理をおこなううえで役 立つツールにも、クラッカーがさらなる侵入先を探すため に ID とパスワードを収集するツールにもなりえます。そ れだけに、どのホストでスニッファーカ働いているかとい う情報は、セキュリティ管理の面で役に立つでしよう。 ( しらはた・しん慶應義塾大学 ) [ 赭文献 ] [ 1 ] Robert Graham, S がれ 9 ( れ e ) 0 w 加 e 竊 st ガ e ツ FAQ, 2000 (http://www.robertgraham.com/pubs/ sniffing-faq. html) ☆ UNIX MAGAZINE 2005.4