Solaris のシステム管理 (第 3 巻)

メールサービスの設定

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

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

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

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


注 -

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


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

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

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

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

  1. メールサーバー上でスーパーユーザーになります。

  2. /var/mail ディレクトリをリモートアクセスに使用できるかどうかを確認します。

    share と入力して Return キーを押します。/var/mail ディレクトリがリストになっていれば、これで終了です。/var/mail ディレクトリがリストされていなければ、次の手順に進みます。

  3. /var/mail ディレクトリをリモートアクセスに使用できるようにします。

    以下のコマンドをキー入力します。


    # share -F nfs /var/mail
    
  4. ファイルシステムを永続的にリモートアクセスに使用できるようにします。

    /etc/dfs/dfstab を編集し、2. で使用したコマンド行を追加します。


    # cat /etc/dfs/dfstab
     ..
    share -F nfs -o rw /var/mail

注 -

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


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

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

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

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

    ls を使用するとファイルシステムが存在するかどうかがわかります。次の例はファイルシステムが作成されていない場合の応答を示しています。


    # ls -l /var/mail
    /var/mail not found

    メールファイルがこのディレクトリにある場合は、ファイルを移動させておくと、サーバーから /var/mail ディレクトリがマウントされるときにその対象となりません。

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

    このメールディレクトリは自動的にマウントさせることも、起動時にマウントさせることもできます。

    1. /var/mail を自動的にマウントさせる場合

      /etc/auto_direct を編集し、次のようなエントリを加えます。


      /var/mail -rw,hard,actimeo=0 server:/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. /etc/hosts を編集します。

    admintool を使用して /etc/hosts ファイルを編集し、メールサーバーのためのエントリを追加します。ネームサービスを使用している場合はこの作業は必要ありません。

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

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


    注 -

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


  6. sendmail を再起動します。

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

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

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

  2. ホスト名の構成を確認します。

    次のように check-hostname スクリプトを実行し、sendmail が、このサーバーの完全指定ホスト名を識別できるかどうかを確認します。


    % /usr/lib/mail/sh/check-hostname
    hostname phoenix OK: fully qualified as phoenix.eng.acme.com

    このスクリプトによる完全指定ホスト名の識別ができなかった場合は、完全指定ホスト名を、/etc/hosts 内のホストの最初の別名として追加する必要があります。

  3. /etc/hosts を更新します。

    admintool を使用して /etc/hosts ファイルを更新します。メールホストシステムの IP アドレスとシステム名のあとに mailhost および mailhost.domainname を入れます。このシステムはメールホストとして指定されます。この domainname は、次のコマンドの出力にサブドメイン名として指定されてる文字列と同じにする必要があります。


    % /usr/lib/sendmail -bt -d0 </dev/null
    Version 8.9.0+Sun
     Compiled with: MAP_REGEX LOG MATCHGECOS MIME7TO8 MIME8TO7 NAMED_BIND 
                    NDBM NETINET NETUNIX NEWDB NIS NISPLUS QUEUE SCANF SMTP
                    USERDB XDEBUG
    
    ============ SYSTEM IDENTITY (after readcf) ============
          (short domain name) $w = phoenix
      (canonical domain name) $j = phoenix.eng.acme.com
             (subdomain name) $m = eng.acme.com
                  (node name) $k = phoenix
    ========================================================

    上記の変更のあとのホストファイルの例を示します。


    # cat /etc/hosts
    #
    # Internet host table
    #
    127.0.0.1       localhost        
    129.0.0.1       phoenix mailhost mailhost.eng.acme.com        loghost
  4. ホストファイルに新規メールホストのエントリを作成します。

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

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

  5. 正しい構成ファイルを変更します。

    このコマンドで /etc/mail/main.cf ファイルをコピーし、ファイルの名前を変更します。


    # cp /etc/mail/main.cf /etc/mail/sendmail.cf
    
  6. sendmail を再起動し、メール構成をテストします。

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

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

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

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

  1. メールゲートウェイでスーパーユーザーになります。

  2. 構成ファイルを変更します。

    次のコマンドは main.cf ファイルをコピーし名前を変更します。


    # cp /etc/mail/main.cf /etc/mail/sendmail.cf
    
  3. ホスト名の構成を確認します。

    次のように check-hostname スクリプトを実行し、sendmail が、このサーバーの完全指定のホスト名を識別できるかどうかを確認します。


    # /usr/lib/mail/sh/check-hostname
    hostname phoenix OK: fully qualified as phoenix.eng.acme.com

    このスクリプトによる完全指定のホスト名の識別ができなかった場合は、完全指定のホスト名を、/etc/hosts 内のホストの最初の別名として追加する必要があります。

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

    「メール構成をテストする方法」を参照してください。

sendmail で DNS を使用する方法

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

  1. スーパーユーザーになります。

  2. DNS ホストルックアップ機能を有効にします (NIS のみ)。

    /etc/nsswitch.conf ファイルを編集し、dns フラグを含むホストの定義から # を削除します。使用される DNS ホスト別名のために、ホストエントリには次に示すように dns フラグを入れる必要があります。


    # grep hosts /etc/nsswitch.conf
    #hosts:      nisplus [NOTFOUND=return] files
    hosts:      nisplus dns [NOTFOUND=return] files
  3. mailhostmailhost.domainname エントリを確認します。

    DNS データベース内に mailhostmailhost.domainname のためのエントリが存在することを確認してください。