Linux Gazette 2003年7月号 #92
今月のLinux Gazette の主な記事
n今月のニュース
 ・法制化
 ・一般ニュース
 ・ディストリビューション関連ニュース
 ・ソフトウエア及び製品関連ニュース
n message queue上のSelect()
n Linuxで世界の健康を救う
n 私のオープン・ラジオ
n Linuxにおけるメールサブシステムの設定
 
(訳者注)
原文を一括して一つのファイルでセーブするには、下記のリンクがあります。
TWDT 1 (gzipped text file)
TWDT 2 (HTML file)
前者はテキスト形式で、後者はHTML形式です。但し、HTML版のリンクが働くとは限りません。
 
 
 
 
 
今月のニュース
▼▼▼ 法制化 ▼▼▼
特許
米国で定着するに至ったソフトウエア特許が、「協調!」と「革新の促進!」の大声に押されてヨーロッパでも進むのは間違った制度だと思われる。皆が気にしている訳ではないが、リチャード・ストールマンとニック・ヒルが短いが奥深い計画の批判critique of the plansThe Guardianに発表した。結局、双方ともソフトウエア特許の導入には逆の効果があると主張する。これは革新を促進させるだろうか、停滞させるだろうか?もっと確実な条件の下でソフトウエア開発は栄えるだろうか、それとも訴訟の泥沼の中で行き詰まるだろうか?結局、自分で証拠を見つけて決心する外はない。これがこのカラムニストの意見だが、リチャード・ストールマンのような人を見て、特許が増えるのを喜んで「誰が革新を支えているか」と言う人達を見ると、自ずから答えが出てくる。
ソフトウエア特許計画の進展に重要な役割を果たした英国の欧州議会議員アーレン・マッカートニイは、自分の立場が良く分かっている。我々自由ソフトウエア唱道者がなすべきこと should doも分かっている。
何か「コンピュータ権利運動」が現実味を帯びる時期ではないか・・・我々には自分のビジネスモデルを残りの産業にも押しつけようとするソフトウエア産業一部門だけのためでなく立法する義務がある。それは「無料」でないのを超えて、実は、ユーザに著作権制度を押しつける別の形の独占なのだ。
正直のところ、1980年代にマーガレット・サッチャー会社が広めた「TINA」主義(代わりはない)の臭いがする。マッカートニイは特許擁護派ロビイが残りの産業に、政府後援の人為的独占を基礎とするビジネスモデルを、押しつけようとしている皮肉に気が付いているとは思えない。Resisterは、アーレン・マッカートニイのような人々を無能だと罵って結局自分を甘やかす人々を批判したcriticised 。批判はある程度有効であるけれども、洞察に満ちたものではなく、結局は薄手でお座なりなもので、反対の実現には必ずしも有効な対策a true measure ではない。多分、ヨーロッパ特に英国、が直面している真の現実は、英国政府がIDカードに関する公開協議をどう扱うかだろう。積極的に転回させ議論を少なくする結果を維持しようとして、一般国民が the STAND.org.uk website を通じておこなった数千の提案が、一つの投票にまとめられた。英国政府は明らかに、我々がどんなにおだてようと flattering 、一般国民が定義した契約条項を作るのに熱心ではない。契約条項を決める関心は、ヨーロッパパスポートにon European passports.生物学的データを含めることにある。

それでも、なすべき仕事はまだある。欧州議会の法律問題及び域内市場委員会(JURI)が予定ソフトウエア特許指令に対する修正提案の最終リストを票決しても has voted 、提案は欧州議会を通過しなければならない。指令が議会段階を通るのを急ぐ試みに続いて、元の日付が2003年9月1日に変更されたrescheduled to its original date。関係当事者が欧州議員にロビイ活動をする時間が少し出来たが、休日を考慮すると、考える時間は限られる there is not as much time as one might think.。

EULA
Infoworld reports インフォワールドの報じるところによれば、米国最高裁は分析模倣事件の審問を却下したので、下級審裁定が有効になった。下級審裁決は、EULA製品を侵害して製品の外観と感触を模倣した(同様のコードを創作したと抗弁)会社に反対するものであった。この事件は、EULAの法律的価値に疑問のあるUCITA州(明白にEULAを実施可能としたバージニアとメリーランド)の外で、EULAの法律的価値には疑問があるので、意義が深い。だが明らかにもっと価値がある。裁判所は、直接証拠なしに、被告はユーザ・インターフェイス以上のことを調査し「なければならない」との原告の論点をが明白に承認した。この事件は、会社間の前の訴訟のあった数年前に遡る。
 
SCO
SCO事件の詳細をもう一度復習しても得るところは殆どない。代わりに法律訴訟に関する文書を集めたsco.iwethey.org を解析すると良い。さらに研究する気があれば、エリック・レイモンドが SCO vs. IBM position paper (SCO対IBM政策方針)の改訂版を出した。これは過去数年の事件の変遷を反映している。この事件全体を囲む疑いが、間もなく晴れると良い。リチャード・ストールマンが言ったようにhas commented、この事件が起こした混乱にはマスコミも責任がある。
 
 
 
 
▼▼▼一般ニュース▼▼▼
SGIがMadisonに関する最初のAltix顧客を発表
SGI は、新しいインテル Itanium 2 'Madison プロセッサの最初の顧客は、SGI Altix 3000システムの最近の販売にある、と発表した。Altix 3000システムは、インテルのItanium 2プロセッサを用いるSGIの第四世代NUMAflex共有メモリアーキテクチャと64ビットLinux OSを、平衡のとれた独特のシステムにまとめたものである。各スーパークラスタ・ノードが、64個までのItanium 2プロセッサとメモリの512GBを用いて単一のLinux OSイメージを走らせる。新プロセッサにより、Altix システムを即座に使用することが出来る。最初のSGI顧客の中でも、新プロセッサに基づいて Altix 3000 を展開しているのは、
・SARA 計算ネットワークサービス:Intel Itanium 2 プロセッサ416個 (1.30 GHz, 3M) と832GB のメモリ。
・オークリッジ国立研究所:2TBのシステムメモリと1.5 TELOPSの計算力でIntel Itanium 2 プロセッサ256個 (6MB L3 キャッシュ付き1.50 GHz) を走らせるSGI Altix 3000インストレーション
・北西太平洋国立研究所:Intel Itanium 2 プロセッサ128個 (1.50 GHz, 6M)を装備した SGI Altix 3000 システム。
SGI は、新Itanium 2 プロセッサをに基づくシステムを用い、てパフォーマンス・ベンチマークperformance benchmarks の点で大変良い仕事をして来た。エントリ・レベルのサーバは、メモリ32GBまでのプロセッサ4台で $70,176 (米国表示価格)で出発し、プロセッサ12台、メモリ96GBを最大にする。
 
 
 
 
▼▼▼ディストリビューション関連ニュース▼▼▼
Debian
ロバート・ミリアンが、GNU/FreeBSD のセルフホスト・インストールに成功したと報じたRobert Millan announced 。kernelがinitを走らせ、これがswapとfilesystemsを始動して、立派なgetty8個を生む。彼は最小のユティリティとAPTを使って新しいbase tarball (26.9 MB)を構築した。また自分のGNU/FreeBSD パケージ用にtoolchain とXFree86APTを含むAPTレポジトリも設定した set up an APT repository 。( Courtesy Debian Weekly News)
スラッシュドットでon Slashdot.、DebianがLinux普及で生き残れるかWill Debian survive Linux's popularity? を議論した。

Knoppix
Quantian科学計算環境。ダーク・エッデルが Knoppixの再製作をQuantianに発表したannounced Quantian, 。Quantian は、Knoppixと異なり、大量又はデータ駆動の分野の応用又は論理作業者に関心のあるプログラムのセットを付け加えている。これは、利用出来るハードウエア特性の事実上全部の自動コンフィギュレーションの点で印象的なKnoppixの特性を保持している。満足な関心があれば、このプロジェクトはDebianのサブプロジェクトになる。(Courtesy Debian Weekly News)
 
スラッシュドットは、Knoppixからのハードウエア検出を伴う新しいブート可能アーケード・エミュレータ(MAME)について報告している。Slashdot report

Libranet
ExtremetechがLitranet 2.8を審査した reviewed Libranet 2.8

Red Hat
レジスタは、Red Hatがまた利益を上げ始めたと報じた。Red Hat has turned a profit once again.

SuSe
SuSE は、SuSE Linux Desktop, が入手出来ると発表した。これは、大規模ITインフラストラクチャ用Linuxデスクトップであると主張する。
 
 
 
 
▼▼▼ソフトウエア及び製品関連ニュース▼▼▼
EsetがLinuxメールサーバ用NOD32アンチウィルスを明らかに
インターネット・ソフトウエア・セキュリティ・ソリューションの提供者Eset Software, がLinuxメールサーバ用アンチウィルスNOD32を登場させた。MTA(メール・トランスポート・エージェント)に独立のソリューションで、RedHat, Mandrake, SuSE, Debianその他を含む殆どのディストリビューションで働く。その他色々のメールサーバの中でも、とりわけSendmail, Qmail, Postfix, Exim, もまたサポートする。
 
VariCAD
VariCAD は、機械的CADシステム−VariCAD 9.0.1.0−りリリースを発表した。小型の
CADパケージには、3Dモデリングと2D作図のためのツール、機械部品、面展開(曲げない)、標準機械部品の予測、材料明細表(BOM)と表題欄を作るためのツールが含まれる。機械工学設計者が作品を心地よく効果的にるため必要とするツールすべてを備えた小型システムである。無料30日試用版が http://www.varicad.com/から入手出来る。
 
アイルランドのLinuxディストリビューション
JMC SOFTWAREソフトウエアは、FreeBSDのためのアイルランド語ディストリビュータと同時にRed Hat, SuSE, MandrakeからLinuxディストリビューションに指名されたことを発表した。これらは http://www.thelinuxmall.com/ 又は電話 01 6291282.からアイルランド全土で入手することが出来る。
 
Big Medium
Big Medium は、非技術者の職員がウェブサイトを編集し維持しても広範な特性 a wide range of featuresを備え得ることの出来るLinux及びその他UNIXシステム用の使い易いツールであると言われている。このソフトウエアは、 Linux, Mac OSX, Solaris, FreeBSDを含むDUNIX のOSを走らせるウェブサーバーのため設計されたPerlスクリプト一式である。Big Mediumは$129でライセンスされ、無料オンラインデモ版online demo も入手することが出来る。
 
Zend Performance Suite リリース /PHP スクリプティング
PHPスクリプティング・エンジンの設計者Zend Technologies, は、Zend Performance Suite (ZPS) 3.5のリリースを発表した。Zend Performance Suiteにより、企業とサービスプロバイダは、拡張性問題を克服しウェブサイトに高い性能を与えて、ハードウエアを更新しないで、サーバ・スループットを30倍にすることが出来る。
 
Zendはまた、サン・マイクロと組んでPHPのための仕様書と、Java技術に対するウェブスクリプト・アクセスを主導すると発表した。
 
QuickUML 1.1
Excel Software は、Windows及びLinux用にQuickUML 1.1を出荷し始めた。QuickUML 1.1は、UMLモデルのコアセットの緊密な統合と同期を与えるオブジェクト指向設計のツールである。QuickUML 1.1は、フォント取り扱いを改良し、クラス及びオブジェクトモデルのためコンテント・ビューを強化し、コードマネージャ・コマンドにアクセスつるためのツールバーがある。QuickUML 1. Linuxは、Windows版と同じ特性を持っており、QuickHelp を使って文脈によりアプリケーションヘルプを提供する。
 
Excel Softwareは、Linux用QuickHelpが入手出来ることもまた発表した。QuickHelpは、 Mac OS 9, Mac OS X, Windows 95〜XP及び各種Linuxディストリビューションのアプリケーションヘルプを作成し展開するための、 開発ツールである。
 
Copyright © 2003, Michael Conry. Copying license http://www.linuxgazette.com/copying.html
Published in Issue 92 of Linux Gazette, June 2003
 
 
 
 
 

message queue 上のSelect()

By Hyouck "Hawk" Kim

緒言

message queueをUNIX機能に基づくソケット又は別のファイsるデスクリプタと使うとき、不便なのはmessage queueがselect()システム呼出をサポートしないことだ。そこでunixプログラマはI/Oマルチプクス問題を、以下のような、簡単だが不様な方法で解決する。

while(1)

{

  select on socket with timeout;

  ...

  wait on a message queue with IPC_NOWAIT

}

確かに、上のやり方は不様だ。私は嫌いだ。別の解決策が、マルチスレッディングに適合する筈だ。だが、この記事では、変な方法、つまりmsguToFd()と言う新しいシステム呼出をお見せする。完成したバグのないkernelインプレメンテーションを差し上げようとは思わない。私の経験をお話するだけだ。この記事は、GNU/Linux kernelソースをいじるのが好きな人には面白いだろう。

msgqToFd() - 新規の標準外システム呼出

サインを示す。

int msgqToFd(int msgq_id)

これは、message queueに対応するデスクリプタを返す。それをselect()と一緒に使うことが出来る。

何かエラーがあれば、−1を返す。

アプリケーションはこの呼出を次のように使うことが出来る。

   ...

q_fd = msgqToFd(msgq_id);

while(1)

{

   FD_ZERO(&rset);

   FD_SET(0, &rset);

   FD_SET(q_fd, &rset);

   select(q_fd + 1, &rset, NULL, NULL, NULL);

   if(FD_ISSET(0, &rset))

   {

      ...

   }

   if(FD_ISSET(q_fd, &rset))

   {

      r = msgrcv(msgq_id, &msg, sizeof(msg.buffer), 0, 0);

      ...

   }

}

 

select() の働き

ファイル・デスクリプタは、ファイル構造体と関連している。ファイル構造体には、このファイル型にサポートされたfile_operatinsと言うオペレーションの組がある。このfile_operatins構造体の中には、pollと言うエントリがある。一般のselect()がすることは、こんppoll()ファンクションを呼び出して、その名が意味するようにファイル(又はソケットなど)の状態を獲得することだ。

一般的に select() は次のように働く

while(1)

{

   for each file descriptor in the set

   {

     call file's poll() to get mask.

     if(mask & can_read or mask & can_write or mask & exception)

     {

       set bit for this fd that this file is readable/writable or there is an
       exception.

       retval++;

     }

   }

   if(retval != 0)

     break;

   schedule_timeout(__timeout);

}

select() の詳細な実行は、標準kernelソースの fs/select.c.中にある sys_select()do_select() を見られたい。

理解しなければならない別のことは poll_wait()である。これがすることは、現在のプロセスを、file、pipe、socket、又は我々の場合message queueなどの各kernel機能が提供する待ち行列に入れることである。

現在のプロセスは、 select()を呼び出すことによりい幾つかの待ち行列上で待つことがあるのに注意されたい。

long sys_msgqToFd(long msqid)

システム呼出は、message queueに対応するファイルデスクリプタを返す筈だ。このファイルデスクリプタは、message queueに関する file_operations を含むファイル構造体を指す筈だ。

それをするため sys_msgqToFd() は次をおこなう

1. msqidを使って、対応する struct msg_queue を探す

2. get_msgq_inode() を呼び出して新しいinodeを割り当てる

3. get_unused_fd() に新しいファイル・デスクリプタを割り当てる

4. get_empty_filp() に新しいファイル構造体を割り当てる

5. inode、ファイル構造体を初期化する

6. msgq_file_ops にファイルの file_operations を設定する

7.set file'swith msq->q_perm.key にファイルの private_data を設定する

8. fd_install() にfdとファイル構造体をインストールする

9. 新しい fdに戻る

この記事で提供する msg.c と付属の msg.h を見られたい。sys_i386.c もまた参照

msgq_poll()

msgq_poll() のすることは極めて簡単だ。

することは

1. message queue用のキイ file->private_data を用いて対応するmessage queueを探す

2. poll_wait() を呼び出して現在プロセスをmessage queueの待ち行列に入れる

3. 待ち行列が空であれば (msq->q_qnum == 0)、writable(これには議論があるが、今は考えない)として設定。空でなければ、readableとして設定

4. maskに戻る

 

既存 message queue ソースコードの修正

message queue 上で poll() をサポートするには、既存の message queue ソースコードを修正する必要がある。

修正には次が含まれる。

1. wait queue head を struct msg_queue に加えること、これを使って select() のため現行プロセスを入れる。wait queue head はまた、message queue が作られたとき初期化されなければならない。 msg.c.の中のstruct msg_queuenewque() を見ること。

2. 新メッセージが(select()により)message queueに入ったときは何時でも、目覚めさせなければならない。msg.c.の中の sys_msgsnd() を見ること。

3. message queue が削除又は変更されたときは、(select()により)message queueで待っているプロセス全部に目覚めさせなければならない。msg.c.の中の sys_msgctl()freeque()を見ること。

4. 新しいinode とファイル構造体割り当てるには、関連ファイルシステム幾つかを設定しなければならない。

5. VFS用 s を正しく働かせる。この目的で、新しい初期化コードを作って新しいファイルシステムを登録し何かを設定しなければならない。 msg.cの中の msg_init() を見ること

変更は全部 MSGQ_POLL_SUPPORT を用いて "ifdef"される。だから、変更を特定するのは優しい筈だ。

ファイルシステム関連の内容

ファイル構造体を割り当てるには、ファイルのf_vfsmntf_dentry を正しく設定する必要がある。さもないと、コンソールに OOPS メッセージが出る。この新しいファイル構造体でVFSを正しく働かせるには、今まで簡単に述べた追加設定幾つかが必要である。

file_operations に関して poll() だけをサポートpするので、ファイル構造体設定コードの詳細に入る必要はない。 必要なのは f_dentryf_vfsmntを正しく設定することだけである。関連コードの殆どは、 pipe.c からコピイする。

新しいシステム呼出の追加

新しいシステム呼出を追加するには、二つのことをしなければならない。

最初のステップは、kernelレベルに新しいシステム呼出を追加すること。これは既におこなった(sys_msgqToFd())。

GNU/Linux kernelにおいては、system V IPC 関連呼出全部が、 arch/i386/kernel/sys_i386.c.の中の sys_ipc() を通じて送られる。 sys_ipc() は、呼出番号を使って、要求された個別システム呼出を識別する。新しいシステム呼出を正しく送り出すには、sys_msgqToFd() のため新しい呼出番号(これは25)を定義し、sys_ipc() を変更してsys_msgqToFd() を呼び出すようにしなければならない。参考だけのため、標準kernelソースの中の arch/i386/kernel/entry.S と、この記事にある sys_i386.c の中の sys_ipc() を見られたい。

第二のステップは、ユーザレベル・アプリケーションのためstubファンクションを追加することだ。実際システム呼出stubファンクションは、GLIBCが作る。そして新しいシステム呼出を追加するには、GLIBC を修正して自分自身のものを構築してインストールしなければならないが、これは面倒で、そんなことをする気はない。問題を解決するため、私はGLIBC.からコピイして貼り付けた。この記事にある user/syscall_stuff.cを見ると、msgqToFd()という名のファンクションがあるが、これが msgqToFd()システム呼出のためのstubである。.

これがおこなうことは、簡単に言うと

INLINE_SYSCALL(ipc, 5, 25, key, 0, 0, NULL)を返す;

マクロに関し簡単な説明をする

ipc : sys_ipc(). ipc のためのシステム呼出番号が __NR_ipc として拡張される。これは 117 である。
5  : このマクロにのためのアーギュメントの数。
25  : sys_msgqToFd() のための呼出番号
key : sys_msgqToFd() に対するアーギュメント

INLINE_SYSCALL がアーギュメントを正しく設定し、インタラプト0x80を呼び出してkernelモードに切り替えシステム呼出を呼び出す。

結語

この修正が実際に働くかには確信がない。この種の修正が可能か否かを検討したかっただけだ。

これはさておき、指向する必要のある問題幾つかを述べたい。

1. 二つ以上のスレッド又はプロセスが message queue にアクセスしており、一つのプロセスが msgrcv() を持つ message queue で待っており、別のものが select()で待っていると、最初のプロセス/スレッドが新しいメッセージを受ける。 msg.cの中の pipelined_send() を見ること。

2.書込可能性テストのため、msgq_poll() は、message queueが空のときだけマスクを書込可能に設定する。実際我々は、message queueが一杯でないときだマスクを書込可能に設定するので、大差はないが、私は簡単な方を選ぶ。。

3.この筋書きを考えて見よう。

1.message queueが作られる
2.message queueのためファイルテスクリプタが作られる。
3.message queueが削除される。

この種の場合、何を為すべきだろうか?正しい解決策は、message queueを削除したときfdを閉じることだろうが、その権利のある任意のプロセスでmessage queueを削除することができるので、これは不可能だ。これは、他のプロセスによりmessage queueがファイいるデスクリプタにマップされていても、message queueを削除するプロセスが、message queueに関連するファイルデスクリプタを持たないことがあるのを意味する。

加えて、同じ待ち行列を(同じキイで)もう一度作ったときでも マッピングは維持される。

4.効率問題。select() を呼び出して待ち行列で待っているプロセス全部が、新しいメッセージが来たとき目覚めさせられる。結局一つのプロセスだけがメッセージを受け取るので、その他のプロセスはまた眠る。

5.メッセージ型に関するサポートがない。メッセージ型に関係なく、メッセージがあると、select() が戻される。

バグと改善

ご随意に:

ソースコード

msg.c          修正 message queue インプレメンテーション
msg.h          message queue用ヘッダファイル
sys_i386.c       新しいシステム呼出用の修正
user/Makefile      テストプログラム構築用 makefile (Makefile.txt から Makefile への rename)
user/syscall_stuff.c  msgqToFd() のための stub ファンクション
user/msg_test.h     msgqToFd() のためのヘッダ
user/msgq.c       テストプログラム・ソースT
user/msgq2.c      別のテストプログラム

私は、この実験のため、GNU/Linux kernel 2-4-20 を x86 上で使った。
この修正の付いた新 kernel を構築するには、次をコピイし

msg.c      を  ipc/msg.c へ
msg.h      を  include/linux/msg.hへ
sys_i386.c   を  arch/i386/kernel/sys_i386.cへ

構築してインストールすることを推薦する

テストプログラムを走らせる前に、必ずキイファイルを作ること:

touch .msgq_key1
touch .msgq_key2

 

Copyright © 2003, Hyouck "Hawk" Kim. Copying license http://www.linuxgazette.com/copying.html
Published in Issue 92 of Linux Gazette, July 2003
 
 
 
 
 
Linuxで世界の健康を救う
By Janine M Lodato
(この記事は、発行後数日で本誌から削除されました。これは削除前の翻訳です)
 

要約:役立って手頃な価格の遠隔医療システムを生み出すには、全ての羈絆から脱しなければならない:

・電話線に基づく接続を電力線技術に乗るデータで置き換える。、これは世界中で低価格で得られる
・Windows 環境をLinux で置き換える。低価格で信頼性が高く簡単。
・キイボードとマウスに基づく人と機械の会話を音声認識で置き換える。
これは、下記のような勇気ある専門家チームがおこなうだろうが、もう一つの共同作業員Linux実行チームを必要とする。この記事は、そのようなLinuxチームを見つける目的で書いた。.

I. 目的の宣言

TelMedForteは、以下の共同体として形成されるプロジェクトである:
・大型 MasterASP-BSP (=アプリケーション・サービス・プロバイダ/ビジネス・サービス・プロバイダ)
・カリフォルニア州シリコンバレーにいる熟練企業家及び専門家
・ジーメンス医療グループの VAR(付加価値再販業者)
・医療e-記録システムを提供するハイテク小企業

TelMedForteの目標は、電力線及び無線ブロードバンド技術、及び既存優先施設により有効になる無線遠隔医療ソリューションの設計、統合のリーダーになることである。

地方自治体における各種遠隔医療作業全部の経済的支援は、地方自治体が利用出来るようにするUSDAの大型要請:Distance Learning and Telemedicine Loan and Grant Programに基づく。

各自治体で上述の各コンソーシアム・チームが地方医療施設を立ち上げて合同で、自治体規模の強力遠隔医療システムと遠隔学習システムを提案する。

TelMedForteはまた、遠隔医療アプリケーションとMasterASP-BSPの施設管理アプリケーションを統合して各自治体医療施設のための統合ソリューションを作成する。これは、MasterASP-BSPの重要な追加収入となるはずである。

II. 背景と市場

TelMedForte,にとって、遠隔医療とは、直接面談会話が健康管理サービスの受益者にとって、不便、高価、不十分又は不能率であるときの、健康管理サービス提供者による健康管理消費者の検査、診断及び治療である。医療サービスの遠隔監視もまた含まれる。ブロードバンドの展開と採用は過去数年素晴らしい速度で進んでいる。しかし、米国だけで少なくとも3000万人の健康管理消費者市場が見込まれる。正しい技術を正しい時期にTelMedForteが提供するには、幾つかの重要要因がある。

・Gartner は、世界中の電力線ブロードバンド・ラインが2003年末には200,000になり、2006年には百万に達して、装置収入は2百万ドルを超えると予想する。
・帯域幅の価格は減少傾向にある。電力線ブロードバンド通信を使って各家庭に入る費用はケーブル又はDSLより格段に安い。成功した中電圧電力線試用は沢山あるので、今日でも技術は利用することが出来る。また規制の点でも有利である。TelMedForteは、市場で利用可能の電力線通信業者(PLC)ソリューションにより、十分な低価格で、5-10倍の性能改良を提供する。
・費用負担者の問題はジーメンス医療健康サービス会社のウェブベースのMedStage e.Health 遠隔医療ソリューションを使って解決された。
・ビデオ会議装置とアプリケーションが手頃な価格になって、標準化された。家庭の健康管理にビデオ会議を使うことが、管理の質を向上させながらプロバイダ・リソースをもっと効率良く管理出来ることを実証した。
・医療用画像の共有が、シーメンスのsyngo技術の使用により楽になった。
・ジーメンス Hot Key 無線モジュールをを使う遠隔監視のための技術は入手することが出来る。
・電子医療記録(Sensitron)、e-訪問(Rao) など、追加のアプリケーションもまた、導入されるだろう。

III. TelMedForte ソリューション

TelMedForte は、地域及び教育病院に対するマルチメディア通信、医療装置(シーメンスsyngo起動及びHot Key)、216Mbps中圧ネットワークを使う患者家庭への(現行電力網を通じる)ブロードバンド配信、及び家庭内電力線モデモのモバイル遠隔監視を含む統合ソリューションを作り、それにHot Key及びその他の無線モジュールを使う家庭内及びモバイル医療装置の遠隔監視を加える。

IV. TelMedForte 技術

TelMedForte には、変圧器又は近くにいる多エンドユーザ・ゲートウエイに対し中圧電力網全体を覆う高要領接続を配布する成分が含まれる。消費者敷地は、低圧家庭用プラグ、Bluetooth 、又は802.11x、若しくはそれらの組合せのいずれかを用いてネットワークに連結される。

電力線無線通信は、家庭内及びモバイル医療装置監視のためのユビキタス・ネットワークとして有用である(適切な無線モジュールの付いた Hot Key GPSを使うなど)。

代替電力線ブロードバンド技術もまた市場に現れ始めている。これらはすべて、在来の平衡ライン方法に基づいており2-40MHz周波数範囲を用いる。これらのソリューションは、ネットワーク容量とノイズ抑制の点で、TelMedForte システムに比べ、本質的に性能が限られる。.

V. 競合

ジーメンスは、 MedStage既にMedStageで市場に参入しているが、TelMedForteの主要市場となる筈の地方自治体には入っていない。事実TelMedForteはジーメンスの付加価値再販業者になるだろう。ケーブルとDSLでアクセスする既存技術は、TelMedForteソリューションの唯一の強くない競争相手である。これらは各自治体でTelMedForteに対するMANサービスの提供者になることが出来る。HomePlugと無線の付いたTelMedForteソリューションは、性能−高い帯域幅、対称作用、少ない待ち時間−及びコスト−設置済みインフラストラクチャの点で2.5倍−の双方で勝っている。.

VI. 戦略的関係

ジーメンス・ソリューションの付加価値再販業者としてTelMedForteは、多数の各種シーメンス部門からのソリューション、MedからMedStagICMLからHot Keyと無線技術、及びEfficient Networks(ジーメンスの会社)から低圧電力線モデモなど、を統合するだろう。ブロードバンド・アクセスは、ビデオと画像に基づく遠隔医療アプリケーションの成功要因である。地方自治体で遠隔医療を効率良く販売するため、TelMedForte が装置とブロードバンド普及のため、政府及びその他の寄付基金と貸付計画に梃子入れするだろう。TelMedForte はまた、技術アプリケーションとMasterASP-BSPの施設管理アプリケーションを統合して各自治体の医療施設のため統合ソリューションを提供するだろう。TelMedForte は、製品販売とサポートの管理チームの専門家に梃子入れして、システム・インテグレータ(SI)と付加価値再販業者に追加の価値を与えるだろう。これらの要素は、新しい製品とサービスの技術、専門家及び実行の強力な混合物の創造に集中する。垂直市場の6-7層に適合して新サービスを開拓する能力のある新世代のサービスと付加価値再販業者の関係の例には、次を備えた地方企業間提携が含まれる:
・地方健康管理プロバイダ
・地域及び教育関係病院
・現在地方健康管理プロバイダにサービス中のアプリケーション・サービス・プロバイダ
・地方電力会社
・継ぎ目のない端末対端末遠隔医療ソリューションを提供するインターネット・サービス・プロバイダ(ISP)。ジーメンス・グローバル・サービスもまたTelMedForteの遠隔医療ソリューション・パックの付加価値再販業者になるだろう。
市場予測は大幅に変動するけれども、遠隔健康サービスに関する世界的需要の見積もりは、1兆1250億ドルである。TelMedForte は、事業事例情報と顧客開発必勝戦略との包括的な一式を提供して、顧客が自分の遠隔医療サービス提案をまとめるのを支援するだろう。
 
Copyright © 2003, Janine M Lodato. Copying license http://www.linuxgazette.com/copying.html
Published in Issue 92 of Linux Gazette, July 2003
 
 
 
 
 
私のオープン・ラジオ
By Mark Nielsen

緒言

私はcdを再生するのが嫌いだ。cdの歌の半分は不愉快だ。cdの出し入れも面倒だ。彼らのように振る舞って十代に取り入ろうとする変な中年ホストのいるコマーシャル・ラジオも嫌いだ。私は、プログラムを作る間のバックグラウンドとして音楽(cdから)又はNPR(米国国営放送)のショーを聴くのが好きだ。私は、私のコンピュータに歌とNPRのショーを、ラジオのように演奏させる方法を開発する決心をした。これでcdとコマーシャルラジオがなくなる。コンピュータにはこれらを無作為の順序で演奏させたいと思った。最初にしたかっったのは、cdから歌を切り取って勝手な順序で演奏させることだ。第二は、(この記事にはないが)NPRで聴きたいショー全部のプレーリストダウンロードすることである(何時の日にかNPRが聴取者のため私のリストを(私の寄付として)受け取り発展させるのを望む)。

今の処、物事を本当に簡単にしている。将来は、プリイリストを加え、歌に軽重を与え、中身をPostgreSQL データベースに入れ、詳細を追加する、などを計画している。

私は怠け者なので、皆の好きな歌の各種ウェブに基づくmpegオーガナイザを長く眺める手間は掛けない。ラジオ局の真似が出来るように、200曲を勝手な順序で引き出す何かが欲しかった。先ず、歌を切り抜いて、プレイリストに分ける簡単な Python スクリプトを書かなければならなかった。

Apache のコンフィギュア

自分のLinux サーバ上で、自分がhttpしたサーバのための、htmlルートを見つける。システムによってこれは、"/var/www/html" にある。そこにあるとして、次をおこなう:
cd /var/www/html
mkdir audio
ここで、自分のmp3、rm、wav、又はその他のオーディオファイル全部を、ディレクトリ"/var/www/html/audio" コピイする。注意:自分のウェブサーバは自分以外の誰も使わせない。自分だけがこれらを聴かないと、著作権問題が起こる。法律問題については、弁護士に相談のこと。

ウェブサーバをスタートするには、通常 "service httpd start"をおこなう。これが駄目なときは、自分のLinuxディストリビューションに付いて来た文書で、ウェブサービスのスタート・ストップの方法を見る。通常殆どのLinuxシステムの規定値ウェブサーバはApacheである

Grip を使って切り取り

沢山のプログラムを見た後、cdから歌を切り取るのに使うにはGripを最も優しいと思われた。これは歌を作者とアルバムで組織する。宜しい。Gripをコンフィギュアするのに私が使ったステップを示す。
1. http://www.mp3dev.org から "LAME" をダウンロードしてインストールする。パテント問題を承知しておくこと。
cd /usr/local/src
lynx --source http://twtelecom.dl.sourceforge.net/sourceforge/lame/lame-3.93.1.tar.gz > lame-3.93.1.tar.gz
tar -zxvf lame-3.93.1.tar.gz
cd lame-3.93.1
./configure --prefix=/usr/local/lame
make install
ln -s /usr/local/lame/bin/lame /usr/bin/lame
2.Gripをスタートする。
3.Gripをコンフィギュアする。 "Config"メニューの下で次をおこなう
Encodeをクリック、エンコーダとして 'lame' を選ぶ。"Encode File Format" と言われたら、必ずディレクトリ "/var/www/html/audio"をベース・ディレクトリとして指定すること。 私の場合は '/var/www/html/audio/%A/%d/%t_%n.mp3' のようになる。.
4.トップメニューの "Tracks" をクリックして、切り取りたいトラックを選択する。
5.トップメニューの "Rip" をクリックして、次に "Rip + Encode" をクリックする。

Python スクリプト

このpytonスクリプトを "/var/www/cgi-bin/playlist.py" に入れる。そこに入れた後、このコマンドを実行する "chmod 755 /var/www/cgi-bin/playlist.py"。このPytonスクリプトを正しくインストールし(Pyton 2.2 を使うこと)正しく働くことを確認した後、分の家の他のコンピュータもまた音楽を再生出来るよう、urlを127.0.0.1からネットワーク用の自分のコンピュータのipアドレスに変えなければならない筈だ。
#!/usr/bin/python
# 上の行がこのファイルの第一行であることを確認すること

###  GPL の下の著作権

  ## 必要な python モジュールをインポート 
import os, re, time, random

  ## 変数を幾つか設定 これらの変数は自分の必要に応じて変えることが出来る 
Home = "/var/www/html/audio"
Url_Base = "http://127.0.0.1/audio"
Song_Max = 200
List_Type = "mpegurl"

## PYTHON に詳しいのでなければ以下は絶対に変更しないこと.
File_Match = re.compile('[{mp3}{rm}{wav}{ogg}{mpeg}]$')
Home_Re = re.compile('^' + Home)
List_Types = {'smil':'application/smil', 'mpegurl':'audio/x-mpegurl'}

#---------------------------------------
  ## このファンクションがくまなく調べ、一致するファイル全部の
  ## t絶対パスを入手する。 繰り返しのメソッドである。 
def Dir_Contents(Item=""):
  Final_List = []  
  if Item == '': return ('')
  elif os.path.isdir(Item):
    List = os.listdir(Item)
    for Item2 in List:
      Item3 = Item + "/" + Item2
      Temp_List = Dir_Contents(Item=Item3)
      for Item4 in Temp_List: Final_List.append(Item4)
  elif os.path.isfile(Item):
    if File_Match.search(Item):   return([Item])
    else:   return([])
  return (Final_List)
      
#--------------------------

List =  Dir_Contents(Home)
List_Copy = List
  ## 何回randomを呼び出すかを無作為化する 
Secs = int(time.strftime('%S')) * int(time.strftime('%H')) * int(time.strftime('%M'))
for i in range(0,Secs): random.random()

  ## ファイルがなくなるまで、一度に一つのファイルを無作為に入手する。
New_List = []
while (len(List_Copy) > 0):
  Position = random.randint(0,len(List_Copy) - 1)
  New_List.append(List_Copy[Position])
  del List_Copy[Position]

  ## リストのurls をredeする。
Urls = []
for Item in New_List:
    ## 項目毎に、Home directory prefix を取って url を前に加える
  Url = Url_Base + Home_Re.sub('', Item)
  Urls.append(Url)    

  ## 歌の数より聴きたい数が多いときは、終わる。
  ## Song_Max = 200のとき、このアレーにある数が分かるときは
  ## ボーナスポイント。
if len(New_List) > Song_Max:  New_List = New_List[0:Song_Max]

  ## このファイルを編集した馬鹿者が無効のリストタイプを持つときは...
if not List_Types.has_key(List_Type): List_Type = 'mpegurl'
Content_Type = List_Types[List_Type]

  ### ここで内容をプリントアウトする 
print "Content-Type: " + Content_Type + "\n\n"

if List_Type == 'mpegurl':  
  for Url in Urls: print Url
elif List_Type == 'smil':
  print "\n<smil>\n   <body>\n"
  for Item in Urls:  print "      <audio src='" + Url+ "'/>"
  print "   </body>\n</smil>\n"
else:  
  for Url in Urls: print Url
    

#------------------------------------------------------------------------
#                          Open Radio version 1.0

#                       Copyright 2003, Mark Nielsen
#                            All rights reserved.
#    This Copyright notice was copied and modified from the Perl
#    Copyright notice.
#    This program is free software; you can redistribute it and/or modify
#    it under the terms of either:

#        a) the GNU General Public License as published by the Free
#        Software Foundation; either version 1, or (at your option) any
#        later version, or

#        b) the "Artistic License" which comes with this Kit.

#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See either
#    the GNU General Public License or the Artistic License for more details.

#    You should have received a copy of the Artistic License with this
#    Kit, in the file named "Artistic".  If not, I'll be glad to provide one.
#    You can look at http://www.perl.com for the Artistic License.

#    You should also have received a copy of the GNU General Public License
#   along with this program in the file named "Copying". If not, write to the
#   Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
#    02111-1307, USA or visit their web page on the internet at
#    http://www.gnu.org/copyleft/gpl.html.
(訳注:#--------------------からここまでの英文は著作権に関する定型文)
 

リストを再生する

個人的に私は Real Playerを使っている。xmmsを使おうとしたが、何かの理由で(e mpegurl リストでは)働かなかった。Real Player は、smil とmpegurlの両方を受け入れるので使っただけだ。いつかフリー・ソフトウエアに代えたいと思う。

ブラウザ、Real Player又は使っている何か別のプレーヤにこれをタイプするs"http://127.0.0.1/cgi-bin/playlist.py".

結言

私にはこの小さい設定で十分だ。将来、詳細、プレーリスト、未演奏曲の追跡、歌の軽重、その他色々なことをしたいと思う。今のところ、これを完成したので好きなNPRショーのプリイリストを作っていいる。

これが到達することの出来る点について考えがある。Flash、Real Player、Windows Media Player、Javascriptには苦い経験が沢山あるので、ここで育つ何かがあると思う。インターネット・ラジオ局に関しては色々な中身を聴いたが、市場に正しく接しているとは思えない。古い時代のラジオに固執している。進歩してメディア巨人に制約されない必要がある。インターネット・ラジオ局は大きい画を描いているとは思えない。今、私は自分のラジオを自分のために発展させ、それで何かをしようとしている。

参考資料

1.http://www.nostatic.org/grip/
2.http://www.apache.org/
3.http://www.python.org/
4.http://service.real.com/help/library/earlier.html
5.この記事に変更があるときは、http://www.tcu-inc.com/Articles/34/open_radio.htmlで入手することが出来る
 
著者紹介:
Mark Nielsen は、Crisp Hughes Evansで働いている。余暇には、フリー・ソフトウエア(GPL)又はフリー文学(FOL)を書いている。articles@tcu-inc.com にe-メールするときは、題名に "ARTICLE:"と入れないと、メッセージが削除されて読まれない。迷惑メール防止のため。
 
Copyright © 2003, Mark Nielsen. Copying license http://www.linuxgazette.com/copying.html
Published in Issue 92 of Linux Gazette, July 2003
 
 
 
 
 
Linuxにおけるメールサブシステムの設定
By Ben Okopnik
 
メールシステムはLinuxジグソーパズルの中でも複雑なものの一つだ。多くの人に取っては、複雑でないのも本当だ。これらの人々は、NetscapeをインストールしてPOP/SMTPサーバ名、ユーザ名、パスワードを入力すると、働く。...勿論、メールシステムを使う他は、−ファイルシステムが殆ど一杯のとき知らせるスクリプトを書くとか、別のUsenetをニュースリーダを使うとか、"bug" や "bashbug" を使ってメールしようとするとか−、何も使わない限りでの話だ。

Unixでは、メールはOS自体と密接に統合されているので、上手く働かないのはすり切れたタイヤで車を運転するようなものだ。時速10km以上で走らないとか、片側に体重を移すとか−女友達を乗せないうちは良いが、そんなことをした途端に問題が起こる。実際のメールシステム−ネット接続など−は、どんなUNIX系OSでも予想していることの一つだ。ここでしようとするのは、実際のメールシステムの例を最低一つ示すことだ。それを自分の設定に調節するか内挿することが出来る。重要な部分は、それをするため働く必要のある構成品を知ることだ。

全体を作り上げる構成品

メールシステムは、大まかに定義された構成品三つを含む。メールの読取、作文に使うソフトウエアMUA (Mail User Agent)、直接呼出プログラムを使うこともあるが通常はSTMPサーバであるMTA (Mail Transfer Agent)、及び回収プログラム(STMPサーバもPOP機能を含むが、単独プログラムの方が普通)だ。MUAを入用とすることが多いが、これは受付に過ぎない。残り二つの構成品が働くとどんなものでも使うことが出来る。お望みなるNetscape に貼り付いても良い。この例の残り二つについては、有名なMTA−Eximと、おそらく世界で最も普通に使われる回収ユティリティ、Eric S. Raymondの "fetchmail" を使う。

中身の獲得

"fetchmail" の設定は余り面倒でない。必要なのは、自分のホームディレクトリの中に".fetchmailrc" と言うファイルを作ることと、POP関連情報を規定することだ。例として、私のものを示す;


# 修正全部を "/var/log/mail.*" に記録したい
set syslog

# 全員に関し同じ中身を設定
defaults       protocol pop3,
               timeout 300,
               nokeep,
               fetchall,
               mda "procmail -f-"

#  私の ISP からメールを入手
poll "pop.happybruin.com",
    user "fuzzybear"
    password "wouldnt_you_like_to_know";

# 私の別のアカウントからメールを入手
poll "pop3.bearsden.com", 
    user "ben-fuzzybear",
    password "shhh_its_a_secret";

上は一瞥だけでよい− "fetchmail" マニュアルに良く説明してある。私は、メールを二つの別のアカウントから回収している。私のネット接続(無線モデモ)は当てにならないので、"fetchmail" を設定して、どの接続も5分(300秒)後に時間切れにした。また一旦受信したらメールを削除するよう命じ ("nokeep")、既読フラッグを無視して待ち行列の("fetchall")メール全部を入手することとし、"procmail" を使って自分のヘッダ処理をさせた("mda ...")。最後のものは、皆が必要とは市内が、SMTPが壊れていると、所謂る "Envelope-from" を含むのを忘れることがあるので、これがそれを補う。その他は、自明であると考える。

fetchmailを立ち上げるには一般的に二つの方法がある。 "init"スクリプトの一つとしてか(これは常時接続のとき役立つ)、又は自分の "/etc/ppp/ip-up.d"から(ダイアルアップ接続で普及)スタートすることが出来る。通常は、これを"fetchmail"設定のとき選択する。各ユーザもまた、ワンタイムランとしてか(コマンド行で"fetchmail"とタイプするだけ)又は設定間隔でメールボックスを呼び出すデーモンとして(私はこの方法が好きだ。10分間隔で呼び出す"fetchmail -d 600" を使う。これは".fetchmailrc"で定義することも出来る)手動でスタートすることが出来る。

"fetchmail" は、この簡単な状態が示すより遙かに融通性がある。全く複雑な間に合わせ設備を使っていない限り−それは自分で分かっている筈−、有効なメール・プロトコルを用いてあらゆる種類のメール検索が出来ると言えば十分だ。勿論、自分の好みの検索エージェントがあれば、それでも良い。

大きい画を見る

自分SMTPサーバの設定は、上より複雑にする必要はないが、考えるより遙かに多くを絶対に取り上げなければならない。考える主な事柄は、ネットのどこにあわせるか?だ。そんな規模の大きいことを考えたことない人に取っては、別のパズルだ。現実は、ネットのほとんどが、小さい部品−今自分が座っているコンピュータなど−から構築されている。ISPはネットの別のノードだ。実際、そのルータを通じて接続しているが、接続したら、ネットそのものの部分になって−その結果、自分の小さい部品が残りの部品と調和して働くのを確かめる責任を生じる。

(最近読んだセキュリティ関連RFCの一つは−正確には思い出せないが−ネットに接続するメールサーバの多分50%以上には、ある程度構成ミスがある。恐ろしい統計で、ネット・メールシステムの信頼性と融通性の証明にもなっている。我々全部が、自分の義務を果たして、改善に貢献しなければならない)

我々の多数に取って、状況は簡単だ。デスクトップ・マシン、単一のISPがあれば、自分のSMTPをする必要はない−少なくとも、ISPのSMTPサーバに我々のメールを送るにこれ以上は必要でない。この状況で、どんなMTAも沢山のことをするので、アドレス書換以外に細工することはない。設定時に聞かれたことに答えるだけだ。それで働く。しかし、システムのこの部分は、変更するとき少しばかり「厄介」だ。一つより多いISPを使っているとき、又は基本から少し違うことをしたいとき、少し構成が要るので、ほとんどの人々がメールに引きつけられるのもこの点だ。


  "sendmail" のコンフィギュレーション・ファイルは、誰かが頭を
  キイボードに叩きつけているようだ。それを見ると、理由が分かる!
   -- 詠み人知らず

"sendmail.cf" は、少なからぬシステム管理者が担架ににくくり付けられて口から泡を服ながら運ばれるのに責任があった。これは醜い生物で、それから作ったコンフィギュレーションフ・ァイルも少しも可愛くない。その作用はLG58号で少し詳しく説明した(Configuring Sendmail in RedHat 6.2, or My Adventure in the Heart of the Jungle)、この点で、私は苦痛を殆ど押さえており、医者はあと1、2年この錠剤を飲むのを止めろと言う。

真剣な話、これは決心のしどころだ。君のシステムのネットワーク接続が主な状態(ISP、ホスト名、ダイアルアップから常時接続インターネットへ)を変えよとしているときは、一度や二度でなく自分のSMTPのやり方を考えなければなければならない。例として言うと、私は自分勝手な方法でする。私は生活のため旅行するので、色々なシステム・コンフィギュレーションで沢山のISP(ダイアルアップ、無線、ホテルの有線モデモなど)を使うからだ。この方法でそれをおこなうのは、一つのシステムから別のシステムに移るとき、他人のメール設定がどうかを心配することなく、一つのシステムから別のシステムに移るとき何もコンフィギュアすることないことをいみする。大変な便利だ。言い換えると。自分勝手をすることは、大したことをしないで実現出来るが、自分の必要に基づいておこなうことが重要な決心だ。環境が統計と異なる何かであるすべての場合に、もっと融通性があり、強力で骨の折れない「自分でやる」方法を見出す。

SMTP 設定オプション

左様、ここで、典型的なSMTP設定二つを定義した:

1) アドレス書換を除くすべてをdelegate する(ローカルでしなければならない)。ISPのSMTPサーバ(我々の観点から "smarthost")がルーチンすべての面倒を見る。これは、君の設定が、特に信頼性の高いレコードを持つ主ISPを通じて、変えることのない安定な設定であるとき良い方法だ(夢見ることが出来る筈だね?)。

2) 全部を自分でする。これには数多くの利点がある。信頼性のないISPサービスを迂回すること、他端にあるホストにメールが実際に配信されると即座に見ることが出来るなどだ(数年前、私のISPが私のe-メールを一週間以上保存して、その塊を通知もしないで破棄したことがあった。私がこれを始めたのはそれが理由だ)。

一般的に、MTA(メール転送エージェント)のインストール中におこなう決定だ。多くはない、Eximの場合、五つの選択を与えられる。そのうち最初の二つだけが実際にここで通用する("eximconfig"プログラムがコンフィギュレーションの間に走るか、又は任意の時期に手動で走らせることが出来る):


下のオプションのうち一つを選ばなければならない:

 (1) インターネット・サイト;メールはSMTPを使って送受信される。自分の
     ニーズがどのカテゴリにも上手く合わないときは
     これを使ってスタートして、i config file を人手でエディットする。.

 (2) smarthostを使っているインターネットサイト:インターネット・メールを
     このマシン上で、SMTPにより直接又はfetchmailなどのユテリティを走らせて
     受け取る。発信メールは任意選択でアドレスを書き換えて
     smarthostを使って送る。これは多分ダイアルアップでしたいことだ。
  
         ...

これら二つの選択は、上の二つの質問に適合することに注意されたい。「全部を自分でする」方法は#1に合い、"smarthost" は#2である。このとき、"eximconfig" は別の質問をする。そのうち一つは


...

どのユーザアカウントにシステム管理者メールが行くか?
スペース又はコンマで分離した一つ以上のユーザ名を入力する。この
メールを「ルート」のメールボックスに残したいときは`none' を入力する。
−注意、これは全く強く止める。またユーザ名は小文字であるのに注意!

君はシステムをコンフィギュアする人の一人なので、管理する人でもあると考えられるから、これを自分自身のユーザ名に向ける筈だ。 "smarthost" ルートに進むときは、smarthostの名を聞かれるので、必ず自分のISPのSMTPサーバ名を正しく入力すること。

獣の胃袋

これをおこなったら−そして二つの異なるケースでする必要のあることに到達したら−アドレス書換の設定をする必要がある。結局、システムが理解するような君のe-メールアドレスは"username@host"で、君が自分のドメインを持っていない限り、これはインターネット有効のアドレスにはならない。幸い、Eximを用いると、それは難しくない。

先ず、"/etc/exim/exim.conf" をエディットし、下記を6番セクション("REWRITE CONFIGURATION")に追加する:


*@localhost       ${lookup{$1}lsearch{/etc/email-addresses}\
                                                {$value}fail} Ffsr

これは、書換ルールが規定されている場所をファイル全体で検索して、必要に応じてアドレスを書き換える。ある場合には、"exim.conf"が既にこれに似た、あらゆること特に "Ffsr" フラッグ(これは "Envelope-from", "From:", "Sender:", "Reply-to:" ヘッダを書き換える)が正しいかどうかを確認するだけの、リンクを持っていることに注意。次に−驚くことに−"/etc/email-addresses"をエディットして、我々のユーザ全部に関するエントリを挿入する。

# Root shouldn't be emailing anyone outside, but just in case...
root: happybear@bruins.com
ben: happybear@bruins.com
rivka: sweetie@here.com
linda: babe@westcoast.org
jen: saucy@wench.net

これがそれだ。"sendmail"と異なり、再構築するデータベースはない。ファイルは「オンザフライ」で読み込まれる。私がEximを好む理由の一つは、そのconffileが注釈付きで豊富に書かれているからだ。同時に "/usr/share/doc/exim/spec.txt.gz" が、コンフィギュレーション細部まで完全な(膨大な)マニュアルになっている。

各種の方法

「smarthost」オプションを使って進めるのであれば、これで終わりだ。「試験」の節まで飛んで構わない。私のように「自分でやる」のであれば、少し書き加えることがある。メールに行き先を知らせる責任があり、配信失敗の状態(受信ホスト又は中間ルータが壊れたとか、ネットワーク通信線の一時断線など)を扱う必要があるからだ。これらの行動の殆どは、MTAのように、良く定義されているが、私はEximから、"/etc/exim/exim.conf"の最初のセッションで、「不具合」メールを殆ど0まで少なくする方法(管理者に送る)を見付けた。下記を付け加えれば良い:


auto_thaw = 5m

Eximがメッセージに "frozen" (配送不能)のマークを付けた時はいつでも、これが5分後に解凍する。殆どの不具合は一時的なので、ユーザとドメインが有効な限り、時間の殆ど百パーセントの間この設定がメールを処理して「プッシュ」する。

これで君は偉大な管理者になった訳だが、していることは大したことではない。問題メッセージに何をするかを決める(Eximが、待ち行列に何かが詰まっていると告げたとき、 "mailq" を走らせて何かを知り、 "exim -Mvl <message_id>")を使ってログファイルを見て、"/etc/email-addresses"に新ユーザを追加すると、どんな問題にも又は他の人の迷惑メール通知にも応答する。"exim" マニュアルを見てこれに慣れること。大いに役立つ。経験のある大規模システム管理者は、私の指示に縮こまって警告を出すだろうが、単一マシン又は小規模LANでは、上で十分だ。正しく設定したら、メールシステムには驚く程トラブルがなくなり、殆どは自分で修復する。

試験

Exim には一連のビルトイン試験モードがある。そのうち一つは、極めて手頃だ。試験をするべき主な事柄は、書換規則が働くかどうかだ−これは簡単だ:


Baldur:~$ exim -brw ben
  sender: happybear@bruins.com
    from: happybear@bruins.com
      to: ben@localhost
      cc: ben@localhost
     bcc: ben@localhost
reply-to: happybear@bruins.com
env-from: happybear@bruins.com
  env-to: ben@localhost

裸のユーザー名、"user@localhost" とuser@your_hostnameを使って試験すると、これら全部が正しく書き換えられる筈だ。また勝手なインターネット有効e-メールアドレスと使って試験して、これが変更されないことを確かめること。

上の全部が正しく働いたら、君のメールシステムは少なくとも正しくコンフィギュアされている。自分で何かメールを送ってヘッダを見られたい。 "From:" と "Reply-to:" が(定義されていれば)君のネット有効アドレスに一致しており、平分のユーザ名だけではない筈だ。例を示す(実際のアドレス/IPは、記事の残りの部分と同じく、挫折したスパムボットに変えてある。偽のアドレス、スパマスライムを食う):
Mutt composition メニューで:


    From: "Benjamin A. Okopnik" <ben@localhost>
      To: Benjamin Okopnik <happybear@bruins.com>
      Cc:                                            
     Bcc:
 Subject: Rewrite test
Reply-To:
     Fcc: =Sentmail
     Mix: <no chain defined>
     PGP: Clear



ローカル・クライアントでは、"From:" アドレスはローカルなものである。君は実際のメールシステムが持っているので−コマンド行から次のようにすることも出来る:

mail -s "Rewrite test" happybear@bruins.com


どちらの方法でも、これを送ると、それが戻ったとき


Date: Tue, 30 Apr 2002 03:47:19 -0400
From: "Benjamin A. Okopnik" <happybear@bruins.com>
To: Benjamin Okopnik <happybear@bruins.com>

Subject: Rewrite test

WARNING: Deep Magic in progress.

Ben Okopnik
-=-=-=-=-=-

実際のヘッダを見ると、(Muttでは "h" キイを押す) いかが現れている:


From ben Tue Apr 30 03:48:15 2002
Return-Path: <happybear@bruins.com>
Received: from Baldur (pzw-199-999-99-999.sunbridge.com [199.999.99.999]))
        by bruins.com (9.10.3/9.10.3) with ESMTP id g3U7lR45008674
        for <happybear@bruins.com> Tue, 30 Apr 2002 00:47:32 -0700 (PDT)
Received: from ben by Baldur with local (Exim 3.35 #1 (Debian))
        id 172SM7-0004nd-00                                    
        for <happybear@bruins.com> Tue, 30 Apr 2002 03:47:23 -0400
Date: Tue, 30 Apr 2002 03:47:19 -0400
From: "Benjamin A. Okopnik" <happybear@bruins.com>
To: Benjamin Okopnik <happybear@bruins.com>
Subject: Rewrite test
Message-ID: <20020430074718.GA18398@Baldur>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
User-Agent: Mutt/1.3.28i
Status: U  
X-UIDL: 27862

WARNING: Deep Magic in progress.

Ben Okopnik
-=-=-=-=-=-

下から上にルート情報を読んで、Eximが私からメッセージを受け取り、ヘッダを書き換えて、 bruins.com がそれをEximから受け取っていりるので、全部正しくおこなわれている−私のMTAが言ったことを他の人が正しく認識したことを意味する。メールが消えたときは、正確に何をしたかを見るため"/var/log/exim/mainlog"をチェックするか、又は多分待ち行列が詰まっているかどうかをチェックする。しかし、Deep Magic全部の調子が良く何もかも働いているように思われる。

まとめ

ここまで随いて来たのであれば・・・おめでとう。君は、Netizen−ネットを少しばかりスムーズに走らせるのに沢山の時間と労力を費やした男の一人−に参加するより沢山学んだ。君達のような人とは喜んでIPスペースを共有する。

Linuxを楽しみ給え!

 

著者紹介:

Ben は、Linux Gazette の補助編集員でAnswer Gang.のメンバーでもある。

picture Ben は1962年モスコーで生まれた。6才で電気に興味を持ち--フォークをコンセントに突っ込んで火を出してそれを証明した--それ以来、技術の道に溺れた。大人になって、プリント基板に部品をハンダ付けし、4kメモリに合うようにプログラムしなければならなかったときから、コンピュータの仕事をしている。その結果の悪夢から治してくれる心理学者がいれば、金に糸目は付けない。

その後の Ben の経験には、十数個の言語のソフトウエア、ネットワーク及び台風接近中のデータベース・メンテナンス、帆走雑誌から技術雑誌に至る範囲の出版物への執筆が含まれる。7年間の大西洋/カリブ海 帆走を最近終えて、バルチモアで休養しており、ここで、サン。マイクロシステムの技術インストラクタをしている。

Ben は Linux で 1997年以来働いており、全額自己負担で、太平洋北西の核戦争危機に関心を持っている。

 

Copyright © 2003, Ben Okopnik. Copying license http://www.linuxgazette.com/copying.html
Published in Issue 92 of Linux Gazette, July 2003
 
 
 
 
 
END