メールサービスには、相互に対応する数多くのプログラムやデーモンが含まれています。この節では、電子メールの管理に関するプログラムや用語、あるいは概念について述べます。表 1-3 には、メールサービスに使用する /usr/bin ディレクトリの内容を示します。
表 1-3 メールサービスに使用する /usr/bin ディレクトリの内容
名前 |
形式 |
説明 |
---|---|---|
ファイル |
NIS+ 別名マップを処理するプログラム |
|
ファイル |
ユーザーエージェント |
|
ファイル |
メールを SunOS 4.1 メールボックスフォーマットに格納するフィルタ |
|
リンク |
/usr/lib/sendmail へのリンクで、メール待ち行列の表示に使用 |
|
ファイル |
/etc/mail/sendmail.st ファイルに格納されたメール統計情報の読み込みに使用するプログラム (存在する場合のみ) |
|
ファイル |
ユーザーエージェント |
|
ファイル |
アドレスの検証とデバッグのためメールプログラムに接続するプログラム |
|
リンク |
/usr/lib/sendmail へのリンクで、別名ファイルのバイナリ形式を作成するのに使用 |
|
リンク |
/usr/bin/mail へのリンクで、メールの送信だけを許可するのによく使用されるコマンド |
|
ファイル |
メールへの自動応答を設定するコマンド |
表 1-4 に、/etc/mail ディレクトリの内容を示します。
表 1-4 /etc/mail ディレクトリの内容
名前 |
形式 |
説明 |
---|---|---|
ファイル |
mailtool ユーザーエージェントのデフォルトの設定値 |
|
ファイル |
メール転送情報 |
|
ファイル |
メール転送情報のバイナリ形式 (newaliases の実行によって作成される) |
|
ファイル |
メール転送情報のバイナリ形式 (newaliases の実行によって作成される) |
|
ファイル |
mailx ユーザーエージェントのデフォルトの設定値 |
|
ファイル |
メインシステム用の構成ファイルの例 |
|
ファイル |
リレーが可能なドメインの全リストが含まれている。デフォルトでは、ローカルドメインだけが使用できる |
|
ファイル |
メールルーティング用の構成ファイル |
|
ファイル |
メールホスト用の別名の数が多すぎるときに作成可能なオプションファイル |
|
ファイル |
SMTP HELP コマンドで使用するヘルプファイル |
|
ファイル |
リスニングデーモンの PID を表示するファイル |
|
ファイル |
sendmail 統計情報ファイル。このファイルが存在すると、sendmail は各メールプログラムのトラフィック量をログする |
|
ファイル |
sendmail.cf からの名前空間の検索用のマクロとクラス定義を格納する |
|
ファイル |
表 1-5 にメールサービスに使用する /usr/lib ディレクトリの内容を示します。
表 1-5 メールサービスに使用する /usr/lib ディレクトリの内容
名前 |
形式 |
説明 |
---|---|---|
ファイル |
メールボックスにメールを配信するメールプログラム |
|
ファイル |
メール転送エージェントとしても知られるルーティングプログラム |
/usr/lib ディレクトリ内は、sendmail.cf ファイルの構築に必要なファイルをすべて含むサブディレクトリです。このディレクトリの内容は、表 1-6 に示すとおりです。
表 1-6 メールサービスに利用する /usr/lib/mailディレクトリの内容
名前 |
形式 |
説明 |
---|---|---|
README |
ファイル |
構成ファイルを説明する文書 |
cf |
ディレクトリ |
ホストのサイトに依存する、およびサイトに依存しない説明 |
ファイル |
主要な構成ファイル |
|
ファイル |
新しい構成ファイルを作成する場合の規則が含まれている |
|
ファイル |
/var/mail を別のホストから NFS マウントするホストの構成ファイル |
|
domain |
ディレクトリ |
サイトに依存するサブドメインの説明 |
domain/generic.m4 |
ファイル |
Berkeley からのジェネリックドメインファイル |
ファイル |
sendmail 関数を以前の Solaris 版のようにする変更を伴うドメインファイル。リレーがまったく使用できない場合を除いて、ホスト名が指定されていない送信側アドレスは拒否され、また解決されないドメインは拒否される |
|
ファイル |
sendmail 関数を以前の Solaris 版のようにする変更を伴うドメインファイル (デフォルト) |
|
feature |
ディレクトリ |
特定のホスト用の特別な機能の定義 (機能の詳細な説明は README を参照) |
m4 |
ディレクトリ |
サイトに依存しないインクルードファイル |
mailer |
ディレクトリ |
ローカル、smtp、uucp を含むメールプログラムの定義 |
ostype |
ディレクトリ |
いろいろなオペレーティングシステム環境を説明する定義 |
ファイル |
ローカルメールプログラムを mail に定義する |
|
ファイル |
ローカルメールプログラムを mail.local に定義する (デフォルト) |
|
sh |
ディレクトリ |
m4 作成プロセスと移行支援プログラムで使用するシェルスクリプト |
ファイル |
include: エイリアスと .forward ファイルのアクセス権、および正確なアクセス権に必要なこれらの親ディレクトリのパスを確認する |
|
ファイル |
sendmail が完全指定のホスト名を判別できることを確認する |
メールサービスは、その他のいくつかのファイルおよびディレクトリを使用します。これらを 表 1-7 に示します。
表 1-7 メールサービスに使用するその他のファイル
これらのプログラムの組合せによるメールサービスが提供されていますが、その相互作用を図 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 などのプログラムを使用してこれを受け取ります。
sendmail プログラムは、TCP/IP や UUCP などの異なる通信プロトコルを使用できます。また SMTP サーバー、メッセージキュー、メーリングリストも実装します。名前の解釈は、ドメインベースのネーミングとその環境で指定されている規則の両方を処理できるパターンマッチングシステムで制御されます。
sendmail プログラムは、ドメインベースのネーミングと任意の (古い) 名前構文を受け入れて、指定されている補完方法を使用して曖昧さを解決します。sendmail は共通点のないネーミングスキーム間でメッセージを変換することもできます。ドメインの手法は、物理的なネーミング対論理的なネーミングの問題を分離します。インターネットドメインのネーミングの規則の詳細は、『TCP/IP とデータ通信』を参照してください。
他のネットワーク上のホストに対してローカルのように見えるネットワーク名を提供するなど、その環境で指定されている技法によって特殊な場合を処理できます。
Solaris オペレーティング環境では、sendmail プログラムをメールルーターとして使用します。sendmail は、電子メールメッセージの受信と配信を担当します。これは、mail、mailx、mailtool といったメール読み取りプログラムと、uucp のようなメールトランスポートプログラムの間のインタフェースです。sendmail プログラムは、ユーザーが送った電子メールメッセージを制御し、受信者のアドレスを判断し、適切な配信プログラムを選び、配信エージェントが処理できるフォーマットにアドレスを書き直し、必要に応じてメールヘッダーをフォーマットし直し、最後に変換したメッセージを配信のためのメールプログラムに渡します。
Solaris 2.4 以前の旧リリース版には、sendmail.mx と呼ばれるバイナリが含まれていました。現在このプログラムは sendmail プログラムに含まれており、これを有効にするには、/etc/nsswitch.conf のホストエントリに dns フラグを追加します。詳細は、「DNS を設定して sendmail で作業する方法」 を参照してください。
sendmail プログラムでは、メールルーティングに必要な 3 つのメカニズムをサポートしています。どのメカニズムを選択するかは、サーバーまたはドメイン全体の変更なのか、または単に 1 人のユーザーの変更であるかによって決まります。また、異なる再ルーティングメカニズムを選択することにより、必要な管理レベルに変更できます。
1 つめの再ルーティングメカニズムはエイリアシングです。エイリアシングとは、使用するファイルのタイプに基づいて、サーバー全体、または名前空間全域ごとに名前をアドレスに対応させるメカニズムです。名前空間の別名ファイルを使用すると、メール再ルーティングの変更を単一のソースで管理できますが、この変更が伝達されるときに、遅延時間が発生する可能性があります。また、名前空間管理は、通常、システム管理者の選択グループに限定されるため、一般ユーザーが実行できる変更ではありません。サーバーの別名ファイルを通じて処理された再ルーティングは、そのサーバーのスーパーユーザーによって管理されます。通常、この変更の伝達に関連した遅延時間はほとんどみられませんが、この変更はローカルサーバーにしか反映されません。この制約事項は、メールのほとんどが 1 つのサーバーに送信される場合には問題ありませんが、この変更を多数のメールサーバーに配信する場合には、ネームサービスを使用した方が簡単です。これも一般ユーザーが実行できる変更ではありません。
次のメカニズムは、転送と取り込みです。このメカニズムを使用すると、ユーザーはメールの再ルーティングを実行できます。転送を使用すると、ローカルユーザーは、着信メールを他のメールボックス、別のメールプログラム、あるいは他のメールホストにルーティングし直すことができます。このメール再ルーティングの形式は、.forward ファイルを使用することによりサポートされます。これらのファイルの詳細は、「.forward ファイル」を参照してください。
最後の再ルーティングメカニズムは取り込みで、これを使用すると、別名リストを、ルートアクセスを要求する代わりに、ユーザーによって保守できます。このメカニズムを提供するには、スーパーユーザーは、サーバー上の別名ファイル内に適切なエントリを作成する必要があります。このエントリが作成されると、ユーザーは必要に応じてメールをルーティングし直すことができるようになります。取り込みの詳細は、「/etc/mail/aliases」を参照してください。
図 1-4 は、sendmail がユーザー別名をどのように使用するかを示します。/usr/bin/mailx のようなメールを読み取るプログラムは、プログラム自身の別名を持つことができ、それらはメッセージが sendmail に達する前に展開されます。sendmail の別名は、多くの名前空間ソース (ローカルファイル、NIS、NIS+) からのものでも構いません。検索順序は nsswitch.conf ファイルによって決定されます。nsswitch.conf(4) のマニュアルページを参照してください。
sendmail プログラムには、次のような機能があります。
sendmail には高い信頼性があります。すべてのメッセージを正しく配信するように設計されています。どんなメッセージも完全に失われることはありません。
sendmail は、既存のソフトウェアを配信に随時使用します。
sendmail は、1 つのネットワークタイプ (UUCP や Ethernet など) に複数の接続を行う場合なども含め、複雑な環境を処理するように構成できます。sendmail は、名前とその構文をチェックし、どのメールプログラムを使用するかを判断します。
構成情報をコードにコンパイルする代わりに、構成ファイルを使用してメール構成を制御します。
ユーザーは独自のメーリングリストを管理できます。各ユーザーは、ドメイン全体で有効な別名ファイル (通常、NIS または NIS+ によって管理されるドメイン全体の別名の中にある) を修正することなく自分自身のメール転送を指定できます。
各ユーザーはカスタムメールプログラムを指定して着信メールを処理することができます。こうすると、たとえば、「I am on vacation」というメッセージを返すといった機能を設定できます。 vacation(1) のマニュアルページを参照してください。
1 つのホストでアドレスを処理し、ネットワークトラフィックを削減します。
図 1-5 には、sendmail がメールシステムで他のプログラムと対話する方法を示します。
ユーザーは、メール生成プログラムおよび送信プログラムと対話します。メール送信が依頼されると、メール生成プログラムは sendmail を呼び出し、sendmail は適切なメールプログラムにメッセージを送ります。発信者の一部はネットワークサーバーであったり、またメールプログラムの一部はネットワーククライアントであるため、sendmail は、インターネットメールゲートウェイとしても使用できます。
「構成ファイル」は、sendmail がその機能を実行する方法を制御します。構成ファイルにより、配信エージェント、アドレスの変換の規則、およびメールヘッダーのフォーマットが選択されます。
sendmail プログラムは、/etc/mail/sendmail.cf ファイルの情報を使用して、その機能を実行します。各システムには、/etc/mail ディレクトリにインストールされたデフォルトの sendmail.cf ファイルがあります。メールサーバーまたはメールクライアントのためにデフォルト構成ファイルを編集したり変更したりする必要はありません。カスタマイズされた構成ファイルを必要とするシステムは、メールホストとメールゲートウェイだけです。
Solaris オペレーティング環境には、以下に示すように、/etc/mail ディレクトリに 2 つのデフォルト構成ファイルがあります。
システムで使用する構成ファイルは、システムがメールサービスで果たす役割によって異なります。
メールホストやゲートウェイを設定するには、main.cf ファイルをコピーし、それを (/etc/mail ディレクトリで) sendmail.cf と名称変更します。次に、sendmail.cf ファイルを再構成して、リレーメールプログラムを設定して、メール設定に必要なホストパラメータをリレーします。
次に、サイトの要求に応じて変更が可能な構成パラメータをいくつか説明します。