sendmail は、メールの送信や転送を行う前に、宛先に指定された受け手や受信ホストに関して多くのチェックを行います。メールがアカウントによって受け取り可能となるのは、そのメールがアカウントの認可上限と最下位機密ラベルの間にある場合に限られます。アカウントの持つ機密ラベル範囲については、第 5 章「ユーザーマネージャを使ったアカウントの設定」を参照してください。また、メールが特定のホスト上で受け取り可能となるのは、以下に示すように、そのメールがホストの持つ認可範囲内にある場合に限られます (詳しくは、第 10 章「トラステッドネットワークデータベース におけるセキュリティ属性の指定とルーティング設定」も参照のこと)。
認可範囲が ADMIN_LOW
と ADMIN_HIGH
の間であるマルチレベルホストは、すべての機密ラベルのメールを受信できます。
制限された認可範囲を持つマルチレベルホストは、その最上位から最下位機密ラベル間にあるメールだけを受信できます。
シングルレベル (ラベルなし) ホストは、そのホスト用に設定されている単一機密ラベルを持つメールだけを受信できます。
ユーザーによるメール送信に問題が起こった場合は、次のガイドラインに従って、問題を調査してください。
メールエイリアスをチェックすること。
sendmail はメールの配送先を決定するのに、/etc/aliases ファイルと NIS+ テーブルである mail_aliases を参照します。たとえば、xxx という名前の Trusted Solaris ワークステーション上のプロセスがユーザー fred に対してメールを送信した場合、sendmail が mail_aliases テーブルを参照した結果 fred のエイリアスとして fred@yyy を見つけた場合、そのメールは fred@xxx には送信されません。
送信ホストと受信ホスト間のネットワーク接続が正しく設定されていることを確認すること。
ここで、「メール送信用にネットワーク接続が正しく設定されていることをチェックするには」に示されている手順を実行してください。
mailx を使ってメールを送信します。
# mailx -v somebody@somehost Subject: test1 testl . |
mailx が出力するメッセージを調べます。メッセージが受け付けられたことを示す行が表示されていれば手順 4 に移ります。
送信元のホストにログインし (またはメールサーバーが送信元ホストでない場合には、メールサーバーにログインし)、ユーザーのメール送信に必要となる機密ラベルにログインします。
telnet(1) コマンドを発行し、受信側ホストの 25 番ポートに接続します。
trustworthy% telnet hostname 25 |
送信元のホストと受信側ホスト間のトラステッドネットワークデータベース内で、正しいラベルで接続が設定されている場合は、宛先ホストの sendmail が次のようなメッセージを出力します。
220 hostname Sendmail version ready at date |
接続を終了するには quit と入力します。
quit |
telnet からエラーメッセージが出力された場合は、接続が設定されていません。この場合、手順 6 以降に移り、デバッグしたいホストの種類に適合した手順を実行してください。接続が正しく設定された場合には次の手順に移ります。
送信メールの機密ラベルで、送信元ホスト上のメール待ち行列の内容を表示します。メールサーバーが送信元ホストでない場合には、メールサーバー上のメール待ち行列の内容を表示します。
表示内容を調べ、送信したメールがメールサーバー上の待ち行列に入っているかどうかを調べます。
# mailq | more |
「sendmail の Trusted Solaris 情報をトレースするには」に示されている手順を実行します。
宛先ホストが Trusted Solaris 2.x または 7 システムである場合、次の手順で宛先ユーザーがTrusted Solaris のセキュリティポリシーに基づくメールを受け取れるかどうかを確認します。
(必要に応じてユーザーマネージャを使って)、受信者が有効なユーザーアカウントを持っていることを確認します。
ユーザーマネージャの「ラベル (Labels)」ダイアログボックスを使って、そのアカウントの最下位ラベルと認可上限を調べます。
送信されたメールの持つ機密ラベルが、受信者の最上位ラベルよりも劣位で、かつ、受信者の最下位ラベルよりも優位であることを確認します。
メールの持つ機密ラベルが、label_encodings(4) ファイルに定義されて、宛先ホストのユーザー認可範囲およびシステム認可範囲内にあることを確認します。
sendmail は、メールの持つ機密ラベルがシステム認可範囲外にある場合、そのメールを配送しません。
たとえば、ADMIN_LOW
や ADMIN_HIGH
ラベルで送信されたメールのように、メールの持つ機密ラベルがシステム認可範囲内にはあるが、ユーザー認可範囲内にはない場合、一般ユーザーはデフォルトではそのメールを受け取れません。このような場合は、次の手順に移ります。
宛先ユーザーの最下位ラベルよりも低いラベルを持つメールの場合、自サイトのセキュリティポリシーが許すならば、次の手順を実行します。
詳細は、「受信者の最下位ラベルよりも低いラベルのメールに関する Sendmail の処理」および 「ユーザーの最下位ラベルよりも低いラベルのメールに関するメール配送オプションを設定するには」を参照してください。
システム上のすべてのユーザーが自分の最下位ラベルよりも低いラベルのメールを受け取れるようにするには、tsoluserlowupgrade (デフォルト) の指定により sendmail がメールを自動的に昇格していることを確認します。または、tsoluserlowaccept を指定することで、メールリーダーがメールを着信ラベルで生成していることを確認します (これが行われている場合、アカウントが必要な承認を持っていれば、昇格が可能になります)。
管理役割に移行可能なすべての一般ユーザーアカウントだけが、ユーザー認可範囲外にあるシステムプロセスからのメールを受け取れるようにするには、sendmail の設定ファイルで tsoladminlowupgrade または tsoladminlowaccept オプションを設定してください。
ある特定の管理役割が、ユーザー認可範囲外にあるシステムプロセスからのメールを受け取れるようにするには、プロファイルマネージャを使って、その管理役割に「すべての定義済みラベルを使用」承認を指定してください。
(デフォルトの管理役割は、この承認をプロファイルに持っています)
Trusted Solaris 2.x または 7 オペレーティング環境を実行している宛先ホストの場合、送信側ホスト上で、受信側ホスト用の tnrhdb(4)/tnrhtp(4) エントリが正しく設定されており、他のホストとの通信ができるようにしてください。
tninfo(1M) コマンドを使うと、各ホストに割り当てられているテンプレートの種類、およびそのテンプレート内に指定されているホストのタイプや属性を調べることができます。-h hostname オプションは指定のホストに割り当てられているテンプレートの名前を表示し、-t template_name オプションはそのテンプレートに指定されているエントリ (ホストのタイプを含む) を表示します。
宛先ホストが、tnrhdb(4) データベース内でそのホストに割り当てられている正しいテンプレート名を持つことを確認します。また、tnrhtp(4) ファイル内のテンプレートにそのホストのタイプが sun_tsol
として正しく定義されていることを確認します。
tnrhtp ファイル内のテンプレートに記述されている最下位および最上位機密ラベルセットが、配送されなかったメールの持つ機密ラベルでの通信を許すかどうかを調べます。
これらの検査をパスした場合、ネットワーク接続は正しく動作するはずです。手順 3 に戻り、確認のために telnet(1) を再度実行してください。
Trusted Solaris 1.x オペレーティング環境を実行している宛先ホストの場合、送信側ホスト上で、受信側ホスト用の tnrhdb/tnrhtp エントリが正しく設定されており、他のホストとの通信ができるようになっていることを確認してください。
宛先ホストが、tnrhdb データベース内でそのホストに割り当てられている正しいテンプレート名を持つことを確認します。また、tnrhtp ファイル内のテンプレートにそのホストのタイプが msix
として正しく定義されていることを確認します。
tnrhtp ファイル内のテンプレートに記述されている最下位および最上位機密ラベルセットが、配送されなかったメールの持つ機密ラベルでの通信を許すかどうかを調べます。
これらの検査をパスした場合、ネットワーク接続は正しく動作するはずです。手順 3 に戻り、確認のために telnet を再度実行してください。
Trusted Solaris 以外のラベル付きオペレーティングシステムを実行している宛先ホストの場合、送信側ホスト上で、受信側ホスト用の tnrhdb ならびに tnrhtp エントリが正しく設定されており、Trusted Solaris システムがネットワークを介して他のホストとの通信ができるようになっていることを確認してください。
必要であれば tnrhtp(4) のマニュアルページを読み、このホストに割り当てるテンプレート内で指定するホストタイプやその他のオプションを確認します。
たとえば、CIPSO タイプのホストと RIPSO タイプのホストでは、それぞれ必要とするオプションが異なります。詳細は、第 10 章「トラステッドネットワークデータベース におけるセキュリティ属性の指定とルーティング設定」を参照してください。
テンプレートを作成するかまたは tnrhtp 内にコピーを作成し、tnrhdb データベース内でそのホストに正しいテンプレートが割り当てられており、適切なホストタイプでそのホストが識別できることを確認します。
tnrhtp ファイル内のテンプレートに記述されている最下位および最上位機密ラベルセットが、配送されなかったメールの持つ機密ラベルでの通信を許すかどうかを調べます。
これらの検査をパスした場合、ネットワーク接続は正しく動作するはずです。手順 3 に戻り、確認のために telnet を再度実行してください。
ラベルを認識可能なオペレーティングシステムを実行していない宛先ホストの場合、送信側ホスト上で、受信側ホスト用の tnrhdb ならびに tnrhtp エントリが正しく設定されており、他のホストとの通信ができるようになっていることを確認してください。
宛先ホストが、tnrhdb データベース内でそのホストに割り当てられている正しいテンプレート名を持つことを確認します。また、tnrhtp ファイル内のテンプレートにそのホストのタイプが「unlabeled
」として正しく定義されていることを確認します。
tnrhtp ファイル内のテンプレートに記述されているラベルなしホスト用のデフォルトの機密ラベルが、配送されなかったメールの持つ機密ラベルでの通信を許すかどうかを調べます。
これらの検査をパスした場合、ネットワーク接続は正しく動作するはずです。手順 3 に戻り、確認のために telnet を再度実行してください。