Linux Gazette 2003年12月号 #97
原文を一括して一つのファイルでセーブするには、下記のリンクがあります。
前者はテキスト形式で、後者はHTML形式です。これらは一括セーブが目的で、HTML版のリンクが働くとは限りません。
splash画像は、ブートすることができるオペレーティング・システムのリストをGRUB(GRand Unified Bootloader)が表示しているときに背景の中に示される画像だ。一般的には、これは自分のLinuxディストリビューションの企業ロゴだが、好きな画像にカスタマイズするのは簡単だ。必要なのはGIMPとgzipだけ。私のGIMPバージョンは1.2だ。もっと古いバージョンでも訳に立つ。
方法を示す(ルートにアクセスする必要がある)
1) GIMPをスタートする。
2) File->Newをクリックするか、又はCtrl+Nをタイプする。
3) 新しい画像ダイアログで、幅を640ピクセルに、高さを480のピクセルに変更する。(画像サイズ640x480ピクセル)。ここでOKをクリック。
4) splash画像にしたい画像を作成する。GIMPの様々なツールを経験するのは全く楽しい!
5) 画像をを作り終えたら、Alt+iを叩くか、画像上で右クリックしてImage->Mode->Indexed...をクリックする。
6) 現われるIndexed Color Conversionダイアログで、"Generate optimal Palette"(最適パレットの選択)ラジオボタンをクリックし、 "# of colors"で14を入力する。OKをクリックをする「最適のパレットを生成してください」そして色の"#の中で」14を入力します。OK(画像は14色だけ)。
7) ここで画像上を右クリックして、File->Save As...をクリックし、ファイルをsplash.xpmとして、撰んだのディレクトリーの中にセーブする。
8) 次にターミナルのウィンドウを開けて、splash.xpmを保存したディレクトリーをナビゲートする。
9)ここで gzip splash.xpmとキーインする。
10) splash.xpmがあったディレクトリーの中にsplash.xpm.gzと命名されるファイルが作成されているのが判る。
11)このsplash.xpm.gzを /boot/grubディレクトリーにコピーする。 /boot/grubディレクトリー中に前からあるsplash.xpm.gzファイルを先ず最初にバックアップしたいと思うかもしれない。
これで終わりだ。リブートし直すと、背景に画像が出て、OSなどのメニューが前に出ている。
これは勿論、画像変更の唯一の方法ではないが、極めて簡単だ。
Linuxをインストールするための支援
複雑さレベル:新人/初心者
今日、世界中で、多くの事業会社、政府および大学が、そのネットワーク・サーバーおよびワークステーションのためLinuxオペレーティング・システム(OS)に切り換えている。同時に多数の(冒険的?)PC所有者が、様々な成功程度で、既にウインドウズ上で上手く働いているホームPCにLinuxインストールしようとしている。多分ウインドウズにうんざりしただけかも知れない。でなけれ、Linuxの哲学に魅了されたのかも知れないし、好奇心に駆り立てられたのかも知れない。これを読むのなら、君はこのグループのどれかに入る。
確かに、unix/Linuxを知らない人に取って、Linuxへの切り換えは通常手強い課題だ。私もその一人で最初は多くの問題を抱えた:ビデオカードを働かせるのに新しい(非常に異なる)OSの操作を学ぶことから始まって、本を買ったりドライバのダウンロードに少々の出費が必要だった。しかし、結局、ウィルスなしのOS、優れたCコンパイラー、インターネットおよびメイルプログラム、アドビ・フォトショップに匹敵するイメージマニピュレーター、よりよいメモリ管理(何故だか分からないが、CD(〜650 MB)の内容をWindowsのハードドライブにコピーするのに約9分掛かるが、私のPCの上でLinuxの中には約2分で済んだ)それにもっと多くを無料で手に入れた。その上、プログラムがウインドウズ上でのみ走るなら、バックアップ用に古いウインドウズOSもある。だから、Linuxをインストールする決心をしたとき、Windowsを無くする必要はない。この記事は小さい助けになるだろう。
この記事の話題になるのは、ウインドウズ(バージョンは何でも)をインストール済みシステムに、ウインドウズ又は格納ファイルを失うことなくLinux(ディストリビューションは何でも)をインストールする方法だ。Desktop Dragonなど、Linuxディストリビューションの中には、セット・アップするのウインドウズが必要なものもある。しかし、ほとんどのディストリビューションは、分離されたパーティションにインストールしなければならない。実際のインストールは全く楽なので、インストールの前に、(同時にではなくとも)OS二つを走らせることの出来るPCであることを確認する少しばかりの単純な注意に文句を言ってはいけない。
最初に少数の基本について。全部ご存知だろうが、ザッと復習する。
1. オペレーティング・システム(OS):コンピューターを制御して使用するためのソフトウェア。 Windows、UNIX、Linux、OS/2はすべてOSだが、Winamp、Netscape Navigator及びそのたすべては単なるプログラムだ。
2. ハードディスク(即ちハードドライブ):プログラム、データ及びその他の他のファイルを永久に格納するコンピューター部品、つまり、電源が切れたとき、ハードドライブの内容は削除されないが、OSを使用して、ハードドライブにデータを追加、削除することが出来る。
3. ディスク・フォーマット:ハードディスクに情報を読取り/書込むには、コンピューターに探して書込む場所を知らせるよう、ディスクを識別可能な部分にこしなければならない。この構成の基礎的形式がフォーマットだ。ハードディスクは、(i) メーカーが行う物理フォーマットと、(ii) 物理フォーマットの後に行う論理フォーマットの、2つの方法でフォーマットしなければならない。論理フォーマットは、ディスク上にファイル・システムを作成する。OSが異なると、異なるファイル・システムおよび従って異なるタイプの論理的なフォーマットを必要とする。
4. ファイル・システム:ファイル・システムは、データを管理するための配置だ。異なるOSは異なるファイル・システムを使用し認識する。Windows98がFAT32を使用する一方、DOSはFATファイル・システムを使用する。ウインドウズ2000はNTFSのシステムを使用する。Linuxはext2又はext3と交換のファイル・システムを使用する。ウインドウズXPはFAT、FAT32及びNTFSファイル・システムを認識することが出来るが、Linuxはこれら全部及びさらに自分自身のファイル・システムを認識することが出来る。Linuxのより新しいバージョンはさらに多くのファイル・システムを支援する。
5. パーティション::パーティションはハードディスクの個別の物理的セクションだ。これは、物理フォーマットの後で論理フォーマットの前に作成される。ハードディスクに一つを越えるパーティションがある(それが普通)場合、各パーティションは個々のユニットとして機能し、任意の希望のファイル・システムで論理フォーマットをすることが出来る。したがって、ハードディスク上に1つを越えるファイル・システムを持つことが出来、それは1つを越えるOSを持つことが出来ることを意味する。しかし、一定の制限がある。
パーティションには、基本、拡張、論理の3つの型がある。基本パーティションは主要なディスク部門だ。殆どのOSは基本パーティション一つだけからインストールしブートすることが出来る。一つのハードディスクは四つまでの基本パーティション、又は三つの基本パーティションと一つの拡張パーティションを含むことが出来る。一時には、基本パーティション一つだけがビジブルでアクティブで、他はすべて隠れている。拡張パーティションは自分では何もデータを保持出来ないが、無限の数の論理パーティションを作って、中のデスク空間を更に分割することが出来る。拡張パーティションは4つのパーティション限界を克服することを意味する。論理パーティションは、LinuxやウインドウズXPなどの論理パーティションからブートすることの出来るデータファイルとOSだけを含むとの意味だ。
ウインドウズがインストール済みであれば、それが基本パーティション上にあるのは殆ど確実だ。さらに、ほとんどのホームPCには基本パーティション一つだけがある。Linuxを論理パーティションにインストールすることを勧める。
さて、Linuxをインストールする前にしなければならないのはLinuxを保持することができる追加のパーティションを作ることだ。この記事の考えは(ウインドウズ壊さないで)それをするのを手伝うだけのことだ。勿論、Linuxがハードウェア上で現実に走ることが出来ることと、Linuxディストリビューションのハードウェア互換性リストで既にこれを確認済みであると、予想する。さらに、始める前にセット・アップ・プロセスに慣れていなければならない。
段階的に進もう。私が現実に行い、君が多分行う筈のことだ。
ステップ1:先ずRHL 7.2のブート可能セット・アップCDを入手する。次いで、繰り返しDELキーを押しながらPCをスタートして、BIOS設定に入る。続いて、第1ブート・デバイスをCDROMドライブに、第2ブート・デバイスをFDD A(フロッピイ・ドライブA)に、第3ブート・デバイスをHDD 0(ハードディスク・ドライブのブートセクター)に変更した。注釈:明らかに、ステップ1では、Linuxセット・アップ・ファイルを手に入れるだろう。Debian, Mandrake, RedHatなどを初めとするいくつかのディストリビューションから選べる。サポートとサービスを望むなら、会社から箱入りのセットを買うか、又は親切心からLinuxコミュニティーの問題解決に専心する、インターネット上の多数の心の広い個人に依存するかの、選択肢がある。後者を選ぶと、インターネットからダウンロードによりセット・アップ・ファイルを入手しCDに焼き付けることが出来るか、友人から借りてもよい。
LinuxはCD、DVD、ハードドライブ、又はネットワークからセット・アップすることが出来る。極めて簡単なCDに基くインストールをお勧めする。最初のインストレーションCDがブート可能なら、素晴らしい。そうでなければ、ブーツ・フロッピーを作らなければならない。RHLについては、第1ディスクの上のdosutilsフォルダーにあるrawrite.exe又はrawritewin.exeを使って、ウインドウズ又はDOS中でこれを行うことが出来る。ブート・フロッピーを使用しているときは、私が変更したように、ブート・プライオリティを変更する必要はない。
ステップ2:.次に、第1セット・アップ・ディスクをCDROMドライブに挿入し、コンピューターをスタートし直す。
注釈:間違った動き! 一旦CDを挿入してステートし直すと、セット・アップ・プロセスが始まる。また、セット・アップが始まる前に、セット・アップ中に起こること、及びセット・アップ中に与えるべき入力を知っていると予想する。セット・アップを中止することだけは出来るが、準備不足で人生の貴重な時間を浪費する理由はない。知っていて期待するように、実際のセット・アップ・プロセスに関して出来るだけ多くを読んで置くこと。セット・アップ手続きを記憶していても、大事を取るためだけに、セット・アップ・マニュアルのハード・コピーを手元に置くこと。
ステップ3:.グラフ式のセット・アップ・プログラムがスタートする。私はセット・アップ用言語として英語を選ぶ。プログラムがキーボードおよびマウスを検知する(が、私のスクロール・マウスは三ボタン・マウスとして検知された。 新しいディストリビューションはこの問題を解決した)。ここでLinuxを上にインストールするパーティションを聞いて来る。三つのオプションがある。一つは自動的にパーティションすること、他の二つは、Disk Druid 又は Linux FDISKを用いて人手でパーティションすることだ。私は、Linuxがディスク上の利用可能な自由なスペースから必要なパーティション作るだろうと考えて、分割にパーティションを選んだ。その後、セット・アップは、「既存のデータはすべて消されるが、継続するか」とに警告を明滅する。おお!私は取り消して戻り、Disk Druidを用いる人手パーティションを選ぶ。ここで、二つの貴重なパーティションを示す図形が現れる。Linux用のスペースを作るためにそれらのどちらかを削除するオプションがある。この時点で、私は、セット・アップ開始前に十分に準備をしないで怠けたことを悟った。リセットするのは、CTRL+ALT+DELだ。
ステップ4:セット・アップ・プログラムをスタートし直す前に、Linux CDをドライブから取り出し、ウインドウズをスタートして、インターネットにログオンし、ある研究を行う。(最高風味の)Linuxをインストールすることになる。少なくとも2つのパーティションを必要とする。一つは、ルートパーティション(「/」で表示)、一つは「スワップ」パーティションだ。ルートパーティションはLinuxプログラムとファイル(正確なサイズを見出すには自分のLinuxドキュメンテーションを参照のこと。 私のものは約4GBで、そのうち2GBをシステム・ファイルが占める)をすべて保持のに十分な大きさでなければならない。スワップパーティションはRAMの2倍のサイズでなければならない。さらに、これらのパーティションはウインドウズ9xの要件と異なり、基本パーティションである必要はない。OK、これで必要なパーティションが分かった。すると、それらを作る方法だ。Powerquest Partition Magicなど、安全なパーティションを便利にするため書かれたプログラムがある。ネット上に無料のダウンロードのための少数のデモ版パーティション・プログラムがあった。しかし、私の接続速度ではダウンロードに時間が掛かる。そうだ、DOSの中にfdiskと言うパーティションを扱うことの出来るプログラムがある筈だ。
ステップ5.:MSDOSコンソールをスタートしてfdisk/?と叩く。「MS-DOSで使うためハードディスクをコンフィギュアしますか?」のメッセージをが出る。だが、したいのは、Linux ext2ファイル・システムに使うためのディスクのコンフィギュアだ。間違ったプログラムに来たのだろうか。fdiskとキイインして見る。「大型ディスク・サポートを有効にするか?」と聞いて来る。イエスと答えるとメニューを示される。:
1. DOSパーティション又は論理DOSドライブを作成する
2. アクティブなパーティションを設定する
3. DOSパーティション又は論理DOSドライブを削除する
4. パーティション情報を表示する
ウーム。ここでLinuxのため必要なサイズのDOSパーティションを作れば、後でLinuxセット・アップ中にそのパーティションをext2フォーマットでフォーマットすることが出来る。重要なのは、DOSだろうがLinuxだろうが、とにかくパーティションを作ることだ。
先ずパーティション情報をチェックする。自由(未割当)スペースのないパーティションが二つある。fdiskを出て、パーティション中の利用可能な自由なスペースをチェックする。Dドライブに約19GBのうち5GBの自由スペースがある。このパーティションを何とか三つのパーティション、つまりルートパーティション用の3-4GB、スワップパーティション用の256MB及びDドライブ用の残り、に分割することが出来れば、すべてが上手く行く。fdiskを使ってそうするためになすべきことは:
1. Dドライブからデータをすべて取り除いて、別のところに格納する。
2. fdiskメニューのオプション3を使って、Dドライブを削除する。
3. fdiskメニューのオプション1を3回使って、必要な三つのパーティションを作る。
4. Dドライブ(つまり、三つのパーティションのうち最大のもの)にデータを戻す。
ステップ6:さて、Dドライブからデータすべてをドライブへ移動させることは出来ない。十分なスペースがない。そこで、友達からハードドライブを借り、スレーブ構成でコンピューターに差し込み、データの一部を転送する。残りのデータをCドライブに転送して、Dドライブを最終的に空にする。次に、fdiskをもう一度スタートして、「パーティション又は論理的DOSドライブを削除する」を撰ぶ。次に、拡張パーティション中で論理的DOSドライブ(s)を削除するを撰ぶ。続いて、Dドライブを削除するを撰ぶ。ここで、第1メニューから「DOSパーティション又は論理DOSドライブを作る」を選ぶ。次のメニューでは、「論理DOSドライブを拡張DOSパーティションに作る」を撰ぶ。次に、パーティションのサイズ約3GBを指定する。同様にして、他の二つのパーティションを作る。ここで再起動する。注釈:パーティションの内容を空にするために別のハードディスクを接続する必要は、多分ないだろう。LANカードを経由して自分のネットワーク又はラップトップに、あるいはUSBポートを経由して記憶装置に、内容を安全に格納することが出来る。 別のオプションがない場合は、熟練者の助けを求める。勿論、簡単な手順なので、誰の助けも借りないで済ませることが出来る。
ステップ7:これでインストールをもう一度試みる準備が出来た。今回は、セット・アップが分パーティション方法の指定を要求したとき、Disk Druidを使って手動で確実にパーティションを撰ぶことが出来る。次に、3GBのパーティションをext3ファイル・システムを備えるルート(/)としてフォーマットすることに決める。Linuxを論理パーティションにインストールするので、パーティションがブート要件を満たさないと警告され、ブート・ディスケットの作成を強く推薦される。問題はない。256MBのパーティションをスワップとしてフォーマットする。
ステップ8.:Linuxをインストールするとき、LiLo(ブート・ローダー)をMaster Boot Record (MBR)ではなくLinuxパーティションのルートスーパーブロック(ブートセクターに等価)にインストールするのが最良である。セット・アップにMBRを修正させることが出来るが、ウインドウズを再インストールするとき、Linuxがアクセスされなくなる。ブート・ディスケットの作成を忘れないこと。
これで殆ど終わりだ。残りのセット・アップの残りは故障なく進んで、デュアルブートのコンピュータが出来上がる。コンピューターを起動するごとに、ブートローダ(GRUB又はLiLo又はインストールした商用ブートローダ)が便利なメニューを示すだろう。このメニューから、Linux又はDOS(ウインドウズ)のいずれか、ブートするOSを選ぶことが出来る。
重要! 繰り返すが、Linux FDISK又はDisk Druidを用いてパーティションをセット・アップしないこと。これらは別のOSでは判読不能のパーティションテーブルを作る。これらはパーティション・タイプの変更とパーティション・マウントポイントの設定に使用することが出来るが、それがすべてだ。
Copyright © 2003, C.R. Jayanth. Copying license
Published in Issue 96 of Linux Gazette, November 2003
configure; make; make install
by Willy Smith
プログラムを走らせるため、有用なconfigure, make, make installシーケンスを使うだけだと人々が言うのを何度も耳にした。残念ながら、今日コンピューターを使用するほとんどの人々はコンパイラーを使ったことがないか、あるいはプログラム・コードの行を書いたことがない。GUIとアプリケーション・ビルだの到来により、これをしたこののない真面目なプログラマが沢山いる。
ここにあるのは三つのステップで、その各々は新しいプログラムをアップして走らせるのにプログラムのホスト全体の使用する。configureを走らせるのはmakeの使用に比べると比較的新しい。しかし、各ステップはハッキリ別個の目的を持っている。二番目と三番目のステップについて最初に説明しようと思う。その後にconfigureを説明する。
makeユティリィティはUNIXの歴史に埋もれている。これは、プログラマが物事を覚える必要を減らす意図のものだ。プログラマがドキュメント化する必要を減らすと言うのが実際によい方法だと私は考える。いずれの場合も、考え方は、makeが理解するフォーマットでプログラムを作成するため規則一式を確定しておけば、それらを再び覚える必要はないと言うことだ。
これをさらに容易にするため、makeユティリィティは内蔵の規則一式を持っているので、特有のユーティリィティを構築するため知る必要がある新しいことを伝える必要があるだけだ。例えば、make loveとタイプインすれば、makeは先ず何か新しい規則を捜す。何も与えていなければ、内蔵規則を見る。それら内蔵規則のうちの一つが、実行可能なプログラムを生むため.oで終わるプログラム名上でlinker (ld)を走らせることが出来るとmakeに伝える。
したがって、makeはlove.oと言う名のファイルを捜す。だが、そこでは止まらない。.oファイルを見つけたとしても、.oファイルが最新であることの確認を命じる他の何らかの規則がある。言いかえると、ソース・プログラムより新しいものだ。Linuxシステム上の最も一般的なソース・プログラムは、Cで書かれているので、そのファイル名は.c.で終わる。
makeが.oファイルと同様に.cファイル(我々の例のlove.c)も見つけるとき、タイムスタンプをチェックしてそれが.oがより新しかったことを確認する。もしそれがそれほど新しくないか存在しないときは、.c(Cコンパイラーを使用)から新しい.oを構築する別の内蔵規則を使用する。これと同じ型の状況は他のプログラミング言語についても存在する。最終結果は、どんな場合も、makeを行ったとき、それが正しい部分を見つけることができると仮定して、実行可能なプログラムが構築され更新されるということだ。
ところで古いUNIX冗談は、makeが必要なファイルを見つけることが出来なかったとき、makeの初期のバージョンが言ったことだ。上記の例で、もしlove.o、love.c又は他のソースフォーマットが何もないときは、プログラムは次のように言う筈だ:
make:どうmake loveする(口説く)か判らない。止まれ。
手元の問題、カレント・ディレクトリの中のMakefileにある追加規則用のデフォルト・ファイル、に戻る。プログラム用に何かソース・ファイルを持っており、Makefileファイルがあるときは、調べて見る。これは単なるテキストだ。コロンが続く単語を含む行がターゲットだ。すなわち、これらは様々な物事を行うためにmakeコマンド名に続いてタイプすることができる単語だ。ターゲットのないmakeだけをタイプすると、最初のターゲットが実行されるだろう。
ほとんどのMakefileファイルの初めに恐らく見られるものは、何かの割当てステートメントに似たものだ。つまり、間の等号のある二,三のフィールドを持つラインだ。驚いたことに、正にその通りなのだ。それらはmakeの中の内部変数を設定する。設定に共通なものはCコンパイラーの位置(デフォルトがある)、プログラムのバージョン番号及びそのようなものだ。
ここでconfigureに戻りはじめる。異なるシステムでは、Cコンパイラーが異なる場所にあるかも知れないし、シェルとしてBASHの代わりにZSHを使用しているあるかも知れないし、プログラムがあなたのホスト名を知る必要があるかも知れないし。それはdbmライブラリを使用するかもしれないし、システムがgdbm又はndbmを持っていたかどうか、および他のものの全体像を知る必要があるかも知れない。かつてはmakefileの編集によりこのconfigureをするのが普通だった。プログラマに取っての別の苦痛で、新しいシステムに自分が行う必要のあるソフトウェアをインストールしたい時は常に、何がどこにあるかの完全な目録を行う必要があることを意味した。
ますます多くのソフトウェアが利用可能になり、ますます多くのPOSIX準拠のプラットフォームが現れるにつれ、これはますます困難になる。ここがconfigureの参入する場所だ。上に上がってソフトウエアを探し、様々なものを試して何が働くか確かめるのは(普通GNU Autoconfで書かれる)シェルスクリプトだ。これはその後、Makefile.inからその命令をとり、カレントシステムで働くMakefile(及び多分他のいくつかのファイル)を作る。
背景作業が終わった。部品をまとめよう。
configureを走らせる(ほとんどの人はsearch pathの中にカレント・ディレクトリを持っていないので、通常./configureとタイプしなければならない)。これが新しいMakefileを構築する。
makeとタイプする。これがプログラムを構築する。つまり、makeが実行され、Makefileの中の最初のターゲットを捜し、命令の言うことを行う。予期される最終結果は実行可能なプログラムを構築することだ。
ここで、ルートとして、make installとタイプする。これは再びmakeを呼出し、makeがMakefile中でターゲットinstallを見出し、プログラムをインストールするた指示をファイルする。
これは非常に簡略化した説明だが、ほとんどの場合、これが知る必要のあるもだ。ほとんどのプログラムには、他の考え方を教えるインストレーション指導を含むINSTALLと言う名のファイルがあるだろう。例えば、実行可能プログラムの最終位置を変更するconfigureコマンドに、いくつかのオプションを供給するのは普通だ。また、別のmakeターゲットもある。インストール後に無用のファイルを削除するclean、及びある場合にはmakeとmake installの間でソフトウエアをテストすることの出来るtestなどである。
Linuxで働く最初の数年間、私は、人々がポート、プロトコルおよびサービスについて話すのを聞き、それらを無視して仕事をし続けられたらと思った。通常、その通りだったが、結局、噛みついて、それが何かを判ろうと決心した。この記事は、知るべき全てを告げないかも知れないが、断片の組立の助けにはなるだろう。
この事柄すべてについての学習に最も役立つカンニングペーパーの一つは、自分のシステム上のファイルだ。これは事実上すべてのシステムで/etc/servicesと命名されている。これは平易なアスキーファイルで、サービスに関するテキスト名とそれらに割当てられるポート番号及びプロトコル・タイプの間のマッピングを提供する。その1つの文中に現れる三つの専門語すべてに気付くだろう。それらは、そのファイルにも同様に現われる。私が何について話そうとしているかの考えを示すためにそのファイルから少数の行を含める。ファイルのトップからのコメントを含めたので、がそれらについて同様に話すことが出来る。
#
# Network services, Internet style(ネットワーク・サービス、インターネット・スタイル)
#
# TCPおよびUDPの両方のため、単一の有名な#ポート番号を割り当てることが
# 現在IANAの政策であることに注意。従って、プロトコルがUDPオペレーション
# を支援しなくても、ここのほとんどのエントリーはエントリー二つを持つ
#
# このリストは下記で見出される::
# http://www.iana.org/assignments/port-numbers
#
# (最終更新 2002 年1月15日)
#
# ポート番号は三つの領域に分割する: Well Known Ports(有名ポート),
# Registered Ports(登録ポート)、Dynamic and/or Private Ports(動的及び/又は個人ポート)
#
# Well Known Ports(有名ポート)は0 乃至 1023のもの
#
# Registered Ports(登録ポート)は1024 乃至49151 のもの
#
# The Dynamic and/or Private Ports(動的及び/又は個人ポート)は49152 乃至 65535
#
#### 未割当ポート番号を使用してはならない。
# IANAは申込み承認後にPROT番号を割り当てる###
#
#
# WELL KNOWN PORT NUMBERS(有名ポート番号)
#
# 有名ポート番号はIANAが割当て、殆どのシステムで
# システム(又はルート)処理又は
# 優先ユーザーが実行するプログラムのみが使用する
#
# ポートは、長期的な会話を運ぶ論理接続の終了を指定するため
# TCP[RFC793]の中で使用される。未知の呼出人にサービスを
# 提供する#の目的でサービス接触ポートが定義される。
# このリストは、サーバープロセスがその接触ポートとして使用するポートを
# 規定する。接触ポートは「有名ポート」と呼ぶこともある。
#
# 可能な限り、 これら同一ポート割当てを
# UDP [RFC768]に使用する。.
#
# IANA が管理するポートに割り当てる範囲は 0-1023.
#
# ポート割当
#
# 0/tcp 保留
# 0/udp 保留
tcpmux 1/tcp # TCP Port Service Multiplexer
tcpmux 1/udp # TCP Port Service Multiplexer
...
ftp-data 20/tcp # File Transfer [Default Data]
ftp-data 20/udp # File Transfer [Default Data]
ftp 21/tcp # File Transfer [Control]
fsp 21/udp # official is File Transfer, ftp use no udp
ssh 22/tcp # SSH Remote Login Protocol
ssh 22/udp # SSH Remote Login Protocol
telnet 23/tcp # Telnet
telnet 23/udp # Telnet
話すべき一切合切がここにある。最後の数行を見ると、ftp, ssh 及びtelnetで始まる行がある。これらの名前のうちのどれも聞いたことがなければ、多分別の記事を読む必要がある。しかし、それらが何かを知ってるなら、光が射す筈だ。
これらの行が言うことは、ftpがポート20および21を使用し、sshはポート22を使用し、telnetはポート23を使用すると言うことだ。これらのプログラムのコマンドライン・バージョンを使用するときは、ポート番号を指定することに気付く筈だ。興味があれば、ftp --help 又は telnet --helpとタイプして示されるものを見る。ftpでは、ポートの指定に-Pオプションを使用する。telenetでは、ポート番号はホスト名に直ぐ続く。いずれのコマンドでも、ポート番号はオプションだ。それが意味するのは、指定しなければ、プログラムはデフォルト・ポートを使用するということだ。
ファイルに戻って見ると、各ポート番号にスラッシュと "tcp"又は"udp"が続くのが分かる。これらは二つの標準インターネット・プロトコルだ。UDPはコネクションレスだ。これが意味のは、一つのコンピューターは最初にパーミッションを頼むことなく、別のコンピューターへメッセージを送ることが出来るということだ。問題は、相手システムがメッセージを受け取ったか否かが、送信者に分からないことだ。ここの専門語は信頼性が低い。
TCPプロトコルは、送信者と受信者が互いに話して、すべてが作動したことを確かめることだけを意味するもので、信頼性がある。各プロトコルには目的がある。例えば、システムが接続を確立したいとき、その趣旨でUDPメッセージを送るのには意味がある。速くより容易だ。
これまで、有名ポート番号上で走るサービスについて話した。ここで、皆が慣れていると思われることを少し示す。
smtp 25/tcp mail # Simple Mail Transfer
smtp 25/udp mail # Simple Mail Transfer
http 80/tcp # World Wide Web HTTP
http 80/udp # World Wide Web HTTP
pop2 109/tcp # Post Office Protocol - Version 2
pop2 109/udp # Post Office Protocol - Version 2
pop3 110/tcp # Post Office Protocol - Version 3
pop3 110/udp # Post Office Protocol - Version 3
nntp 119/tcp # Network News Transfer Protocol
nntp 119/udp # Network News Transfer Protocol
imap 143/tcp imap2 # Internet Message Access Protocol
imap 143/udp imap2 # Internet Message Access Protocol
imap3 220/tcp # Interactive Mail Access Protocol v3
imap3 220/udp # Interactive Mail Access Protocol v3
imaps 993/tcp # imap4 protocol over TLS/SSL
imaps 993/udp # imap4 protocol over TLS/SSL
ポート80については知っているだろう。加えて、様々なメイル・プロトコルがポートの類別を有することを理解することが出来る。imapsは、メールサーバからメイルを取って来るための安全な接続だ。用語プロトコルに二つの使い方があるのをここで理解することが出来る筈だと言わなければならない。第一はTCP又はUDPにおけるもので、第二は実際の内容のプロトコルにおけるものだ。例えば、SMTPはSimple Mail Transfer Protocol(単純メイル転送プロトコル)を表わす。混乱しないこと--TCPとUDPは相手方にメッセージを送るためのプロトコルと関係する。用語プロトコルの第二の使い方はメッセージ内容の詳細と関係する。
SMTPはコンピューターが別のコンピューターへ電子メールを送る最も一般的な方法だ。コンピューターはメッセージを直接送ることもあるし、スマート・ホストと呼ばれるものを通じて送ることもある。どんな場合も、メール・メッセージは、SMTPプロトコルを使用って受信人コンピューターに接続し、次いでポート25を使用して交信するコンピューターを用いて、転送される。これは簡単なプロトコルなので、それが作動する方法を調査するにはローカルのtelnetコマンドを用いることが出来る。してもよい。興味半分で、次のようなコマンド
telnet My_Favorite_Host.com 25
をMy_Favorite_Host.com の部分だけ25上で聴取中のコンピューターに替えて、試みるとよい。私の場合はmail.osdn.com. とした。
接続成功に関するメッセージが出て、次には、プロンプトさえも出ない筈だ。接続の場合は、helpとタイプしてEnterキーを押してみる。普通は、サポートされるコマンドの簡潔なメッセージが出る。私の場合を示す。
sid@firefly:/tmp> telnet mail.osdn.com 25
Trying 66.35.250.105...
Connected to mail.osdn.com.
Escape character is '^]'.
220 sc8-osdn-mail.osdn.com ESMTP Exim 3.35 #1 Sun, 16 Nov 2003 11:44:51-0800
help
214-Commands supported:
214- HELO EHLO MAIL RCPT DATA AUTH
214 NOOP QUIT RSET HELP
quit
221 sc8-osdn-mail.osdn.com closing connection
Connection closed by foreign host.
sid@firefly:/tmp>
分かり始めただろうか?Ok、新しい専門語を示そう。telnet接続を実行した時、遠隔コンピューターはポート25上で聴取中だった。言葉通り、誰かがポート25に接続しようとするのを待つだけのプログラムが走っていた。telnetがリクエストを送信したとき、そのプログラムは接続を確立した。聴取中のプログラムには一度に一台のコンピューターに一つだけ接続することが出来るものもあるが、多数の接続を扱うことが出来るものもある。
最後に、公認ポートに関して説明したい。これは番号が1024以上のポートである。プログラムが、既に説明したポート上で聴取するためには、ルート上でスタートしなければならない。これは、プログラムがルートとして走り続けることを意味するのではない。これは実際かなり一般的だ。例えば、apacheウェブサーバは、一般にルートとしてスタートし、ポート80に拘束するなど必要な設定をしてから、そのユーザIDをそれほど強力でないもの−一般に誰でもない又は他の誰か普通のユーザ−に変更する。
これら高い番号のポートには、任意のプログラムを拘束することが出来る。以下にもっと一般的なもの少数を含めた。
mysql 3306/tcp # MySQL
mysql 3306/udp # MySQL
x11 6000/tcp # X Window System
x11 6000/udp # X Window System
...
x11 6019/tcp # X Window System
x11 6019/udp # X Window System
x11 6063/tcp # X Window System
x11 6063/udp # X Window System
gnutella-svc 6346/tcp # gnutella-svc
gnutella-svc 6346/udp # gnutella-svc
gnutella-rtr 6347/tcp # gnutella-rtr
gnutella-rtr 6347/udp # gnutella-rtr
http-alt 8008/tcp # HTTP Alternate
http-alt 8008/udp # HTTP Alternate
http-alt 8080/tcp # HTTP Alternate (ポート80を参照)
http-alt 8080/udp # HTTP Alternate (ポート80を参照)
最初のものmysqlは、MySQLがローカル・コンピューター又は別のシステム上で走っていても問題とは思われない理由を説明する助けになる筈だ。それとの交信はポートを通じるので、変わる唯一つのものは接続メッセージ中のホスト名だけだ。
ポート8008及び8080は、新しいウェブサーバを試験するか又は、同一コンピューター上で一つを越えるウェブサーバを走らせたいとき、興味がある。ポート8008又は8080に拘束するには、ルートにいる必要がないので、ルートアクセスのないマシン上でウェブサーバを試験したり、又はそれを走らせることも出来る。
ポート、プロトコルおよびサービスへのこの入門が役立つことを望む。御意見歓迎。
by H. Santhosh
規定値Linuxサーバをインストールするときdefault /etc/mail/sendmail.mcを見付ける。このファイルは各種マクロを定義しており、小さい説明が付いている。先ず試しに規定値
sendmail.mc.を見られたい。すると以下の記事が、sendmail.mcに定義されたほとんどのマクロ詳細について、同一順序で説明する。詳細情報は
Sendmail.mc Explainedを参照されたい
divert(-1)
dnl これはsendmailマクロconfigファイルです。このファイルに変更を加える場合、
dnl インストール済みのsendmail-cf rpmを必要とし、次に下記コマンドを実行して
dnl 新しい /etc/mail/sendmail.cf を生成しなければなりません:
dnl
dnl m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
dnl
include('/usr/share/sendmail-cf/m4/cf.m4')
これはマクロのファイルを処理してsendmail.cfファイルを作る要求だ。これは、残りのファイルに関する沢山のマクロ定義を格納するcf.m4マクロ・ファイルが含まれる。
VERSIONID('Red Hat Linux用Linuxセットアップ')dnl
VERSIONIDは生じるファイルにバージョン情報を詰め込むマクロだ。 SCCS、RCS、CVS、その他を使用するも、それを完全に省略することに出来る。 これはSMTP挨拶メッセージに含まれるバージョンidと同じではない−これはm4/version.m4内で定義される。
OSTYPE('linux')
ヘルプ及びステータス・ファイルのパス名、ローカル・メーラーに必要なフラグ、及びその他重要なものなどを適切にコンフィギュアするため、OSTYPEを指定しなければならない。 これを省略すると、コンフィギュレーションを構築しようとする時、エラーを生じる。 既知のOSタイプのリストについてはostypeディレクトリーを見ること。DOMAIN('CS.Berkeley.EDU')dnl。この例は、バークレーの電子計算機科学部門に特有のものである。自分用に可もなく不可もない定義を入手するのに"DOMAIN('generic')"を使ってもよいし、自分の環境に適切にカスタマイズされたドメイン定義を作ってもよい。
dnl define('SMART_HOST','smtp.your.provider')
外部メールサーバを通じてメールを送る必要があるときは、アンコメントして以下の行をエディットする。
define('confDEF_USER_ID',''8:12'')dnl
confDEF_USER_ID DefaultUser [1:1] デフォルト・ユーザid。
undefine('UUCP_RELAY')dnl
UUCP_RELAY UUCP−アドレスのe−メールを受理するホスト。
定義しないと、UUCPサイトすべてを直接接続しなければならない。
undefine('BITNET_RELAY')dnl
BITNET_RELAY BITNET−アドレスのe−メールを受理するホスト。
定義しないと、.BITNET仮ドメインが働かない。
dnl define('confAUT0_REBUILD')dnl
define('confT0_CONNECT', '1m')dnl
confTO_CONNECT Timeout.connect [0] 初期接続()の完了を待つタイムアウト。 これは接続タイムアウトを短くすることが出来るのみ。kernelは黙って絶対最大(システムにより異なる)を強化する。
define('confTRY_NULL_MX_LIST',true)dnl
confTRY_NULL_MX_LIST NullMXList[Fflase]を試してみよ。このホストがホストに取って最良MXで、他の配置がおこなわれないとき、そのホストに直接接続使用を試みる。通常、これはconfigエラーになる。
define('confDONT_PROBE_INTERFACES',true)dnl
confDONT_PROBE_INTERFACES DontProbeInterfaces[False]を設定すると、sendmailは class {w}(既知「等価な」アドレスのリスト)にどんなローカルリストについても名前とアドレスを挿入しない。
これを設定すると、これらのアドレスに関するサポートを何かを(メールテーブル・エントリなどに)含めなければならない−さもないと、このリスト中のアドレスに対するメールは、コンフィギュレーション・エラーで弾き返される。
"loopback"(引用符なし)に設定すると、sendmailはloopbackインターフェース(「lo0など」)をスキップする。
define('PROCMAIL_MAILER_PATH','/usr/bin/procmail')dnl
PROCMAIL_MAILER_PATH [/usr/local/bin/procmail] procmail プログラムに対するパス。これは、FEATURE('local_procmail') もまた使用する。.
define('ALIAS_FILE', '/etc/aliases')dnl
ALIAS_FILE [/etc/mail/aliases] 別名ファイルのテキスト・バージョンの位置。これはコンマで分離した名簿でよい(その中では、コンマ付きの値を確実に引用符で囲むこと−別名ファイルとして両方記載される「a」と「b」を得るにはdefine('ALIAS_FILE', 'a,b')と定義する−さもないと、原始のdefine()は「a」だけを見る。
dnl define('STATUS_FILE', '/etc/mail/statistics')dnl
STATUS_FILE [/etc/mail/statistics] ステータス情報を含むファイル。
define('UUCP_MAILER_MAX', '2000000')dnl
UUCP_MAILER_MAX [100000] UUCPメーラーによる送信のため受領される最大サイズメッセージ。
define('confUSERDB_SPEC', '/etc/mail/userdb.db')dnl
confUSERDB_SPEC ユーザ・データベース・スペース [undefined](不確定)ユーザ・データ・ベース明細。
define('confPRIVACY_FLAGS', 'authwarnings,novrfy,noexpn,restrictqrun')dnl
confPRIVACY_FLAGS PrivacyOptions [authwarnings] プライバシー・フラグ。
define('confAUTH_OPTIONS', 'A')dnl
confAUTH_OPTIONS AuthOptions [undefined] このオプションが'A'であると、MAIL FROM コマンドに関するAUTH= parameterは、認証成功の時のみ発行される。別の値(これは、スペース又はコンマを除いて、文字を介在させることなく、次から次に記載しなければならない)は、a, c, d, f, p,及びyである。詳細に関しては、doc/op/op.me を参照。
define('confMAX_MESSAGE_SIZE','100')dnl
confMAX_MESSAGE_SIZE MaxMessageSize [infinite] 受理されるメッセージの最大サイズ。
dnl TRUST_AUTH_MECH('EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
規定値で、中継は、「信頼」機構により認証された任意のユーザー、即ちTRUST_AUTH_MECH(「機構のリスト)が定義するもの、に許される。
例:TRUST_AUTH_MECH('KERBEROS_V4 DIGEST-MD5')
dnl define('confAUTH_MECHANISMS', 'EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
confAUTH_MECHANISMS AuthMechanisms [GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5] (スペースで分離した) AUTH に関する認証機構のリスト。認証機構の広告されたリストは、 このリストと、CYRUS SASLライブラリが定義など利用可能な機構のリストとの、交叉になるであろう。
dnl define('confCACERT_PATH','/usr/share/ssl/certs')
confCACERT_PATH CACERTPath [undefined] CAの証明のあるディレクトリに対するパス。
dnl define('confCACERT','/usr/share/ssl/certs/ca-bundle.crt')
confCACERT CACERTFile [undefined] CA証明一つを含むファイル。
dnl define('confSERVER_CERT','/usr/share/ssl/certs/sendmail.pem')
confSERVER_CERT ServerCertFile [undefined] サーバーの証明を含むファイル。即ちこの証明は、sendmailがサーバーとして働くとき使用される。
dnl define('confSERVER_KEY','/usr/share/ssl/certs/sendmail.pem')
confSERVER_KEY ServerKeyFile [undefined] サーバー証明に所属するプライベートキイを含むファイル。
dnl define('confTO_QUEUEWARN', '4h')dnl
confTO_QUEUEWARN Timeout.queuewarn [4h] メッセージが据え置かれたと告げる警告メッセージが送信人に送付されるまでの時間。
dnl define('confTO_QUEUERETURN', '5d')dnl
confTO_QUEUERETURN Timeout.queuereturn [5d] 配送不能としてメッセージが返送されるまでの時間。
dnl define('confQUEUE_LA', '12')dnl
confQUEUE_LA QueueLA [varies] queue-only(待ち行列のみ)ファンクションが作動する負荷平均。規定値は、(判定することが出来るとき)オンラインのプロセス数をnumprocとすると(8 * numproc)
dnl define('confREFUSE_LA', '18')dnl
confREFUSE_LA RefuseLA [varies] 入信SMTP接続が拒否される負荷平均。規定値は(判定することが出来るとき)オンラインのプロセス数をnumprocとすると(12* numproc)
define('confTO_IDENT', '0')dnl
confTO_IDENT Timeout.ident [5s] IDENT質問に対する回答待ちの時間切れ。
dnl FEATURE(delay_checks)dnl
delay_checks クライアントが、MAILコマンドを接続又は発行するとき、それぞれrulesets check_mail 及び check_relay が呼出されない。その代わり、これらのrulesetsはcheck_rcpt rulesetにより呼出さられる。これらは一定の環境下ではスキップされる。anti-spam configuration control(迷惑メール防止コンフィギュレーション制御)の "Delay all checks" 部門を参照のこと。 注記:この特徴は8.10 と 8.11の中のバージョンでは両立しない。
FEATURE('no_default_msa','dnl')dnl
no_default_msa 規定値 MSA デーモン、即ち DAEMON_OPTIONS('Port=587,Name=MSA,M=E') を発生しない。別のパラメータを持つ規定値 MSA デーモンを定義するには、このFEATUREを用いDAEMON_OPTIONS()を経由して新しい設定を導入する。
FEATURE('smrsh','/usr/sbin/smrsh')dnl
smrsh プログラムに対してメールするには、 /bin/shの代わりに、ディストリビューションに提供される SendMail Restricted SHell (smrsh) を利用する。これは、e-メール経由で走るものを制御するローカルシステム管理者の能力を改善する。アーギュメントを備えているときは、それがsmarshに対するパス名として使用され、そうでないときは、confEBINDIR の定義するパス名−規定値では /usr/libexec/smrsh と推定−がsmarshバイナリのため使用される。
FEATURE('mailertable','hash -o /etc/mail/mailertable.db')dnl
mailertable 特定ドメイン( class {w}、即ちローカルホスト名にないもの)に関するルート決定を無効にするため使用することの出来る "mailer table" を含む。FEATUREのアーギュメントは、キイ定義でよい。何も規定しないとき使用される定義は、
hash /etc/mail/mailertable
このデータベースにあるキイは、十分に的確なドメイン名であるか、又は前にドットのある部分ドメイン、例えば "vangogh.CS.Berkeley.EDU" 又は ".CS.Berkeley.EDU" などである。後者の特例として、 "." は他のキイに含まれないドメインどれでもに合致する。値は、 "mailer" を内部メーラー名とし、 "domain" をメッセージ送り先とするとき、
mailer:domain
となる。これらのマップは、メッセージ・ヘッダには反映されない。特例として、
local:user
の形は、ローカル・メーラーを用いて示されるuserに送り、
local:
は、ローカル・メーラーを用いて、e-メールアドレスにある元のuserに送り、
error:code message
error:D.S.N:code message
が、示されるSMTP回答コードの付いたエラーメッセージと、メッセージを与える。ここで D.S.N は、RFC 1893準拠エラーコードである。
FEATURE('virtusertable','hash -o /etc/mail/virtusertable.db')dnl
virtusertable 別名に関するドメイン固有の形式で、一つのマシン上でホストされる仮想ドメイン多数を設けることが出来る。例えば、ビジタテーブルが、
info@foo.com foo-info
info@bar.com bar-info
joe@bar.com error:nouser 550 No such user here(ユーザーなし)
jax@bar.com error:5.7.0:550 Address invalid(アドレス無効)
@baz.org jane@example.net
を含んでいると、info@foo.com宛のメールは宛先foo-infoに送られ、info@bar.com宛のメールは宛先bar-infoに送られ、baz.orgの誰か宛てのメールはjane@example.net送られ、 joe@bar.com宛のメールは規定のエラーメッセージを付けて拒否され、jax@bar.com はまたRFC 1893 準拠のエラーコード5.7.0.を有する。
元のアドレスからのユーザ名は、%1 として渡され:
@foo.org %1@example.com
はsomeone@foo.org がsomeone@example.comに送られることを意味することが出来る。
加えて、ローカル部分が "user+detail" で構成されていると、"detail" は %2 として渡され、user+*に対する一致を試みる時は、 "+detail" は%3として渡される、したがって、
old+*@foo.org new+%2@example.com
gen+*@foo.org %2@example.com
+*@foo.org %1%3@example.com
X++@foo.org Z%3@example.com
@bar.org %1%3
など、及びその他の形が可能である。 注記:規定値 (@domain) の場合に"+detail"を保存するには、RHSとして%1%3を使用しなければならない。 "+"の後に二つのワイルドカードがある: "+" は空でないdetailのみに一致し、 "*" もまた空のdetalilに一致する、例えば、user+@foo.orgは+*@foo.orgに一致するが、++@foo.orgには一致しない。これは、パラメータ %2 及び %3が空でないことを確かめるのに用いることが出来る。
左側にあるホスト名全部は(foo.com, bar.com, baz.org)クラス(w)又はクラス{VirtHost}内になければならない。後者はマクロVIRTUSER_DOMAIN 又はVIRTUSER_DOMAIN_FILE(MASQUERADE_DOMAIN及びMASQUERADE_DOMAIN_FILEに類似、下記を参照)。VIRTUSER_DOMAIN 又はVIRTUSER_DOMAIN_FILEを使用するときは、クラス{VirtHost}へのエントリをクラス {R}に追加する。即ち、これらのドメインに対し(及び、から)中継することが出来る。規定値マップ定義は、
hash /etc/mail/virtusertable
新しい定義は、次のように
FEATURE('virtusertable', 'dbm /etc/mail/virtusers')
FEATUREマクロの第二アーギュメントとして規定することが出来る。
FEATURE(redirect)dnl
redirect "address.REDIRECT" 宛のメール全てに ''551 User has moved; please try <address>''(ユーザが移動しました。<address>を試して下さい)のメッセージを付けて拒否する。これを設定すると、新規アドレスに任せる人に、追加の".REDIRECT" の別名を与えることが出来る。
FEATURE(always_add_domain)dnl
always_add_domain ローカルに配送されるメールであってもローカル・ホスト・ドメインを含むことが出来る。これは通常無資格の名称には追加されない。しかし、共有メッセージ記憶を持つが、至る所で同一ユーザ名スペースを使用しないときは、ローカル名の上にホスト名を必要とする。オプションのアーギュメントが、ローカルの他に追加すべき別のドメインを規定する。
FEATURE(use_cw_file)dnl
FEATURE('use_cw_file') sendmail に対し、 /etc/mail/local-host-names ファイルを読んでクラス {w}の値を入手したいと告げる。
FEATURE(use_ct_file)dnl
use_ct_file /etc/mail/trusted-users を読んで、 ''trusted''(信頼される)ユーザ名を入手する。即ち、警告メッセージを作ることなく-fを用いてアドレスからエンベロープを設定することが出来る。実際のファイル名はconfCT_FILEを参照しながら、上書きすることが出来る。
FEATURE(local_procmail,'','procmail -t -Y -a $h -d $u')dnl
dnl '-t' オプションは、ユーザが割当を超過した時などに、配送を再試行する。
local_procmail ローカルメーラとしてprocmail その他の配送エージェントを使用する。このfeatureに対するアーギュメントは、配送エージェントのパス名で、その規定値は PROCMAIL_MAILER_PATHである。これはローカルメーラにPROCMAIL_MAILER_FLAGS 又はPROCMAIL_MAILER_ARGS 使用しないで、代わりにLOCAL_MAILER_FLAGS及びLOCAL_MAILER_ARGSに細工するか、又は適切なパラメータを規定することに注意。 procmailを使用するとき、ローカルメーラは "user+indicator@local.host" の構文を使用することが出来る。通常+indicatorを丸投げするだけだが、規定値ではprocmailに対する-aアーギュメントとして渡される。
このfeatureは、アーギュメントを三つまで取ることが出来る。
1.メーラ・プログラムに対するパス[規定値: /usr/local/bin/procmail]
2.プログラム名を含むアーギュメント・ベクトル[規定値: procmail -Y -a $h -d $u]
3.メーラ用フラッグ:[規定値:SPfhn9]
空のアーギュメントは、規定値を取らせる。例えば、
FEATURE('local_procmail', '/usr/local/bin/maildrop', 'maildrop -d $u')
を規定する代わりに、 maildrop (http://www.flounder.net/~mrsam/maildrop/) メーラを使用するか、又は
FEATURE('local_procmail', '/usr/local/bin/scanmails')
を用いるscanmails使用するなどである。
警告:このfeatureは、無条件で、つまり OSTYPE 設定の中の定義を何も参照することなく、LOCAL_MAILER_FLAGSを設定する。
FEATURE('access_db','hash -T<TMPF> -o /etc/mail/access.db')dnl
access_db access database feature(データベース・アクセス)を起動する。access db は、管理の理由で、規定のドメインからのメールを許可また拒絶することが出来るようにする。さらに、各種状態におおてsendmail の作用を制御することが出来る。
規定値で、 access databaseスペックは
hash -T<TMPF> /etc/mail/access
このfeatureに関する重要情報に関しては anti-spam configuration control section(反迷惑メール・コンフィギュレーション制御の章)を参照されたい。
注意:"-T<TMPF>"は文字通りに用い、何かで置き換えないこと。
important information about this feature. Notice:
"-T<TMPF>" is meant literal, do not replace it by anything.
FEATURE('blacklist_recipients')dnl
blacklist_recipients 一定の受取人ユーザ名、ホスト名、アドレスに関する着信メールをブロックする。例えばuser nobody,host foo.mydomain.com, guest@bar.mydomain.comなどに対する着信をブロックすることが出来る。これらの規定は、この文書の後で、anti-spam configuration control section(反迷惑メール・コンフィギュレーション制御の章)に述べるようにaccess dbに入れる。
EXPOSED_USER('root')dnl
EXPOSED_USER('usernames') これはクラス{E}にユーザを追加する
次を使用することも出来る。
DAEMON_OPTIONS('Port=smtp,Addr=127.0.0.1, Name=MTA')
dnl これはsendmailが、ループバック・デバイス 127.0.0.1のみを読み、よう変更する。
dnl 他のネットワークデ・バイスは何も読まないよう変更する。ネットワーク上で
dnl e-メールを受信したいときは、これをコメントアウトする。
dnl DAEMON_OPTIONS('port=smtp,Addr=::1, Name=MTA-v6, Family=inet6')
dnl 注記: IPv4とIPv6 デーモン双方を同一ポートに結合するには
dnl kernel 修正を必要とする。
FEATURE
('accept_unresolvable_domains')dnl
dnl 迷惑メールを防ぎたい時は、これをコメントアウトすることを
dnl 強く推奨する。しかし、ラップトップ及び、24x7 DNSのない
dnl コンピュータ上のユーザはこれを必要とする。
accept_unresolvable_domains
通常、SMTPセッション中のMAIL FROM:コマンドは、MAIL FROM:に対するアーギュメントのホスト部分がホスト名サービス中に(DNS中のA 又はMX レコードなど)見付けられないとき、拒絶される。インターネット・ホスト名空間の限られた範囲しか見ないファイアウォール内部にいるとき、これは問題を生じる。この場合、多分このfeatureを使って、入力上のドメイン全部を、解決不能であっても、受け入れるがよい。
dnl FEATURE('relay_based_on_MX')dnl
relay_based_on_MX
MXレコードに基づく着信受取人のホスト部分の中継をすることの出来る能力のスイッチを入れる。即ち、ホスト foo.com に関するMXレコードがある人のサイトを指しているときは、その人はfoo.com宛のメールを受け取って中継する。このfeatureを使う前に以下の説明を読むこと。またbestmx map lookupsに関するKNOWNBUGSエントリを参照されたい。
FEATURE('relay_based_on_MX') は、ルートアドレス構文 (又は %-hack構文)を使用すると、出来ると思われるメッセージのルート決定が必ずしも出来るとは限らない。これが問題であるときは、アクセステーブルにエントリを追加するか、又はFEATURE('loose_relay_check')を用いる。
MAILER(smtp)dnl
MAILER(procmail)dnl
これらは規定値CSサイトで用いるメーラーを既述する。ローカル・メーラーは自動的に常に含まれる。注記:MAILER宣言は常に、configurationファイルの最後に来なければならない。一般的規則の順序は、次のようである。
local ローカル及びprogメーラー。これらは常に必要である。メール全部を別のサイトに中継するのであれば、このメーラーが自動的に含まれる。
smtp Simple Mail Transport Protocol(単純メール転送プロトコル)メーラーである。これはホストをゲートウエイ又は、別のハックの後に隠さない。これは、万人が同一ネームサーバを走らせる世界を仮定する。このファイルは実際に、5個のメーラーを定義する。別のサーバーに対する通常の(旧型)SMTP用の "smtp"、別のサーバーに対する拡張SMTP用の "esmtp"、8-ビットデータをMIMEに転換しない別のサーバーに対しSMTPをおこなう "smtp8" (実質的に、これは、そう言わなくとも他端が8−ビット・クリーンであるの当方が知っているとの声明)、)要求に応じる配送をおこなう "dsmtp" 、及びRELAY_HOST, LUSER_RELAY, MAIL_HUBに対する送信用の "relay" である。
pop Post Office Protocol.(ポストオフィス・プロトコル)。
procmail procmail に対するインターフェイス(sendmailと一緒には来ない)。これはメーラーテーブルの中で使う設計となっている。例えば、共通の質問は「所定のドメインに関するメール全部を一人の人に送る方法は?」だ。このメーラーを定義していると、
:0 # forward mail for host.com
! -oi -f $1 person@other.host
と読むファイル/etc/procmailrcs/host.com とともに
host.com procmail:/etc/procmailrcs/host.com
を読んで、メールテーブルを設定することが出来る。
これは、 (anything)@host.com をperson@other.hostに送る手配をする。procmailスクリプトの中で、$1は送信人名で $2 は受信人名である。
これをFEATURE('local_procmail')と一緒に用いるときは、FEATUREを最初に記載しなければならない。
この特定の問題を解決するには、勿論別の方法もある。virtusertableの中のcatch-allエントリなどだ。
Cwlocalhost.localdomain
lnコマンドは、別の名前でアクセスすることを可能にするファイル用匿名を作成する。これらの匿名はリンクと呼ばれる。このコマンドが作ることの出来るものに、2つの異なる形式と2つの異なる種類のリンクがある。最初に、2つの形式について説明する。
ln [options] exiting_path [new_path]
ln [options] exiting_pathsdirectory
第1の形式では、existing_pathの匿名であるnew_pathと言う新しい名前が作成されり。これをパスと呼ぶ理由は、ファイルに対する完全パスになり得るからだ。つまり、ファイルをカレント・ディレクトリの中で指定する必要がないからだ。
第2の形式では、最後のアーギュメントをディレクトリー名とし、他のすべてのアーギュメント既存ファイルへのパスとする。既存の各ファイルのためのリンクが、既存のファイルと同じファイル名で指定ディレクトリーの中に作成される。
例を少し示そう:
カレント・ディレクトリの中に、ファイル/home/bill/his_fileに対するmy_fileと言う名のリンクを作る。
ln /home/bill/his_file my_file
上記と同じだが、リンクは/home/joe/my_fileの中に作る
ln /home/bill/his_file /home/joe/my_file
上記と同じだが、リンクはhis_fileと命名し、カレント・ディレクトリの中に作る
ln /home/bill/his_file
カレント・ディレクトリからdog, cat 及びcowに対するリンクを、/home/joeの中に作成される場合の、第2の形式の例を示す。
ln dog cat cow /home/joe
ここで作成したものは、ハード・リンクと呼ばれるものだ。これら全部が意味するのは、新しい匿名が元の名前と全く同じ特性を持っているということだ。実際、システムはそれらの間を区別する。例えば、次のコマンド・シーケンスを用いてファイルpig をchickenに改名することが出来る。
ln pig chicken
rm pig
1行目は、pigのための匿名chickenを作る。2行目は、pigを削除する。ファイルシステムは、十分に賢明で、少なくとも1つの名前がファイルを指す限り、ファイルを削除することは出来ない。
それらの上に、シンボリック・リンクと言う第二の種類のリンクがあって、これは全く異なる特性を持っている。つまり、ファイル自体を指すのではなく、ファイル名(ディレクトリー・エントリ)を指。これはファイルシステム間で使用することができる唯一の種類のリンクだ。シンバリック・リンクを作成するには、-sオプションを含む必要がある以外、すべて上記のように働く。例えば、chickenと言う名の、pigを指すシンボリック・リンクを作には、
ln -s pig chicken
とする。chikenがシンボリック・リンクであることを知る唯一の方法は、ls-lコマンド(ls-lchicken)を使うことだ。このコマンドの出力は次のようになる。
lrwxrwxrwx 1 joe users 3 2003-11-18 17:26 chicken -> pig
最初の文字(l)は、これがリンクであることを示す。chicken -> pig の部分は、chickenがpig に対するポインターであることを示す。
ここで、ファイルpigを削除 (rm pig) すると、chikenと言う名のリンクはまだ存在するが、それを参照使用とする試み(cat chickenなど)にはすべて、「見つかりません」のエラー・メッセージが出るだろう。
ほとんどのLinuxコマンドのように、沢山のオプションと沢山の選択がある。ln --helpと入力すると、オプションの完全なリストが見られる。