メールシステムの管理

メールサービスの関連用語

メールファイルとプログラムに加え、メールサービスを構築するにはその他多数の構成要素が必要です。次の節ではこれらの構成要素と、それらを説明するのに使用される用語の一部を定義します。

最初の節では、メール配信システムのソフトウェア部分を説明するのに使用される用語を定義します。その次の節では、メール構成におけるハードウェアシステムの機能について取り上げます。

メールサービスソフトウェアの関連用語

ここでは、メールシステムのソフトウェアの構成要素について説明します。サービスには、メールユーザーエージェント、メール転送エージェント、メール配信エージェントのうちの 1 つ以上の機能があります。それ以外のソフトウェアの構成要素には、ドメイン名、メールアドレス、メールボックス、そしてメールの別名があります。

メールユーザーエージェント

「メールユーザーエージェント」は、ユーザーと sendmail プログラムなどのメール転送エージェントとの間のインタフェースとして機能します。Solaris オペレーティングシステムに搭載されているメールユーザーエージェントは、/usr/bin/mail/usr/bin/mailx$OPENWINHOME/bin/mailtool、および /usr/dt/bin/dtmail です。

メール転送エージェント

「メール転送エージェント」は、メールメッセージのルーティングとメールアドレスの解釈を行います。Solaris ソフトウェアの転送エージェントは sendmail です。転送エージェントは次の機能を実行します。

メール配信エージェント

「メール配信エージェント」は、メールの配信プロトコルを実行するプログラムです。Solaris オペレーティング環境に搭載されているメール配信エージェントについては以下に述べます。

メールプログラム

「メールプログラム」は sendmail 独自の用語です。メール配信エージェントはカスタマイズできます。メールプログラムは sendmail によって使用され、カスタマイズしたメール配信エージェントまたはメール転送エージェントの特定のインスタンスを指定します。

ネットワークのすべてのシステムの sendmail.cf ファイルには、少なくても 1 つのメールプログラムを指定する必要があります。

ether メールプログラムは SMTP プロトコルを使用してメッセージを転送します。SMTP はインターネットで使用される標準のメールプロトコルです。SMTP メールヘッダーは次のようになります。


To: paul@phoenix.stateu.edu
From: Iggy.Ignatz@eng.acme.com

同じドメインの 2 人のユーザー間でメールが送信されると、ヘッダーは次のようになります。


To: Irving.Who@eng.acme.com
From: Iggy.Ignatz@eng.acme.com

ドメイン外にメールを送信するとき、特にインターネット経由でメールボックスに送信する必要がある場合は、SMTP を使用してください。

smartuucp メールプログラムはメッセージの配信に uux を使用しますが、ヘッダーをドメイン形式のアドレスでフォーマットします。To: 行と Cc: 行は SMTP ヘッダーとほぼ同様にドメインによってフォーマットされます。smartuucp ヘッダーは次のようになります。


To: paul@phoenix.stateu.com 
From: ignatz@eng.acme.com

ドメイン形式の名前を処理し、理解できるシステムへの UUCP メールには smartuucp を使用してください。また、発信者はドメイン形式の名前を処理し、インターネットからの返信を受信できるようにしておく必要があります。

uucp メールプログラムはヘッダーでは感嘆符を用いるアドレスを使用します。これはオリジナルのメールプログラムの 1 つであり、ヘッダーは次のようになります。


To: edu!stateu!phoenix!paul 
From: acme!ignatz

sendmail.cf ファイルにメールプログラム仕様を提供して、他のメール配信エージェントを定義できます。

ドメイン名

「ドメイン」は、ネットワークアドレスの命名のためのディレクトリ構造です。電子メールのアドレスにもドメインが使われています。電子メールのアドレスは、次のようなフォーマットになっています。


user@subdomain. ... .subdomain2.subdomain1.top-level-domain

アドレスの @ 記号より左の部分はローカルアドレスです。ローカルアドレスには次の情報が含まれます。

受信側のメールプログラムでアドレスのローカル部分を解釈する必要があります。

アドレスの @ 記号より右の部分は、ローカルアドレスが位置するドメインアドレスを示します。ドットはドメインアドレスの各部分を区切ります。ドメインは、組織、物理的なエリア、地理的な領域などを表します。古い形態においては、ドメインは 1 つまたは複数のコンピュータシステムを表すことができます。

ドメインアドレスは大文字と小文字を区別しません。アドレスのドメイン部分で大文字、小文字、またはそれらを混用しても、相違はありません。

ドメイン情報の順序は階層的です。つまり、アドレスがローカルであるほど @ 記号に近づきます。

サブドメインの数が多いほど、宛先に関して提供される情報が詳細になります。ファイルシステム階層におけるサブディレクトリがその上のディレクトリの中にあると解釈されるのと同様に、メールアドレス内の各サブドメインは、その右にあるドメインの中にあると解釈されます。

表 1-1 に米国における最上位のドメインを示します。

表 1-1 米国の最上位のドメイン

ドメイン 

説明 

Com

企業 

Edu

教育機関用 

Gov

米国の政府機関 

Mil

米国の軍事機関 

Net

ネットワーク組織 

Org

非営利組織 

Donnalyn Frey および Rick Adams による『A Directory of Electronic Mail Addressing and Networks』(O'Reilly & Associates, Inc., 1993) には、国際的な最上位のドメインアドレスリストが載っており、定期的に更新されています。

メールの配信においては、ネットワークまたは名前空間のドメイン名とメールドメイン名は一致しないことがあります。DNS ドメイン名とメールドメイン名は同じでなければなりません。sendmail プログラムは、デフォルトでネットワークドメイン名から最初の構成要素を取り除き、メールドメイン名とします。たとえば、NIS+ ドメイン名が bldg5.eng.acme.com であれば、そのメールドメイン名は eng.acme.com となります。


注 -

メールドメインアドレスは大文字と小文字の区別をしませんが、名前空間のドメイン名は異なります。メールと名前空間のドメイン名を設定するときは、小文字を使うのが最善です。


このメールドメイン名の決定に関するデフォルトの規則により、ネットワークドメイン名が持つことのできる構成要素の数が制約されますが、sendmail.cf ファイルでメールドメイン名を定義できます。D マクロ定義または L マクロ定義のいずれかを使って m 変数 (メールドメイン名) を設定できます。前者は単純な割り当てであり、後者はネームサービスによって管理されるルックアップテーブル (sendmailvars) を使用します。ルックアップテーブルの長所は、各クライアントの sendmail.cf ファイルを編集することなく、メールドメイン名を容易に変更できることです。

メールアドレス

「メールアドレス」には、受信者の名前と、メールメッセージが配信されるシステムが含まれます。

ネームサービスを使用しない小さなメールシステムを管理する場合、メールのアドレス指定は簡単です。つまり、ログイン名がユーザーを一意に識別します。

ただし、複数のメールボックスと、複数のドメインを持つ複数のメールシステムを管理する場合、または外部に UUCP (またはその他の) メール接続がある場合は、メールアドレス指定はもっと複雑になります。メールアドレスには「経路依存型」と「経路非依存型」があり、2 つの混用も可能です。

経路依存のアドレス指定

経路依存のアドレス指定では、電子メールメッセージの発信者が、ローカルアドレス (通常はユーザー名) とその最終の宛先、および最終の宛先に到達するためにメッセージが通らなければならない経路を指定する必要があります。経路依存のアドレスは、UUCP ネットワーク上では一般的に使用され、フォーマットは次のとおりです。


path!host!user

電子メールアドレスの一部に感嘆符がある場合は、常に経路のすべて (またはその一部) が発信者によって指定されています。経路依存のアドレスは常に左から右に読みます。

例として、次のような電子メールアドレスを示します。


venus!acme!sierra!ignatz

これは、ignatz というユーザーに送信されたメールは、venus というシステムにまず送られ、それに引き続いて、acmesierra に転送されることを示しています (これはあくまでも実在する経路ではないので注意してください)。 4 つのメールハンドラのいずれかが機能しないときは、メッセージは遅れるか、配信できないとして戻されます。

経路に依存しないアドレス指定

経路に依存しないアドレス指定では、電子メールメッセージの発信者は、受信者の名前と最終の宛先アドレスを指定する必要があります。経路に依存しないアドレスは通常インターネットのような高速ネットワークで使用されます。さらに、新しい UUCP 接続はドメイン形式の名前を頻繁に使用します。経路に依存しないアドレスは次のようなフォーマットになります。


user@host.domain

コンピュータのドメイン階層命名方式が普及したため、経路に依存しないアドレスがより一般的になってきました。実際、以下に示すように、最も一般的な経路に依存しないアドレスはホスト名を省略し、電子メールメッセージの最終宛先の識別をドメインネームサービスにまかせています。


user@domain

ルートに依存しないアドレスでは、まず @ 記号を検索し、ドメイン階層を右 (最上位) から左 (@ 記号の右側にある最も固有なアドレス) へと読み取ります。

メールボックス

「メールボックス」は、電子メールメッセージの最終宛先であるメールサーバー内のファイルです。メールボックスの名前は、ユーザー名、またはポストマスタ (郵便局長) のような特定の職務を持つ人にメールを届ける場所の名前でもかまいません。メールボックスは、ユーザーのローカルシステムかリモートのメールサーバーのいずれかの /var/mail/username ファイルにあります。ただし、いずれの場合でも、メールボックスはメールが配信されるシステム上にあります。

ユーザーエージェントがメールスプールからメールを取り出し、ローカルメールボックスに容易に格納できるように、メールは常にローカルファイルシステムに配信される必要があります。ユーザーのメールボックスの宛先として、NFS でマウントしたファイルシステムを使用しないでください。特にリモートサーバーから /var/mail ファイルシステムをマウントしているメールクライアントには、直接メールを送信しないでください。この場合ユーザー宛のメールは、クライアントのホスト名ではなく、メールサーバーにアドレス指定する必要があります。 NFS でマウントしたファイルシステムは、メールの配信と処理に問題を起こすことがあります。/var/mail を NFS でマウントしたクライアントは「リモートモード」となり、サーバーにメールの送信と受信を行うように要求を出します。

/etc/mail/aliases ファイルと NIS や NIS+ といったネームサービスは、電子メールのアドレスに別名を作成するメカニズムを持っているため、ユーザーは、ユーザーのメールボックスの正確なローカル名を知る必要はありません。

表 1-2 に、特殊な目的のメールボックスに対する共通の命名規則をいくつか示します。

表 1-2 メールボックス名のフォーマットについての規則

フォーマット 

説明 

username

多くの場合、ユーザー名はメールボックス名と同じ 

Firstname.Lastname Firstname_Lastname Firstinitial.Lastname Firstinitial_Lastname

ユーザー名は、ドット (または下線) でファーストネームとラストネームに区切ったフルネームか、またはファーストネームがイニシャルで、ドット (または下線) でイニシャルとラストネームを区切ったもの 

postmaster

ユーザーは、postmaster のメールボックスに質問を送ったり、問題点を報告したりできる。通常は各サイトとドメインに postmaster メールボックスがある

MAILER-DAEMON

sendmail は、MAILER-DAEMON 宛のすべてのメールを自動的にポストマスタに送る

x-interest

ダッシュ付きの名前は、配布リストまたはメーリングリストと考えられる。このフォーマットは一般にネットワークメールグループに使用される 

x-interest-request

-request で終わる名前は配布リストの管理アドレス

owner-x-interest

owner- で始まる名前は配布リストの管理アドレス

local%domain

パーセント記号 (%) は、メッセージがその宛先に着くと展開されるローカルアドレスを示す。ほとんどのメールシステムは、% 記号つきのメールボックス名を全メールアドレスとして翻訳する。%@ と置き換えられ、メールはそれに応じてリダイレクトされる。多くの人が % を使用するが、これは正式な標準ではない。電子メールの世界では「パーセントハック」と呼ばれている

別名

別名 (alias) とは、もう 1 つの別の名前を指します。電子メールでは、メールボックスの位置を割り当てたり、メールリストを定義するために、 別名を使用できます。

大きなサイトでは、メール別名は、メールボックスの位置を定義するのが普通です。メール別名を作成するのは、企業で個人のアドレスの一部としてメールストップを設定するのと似ています。メールストップを提供しない場合は、メールは中央アドレスに配信されます。建物内のどこにメールを配信するかを決定するには、別の作業が必要となり、ミスをする可能性が増えます。たとえば、同じ建物に Kevin Smith という名前の人が 2 人いる場合、どちらの Kevin も、別の Kevin 宛のメールを受け取る可能性が高くなります。

メールリストを作成するときは、なるべくドメインの位置に依存しないアドレスを使用してください。別名ファイルの移植性と柔軟性を高めるため、別名エントリをできる限り一般的でシステムに依存しない形式にしてください。たとえば、システム mars のドメイン eng.acme.comignatz というユーザー名がある場合、別名は ignatz@mars ではなく、ignatz@eng としてください。ユーザー ignatz がシステム名を変更しても、Eng ドメインには存在し続ける場合、システム名の変更を反映するように別名ファイルを更新する必要はありません。

別名エントリを作成するときは、1 行ごとに 1 つの別名を入力します。ユーザーのシステム名を含むエントリは 1 つだけにしてください。たとえば、ユーザー ignatz には、次のエントリを作成できます。


ignatz: iggy.ignatz 
iggyi: iggy.ignatz 
iggy.ignatz: ignatz@mars

ローカル名やドメインに別名を作成できます。たとえば、システム mars にメールボックスがあり、ドメイン planets 内のユーザー fred の別名エントリでは、 NIS+ 別名テーブルに次のエントリを作成できます。


fred: fred@planets

ドメイン外のユーザーを含むメールリストを作成するときは、ユーザー名とドメイン名を持つ別名を作成してください。たとえば、システム privet のドメイン mgmt.acme.comsmallberries というユーザー名がある場合、別名は smallberries@mgmt.acme.com とします。

メールがユーザーのドメイン外に送信されるとき、電子メールアドレスを完全指定ドメイン名に変換するために、sendmail.cf ファイルを設定できます。

別名ファイルの使用

NIS+ mail_aliases テーブル、NIS aliases マップ、または、ローカルの /etc/mail/aliases ファイルでグローバルに使用するメール別名を作成します。また、同じ別名ファイルを使ってメールリストを作成して管理することが可能です。

メールサービスの構成に応じて、NIS または NIS+ ネームサービスを使って別名を管理し、グローバル aliases データベースを維持したり、ローカルの /etc/mail/aliases ファイルをすべて同時に更新することにより、別名を同一にできます。

また、ユーザー自身が別名を作成して使用できます。ユーザーは、別名をユーザーだけが使用できるようにローカル ‾/.mailrc ファイルで作成することも、誰でも使用できるようにローカル /etc/mail/aliases ファイルで作成することもできます。ユーザーは通常は、NIS または NIS+ 別名ファイルを作成したり管理したりはできません。

メール構成のハードウェア要素

メール構成では次の 3 つの要素が必要ですが、これらは同じシステムで組み合わせることも、別のシステムで提供することもできます。

ユーザーがドメイン外のネットワークと通信をするためには、4 番目の要素であるメールゲートウェイを追加する必要があります。

図 1-1 には、一般的な電子メール構成を示しますが、ここでは基本的な 3 つのメール要素とメールゲートウェイが使用されています。以下の節では、各要素が何であるかを示してその説明を行います。

図 1-1 一般的な電子メール構成

Graphic

メールホスト

「メールホスト」は、ネットワーク上でメインのメールマシンとして指定するマシンです。これはサイトにおいて、他のシステムでは配信できないメールを転送するためのマシンになります。hosts データベースにシステムをメールホストとして指定するには、ローカルの /etc/inet/hosts ファイルか、ネームサービスのホストファイルで、IP アドレスの右に mailhost を追加します。メールホストシステムでは、main.cf ファイルもメール構成ファイルとして使用する必要があります。

メールホストとして適切なのは、ローカルエリアネットワーク上のシステムで、電話回線に PPP または UUCP リンクを設定するためのモデムがあるものです。またネットワークからインターネットのグローバルネットワークへのルーターとして構成されたシステムも適しています (PPP、UUCP およびルーターの詳細は、TCP/IP とデータ通信 を参照してください)。ローカルネットワーク上のシステムにモデムがない場合は、システムの 1 つをメールホストに指定してください。

サイトの中には、タイムシェアリング構成でネットワーク接続されていないスタンドアロンのマシンを使用するものがあります。つまり、スタンドアロンのマシンが、シリアルポートに接続された端末として機能する場合です。このような構成では、スタンドアロンのシステムを 1 つのシステムネットワークのメールホストとして扱うことで、電子メールを設定できます。

メールサーバー

「メールボックス」は単独のファイルで、特定ユーザー用の電子メールが含まれています。メールはユーザーのメールボックスが置かれている場所のシステム、つまりローカルマシンかリモートサーバーに配信されます。「メールサーバー」は、/var/mail ディレクトリにユーザーのメールボックスを保持しているいずれかのシステムになります。

メールサーバーはクライアントからすべてのメールをルーティングします。クライアントがメールを送信するときに、メールサーバーは配信のためそれを待ち行列に入れます。メールが待ち行列に入れられたら、ユーザーはこれらのメールメッセージを失わずに、クライアントをリブートしたり、電源を切ることができます。受信者がクライアントからメールを受けとると、メッセージの「From」行のパスには、メールサーバーの名前が含まれます。受信者が応答すると、その応答はユーザーのメールボックスに送られます。

メールサーバーがユーザーのローカルシステムでない場合は、構成内で NFS ソフトウェアを使用するユーザーは、/etc/vfstab ファイル (ルートアクセスがある場合) を使用するか、オートマウンタを使用して、/var/mail ディレクトリをマウントできます。NFS サポートが利用できない場合、ユーザーはサーバーにログインしてメールを読み込めます。

メールサーバーとして適しているのは、ユーザーにホームディレクトリを提供するシステムか、定期的にバックアップされるシステムです。

ネットワーク上のユーザーが、PostScriptTM ファイル、オーディオファイル、DTP システムからのファイルなど他の形式のファイルを送信する場合は、メールボックスのメールサーバーには、さらに多くの領域を割り当てる必要があります。

全メールボックス用に 1 台のメールサーバーを設定する利点の一つは、バックアップが簡単になることです。数多くのシステムにメールを分散すると、バックアップが難しくなります。 1 つのサーバーに多くのメールボックスを格納する際の欠点は、そのサーバーの故障が多くのユーザーに影響することですが、バックアップの簡便さは、この危険性を補って余りあります。

メールクライアント

「メールクライアント」は、メールサーバーでメールを受信し、ローカルの /var/mail のないシステムです。これはリモートモードとして知られています。リモートモードは、sendmail.cf ファイルに OR オプションを追加することで使用できます。

メールクライアントには、/etc/vfstab ファイルに適切なエントリがあり、メールサーバーからメールボックスをマウントするマウント先があることを確認する必要があります。またクライアントの別名の宛先が、クライアントではなく、メールサーバーのホスト名になっていることを確認してください。

メールゲートウェイ

「メールゲートウェイ」は、異なる通信プロトコルを実行するネットワーク間の接続を処理したり、同じプロトコルを使用する異なるネットワーク間の通信を処理したりするマシンです。たとえば、メールゲートウェイでは、Systems Network Architecture (SNA) プロトコルセットを実行するネットワークに、TCP/IP ネットワークを接続する場合もあります。

設定の最も簡単なメールゲートウェイは、同じプロトコルかメールプログラムを使用する 2 つのネットワークを接続するものです。このシステムでは、sendmail がドメインで受信者を見つけられないアドレスのあるメールを処理します。メールゲートウェイがある場合、sendmail はこれを使用して、ドメイン外でメールの送受信を行います。

2 つのネットワーク間には、図 1-2 に示すように内容の異なるメールプログラムを使用してメールゲートウェイを設定できます。これをサポートするには、メールゲートウェイシステムで sendmail.cf ファイルをカスタマイズする必要がありますが、これは困難で時間のかかる作業になる場合もあります。

図 1-2 異なる通信プロトコル間のゲートウェイ

Graphic

メールゲートウェイを設定する場合に、必要とするものに最も近いゲートウェイ構成ファイルを見つけ、状況に合わせて修正する必要があります。

インターネットに接続できるマシンがある場合は、それをメールゲートウェイとして構成できます。メールゲートウェイを構成するときは、まずサイトのセキュリティ要件を慎重に考慮する必要があります。社内ネットワークを外部と接続するには、ファイアウォールゲートウェイを構築し、それをメールゲートウェイとして設定する必要があるかもしれません。

メールサービスのプログラムとファイル

メールサービスには、相互に対応する数多くのプログラムやデーモンが含まれています。この節では、電子メールの管理に関するプログラムや用語、あるいは概念について述べます。表 1-3 には、メールサービスに使用する /usr/bin ディレクトリの内容を示します。

表 1-3 メールサービスに使用する /usr/bin ディレクトリの内容

名前 

形式 

説明 

mail

ファイル 

ユーザーエージェント 

mailcompat

ファイル 

メールを SunOS 4.1 メールボックスフォーマットに格納するフィルタ 

mailq

リンク 

/usr/lib/sendmail へのリンクで、メール待ち行列の表示に使用

mailstats

ファイル 

/etc/mail/sendmail.st ファイルに格納されたメール統計情報の読み込みに使用するプログラム (存在する場合のみ)

mailx

ファイル 

ユーザーエージェント 

aliasadm

ファイル 

NIS+ 別名マップを処理するプログラム 

mconnect

ファイル 

アドレスの検証とデバッグのためメールプログラムに接続するプログラム 

newaliases

リンク 

/usr/lib/sendmail へのリンクで、別名ファイルのバイナリ形式を作成するのに使用

rmail

リンク 

/usr/bin/mail へのリンクで、メールの送信だけを許可するのによく使用されるコマンド

vacation

ファイル 

メールへの自動応答を設定するコマンド 

表 1-4 に、/etc/mail ディレクトリの内容を示します。

表 1-4 /etc/mail ディレクトリの内容

名前 

形式 

説明 

Mail.rc

ファイル 

mailtool ユーザーエージェントのデフォルトの設定値

aliases

ファイル 

メール転送情報 

aliases.dir

ファイル 

メール転送情報のバイナリ形式 (newaliases の実行によって作成される)

aliases.pag

ファイル 

メール転送情報のバイナリ形式 (newaliases の実行によって作成される)

mailx.rc

ファイル 

mailx ユーザーエージェントのデフォルトの設定値

main.cf

ファイル 

メインシステム用の構成ファイルの例 

sendmail.cf

ファイル 

メールルーティング用の構成ファイル 

sendmail.cw

ファイル 

メールホスト用の別名の数が多すぎるときに作成可能なオプションファイル 

sendmail.hf

ファイル 

SMTP HELP コマンドで使用するヘルプファイル

sendmail.pid

ファイル 

リスニングデーモンの PID を表示するファイル 

sendmail.st

ファイル 

sendmail 統計情報ファイル。このファイルが存在すると、sendmail は各メールプログラムのトラフィック量をログする

subsidiary.cf

ファイル 

下位システムに対する構成ファイルの例

表 1-5 にメールサービスに使用する /usr/lib ディレクトリの内容を示します。

表 1-5 メールサービスに使用する /usr/lib ディレクトリの内容

名前 

形式 

説明 

mail.local

ファイル 

メールボックスにメールを配信するメールプログラム 

sendmail

ファイル 

メールトランスポートエージェントとしても知られるルーティングプログラム 

メールサービスは、その他のいくつかのファイルおよびディレクトリを使用します。これらを表 1-6 に示します。

表 1-6 メールサービスに使用するその他のファイル

名前 

形式 

説明 

/var/spool/mqueue

ディレクトリ 

配信されなかったメールが格納される場所 

/var/mail/mailbox1/var/mail/mailbox2

ファイル 

配信されたメールのメールボックス 

/etc/sendmailvars

ファイル 

sendmail.cf から検索するためのマクロとクラス定義を格納

sendmailvars.org_dir

テーブル 

sendmailvars ファイルの NIS+ バージョン

/usr/sbin/in.comsat

ファイル 

メール通知デーモン 

/usr/sbin/syslogd

ファイル 

sendmail が使用するエラーメッセージログをとる場所

$OPENWINHOME/bin/mailtool

ファイル 

sendmail へのウィンドウベースのインタフェース

これらのプログラムの組合せによるメールサービスが提供されていますが、その相互作用を図 1-3 に簡略に示します。

図 1-3 メールプログラムの相互作用

Graphic

ユーザーは、mailxmailtool などのプログラムを使用してメッセージを送信します。これらのプログラムについては、mailx(1) または mailtool(1) のマニュアルページを参照してください。

メッセージは、メッセージを生成するのに使用されたプログラムにより収集され、sendmail デーモンに渡されます。sendmail デーモンは、メッセージのアドレスを「解釈」し (識別可能なセグメントに分割)、構成ファイル /etc/mail/sendmail.cf からの情報を使用して、ネットワークの名前構文、別名、転送情報、およびネットワークトポロジを決定します。sendmail はこの情報を使用して、メッセージが受信者に到達する経路を決定します。

sendmail デーモンはメッセージを適切なシステムに渡します。ローカルシステムの /usr/lib/mail.local プログラムは、メッセージの受信者の /var/mail/username ディレクトリのメールボックスにメールを配信します。

受信者は、メールが届いたことが通知されるので、mailmailxmailtool などのプログラムを使用してこれを受け取ります。

sendmail プログラム

SunOS 5.x オペレーティングシステムは、メールルーターとして sendmail プログラムを使用します。sendmail は、電子メールメッセージの受信と配信を担当します。これは、mailmailxmailtool といったメール読み取りプログラムと、uucp のようなメールトランスポートプログラムの間のインタフェースです。sendmail プログラムは、ユーザーが送った電子メールメッセージを制御し、受信者のアドレスを判断し、適切な配信プログラムを選び、配信エージェントが処理できるフォーマットにアドレスを書き直し、必要に応じてメールヘッダーを再フォーマットし、最後に変換したメッセージを配信のためのメールプログラムに渡します。


注 -

SunOS 2.4 以前の旧リリース版には、sendmail.mx と呼ばれるバイナリが含まれていました。現在このプログラムは sendmail プログラムに含まれており、これを有効にするには、/etc/nsswitch.conf のホストエントリに dns フラグを追加します。詳細は、「DNS 別名ファイルを設定する方法」 を参照してください。


図 1-4 は、sendmail がユーザー別名をどのように使用するかを示します。/usr/bin/mailx のようなメールを読み取るプログラムは、プログラム自身の別名を持つことができ、それらはメッセージが sendmail に達する前に展開されます。sendmail の別名は、多くの名前空間ソース (ローカルファイル、NIS、NIS+) からのものでも構いません。検索順序は nsswitch.conf ファイルによって決定されます。nsswitch.conf(4) のマニュアルページを参照してください。

図 1-4 sendmail が別名を使用する方法

Graphic

sendmail 構成ファイル

「構成ファイル」は、sendmail がその機能を実行する方法を制御します。構成ファイルにより、配信エージェント、アドレスの変換の規則、およびメールヘッダーのフォーマットが選択されます。ファイルについては、sendmail 構成ファイル」 を参照してください。

sendmail プログラムは、/etc/mail/sendmail.cf ファイルの情報を使用して、その機能を実行します。各システムには、/etc/mail ディレクトリにインストールされたデフォルトの sendmail.cf ファイルがあります。メールサーバーまたはメールクライアントのためにデフォルト構成ファイルを編集したり変更したりする必要はありません。カスタマイズされた構成ファイルを必要とするシステムは、メールホストとメールゲートウェイだけです。

SunOS 5.x システムには、以下に示すように、/etc/mail ディレクトリに 2 つのデフォルト構成ファイルがあります。

  1. メールホストまたはメールゲートウェイとして使用する 1 つのシステム (または複数のシステム) を指定するための main.cf という名前の構成ファイル

  2. subsidiary.cf という名前の構成ファイル (デフォルト sendmail.cf ファイルの複製コピー)

システムで使用する構成ファイルは、システムがメールサービスで果たす役割によって異なります。

次に、サイトの要求に応じて変更が可能な構成パラメータをいくつか説明します。

sendmail 構成テーブル

sendmail.cf ファイルにある 2 つのエントリに応答して、sendmail プログラムは、値を sendmailvars 構成テーブルから検索することにより、マクロおよびクラスを定義できます。次にそのようなコマンドを 2 つ示します。

L コマンドの構文は次のとおりです。

LXsearch_key

たとえば、Lmmaildomainの場合、検索キー maildomain を使って、変数 m に代入する値が構成テーブルから検索されます。多くの場合、1 文字の変数名は大文字、内部変数 (メールドメイン名の m など) は小文字です。

G コマンドの構文は次のとおりです。

GCsearch_key

たとえば、GVuucp-list となります。

この場合、検索キー uucp-list を使って、変数 V に代入する値が構成テーブルから検索されます。

どちらの場合も、検索キーでは大文字と小文字を区別します。

両方のコマンドには、ルックアップテーブルを使用せずに sendmail.cf ファイル内にマクロまたはクラスを定義する同等のコマンドがあります。DL と同等で、CG と同等です。

NIS+ をネットワークの管理に使用する場合は、テーブルのグローバルバージョンである sendmailvars 情報が管理されます。このテーブルは、NIS+ テーブルに加えて、またはその代替として /etc/mail/sendmailvars ファイルで管理できます。これらのソースが sendmail によって検索される順序は、/etc/nsswitch.conf ファイルにある sendmailvars エントリによって決まります。デフォルトでは、検索順序は files nisplus で、これは、sendmail は NIS+ テーブルで検索する前にローカルファイルから情報を検索しようとすることを意味します。

/etc/mail/sendmailvars ファイルにあるエントリのフォーマットは次のとおりです。

search_key [value1 value2 value3...]

検索キーの後ろには、タブまたは複数のスペースを入れることもできますが、値は 1 つのスペースで区切ります。

NIS+ sendmailvars テーブルには、2 つの列、つまりキーの列と値の列があります。値の列は、1 つの値、または各々がスペースによって区切られた複数の値を持つことができます。以下に例を示します。

キーの列 

値の列 

maildomain

eng.acme.com

uucp-list

acmemoon hugo comic

ほとんどのメール変数は NIS+ テーブルで定義しなければなりません。ただし、特殊なケースでは、システムは変数をローカル /etc/mail/sendmailvars ファイルに入れることにより、変数のグローバル設定を無効にすることが可能です。

.forward ファイル

ユーザーは、システム管理者の手を借りることなくプログラムのカスタムセットにメールを一時的にリダイレクトまたは送信するために、ホームディレクトリに、sendmail が使用する .forward ファイルを作成できます。メールの問題、特に所定のアドレスに配信されないメールに関する問題の解決の際、ユーザーのホームディレクトリに .forward ファイルがあるかどうかを常にチェックしてください。

ユーザーによくある間違いは、host1 上のホームディレクトリの .forward ファイルに、user@host2 にメールを転送する設定を入れてしまうことです。メールが host2 に送られると、sendmail は NIS や NIS+ 別名で user を検索し、user@host1 にメッセージを送り返すので、ループが発生し、メールは返送されてしまいます。