メールサービスには、相互に対応する数多くのプログラムやデーモンが含まれています。この節では、電子メールの管理に関するプログラムや用語、あるいは概念について述べます。表 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 にメッセージを送り返すので、ループが発生し、メールは返送されてしまいます。