Trusted Solaris 管理の手順

sendmail の活動をトレースするには

ローカルおよびリモートのメール配送には、複数の sendmail のインスタンスが関係します。図 6-3 に、sendmail プロセスの処理におけるデータの流れを示します。

sendmail の第 1 のインスタンスは、いくつかのメール送信に使われる任意のメーラー (デフォルトでは dtmail) によって開始されます。このインスタンスにより、現在のホストから発信されたメールの配送が試行されます。メールの内容は、実際に配送されるまで /var/spool/mqueue MLD 内に格納されます。システムクラッシュなどが発生した場合には、これらのメールメッセージは配送されません (図 6-3 の (1))。通常、メッセージは直ちに配送されるため、メッセージがメール待ち行列に存在する時間はほんの数秒です。ただし、リモートホストがダウンしている場合などには、メッセージはメール待ち行列に永久に存在することになります。

sendmail の第 2 のインスタンスは、ワークステーションまたはサーバーのブート時に開始されます。このインスタンスは 25 番ポートを監視することで、リモートホストから受信するメールの配送に備えています。各メッセージは、実際に配送されるまで /var/spool/mqueue MLD 内に格納されます(例の (3) と (5))。

sendmail の第 3 のインスタンスは、メール待ち行列を定期的にスキャンして、待ち行列にメールが存在する場合はその配送を試みます(例の (2) と (4))。次の図は、cascadetrustworthyjuggle という 3 つのホスト上のメール送信プロセスを示しており、ホスト trustworrthy はホスト juggle のメール中継ホストとして動作します。

図 6-3 sendmail が扱うデータの流れの例

Graphic

ユーザーが「username@hostname 」にメールを送る場合、「hostname」がリモートホストならば、sendmail はそのメッセージをそのホストの 25 番ポートに転送します。例に示すように、「homan@cascade 」宛てのメールがホスト cascade 上の homan 以外のアカウントから送信された場合、sendmail (1) はそのメールを cascade 上の /var/spool/.MLD.mqueue 内の SLD に格納し、このメールはローカルメーラーによって配送されます。cascade 上の sendmail (2) は、定期的にメール待ち行列のポーリングを行い、待ち行列にたまったメールの配送を行います。ホスト trustworthy および juggle 上の sendmail (3) および (5) は、着信メールに備えて 25 番ポートを監視しています。cascade から出された trustworthy および juggle 宛てのメッセージはどちらもローカルの /var/spool/.MLD.mqueue に入れられた後、trustworthy の 25 番ポートに送信されます (この例では trustworthy はメール中継ホストとして動作しています)。trustworthy 上の sendmail (3) がこれら両方のメッセージをローカルな /var/spool/.MLD.mqueue 内の SLD に入れると、「roseanne@trustworthy」宛てのメッセージはローカルメーラーによって配送され、「ahart@juggle」宛てのメッセージは、juggle 上の 25 番ポートを監視している sendmail (5) に転送されます。

-d オプションを使った sendmail のデバッグに関しては、O'Reilly & Associates, Inc 発行の『sendmail Nutshell Handbook』に詳しく説明されています。簡単な使い方としては、-d オプションの後に X を指定することで、デバッグ情報を見ることができます。sendmail -d の出力を特定のものだけに制限するには、カテゴリを指定し、オプションでそれに続けてピリオド (.) の後に 0〜9 のレベルを指定します (9 は情報の最大レベルを示します)。新しいカテゴリである 75 を指定すると、sendmail の Trusted Solaris 版独自のデバッグ情報を表示できます。

sendmail の Trusted Solaris 情報をトレースするには

  1. 管理役割になり、ADMIN_LOW ワークスペースに移動します。

    必要に応じて、「ログイン後、特定の管理役割になるには」を参照してください。

  2. プロファイルシェルにて /etc/init.d ディレクトリに移動し、sendmail を停止します。


    $ cd /etc/rc2.d
    $ sendmail stop
    
  3. sendmail -d に続いてカテゴリ番号 75、続いて必要であればピリオド (.) の後にレベル番号を指定します。さらにその後に、1 つスペースを入れ宛先とメッセージを指定します。

    次に示すように、メッセージはファイルの内容を宛先にリダイレクトすることでも指定できます。またはメッセージを指定せずに行末で return キーを押します。この場合、「Subject:」というプロンプトが表示されたらメールの件名を入力し、その後は mail(1) の構文に則ってメッセージの内容を記述できます。


    $ /usr/lib/sendmail -d75.9 roseanne@trusted < /etc/motd
    
  4. エラーメッセージを確認します。

  5. ADMIN_LOW のプロファイルシェルにて /etc/init.d ディレクトリに移動し、sendmail を再スタートさせます。


    $ cd /etc/init.d
    $ sendmail start