メールファイルとプログラムに加え、メールサービスを構築するにはその他多数の構成要素が必要です。次の節ではこれらの構成要素と、それらを説明するのに使用される用語の一部を定義します。
最初の節では、メール配信システムのソフトウェア部分を説明するのに使用される用語を定義します。その次の節では、メール構成におけるハードウェアシステムの機能について取り上げます。
ここでは、メールシステムのソフトウェアの構成要素について説明します。サービスには、メールユーザーエージェント、メール転送エージェント、メール配信エージェントのうちの 1 つ以上の機能があります。それ以外のソフトウェアの構成要素には、ドメイン名、メールアドレス、メールボックス、そしてメールの別名があります。
「メールユーザーエージェント」は、ユーザーと sendmail プログラムなどのメール転送エージェントとの間のインタフェースとして機能します。Solaris オペレーティングシステムに搭載されているメールユーザーエージェントは、/usr/bin/mail、/usr/bin/mailx、$OPENWINHOME/bin/mailtool、および /usr/dt/bin/dtmail です。
「メール転送エージェント」は、メールメッセージのルーティングとメールアドレスの解釈を行います。Solaris ソフトウェアの転送エージェントは sendmail です。転送エージェントは次の機能を実行します。
メールユーザーエージェントからメッセージを受信する
宛先アドレスを認識する
適切な配信エージェントを選択してメールを配信する
他のメール配信エージェントからのメールを受信する
「メール配信エージェント」は、メールの配信プロトコルを実行するプログラムです。Solaris オペレーティング環境に搭載されているメール配信エージェントについては以下に述べます。
UUCP メール配信エージェントは uux を使用してメールを配信します。
ローカルメール配信エージェントは mail.local を使用してメールを配信します。
「メールプログラム」は 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 |
アドレスの @ 記号より左の部分はローカルアドレスです。ローカルアドレスには次の情報が含まれます。
別のメールトランスポートを使用するルーティング (たとえば、bob::vmsvax@gateway または smallberries%mill.uucp@gateway )
別名 (たとえば、iggy.ignatz )
受信側のメールプログラムでアドレスのローカル部分を解釈する必要があります。
アドレスの @ 記号より右の部分は、ローカルアドレスが位置するドメインアドレスを示します。ドットはドメインアドレスの各部分を区切ります。ドメインは、組織、物理的なエリア、地理的な領域などを表します。古い形態においては、ドメインは 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 というシステムにまず送られ、それに引き続いて、acme、sierra に転送されることを示しています (これはあくまでも実在する経路ではないので注意してください)。 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 メールボックス名のフォーマットについての規則
別名 (alias) とは、もう 1 つの別の名前を指します。電子メールでは、メールボックスの位置を割り当てたり、メールリストを定義するために、 別名を使用できます。
大きなサイトでは、メール別名は、メールボックスの位置を定義するのが普通です。メール別名を作成するのは、企業で個人のアドレスの一部としてメールストップを設定するのと似ています。メールストップを提供しない場合は、メールは中央アドレスに配信されます。建物内のどこにメールを配信するかを決定するには、別の作業が必要となり、ミスをする可能性が増えます。たとえば、同じ建物に Kevin Smith という名前の人が 2 人いる場合、どちらの Kevin も、別の Kevin 宛のメールを受け取る可能性が高くなります。
メールリストを作成するときは、なるべくドメインの位置に依存しないアドレスを使用してください。別名ファイルの移植性と柔軟性を高めるため、別名エントリをできる限り一般的でシステムに依存しない形式にしてください。たとえば、システム mars のドメイン eng.acme.com に ignatz というユーザー名がある場合、別名は 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.com に smallberries というユーザー名がある場合、別名は 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 つの要素が必要ですが、これらは同じシステムで組み合わせることも、別のシステムで提供することもできます。
メールホスト
メールサーバー (1 つ以上)
メールクライアント
ユーザーがドメイン外のネットワークと通信をするためには、4 番目の要素であるメールゲートウェイを追加する必要があります。
図 1-1 には、一般的な電子メール構成を示しますが、ここでは基本的な 3 つのメール要素とメールゲートウェイが使用されています。以下の節では、各要素が何であるかを示してその説明を行います。
「メールホスト」は、ネットワーク上でメインのメールマシンとして指定するマシンです。これはサイトにおいて、他のシステムでは配信できないメールを転送するためのマシンになります。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-3 には、メールサービスに使用する /usr/bin ディレクトリの内容を示します。
表 1-3 メールサービスに使用する /usr/bin ディレクトリの内容
名前 |
形式 |
説明 |
---|---|---|
ファイル |
ユーザーエージェント |
|
ファイル |
メールを SunOS 4.1 メールボックスフォーマットに格納するフィルタ |
|
リンク |
/usr/lib/sendmail へのリンクで、メール待ち行列の表示に使用 |
|
ファイル |
/etc/mail/sendmail.st ファイルに格納されたメール統計情報の読み込みに使用するプログラム (存在する場合のみ) |
|
ファイル |
ユーザーエージェント |
|
ファイル |
NIS+ 別名マップを処理するプログラム |
|
ファイル |
アドレスの検証とデバッグのためメールプログラムに接続するプログラム |
|
リンク |
/usr/lib/sendmail へのリンクで、別名ファイルのバイナリ形式を作成するのに使用 |
|
リンク |
/usr/bin/mail へのリンクで、メールの送信だけを許可するのによく使用されるコマンド |
|
ファイル |
メールへの自動応答を設定するコマンド |
表 1-4 に、/etc/mail ディレクトリの内容を示します。
表 1-4 /etc/mail ディレクトリの内容
名前 |
形式 |
説明 |
---|---|---|
ファイル |
mailtool ユーザーエージェントのデフォルトの設定値 |
|
ファイル |
メール転送情報 |
|
ファイル |
メール転送情報のバイナリ形式 (newaliases の実行によって作成される) |
|
ファイル |
メール転送情報のバイナリ形式 (newaliases の実行によって作成される) |
|
ファイル |
mailx ユーザーエージェントのデフォルトの設定値 |
|
ファイル |
メインシステム用の構成ファイルの例 |
|
ファイル |
メールルーティング用の構成ファイル |
|
ファイル |
メールホスト用の別名の数が多すぎるときに作成可能なオプションファイル |
|
ファイル |
SMTP HELP コマンドで使用するヘルプファイル |
|
ファイル |
リスニングデーモンの PID を表示するファイル |
|
ファイル |
sendmail 統計情報ファイル。このファイルが存在すると、sendmail は各メールプログラムのトラフィック量をログする |
|
ファイル |
表 1-5 にメールサービスに使用する /usr/lib ディレクトリの内容を示します。
表 1-5 メールサービスに使用する /usr/lib ディレクトリの内容
名前 |
形式 |
説明 |
---|---|---|
ファイル |
メールボックスにメールを配信するメールプログラム |
|
ファイル |
メールトランスポートエージェントとしても知られるルーティングプログラム |
メールサービスは、その他のいくつかのファイルおよびディレクトリを使用します。これらを表 1-6 に示します。
表 1-6 メールサービスに使用するその他のファイル
名前 |
形式 |
説明 |
---|---|---|
ディレクトリ |
配信されなかったメールが格納される場所 |
|
ファイル |
配信されたメールのメールボックス |
|
ファイル |
sendmail.cf から検索するためのマクロとクラス定義を格納 |
|
テーブル |
sendmailvars ファイルの NIS+ バージョン |
|
ファイル |
メール通知デーモン |
|
ファイル |
sendmail が使用するエラーメッセージログをとる場所 |
|
ファイル |
sendmail へのウィンドウベースのインタフェース |
これらのプログラムの組合せによるメールサービスが提供されていますが、その相互作用を図 1-3 に簡略に示します。
ユーザーは、mailx や mailtool などのプログラムを使用してメッセージを送信します。これらのプログラムについては、mailx(1) または mailtool(1) のマニュアルページを参照してください。
メッセージは、メッセージを生成するのに使用されたプログラムにより収集され、sendmail デーモンに渡されます。sendmail デーモンは、メッセージのアドレスを「解釈」し (識別可能なセグメントに分割)、構成ファイル /etc/mail/sendmail.cf からの情報を使用して、ネットワークの名前構文、別名、転送情報、およびネットワークトポロジを決定します。sendmail はこの情報を使用して、メッセージが受信者に到達する経路を決定します。
sendmail デーモンはメッセージを適切なシステムに渡します。ローカルシステムの /usr/lib/mail.local プログラムは、メッセージの受信者の /var/mail/username ディレクトリのメールボックスにメールを配信します。
受信者は、メールが届いたことが通知されるので、mail、mailx、mailtool などのプログラムを使用してこれを受け取ります。
SunOS 5.x オペレーティングシステムは、メールルーターとして sendmail プログラムを使用します。sendmail は、電子メールメッセージの受信と配信を担当します。これは、mail、mailx、mailtool といったメール読み取りプログラムと、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) のマニュアルページを参照してください。
「構成ファイル」は、sendmail がその機能を実行する方法を制御します。構成ファイルにより、配信エージェント、アドレスの変換の規則、およびメールヘッダーのフォーマットが選択されます。ファイルについては、「sendmail 構成ファイル」 を参照してください。
sendmail プログラムは、/etc/mail/sendmail.cf ファイルの情報を使用して、その機能を実行します。各システムには、/etc/mail ディレクトリにインストールされたデフォルトの sendmail.cf ファイルがあります。メールサーバーまたはメールクライアントのためにデフォルト構成ファイルを編集したり変更したりする必要はありません。カスタマイズされた構成ファイルを必要とするシステムは、メールホストとメールゲートウェイだけです。
SunOS 5.x システムには、以下に示すように、/etc/mail ディレクトリに 2 つのデフォルト構成ファイルがあります。
システムで使用する構成ファイルは、システムがメールサービスで果たす役割によって異なります。
メールホストやゲートウェイを設定するには、main.cf ファイルをコピーし、それを (/etc/mail ディレクトリで) sendmail.cf と名称変更します。次に、メール構成に必要なリレーメールプログラムとリレーホストのパラメータを設定するために、sendmail.cf ファイルを編集します。
次に、サイトの要求に応じて変更が可能な構成パラメータをいくつか説明します。
sendmail.cf ファイルにある 2 つのエントリに応答して、sendmail プログラムは、値を sendmailvars 構成テーブルから検索することにより、マクロおよびクラスを定義できます。次にそのようなコマンドを 2 つ示します。
LXsearch_key
たとえば、Lmmaildomainの場合、検索キー maildomain を使って、変数 m に代入する値が構成テーブルから検索されます。多くの場合、1 文字の変数名は大文字、内部変数 (メールドメイン名の m など) は小文字です。
G コマンドの構文は次のとおりです。
GCsearch_key
この場合、検索キー uucp-list を使って、変数 V に代入する値が構成テーブルから検索されます。
どちらの場合も、検索キーでは大文字と小文字を区別します。
両方のコマンドには、ルックアップテーブルを使用せずに sendmail.cf ファイル内にマクロまたはクラスを定義する同等のコマンドがあります。D は L と同等で、C は G と同等です。
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 ファイルに入れることにより、変数のグローバル設定を無効にすることが可能です。
ユーザーは、システム管理者の手を借りることなくプログラムのカスタムセットにメールを一時的にリダイレクトまたは送信するために、ホームディレクトリに、sendmail が使用する .forward ファイルを作成できます。メールの問題、特に所定のアドレスに配信されないメールに関する問題の解決の際、ユーザーのホームディレクトリに .forward ファイルがあるかどうかを常にチェックしてください。
ユーザーによくある間違いは、host1 上のホームディレクトリの .forward ファイルに、user@host2 にメールを転送する設定を入れてしまうことです。メールが host2 に送られると、sendmail は NIS や NIS+ 別名で user を検索し、user@host1 にメッセージを送り返すので、ループが発生し、メールは返送されてしまいます。