メールシステムの管理

第 2 章 メールサービスの設定と管理

この章ではメールサービスを設定し、管理する方法について説明します。

メールサービスの管理についてまだ理解していない場合は、メールサービスの用語や構造の紹介、またメールサービス構成の説明について、第 1 章「メールサービスについて」を参照してください。

次の項目から特定の作業の手順が載っているページを探してください。

メールサービスの設定

サイトが企業外の電子メール (email) サービスに接続していないか、または企業が 1 つのドメイン内にある場合は、メールサービスを比較的容易に設定できます。

第 3 章「sendmail 構成ファイルのカスタマイズ」で、より複雑な構成ファイルを作成する方法を説明しています。

メールでは、ローカルメール用に 2 種類の構成と、ドメイン外のネットワークとの通信用にさらに 2 つの構成が必要です。これらの構成は、同じシステムで組み合わせるか、または別のシステムで提供できます。表 2-1 の機能を使用するには、サイト上のシステムを設定する必要があります。

表 2-1 メール構成

構成 

説明 

メールクライアント

メールクライアントとは、メールボックスがメールサーバーにあるユーザーを指す 

メールサーバー

メールサーバーは、メールボックスを /var/mail ディレクトリに格納する

メールホスト

少なくとも 1 つのメールホストが必要。メールホストはむずかしい電子メールアドレスを解釈し、ドメイン内でメールを再度ルーティングする 

メールゲートウェイ

メールゲートウェイは、ドメイン外の異なる通信ネットワーク間を接続したり、異なる通信ネットワーク間を接続したりする。sendmail.cf ファイルに規則を追加してゲートウェイを設定する必要がある。規則を追加する方法については、第 3 章「sendmail 構成ファイルのカスタマイズ」を参照。ゲートウェイを設定する場合は、必要なゲートウェイ構成ファイルに近いものを探して、それを状況に合わせて修正する

メールサービスの設定を始める前に、メールサーバー、メールホスト、およびメールゲートウェイとして機能するシステムを選びます。サービスを提供するすべてのメールクライアントのリストも作成し、メールボックスの位置を入れてください。このリストは、ユーザーのメール別名を作成するときに有用です。これらの各システムの持つ機能の詳細は、第 1 章「メールサービスについて」を参照してください。便宜のために、どのシステムがメールサーバー、メールホスト、およびメールゲートウェイとして適しているかのガイドラインをこのあとの節でも再度説明します。

設定を簡単にするために、この章では、個々のメールサーバー、メールホスト、メールクライアント、およびリレーホストを設定するのに必要な操作を示します。メールサービス構成のシステムが複数の機能構成で動作する場合、システムのタイプごとに適切な操作説明に従ってください。たとえば、メールホストとメールサーバーの機能が同じシステムにある場合は、そのシステムをメールホストとして設定するための指示に従い、次に同じシステムをメールサーバーとして設定するための指示に従ってください。


注 -

次のメールサーバーとメールクライアントの設定の手順は、メールボックスが NFS でマウントされているときに適用されます。ただし、通常、メールボックスはローカルにマウントされた /var/mail ディレクトリで管理されます。この場合、このあとの手順は必要ありません。


メールセキュリティの設定

デフォルトでは、/var/mail ディレクトリのアクセス権によって所有者、所有者が所属しているグループのメンバー、その他のユーザーのすべてに、読み取り、書き込み、実行という 3 つのアクセス権が与えられます。Solaris 2.x のメールサーバーでは、SunOS 4.1.x メールクライアントが接続されていない場合は、所有者のグループ以外のユーザーには読み取り権と書き込み権だけを許可するように /var/mail ディレクトリのアクセス権を変更することにより、このディレクトリのセキュリティを高めることができます。ディレクトリのアクセス権の変更については、Solaris のシステム管理 を参照してください。

メールサーバーを設定する方法

メールサーバーはローカルユーザーにメールサービスを提供するだけなので、設定には特別な手順は必要ありません。ユーザーはパスワードファイルか名前空間にエントリが必要で、メールの配信用に、ローカルのホームディレクトリが ‾/.forward をチェックできるように必要です。このためにホームディレクトリサーバーがしばしばメールサーバーとして設定されます。

メールサーバーは、クライアントからのすべてのメールのルーティングを行います。メールサーバーに必要な唯一のリソースは、クライアントメールボックスのための十分なスプール空間です。リモートのマウントでは、/var/mail ディレクトリを使用できるようにする必要があります。

この作業のために、/etc/dfs/dfstab ファイルをチェックして /var ディレクトリがエクスポートされていることを確認します。

  1. share と入力して Return キーを押します。

    /var ディレクトリが共用になっていれば、これで終了です。/var ディレクトリがエクスポートされていなければ、次の手順に進みます。

  2. share -F nfs /var/mail と入力して Return キーを押します。

  3. ファイルシステムを永久的に共用するには、/etc/dfs/dfstab を編集して、手順 2 で使用したコマンド行を追加します。


注 -

mail.local プログラムは、メッセージが初めて配信されたときに /var/mail ディレクトリでメールボックスを自動的に作成します。メールクライアントのために個々のメールボックスを作成する必要はありません。


メールクライアントを設定する方法

メールクライアントは、メールボックスがメールサーバーにあり、/etc/mail/aliases ファイルのメール別名がメールボックスの位置を指しているメールサービスのユーザーです。

  1. メールクライアントのシステムで root になります。

  2. メールクライアントのシステムで /var/mail マウントポイントがあることを確認します。

  3. メールサーバーから /var/mail ディレクトリをマウントします。

    メールディレクトリが自動的にマウントされるか、ブート時にマウントされます。

    1. /var/mail を自動的にマウントするには、/etc/auto_direct を編集して下記のようなエントリを追加します。


      /var/mail -rw,hard,actimeo=0 サーバー :/var/mail
    2. ブート時に /var/mail をマウントするには、etc/vfstab ファイルを編集して、メールサーバーに /var/mail ディレクトリのエントリを追加し、それをローカルの /var/mail ディレクトリにマウントします。


      server:/var/mail - /var/mail nfs - no rw,hard,actimeo=0

      システムを再起動するたびに、クライアントのメールボックスが自動的にマウントされます。クライアントのメールボックスをマウントするには、システムを再起動する前に、mountall と入力します。


      注意 - 注意 -

      NFS サーバーからメールをマウントするときは、メールボックスのロック機能とアクセスが正しく作動するように、actimeo=0 オプションを含める必要があります。


  4. システム管理ツール (admintool) を使用して /etc/hosts ファイルを編集し、メールサーバーのエントリを追加します。

    ネームサービスを使用している場合には、この手順は不要です。

  5. 別名ファイルの 1 つにクライアントのエントリを追加します。

    異なるタイプのメール構成に対してメール別名を作成する方法については、 「メール別名の作成」を参照してください。


    注 -

    mail.local プログラムは、メッセージが初めて配信されるときに /var/mail ディレクトリでメールボックスを自動的に作成します。メールクライアントのために個々のメールボックスを作成する必要はありません。


メールホストを設定する方法

メールホストは、電子メールアドレスを解決し、ドメイン内でメールを再度ルーティングします。メールホストに適しているシステムは、システムをドメイン外の世界または親ドメインに接続しているシステムです。

  1. メールホストシステムで root になります。

  2. admintool を使用して /etc/hosts ファイルを編集します。

    IP アドレスの後に単語 mailhost とメールホストシステムのシステム名を追加します。そのシステムがメールホストとして指定されます。

  3. ホストファイルの 1 つに新規メールホストのエントリを作成します。

    NIS または NIS+ を使用する場合は、mailhost と呼ばれるホスト別名を含むエントリを、新規メールホストのホストエントリに追加します。

    NIS または NIS+ を使用しない場合は、ネットワーク上の各システム用に、/etc/hosts にエントリを作成する必要があります。エントリでは、必ず IP address mailhost_name mailhost というフォーマットを使用してください。

  4. cp /etc/mail/main.cf /etc/mail/sendmail.cf と入力して Return キーを押します。

    これにより、/etc/mail/main.cf ファイルがコピーされ、名前が変更されます。

  5. メールホストを再起動し、メール構成をテストします。

    詳細は、「メール構成のテスト」 を参照してください。

メールゲートウェイを設定する方法

メールゲートウェイは、ドメイン外のネットワークとの通信を管理します。送信側メールゲートウェイ上のメールプログラムは、受信側システムのメールプログラムと同じでなければなりません。

メールゲートウェイに適しているシステムは、Ethernet および電話回線に接続されているシステムか、またはインターネットへのルーターとして設定されているシステムです。メールホストをメールゲートウェイとして設定するか、または別のシステムをメールゲートウェイとして設定できます。複数のメールゲートウェイを自分のドメイン用として設定できます。UUCP 接続がある場合は、UUCP 接続をメールゲートウェイとするシステム (1 つまたは複数のシステム) を設定してください。

  1. メールゲートウェイで root になります。

  2. cp /etc/mail/main.cf /etc/mail/sendmail.cf と入力して Return キーを押します。

    このコマンドにより、main.cf ファイルがコピーされ、名前が変更されます。

  3. /etc/mail/sendmail.cf ファイルを編集し、次のように変更します。

    1. リレーメールプログラムが UUCP ではない場合にだけ、デフォルトエントリ DMsmartuucp をリレーメールプログラムに適したエントリに変更します。

      使用可能なメールプログラムは、smartuucp (デフォルト)、ddnether、および uucp です。

      メールゲートウェイごとに異なるリレーメールプログラムを (特に問題がなければ) 指定できます。main.cf ファイルでその他のリレーメールプログラムの規則を定義できます。各デフォルトリレーメールプログラムの説明は、「メールプログラム」を参照してください。

    2. エントリ DR ddn-gateway で、ddn-gateway をメールリレーの名前に置き換えます。

      DR エントリがメールリレーを定義します。

    3. エントリ CR ddn-gateway で、ddn-gateway をメールリレーの名前に置き換えます。

      CR エントリがメールリレーのクラスを定義します。1 つまたは複数のホストをこのクラスのメンバーとして指定できます。

    4. (オプション) Dmmaildomain または Lmmaildomain エントリを追加してメール配信に使用するメールドメイン名を定義します。

      m マクロでメールドメイン名を定義します。マクロが定義されていなければ、最初の構成要素を除いたネームサービスドメイン名が使用されます。たとえば、ecd.east.acme.comeast.acme.com になります。L コマンドを使用すると、sendmail は、maildomain を検索キーとして使用して、sendmailvars テーブルで使用する名前を検索します。

    5. 編集したものを保存します。

  4. メールゲートウェイを再起動し、メール構成をテストします。

    詳細は、「メール構成のテスト」を参照してください。

メール別名の作成

aliasadm コマンドを使用してユーザーのメール別名を作成できます。メール別名はドメイン内で一意でなければなりません。この節では、コマンド行を使用してメール別名テーブルから別名を検索する方法と、NIS+、NIS、DNS、またはローカルシステムのためにメール別名を作成する方法について説明します。

あるいは、admintool から Database Manager アプリケーション (Solaris とは別パッケージ) を使用して aliases データベース上でこれらの作業を行うことができます。

どの種類のファイルを使用するかは、別名を使用するユーザーおよび別名の変更ができるユーザーによって異なります。それぞれの種類の別名ファイルには、独自のフォーマット要件があります。これらについては、以下の節で説明します。

メール別名ファイル

下記の任意のファイルを使って、別名を管理できます。多くのサイトでは、これらのファイルは組み合わせて使用されます。

.mailrc の別名

.mailrc ファイルのリストに入っている別名は、ファイルを所有するユーザーだけしかアクセスできません。これにより、ユーザーは自分で制御し、所有者だけが使用できる別名を作成できます。mailrc ファイルの別名は、次のフォーマットに従います。


alias aliasname value value value ...

ここで aliasname は、ユーザーがメールの送信時に使用する名前であり、value は有効な電子メールアドレスです。

ユーザーが scott に個人的な別名を作成し、それが名前空間の scott の電子メールアドレスと一致しない場合、そのユーザーが生成したメールに他のユーザーが応答しようとするときに、メールが間違ったユーザーに転送されることになります。これを回避するには、いずれか別の別名命名方式を使用する以外にありません。

/etc/mail/aliases

/etc/mail/aliases ファイルで作成したいずれの別名も、その別名の名前とファイルを含んでいるシステムのホスト名を知っているユーザーなら誰でも使用できます。ローカルの /etc/mail/aliases ファイルの配布リストのフォーマットは、以下のようになります。


aliasname: value,value,value...

ここで aliasname は、ユーザーがこの別名にメールを送信するときに使用する名前で、value は有効な電子メールアドレスになります。

/etc/mail/aliases ファイルの別名は、テキスト形式で格納されます。/etc/mail/aliases ファイルを編集するときに、newaliases プログラムを実行してデータベースを再コンパイルし、sendmail プログラムでその別名がバイナリ形式で使用できるようにします。あるいは admintool の Database Manager を使用して、ローカルの /etc ファイルに格納されているメール別名を管理できます。

通常、このファイルを編集できるのはルートのユーザーだけです。admintool を使用する場合は、sysadmin グループであるグループ 14 のすべてのユーザーは、ローカルファイルを変更できます。別のオプションとしては、以下のようなエントリが作成できます。


aliasname: :include:/path/aliasfile

ここで aliasname は、ユーザーがメールを送信するときに使用する名前であり、/path/aliasfile は別名リストを含むファイルへの完全なパスになります。別名ファイルには、各行に 1 つの電子メールエントリを入れ、その他の表記は付けないでください。


user1@host1
user2@host2

admintool でデータを変更するためのルートアクセスやアクセス権は与えずに、このファイルのアクセス権を変更して、複数のユーザーに別名を変更できるように許可できます。

/etc/mail/aliases に追加のメールファイルを定義して、ログやバックアップコピーの管理もできます。以下のエントリでは、filenamealiasname に送信されるすべてのメールを格納します。


aliasname: /home/backup/filename

注 -

すべてのメールファイルは、daemon で書き込めるようにする必要があります。他のユーザーがこのファイルにメールを配信できるようにするには、ファイルが特定のユーザーに所有され、グループ所有者は daemon で、ファイルのアクセス権が少なくとも 0620 になるように、アクセス権を設定してください。また別のプロセスにメールをルーティングすることも可能です。


以下のエントリは、メールメッセージのコピーを filename に格納し、コピーを出力します。


aliasname: "|tee -a /home/backup/filename |lp"

NIS 別名マップ

NIS 別名マップに含まれたエントリは、ローカルドメインのすべてのユーザーが利用できます。sendmail プログラムは、ローカルの /etc/mail/aliases ファイルの代わりに NIS 別名マップを使用して、メールアドレスを決定できます。詳しくは、nsswitch.conf(4) のマニュアルページを参照してください。

NIS 別名マップの別名は、以下のフォーマットに従います。


aliasname: value,value,value...

ここで aliasname は、ユーザーがメールを送信するときに使用する名前であり、value は有効な電子メールアドレスです。

NIS 別名マップには、すべてのメールクライアント用のエントリを含めてください。一般にこれらのエントリは、NIS マスターの root ユーザーだけしか変更できません。このタイプの別名は、頻繁に変更される別名としては適していないかもしれませんが、次の構文例のように、別名が他の別名ファイルを指している場合は便利です。


aliasname: aliasname@host

ここで aliasname はユーザーがメールを送信するときに使用する名前であり、host/etc/mail/alias ファイルを含むサーバー用のホスト名です。

NIS+ mail_aliases テーブル

NIS+ mail_aliases テーブルには名前が含まれていて、それによってローカルドメインにおけるシステムや個人が登録されています。sendmail プログラムは、ローカルの /etc/mail/aliases ファイルの代わりに NIS+ mail_aliases テーブルを使用して、メールアドレスを決定できます。詳しくは、aliasadm(1M) および nsswitch.conf(4) のマニュアルページを参照してください。

NIS+ mail_aliases テーブルの別名は以下のフォーマットに従います。


alias:			expansion					[options		# "comments"]

表 2-2 に 4 つの列を記載します。

表 2-2 NIS+ 別名テーブルの列

列 

説明 

alias

別名の名前 

expansion

sendmail /etc/mail/aliases ファイルに現れる別名の値または別名のリスト

options

将来の使用のために確保 

comments

個々の別名に関するコメント 

NIS+ mail_aliases テーブルには、すべてのメールクライアントにエントリを含めてください。NIS+ aliases テーブルでは、aliasadm コマンドで、エントリの表示、作成、変更、および削除ができます。あるいは admintool の Database Manager を使用して、NIS+ メール別名を管理できます。

新規の NIS+ 別名テーブルを作成する場合は、エントリを作成する前にテーブルを初期設定する必要があります。テーブルが存在するときは、初期設定は不要です。NIS+ mail_aliases テーブルの作成に関しては、「NIS+ mail_aliases テーブルの個々のエントリを表示する」 を参照してください。

aliasadm コマンドを使用するには、別名テーブルを所有する NIS+ グループのメンバーか、テーブルを作成したユーザーでなければなりません。

NIS+ mail_aliases テーブルの内容を表示する方法

aliasadm コマンドを使用するには、rootmail_aliases テーブルを所有する NIS+ グループのメンバー、またはテーブルを作成したユーザーでなければなりません。

NIS+ mail_aliases テーブルの全体の内容を表示する

    aliasadm -l と入力して Return キーを押します。

これにより、別名によるアルファベット順に別名テーブルの内容が表示されます。


注 -

大きな別名テーブルがある場合、全体の内容の表示には、やや時間がかかることがあります。特定のエントリを検索する場合は、grep 検索機能を使用して特定のエントリを探し出すことができるように、出力をパイプを通して grep コマンドに入力してください (aliasadm -l | grep entry)。


NIS+ mail_aliases テーブルの個々のエントリを表示する

    aliasadm -m alias と入力して Return キーを押します。

別名エントリが表示されます。

# aliasadm -m ignatz ignatz: ignatz@saturn 
# Alias for Iggy Ignatz

注 -

aliasadm -m オプションは、別名が完全に同じものだけを表示します。部分的に同じ文字列は表示しません。aliasadm -m オプションではメタキャラクタ (* および ? など) は使用できません。部分的に一致する文字列も表示したい場合は、aliasadm -l | grep partial-string と入力して Return キーを押してください。


コマンド行から NIS+ mail_aliases テーブルへ別名を追加する方法

まったく新しい NIS+ mail_aliases テーブルを作成する場合は、最初に NIS+ テーブルを初期設定しなければなりません。

NIS+ テーブルを初期設定する

    aliasadm -I と入力して Return キーを押します。

コマンド行から NIS+ mail_aliases テーブルに別名を追加する

  1. メールクライアント、メールボックスの位置、およびメールサーバーシステム名の各リストをコンパイルします。

  2. 任意のシステムで root になります。

  3. それぞれの別名について、aliasadm -a alias expanded_alias [options comments] と入力して Return キーを押します。

    これにより、別名が NIS+ mail_aliases テーブルに追加されます。


    # aliasadm -a iggy iggy.ignatz@saturn "Iggy Ignatz"
  4. aliasadm -m alias と入力して Return キーを押します。

    これにより、作成したエントリが表示されます。

  5. エントリが正しいことをチェックします。

NIS+ mail_aliases テーブルを編集してエントリを追加する方法

2 つまたは 3 つ以上の別名を追加する場合は、NIS+ テーブルを直接編集することもあります。

  1. メールクライアント、メールボックスの位置、およびメールサーバーシステムの名前の各リストをコンパイルします。

  2. 任意のシステムで root になります。

  3. aliasadm -e と入力して Return キーを押します。

    別名テーブルは、$EDITOR 環境変数で設定されているエディタを使って表示されます。変数が設定されていなければ、vi エディタが使用されます。

  4. 次のフォーマットを使ってそれぞれの別名を別の行に入力します。

    1. 任意の順序でテーブルの任意の位置に別名を入力します。

      順序は NIS+ mail_aliases 別名テーブルにおいては任意です。aliasadm -l コマンドがリストをソートし、それらをアルファベット順に表示します。

    2. フォーマット alias: expanded_alias # ["option"# "comments"] を使用します。

      オプション列をブランクにする場合は、空の引用符 2 つ ("") を入力し、次にコメントを追加します。

    3. Return キーを押すことにより、それぞれの行を終了させます。

  5. エントリが正しいことをチェックします。

  6. 変更を保存します。

NIS+ mail_aliases テーブルのエントリを変更する方法

  1. 任意のシステムで root になります。

  2. aliasadm -m alias と入力して Return キーを押します。

    別名の情報が表示されます。

  3. aliasadm -c alias expanded_alias [options comments] と入力して Return キーを押します。

    別名は、入力した新しい情報を使って変更されます。

  4. aliasadm -m alias と入力して Return キーを押します。

    作成したエントリが表示されます。

  5. エントリが正しいことをチェックします。

NIS+ mail_aliases テーブルからエントリを削除する方法

  1. 任意のシステムで root になります。

  2. aliasadm -d alias と入力して Return キーを押します。

    別名が NIS+ mail_aliases テーブルから削除されます。

NIS mail.aliases マップを設定する方法

NIS マスター上の /etc/mail/aliases ファイルには名前が含まれていて、それによってシステムまたは個人が登録されています。ローカル /etc/mail/aliases ファイルで一致するものがなければ、NIS マスターが検索されます。sendmail プログラムは、NIS マスターファイルを使用してメールアドレスを決定します。aliases(4) のマニュアルページを参照してください。

各システムのファイルを編集するか、またはあるシステムのファイルを編集し、それをほかの各システムにコピーできます。

別名の形式は次のとおりです。


name: name1, name2, ...

ローカル名またはドメインに対して別名を使用できます。たとえば、システム saturn にメールボックスがあり、ドメイン planets 内のユーザー fred の別名エントリでは、/etc/mail/aliases ファイルに次のエントリがあります。


fred: fred@planets

NIS mail.aliases マップを設定する

  1. メールクライアント、メールボックスの位置、およびメールサーバーシステムの名前の各リストをコンパイルします。

  2. NIS マスターサーバーで root になります。

  3. /etc/mail/aliases ファイルを編集し、次のようなエントリを作成します。

    1. メールクライアントごとにエントリを追加します。

    2. エントリ Postmaster: root をポストマスタとして指定された個人のメールアドレスに変更します。

      詳細は、「ポストマスタ別名を設定する方法」 を参照してください。

    3. メールサーバーの管理のためのメールボックスを作成した場合は、root:mailbox@mailserver のエントリを作成します。

    4. 変更を保存します。

  4. NIS マスターサーバーの /etc/hosts ファイルを編集し、メールサーバーごとにエントリを作成します。

  5. cd /var/yp と入力して Return キーを押します。

  6. make と入力して Return キーを押します。

    /etc/hosts/etc/mail/aliases ファイルでの変更が NIS スレーブシステムに転送されます。別名が有効になるのに、数分かかることがあります。

ローカルメール別名ファイルを設定する方法

ローカルシステムの /etc/mail/aliases ファイルには名前が含まれていて、それによってシステムまたは個人が登録されています。sendmail プログラムは、このファイルを使用してメールアドレスを決定します。aliases(4) のマニュアルページを参照してください。

ネットワークがネームサービスを実行していなければ、各システムの /etc/mail/aliases ファイルには、メールクライアントのすべてのエントリが入っていなければなりません。各システムのファイルを編集するか、またはあるシステムのファイルを編集し、それをほかの各システムにコピーできます。

別名の形式は次のとおりです。


name: name1, name2, ...

ローカル名だけに使用する別名、つまり現在のホスト名またはホスト名なしの別名を作成できます。たとえば、システム saturn にメールボックスがあるユーザー ignatz の別名エントリでは、/etc/mail/aliases ファイルに次のエントリがあります。


ignatz: ignatz@saturn

メールサーバーごとに管理アカウントを作成するとよいでしょう。root にメールサーバーのメールボックスを割り当て、/etc/mail/aliases ファイルに root 用のエントリを割り当てることにより作成できます。たとえば、システム saturn がメールボックスサーバーならば、/etc/mail/aliases ファイルにエントリ root: sysadmin@saturn を追加してください。

ローカルメール別名ファイルを設定する

  1. メールクライアントとメールボックスの位置の各リストをコンパイルします。

  2. メールサーバーで root になります。

  3. /etc/mail/aliases ファイルを編集し、次のようなエントリを作成します。

    1. メールクライアントごとにエントリを追加します。

    2. エントリ Postmaster: root をポストマスタとして指定された個人のメールアドレスに変更します。

      詳細は、「ポストマスタ別名を設定する方法」を参照してください。

    3. メールサーバーの管理のためのメールボックスを作成した場合は、root: mailbox@mailserver のエントリを作成します。

    4. 変更を保存します。

  4. newaliases と入力して Return キーを押します。

    これにより、sendmail が使用できるバイナリ形式で alias ファイルが作成されます。ファイルは、/etc/mail/aliases.dir/etc/mail/aliases.pag ファイルに格納されます。

  5. /etc/mail/aliases/etc/mail/aliases、および /etc/mail/aliases.pag ファイルを他の各システムにコピーします。

    3 つのファイルをすべてコピーしたら、newaliases コマンドをほかの各システムで実行する必要はありません。

    rcp または rdist コマンドを使用してファイルをコピーするか、またはこの目的のために作成したスクリプトを使ってファイルをコピーできます。メールクライアントを追加または削除するたびにすべての /etc/mail/aliases ファイルを更新しなければならないので注意してください。

DNS 別名ファイルを設定する方法

DNS ネームサービスは、個人の別名をサポートしません。メール交換 (MX) レコードおよび cname レコードを使用してホストまたはドメインの別名をサポートします。ホスト名またはドメイン名、またはその両方を DNS データベースで指定できます。DNS を管理する方法については、Solaris ネーミングの設定と構成 を参照してください。

DNS のルックアップで 2.5.1 sendmail を使用するときは、ご使用のシステムの /etc/nsswitch.conf ファイルにある hosts のエントリに dns を追加する必要があります。また、sendmail 構成ファイルの中でオプション I が定義されていることも確認しておく必要があります。デフォルトでは、オプション I は Solaris 2.5.1 オペレーティング環境で出荷される標準の構成ファイルに定義されています。

ご使用のシステムの /etc/nsswitch.conf ファイルの中に、Solaris 2.5.1 オペレーティング環境おいて他のアプリケーションで使用できるように hosts のエントリに dns がリストされていて、sendmail が DNS ルックアップを使用しないようにする場合には、このパッチで提供されるデフォルトの標準構成ファイルに定義されている OI 行をコメントアウトすることによって sendmail が DNS ルックアップを使用しないようにできます(以下の例を参照してください)。

例: 構成ファイルの OI をコメンアウトし、sendmail が DNS ルックアップを使用しないようにします。


# Turn on the DNS name look up
# OI

sendmail で DNS を使用する

  1. /etc/nsswitch.conf ファイルを編集して、ホストエントリに dns フラグが含まれていることを確認します。

    DNS のホスト別名が使用できるように、ホストエントリには dns フラグが含まれている必要があります。

  2. mailhost エントリをチェックします。

    DNS データベースに mailhost のエントリがあることを確認してください。

ポストマスタ別名を設定する方法

各システムは postmaster メールボックスにメールを送信できなければなりません。postmaster の NIS または NIS+ 別名を作成するか、または各ローカル /etc/mail/aliases ファイルでこれを作成できます。次に、デフォルトの /etc/mail/aliases エントリを示します。


# Following alias is required by the mail protocol, RFC 822 
# Set it to the address of a HUMAN who deals with this system's 
# mail problems. Postmaster: root

postmaster の別名を作成するには、各システムの /etc/mail/aliases ファイルを編集し、root をポストマスタとして機能する個人のメールアドレスに変更します。

ポストマスタがポストマスタメールと個人的メールとを区別するために、別のメールボックスを作成できます。別のメールボックスを作成する場合は、/etc/mail/aliases ファイルを編集するときに、ポストマスタのメールアドレスではなくメールボックスアドレスを使用してください。

postmaster 用に別のメールボックスを作成する

  1. postmaster として指定された個人のアカウントを作成し、アスタリスク (*) をパスワードフィールドに入れます。

  2. メールが配信されたら mail -f postmaster と入力して Return キーを押します。

    mail プログラムはメールボックス名を読んだり、書き込んだりできます。

postmaster メールボックスを別名に追加する

  1. 各システムで root になり、/etc/mail/aliases ファイルを編集します。

    ネットワークが NIS または NIS+ を実行しない場合は、/etc/mail/aliases ファイルを編集します。

  2. ポストマスタ別名を root から Postmaster: postmastermailbox@postmasterhost に変更し、その変更を保存します。

  3. ポストマスタのローカルシステムで、別名の名前 (たとえば、sysadmin) を定義する /etc/mail/aliases ファイルにエントリを作成し、ローカルメールボックスへのパスを入れます。

  4. newaliases と入力して Return キーを押します。

    あるいは、aliases ファイルで Postmaster: エントリを

    Postmaster: /usr/somewhere/somefile エントリに変更することもできます。

メール構成のテスト

メール構成でシステムをすべて設定したら、この節での推奨事項を使用して設定をテストし、メールメッセージが送受信できることを確認してください。

メール構成をテストする方法

  1. 構成ファイルを変更したシステムをすべて再起動します。

  2. /usr/lib/sendmail -v names </dev/null と入力して Return キーを押すことにより、各システムからテストメッセージを送信します。

    names には、受信者の電子メールアドレスを指定します。

    このコマンドは、指定された受信者に空のメッセージを送信し、動作している間メッセージを表示します。

  3. 次のテストを実行します。

    1. メッセージを通常のユーザー名に送ることによってメールを自分自身またはローカルシステム上のほかの人々に送信します。

    2. Ethernet の場合は、別のシステムのだれかにメールを送信します。

      メインシステムからサブシステムへ、サブシステムからメインシステムへ、およびサブシステムから別のサブシステムへの 3 つの方向でこれを行います。

    3. メールゲートウェイがある場合、メールホストから別のドメインにメールを送信してリレーメールプログラムおよびホストが適切に設定されていることを確認します。

    4. 電話回線上に別のホストへの UUCP 接続を設定している場合は、そのホストのだれかにメールを送信し、その個人にメールを返信してもらうか、またはその個人がメッセージを受信したときに電話をしてもらいます。

    5. UUCP 接続を介してメールを送信するように他の人に頼みます。

      sendmail プログラムは、メッセージが通過したかどうかを通知できません。これは、メッセージが配信のために UUCP に渡されるためです。

    6. 異なるシステムの postmaster にメッセージを送り、自分のポストマスタのメールボックスに送られることを確認します。

メール構成の管理

この節では、メールサービスをスムーズに動作させる方法について説明します。

ポストマスタの作業

メール管理のためのポストマスタの作業は、次のとおりです。

メール待ち行列

高負荷または一時的な障害がある場合、sendmail はメッセージをすぐ配信しないでジョブ待ち行列に入れます。メール待ち行列は通常自動的に処理されます。場合によっては管理者の介在が必要となることがあります。たとえば、主ホストがある期間ダウンすると、待ち行列の動作が妨害されます。sendmail は、ホストが回復したら再起動する必要がありますが、その間には明らかな性能低下が見られることがあります。

待ち行列ファイルのフォーマット

sendmail プログラムは、一時待ち行列ファイルを待ち行列ファイル /var/spool/mqueue に格納します。そのような待ち行列ファイルのフォーマットはすべて xfAA99999 です。AA99999 はファイルの ID で、x は形式です。表 2-3 に、待ち行列ファイルの形式を示します。

表 2-3 待ち行列ファイルの形式

形式 

説明 

d

データファイル。メッセージの本体 (ヘッダーを除く) がこのファイルで保持される 

q

待ち行列制御ファイル。このファイルにはジョブの処理に必要な情報が含まれる 

t

一時ファイル。このファイルは、再構築時の qf ファイルのイメージ。再構築が終わると、ファイルは qf に名前変更される

x

セッションの実行中に発生した事項を示すトランスクリプトファイル 

qf ファイルでは、それぞれコード文字で始まる一連の行が入っています。各メッセージにはこれらの行のすべては含まれていませんが、表 2-4 に一覧表示します。

表 2-4 qf ファイルのコード

コード 

説明 

$

マクロ定義。特定のマクロ (現在は $r$s) の値は、待ち行列の実行段階に渡される

B

本体のタイプ。この行は本体のタイプを定義する。有効な値は 7BIT と 8BITMIME 

C

制御アドレス。構文は localuser:aliasname。この行に続く受信者アドレスは、配信が localuser (パスワードファイルかデータベースからのユーザー名) として実行されるようにフラグが立てられる。aliasname はこのアドレスに展開される別名の名前 (メッセージの出力用)

D

データファイル名。これらの行の 1 つしかない場合がある 

E

エラー受信者名。エラーメッセージは、発信者ではなくこのユーザーに送られる。この行はオプション 

F

フラグビット。これが r の場合は、応答メッセージであることを示し、w の場合は、メールの遅配を通知する警告メッセージが送られたことを示す

H

ヘッダー定義。任意の数の行を入れることができる。順序に意味があり、最終メッセージでの順序を示す。構文は、構成ファイルでのヘッダー定義と同じ 

L

内容の長さを計算するための情報 

M

-bp フラグがある sendmail を使ってプリントされるメッセージ行であり、一般に状態情報の格納に使用される。任意のテキストを入れることができる

P

待ち行列を並べるのに使用される現在のメッセージ優先順位を示す。番号が大きいと、優先順位は低くなる。メッセージが待ち行列にとどまると、優先順位は増大する。初期優先順位は、メッセージクラスおよびメッセージのサイズによって異なる 

R

受信者名。受信者ごとに 1 行ある。受信者名には通常、完全な別名があるが、ジョブが処理されると、その別名が再び付けられる。受信者名は qf ファイルの終端になければならない

S

発信者名。これらの行の 1 つしか入れられない 

T

ジョブ作成または依頼時間を秒単位で示す。ジョブがいつタイムアウトになるかを計算するのに使用される 

詳細は、第 3 章「sendmail 構成ファイルのカスタマイズ」を参照してください。

待ち行列は、sendmail.cf ファイルで指定された間隔 (デフォルトは 1 時間ごと) で自動的に実行されます。待ち行列は読み込まれて、ソートされ、それから sendmail はジョブをすべて順番に処理しようとします。sendmail プログラムは、ジョブがロックされているかどうかを調べるために最初にチェックを行います。ジョブがロックされていると、 sendmail はそのジョブを無視します。ジョブがロックされていなければ、sendmail はそれを処理します。

主ホストが数日間ダウンすると、待ち行列が過剰に大きくなることがあり、sendmail は待ち行列のソートに時間がかかります。待ち行列を一時的な場所に移動し、新しい待ち行列を作成することにより、これを防ぐことができます。ホストがサービスに戻されたら、古い待ち行列をあとで実行できます。

待ち行列を印刷する方法

待ち行列の内容は mailq で印刷できます。このコマンドは sendmail-bp フラグを指定するのと同じです。

    /usr/bin/mailq | more と入力して Return キーを押します。

待ち行列 ID のリスト、メッセージのサイズ、メッセージが待ち行列に入れられた日付、メッセージ状態、および発信者と受信者が表示されます。

待ち行列を強制処理する方法

    /usr/lib/sendmail -q -v と入力して Return キーを押します。

これで待ち行列の処理が強制的に行われ、待ち行列の処理中にジョブの進行状況が表示されます。

メール待ち行列のサブセットを実行する方法

    /usr/lib/sendmail -qRstring と入力して Return キーを押します。

-qRstring (どれかの受信者名が string に一致する場合に待ち行列を実行) または -qInnnn (待ち行列 IDnnnnn の 1 つのメッセージを実行) でいつでも待ち行列のサブセットを実行できます。

この例では、受信者 wnj の待ち行列にあるものをすべて処理します。


# /usr/lib/sendmail -qRwnj

待ち行列を移動する方法

  1. メールホストで root になります。

  2. /etc/init.d/sendmail stop と入力して Return キーを押します。

    これで古い sendmail デーモンは削除されるので、古い待ち行列ディレクトリが処理されることはありません。

  3. cd /var/spool と入力して Return キーを押します。

  4. mv mqueue omqueue; mkdir mqueue と入力して Return キーを押します。

    これでディレクトリの mqueue とその内容のすべてが omqueue ディレクトリに移動し、新規の空の Rmqueue ディレクトリを作成します。

  5. chmod 755 mqueue; chown daemon.daemon mqueue; と入力して Return キーを押します。

    これらのコマンドでディレクトリのアクセス権を設定し、所有者による読み込み、書き込み、実行、グループや、他のユーザーによる読み込み、実行が行えるようにします。またこれらのコマンドでは、所有者やグループを daemon に設定します。

  6. /etc/init.d/sendmail start と入力し Return キーを押します。

    これで新規 sendmail デーモンが起動します。

古いメール待ち行列を処理する方法

  1. /usr/lib/sendmail -oQ/var/spool/omqueue -q と入力して Return キーを押します。

    -oQ フラグは代替待ち行列ディレクトリを指定し、-q フラグは待ち行列での各ジョブを処理するように指示します。詳細 (verbose) 表示にしたい場合は、-v フラグを使用します。

  2. 待ち行列が最後に空になったら、rmdir /var/spool/omqueue と入力して Return キーを押します。これにより、空のディレクトリが削除されます。

    これにより空のディレクトリが削除されます。

システムログ

メールサービスは、syslogd プログラムを使ってほとんどのエラーを記録します。デフォルトでは、syslogdloghost にメッセージを送ります。

/etc/hosts ファイルの loghost というシステムを、NIS ドメイン全体のすべてのログを管理するように定義できます。システムログは syslogd プログラムによってサポートされます。 /etc/hostsloghost を指定します。loghost を指定しなければ、syslogd からのエラーメッセージはレポートされません。

表 2-5 にデフォルトの /etc/syslog.conf ファイルを示します。

表 2-5 デフォルト /etc/syslog.conf ファイル
#ident "@(#)syslog.conf  1.3        93/12/09 SMI"  /* SunOS 5.0 */  
#
# Copyright (c) 1994 by Sun Microsystems, Inc.
#
# syslog configuration file. 
#
# This file is processed by m4 so be careful to quote (`') names
# that match m4 reserved words. Also, within ifdef's, arguments 
# containing commas must be quoted. 
#  
# Note: Have to exclude user from most lines so that user.alert  
#       and user.emerg are not included, because old sendmails  
#       have no 4.2BSD based systems doing network logging, you  
#       can remove all the special cases for "user" logging. 
# *.err;kern.debug;auth.notice;user.none	        /dev/console  
*.err;kern.debug;daemon,auth.notice;mail.crit;user.none /var/adm/messages
*.alert;kern.err;daemon.err;user.none           	operator  
*.alert;user.none	                           		root  
*.emerg;user.none												*  
# if a non-loghost machine chooses to have authentication messages  
# sent to the loghost machine, un-comment out the following line: 
#auth.notice         ifdef(`LOGHOST', /var/log/authlog, @loghost) 
 mail.debug					          ifdef(`LOGHOST', /var/log/syslog, @loghost)  
#  
# non-loghost machines will use the following lines to cause "user"  
# log messages to be logged locally.  
# ifdef(`LOGHOST', ,  
user.err             /dev/console 
user.err             /var/adm/messages
user.alert           `root, operator'  
user.emerg           *  
)

/etc/syslog.conf ファイルを編集することにより、デフォルト構成を変更できます。変更内容を有効にするには、syslog デーモンを再起動する必要があります。メールに関する情報収集のため、次の選択項目をファイルに追加できます。

次のエントリにより、重要なメッセージ、単なる情報としてのメッセージ、およびデバッグメッセージのすべてのコピーが、/var/log/syslog に送られます。


mail.crit;mail.info;mail.debug			/var/log/syslog

システムログの各行には、タイムスタンプ、それを生成したシステム名、およびメッセージが入っています。syslog ファイルは、大量の情報を記録できます。

ログは、連続したレベルとして並べられます。最下位レベルでは、異常なイベントだけが記録されます。最上位レベルでは、もっとも必須なイベントと注目する必要のないイベントが記録されます。慣例により、10 以下のログレベルが「有用」とみなされます。10 を超えるログレベルは通常、デバッグに使用されます。loghostsyslogd プログラムの詳細は、Solaris のシステム管理 を参照してください。

問題解決のヒント

この節では、メールサービスの問題解決に使用できるヒントとツールをいくつか示します。

別名をチェックする方法

別名と受信者にメールを配信できるかどうかを調べるには、次のようにします。

    /usr/lib/sendmail -v -bv 受信者 と入力して Return キーを押します。

このコマンドは別名を表示し、最終アドレスが配信可能かどうかを識別します。

次に出力例を示します。


% /usr/lib/sendmail -v -bv shamira@raks 
shamira... aliased to   mwong 
mwong... aliased to              
shamira@raks shamira@raks... deliverable 
%

ローカルとドメイン全体で有効な別名を両方使用するときには、ループしたりデータベースの一貫性が失われたりしないように十分に注意する必要があります。ユーザーをあるシステムから別のシステムに移動するときは、別名のループを作成しないように特に注意してください。

sendmail ルールセットをテストする方法

  1. /usr/lib/sendmail -bt と入力して Return キーを押します。

    情報が表示されます。

  2. 最後のプロンプト (>) で、3,0 とテストしたいメールアドレスを入力します。

  3. Control-d を入力してセッションを終了します。

次に出力例を示します。

% /usr/lib/sendmail -bt 
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) 
Enter <ruleset> <address> 
> 3,0 shimara@raks 
rewrite: ruleset  3   input: shimara @ raks 
rewrite: ruleset  6  input: shimara <@ raks> 
rewrite: ruleset  6 returns: shimara <@ raks> 
rewrite: ruleset  3 returns: shimara <@ raks> 
rewrite: ruleset  0   input: shimara <@ raks> 
rewrite: ruleset  9   input: shimara <@ raks> 
rewrite: ruleset  9 returns: shimara <@ raks> 
rewrite: ruleset  0 returns: $# ether $# mailhost $: shimara <
@ raks > 
>

診断情報の詳細は、第 3 章「sendmail 構成ファイルのカスタマイズ」を参照してください。

他のシステムへの接続を調べる方法

他のシステムへの接続を調べるには、mconnect プログラムを使用してネットワーク上のその他の sendmail システムへの接続をオープンします。mconnect プログラムは対話方式で動作します。さまざまな診断コマンドを実行できます。詳細は、mconnect(1) のマニュアルページを参照してください。次の例では、ユーザー名 shamira へのメールが配信可能かどうかを調べます。


$ mconnect raks 
connecting to host raks (129.144.52.96), port 25 
connection open 
220 raks.Eng.Sun.COM Sendmail SMI-8.6/SMI-SVR4 ready at Tue, 25 Jul
1995 10:45:28 -0700 

vrfy shamira 
250 Michael Wong <shamira@raks.Eng.Sun.COM> 
>

mconnect を使用して SMTP ポートに接続できない場合は、次の条件をチェックしてください。

その他の診断情報

その他の診断情報については、次の情報源をチェックしてください。