Solaris のシステム管理 (資源管理とネットワークサービス)

第 25 章 メールサービス (手順)

この章ではメールサービスを設定し、管理する方法について説明します。メールサービスの管理に詳しくない方は、第 24 章「メールサービス (概要)」で、メールサービスのコンポーネントの概要と一般的なメールサービス構成 (図 24–1 参照) の説明をお読みください。この章では、次の関連作業について説明します。

メールサービスのコンポーネントについての詳細は、第 26 章「メールサービス (リファレンス)」を参照してください。また、この章では、メールサービスのプログラムとファイル、メールルーティング処理、ネームサービスを使った sendmail の対話型操作についても説明します。

今回の Solaris 9 リリースに含まれている sendmail バージョン 8.12 の新機能については、第 27 章「メールサービスの新機能 (リファレンス)」を参照してください。mail.localmailstats、および makemap の変更点についての説明もあります。また、第 27 章「メールサービスの新機能 (リファレンス)」では、新しい保守コマンド editmap についても説明します。

メールサービス (作業マップ)

次の表に、この章で説明する特定の手順グループの作業マップへの参照先を示します。

作業 

説明 

参照先 

メールサービスを設定する 

メールサービスの各コンポーネントを設定する手順。メールサーバー、メールクライアント、メールホスト、メールゲートウェイ、仮想ホストなどの設定方法と、sendmail での DNS の使用方法を学ぶ

メールサービスの設定 (作業マップ)

sendmail 構成ファイルを構築する

sendmail.cf ファイルを変更する手順。例としてドメインマスカレードを有効にする方法を取り上げる

sendmail.cf 構成ファイルの構築 (手順)

代替構成を使ってメール配信を管理する 

マスターデーモンが無効な場合に発生する可能性があるメール配信上の問題を防ぐための手順 

代替構成を使用したメール配信の管理 (手順)

メール別名ファイルを管理する 

ネットワークで別名を提供するための手順。NIS+ テーブルのエントリの管理方法を説明する。また、NIS マップ、ローカルメール別名、キー付きマップファイル、およびポストマスター別名の設定方法も説明する 

メール別名ファイルの管理 (作業マップ)

メールキューを管理する 

スムーズなキュー処理を提供するための手順。メールキューの表示と移動方法、メールキューの強制処理の方法、メールキューのサブセットの実行方法、古いメールキューの実行方法を説明する 

キューディレクトリの管理 (作業マップ)

.forward ファイルを管理する

.forward を無効にしたり、.forward ファイルの検索パスを変更したりする手順。/etc/shells を作成し生成することにより、.forward ファイルの使用をユーザーに許可する方法も説明する

.forward ファイルの管理 (作業マップ)

メールサービスの障害追跡手順とヒント 

メールサービスで発生した問題を解決するための手順とヒント。メール構成のテスト、メール別名の確認、sendmail ルールセットのテスト、他のシステムへの接続の確認、メッセージの記録などの方法について学ぶ。他のメール診断情報の情報源を紹介する

メールサービスの障害対処とヒント (作業マップ)

エラーメッセージを解釈処理する 

メール関連のエラーメッセージを解釈処理するための情報 

エラーメッセージの解釈

メールシステムの計画

以下に、メールシステムを計画するときに考慮すべき点を挙げます。

メールシステムの計画を立てたら、サイトにシステムを設定し、メールサービスの設定 (作業マップ) で説明する機能を実行します。他の作業については、メールサービス (作業マップ) を参照してください。

ローカルメール専用

図 25–1 に示すように、もっとも単純なメール構成は、1 台のメールホストに 2 台以上のワークステーションが接続されている場合です。メールは完全にローカルです。すべてのクライアントがローカルのディスクにメールを格納し、メールサーバーとして機能します。メールアドレスは /etc/mail/aliases ファイルを使って構文解析されます。

図 25-1 ローカルメール構成

この図は、メールホストとメールクライアントとの関係を示しています。

この種類のメール構成を設定するには、以下が必要です。

メールサービスの設定の詳細については、メールサービスの設定 (作業)を参照してください。メールサービスの設定に関する特定の手順については、メールサービスの設定 (作業マップ)を参照してください。

ローカルメールとリモート接続

小規模なネットワークにおけるもっとも一般的なメール構成を図 25–2 に示します。1 つのシステムが、メールサーバー、メールホスト、および外部へのメールゲートウェイを兼ねます。メールは、メールゲートウェイ上の /etc/mail/aliases ファイルを使って配布されます。ネームサービスは必要ありません。

図 25-2 UUCP 接続を使ったローカルメール構成

この図は、メールクライアントとメールゲートウェイとの関係を示しています。

この構成では、メールクライアントがメールホスト上の /var/mail からメールファイルをマウントすると想定できます。この種類のメール構成を設定するには、以下が必要です。

メールサービスの設定の詳細については、メールサービスの設定 (作業)を参照してください。メールサービスの設定に関する特定の手順については、メールサービスの設定 (作業マップ)を参照してください。

メールサービスの設定 (作業マップ)

次の表では、メールサービスの設定の手順を説明します。

作業 

説明 

参照先 

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

サーバーがメールを経路指定できるようにする手順 

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

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

ユーザーがメールを受信できるようにする手順 

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

メールホストを設定する 

電子メールアドレスを解釈処理できるメールホストを確立する手順 

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

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

ドメイン外のネットワークとの通信を管理する手順 

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

sendmail で DNS を使用する

DNS ホストルックアップ機能を有効にする手順 

sendmail で DNS を使用する方法

仮想ホストを設定する 

ホストに複数の IP アドレスを割り当てる手順 

仮想ホストを設定する方法

メールサービスの設定 (作業)

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

ローカルメール用に 2 つのタイプの構成が必要です。これらの構成については、ローカルメール専用図 25–1 を参照してください。ドメイン外のネットワークと通信するためには、さらに 2 つのタイプの構成が必要です。これらの構成については、ハードウェアコンポーネントの概要図 24–1 または ローカルメールとリモート接続図 25–2 を参照してください。これらの構成は、同じシステムで組み合わせるか、あるいは別のシステムで提供できます。たとえば、同じシステムにメールホストとメールサーバーの機能を持たせる場合は、この節の説明に従って、まずそのシステムをメールホストとして設定します。次に、この節の説明に従って、同じシステムをメールサーバーとして設定します。


注 -

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


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

メールサーバーはローカルユーザーにメールサービスを提供するだけなので、設定には特別な手順は必要ありません。ユーザーはパスワードファイルか名前空間にエントリが必要です。またユーザーはメール配信用のローカルのホームディレクトリが必要です ( ~/.forward ファイルを確認するため)。このため、ホームディレクトリサーバーがしばしばメールサーバーとして設定されます。メールサーバーについては、第 26 章「メールサービス (リファレンス)」ハードウェアコンポーネントでさらに詳しく説明します。

メールサーバーは、メールクライアント宛てにメールを経路指定します。メールサーバーに必要な唯一のリソースは、クライアントメールボックスのための十分なスプール空間です。


注 -

クライアントが自分のメールボックスにアクセスできるには、/var/mail ディレクトリがリモートマウントに使用可能であるか、あるいは POP (Post Office Protocol) または IMAP (Internet Message Access Protocol) のようなサービスがサーバーから使用可能でなければなりません。以下では、/var/mail ディレクトリを使ってメールサーバーを設定する方法を示します。このマニュアルでは、POP または IMAP の構成方法については説明しません。


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

  1. メールサーバーのスーパーユーザーになるか、同等の役割になります。

    役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。

  2. sendmail を停止します。


    # /etc/init.d/sendmail stop
    
  3. /var/mail ディレクトリをリモートアクセスに使用できるかどうかを確認します。


    # share
    

    /var/mail ディレクトリが表示された場合は、手順 5 に進みます。

    /var/mail ディレクトリが表示されない場合、あるいはリストが表示されない場合は、該当する手順に進みます。

    1. (省略可能) リストが表示されない場合は、NFS サービスを起動します。

      ファイルシステム自動共有を設定する方法 の手順に従って、 /var/mail ディレクトリを使用して NFS サービスを起動します。

    2. (省略可能) /var/mail ディレクトリがリストに含まれていない場合は、/var/mail ディレクトリを /etc/dfs/dfstab に追加します。

      /etc/dfs/dfstab ファイルに次のコマンド行を追加します。


      share -F nfs -o rw /var/mail
      
  4. ファイルシステムをマウントできるようにします。


    # shareall
    
  5. ネームサービスが起動されていることを確認します。

    1. (省略可能) NIS を実行している場合は、次のコマンドを使用します。


      # ypwhich
      

      詳細は、ypwhich(1) のマニュアルページを参照してください。

    2. (省略可能) NIS+ を実行している場合は、次のコマンドを使用します。


      # nisls
      

      詳細は、nisls(1) のマニュアルページを参照してください。

    3. (省略可能) DNS を実行している場合は、次のコマンドを使用します。


      # nslookup hostname
      

      hostname

      ホスト名を指定 

      詳細は、nslookup(1M) のマニュアルページを参照してください。

    4. (省略可能) LDAP を実行している場合は、次のコマンドを使用します。


      # ldaplist
      

      詳細は、ldaplist(1) のマニュアルページを参照してください。

  6. sendmail を再起動します。


    # /etc/init.d/sendmail start
    

注 -

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


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

メールクライアントは、メールボックスがメールサーバーにあり、/etc/mail/aliases ファイルのメール別名がメールボックスの位置を指しているメールサービスのユーザーです。第 26 章「メールサービス (リファレンス)」ハードウェアコンポーネントに、メールクライアントについての簡単な説明があります。


注 -

POP (Post Office Protocol) または IMAP (Internet Message Access Protocol) のようなサービスを使ってメールクライアントを設定することもできます。ただし、POP または IMAP の構成方法については、このマニュアルでは説明していません。


  1. メールクライアントシステム上でスーパーユーザーになるか、同等の役割になります。

    役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。

  2. sendmail を停止します。


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

    マウントポイントは、インストール過程で作成されています。ls を使用すると、ファイルシステムが存在するかどうかを確認できます。次の例はファイルシステムが作成されていない場合に受け取る応答を示しています。


    # ls -l /var/mail
    /var/mail not found
  4. /var/mail ディレクトリにファイルが何もないことを確認します。

    メールファイルがこのディレクトリにある場合は、それらのファイルを移動させ、サーバーから /var/mail ディレクトリがマウントされる時にその対象とならないようにします。

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

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

    1. (省略可能) /var/mail を自動的にマウントします。

      次のようなエントリを /etc/auto_direct ファイルに追加します。


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

      server

      割り当てられているサーバー名を指定 

    2. (省略可能) ブート時に /var/mail をマウントします。

      /etc/vfstab ファイルに以下のエントリを追加します。このエントリにより、指定されたメールサーバー上の /var/mail ディレクトリがローカルの /var/mail ディレクトリをマウントできます。


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

      システムをリブートするたびに、クライアントのメールボックスが自動的にマウントされます。システムをリブートしない場合は、次のコマンドを入力すれば、クライアントのメールボックスをマウントできます。


      # mountall
      

      注意 - 注意 -

      メールボックスのロックとメールボックスへのアクセスが適切に動作するには、NFS サーバーからメールをマウントする時に actimeo=0 オプションを入れる必要があります。


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

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


    # cat /etc/hosts
    #
    # Internet host table
    #
    ..
    IP_address     mailhost  mailhost  mailhost.example.com
    

    IP_address

    割り当てられている IP アドレスを指定 

    example.com

    割り当てられているドメインを指定 

    mailhost

    割り当てられているメールホストを指定 

    詳細は、hosts(4) のマニュアルページを参照してください。

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

    メール別名ファイルの管理に関する作業マップについては、メール別名ファイルの管理 (作業マップ) を参照してください。


    注 -

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


  8. sendmail を再起動します。


    # /etc/init.d/sendmail start
    

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

メールホストは、電子メールアドレスを解決し、ドメイン内でメールを再度ルーティングします。メールホストに適しているシステムは、ドメイン外または親ドメインにネットワークを接続するシステムです。 次に、メールホストを設定する手順を示します。

  1. メールホストシステム上でスーパーユーザーになるか、同等の役割になります。

    役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。

  2. sendmail を停止します。


    # /etc/init.d/sendmail stop
    
  3. ホスト名の構成を確認します。

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


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

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

  4. /etc/hosts ファイルを更新します。

    以下から、適切な手順を選択します。

    1. (省略可能) NIS または NIS+ を使用している場合は、新しいメールホストとして割り当てられたシステムの /etc/hosts ファイルを編集します。

      メールホストシステムの IP アドレスとシステム名の後に mailhostmailhost.domain を追加します。


      IP_address mailhost mailhost mailhost.domain loghost

      IP_address

      割り当てられている IP アドレスを指定 

      mailhost

      メールホストシステムのシステム名を指定 

      domain

      拡張ドメイン名を指定 

      これで、このシステムはメールホストとして指定されます。domain は、次のコマンドの出力にサブドメイン名として指定されている文字列と同じにする必要があります。


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

      以上の変更を行なった後の hosts ファイルの例を以下に示します。


      # cat /etc/hosts
      #
      # Internet host table
      #
      172.31.255.255   localhost        
      192.168.255.255  phoenix mailhost mailhost.example.com loghost
    2. (省略可能) NIS または NIS+ を使用しない場合は、ネットワーク内の各システムにある /etc/hosts ファイルを編集して、次のエントリを作成します。


      IP_address mailhost mailhost mailhost.domain loghost
  5. 正しい構成ファイルを選択し、コピーして名前を変更します。

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


    # cp /etc/mail/main.cf /etc/mail/sendmail.cf
    
  6. sendmail を再起動します。


    # /etc/init.d/sendmail start
    
  7. メール構成をテストします。

    手順については、メール構成をテストする方法 を参照してください。

メールホストの詳細については、第 26 章「メールサービス (リファレンス)」ハードウェアコンポーネントを参照してください。

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

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

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

  1. メールゲートウェイ上でスーパーユーザーになるか、同等の役割になります。

    役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。

  2. sendmail を停止します。


    # /etc/init.d/sendmail stop
    
  3. 正しい構成ファイルを選択し、コピーして名前を変更します。

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


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

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


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

    このスクリプトによる完全指定ホスト名の識別ができなかった場合は、完全指定ホスト名を /etc/hosts 内のホストの最初の別名として追加する必要があります。この手順の詳細については、メールホストを設定する方法手順 4 を参照してください。

  5. ネームサービスが起動されていることを確認します。

    1. (省略可能) NIS を実行している場合は、次のコマンドを使用します。


      # ypwhich
      

      詳細は、ypwhich(1) のマニュアルページを参照してください。

    2. (省略可能) NIS+ を実行している場合は、次のコマンドを使用します。


      # nisls
      

      詳細は、nisls(1) のマニュアルページを参照してください。

    3. (省略可能) DNS を実行している場合は、次のコマンドを使用します。


      # nslookup hostname
      

      hostname

      ホスト名を指定 

      詳細は、nslookup(1M) のマニュアルページを参照してください。

    4. (省略可能) LDAP を実行している場合は、次のコマンドを使用します。


      # ldaplist
      

      詳細は、ldaplist(1) のマニュアルページを参照してください。

  6. sendmail を再起動します。


    # /etc/init.d/sendmail start
    
  7. メール構成をテストします。

    手順については、メール構成をテストする方法 を参照してください。

メールゲートウェイの詳細については、第 26 章「メールサービス (リファレンス)」ハードウェアコンポーネントを参照してください。

sendmail で DNS を使用する方法

DNS ネームサービスは、個別の別名をサポートしません。このネームサービスは、MX (メール交換局) レコードおよび cname レコードを使用するホストまたはドメインの別名をサポートします。ホスト名とドメイン名は両方またはいずれか一方を DNS データベースで指定できます。sendmail と DNS の詳細については、第 26 章「メールサービス (リファレンス)」sendmail とネームサービスの相互作用、またはSolaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)を参照してください。

  1. スーパーユーザー、またはそれと同等の役割になります。

    役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。

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

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


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

    nslookup を使用して、mailhostmailhost.domain のエントリが DNS データベースに存在することを確認します。詳細は、nslookup(1M) のマニュアルページを参照してください。

仮想ホストを設定する方法

ホストに複数の IP アドレスを割り当てる必要がある場合は、次の Web サイト http://www.sendmail.org/virtual-hosting.html を参照してください。このサイトでは、sendmail を使って仮想ホストを設定する方法を詳しく説明しています。ただし、「Sendmail Configuration」の節では、次に示す手順 3b は実行しないでください。


# cd sendmail-VERSION/cf/cf
# ./Build mailserver.cf
# cp mailserver.cf /etc/mail/sendmail.cf

代わりに、Solaris オペレーティング環境では、次の手順を実行してください。


# cd /usr/lib/mail/cf
# /usr/ccs/bin/make mailserver.cf
# cp mailserver.cf /etc/mail/sendmail.cf

mailserver

.cf ファイルの名前を指定

sendmail.cf 構成ファイルの構築 (手順) では、構築手順の一部として、これと同じ 3 つの手順を説明しています。

/etc/mail/sendmail.cf ファイルを生成したら、仮想ユーザーテーブルを作成するなど、次の手順へ進むことができます。

sendmail.cf 構成ファイルの構築 (手順)

新しい sendmail.cf ファイルを構築する方法 で、構成ファイルの構築方法について説明します。sendmail.cf ファイルの以前のバージョンも引き続き使用できますが、新しい形式を使用することをお勧めします。

詳細は、以下の情報を参照してください。

第 27 章「メールサービスの新機能 (リファレンス)」の次の節では、新しい m4 構成機能について説明しています。

新しい sendmail.cf ファイルを構築する方法

次に、新しい構成ファイルを構築する手順を示します。


注 -

/usr/lib/mail/cf/main-v7sun.mc は、 /usr/lib/mail/cf/main.mc になりました。


  1. スーパーユーザー、またはそれと同等の役割になります。

    役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。

  2. sendmail を停止します。


    # /etc/init.d/sendmail stop
    
  3. 変更しようとする構成ファイルのコピーを作成します。


    # cd /usr/lib/mail/cf
    # cp main.mc myhost.mc
    

    myhost

    .mc ファイルの新しい名前を指定

  4. 必要に応じて、新しい構成ファイル (たとえば、myhost.mc) を編集します。

    たとえば、ドメインマスカレードを有効にするには、次のコマンド行を追加します。


    # cat myhost.mc
    ..
    MASQUERADE_AS(`host.domain')

    host.domain

    目的のホスト名とドメイン名を指定 

    この例では、MASQUERADE_AS は、送信されたメールに、$j ではなく host.domain から送信されたものとしてラベルを付けます。

  5. m4 を使って構成ファイルを構築します。


    # /usr/ccs/bin/make myhost.cf
    
  6. -C オプションを使用して、新しい構成ファイルをテストし、新しいファイルを指定します。


    # /usr/lib/sendmail -C myhost.cf -v testaddr </dev/null
    

    このコマンドは testaddr にメッセージを送信し、その一方で稼働時にメッセージを表示します。システム上で sendmail サービスを再起動することなく送信メールだけをテストできます。まだメールを処理していないシステムでは、メール構成をテストする方法 で説明する完全なテスト手順を使用してください。

  7. オリジナルのコピーを作成した後、新しい構成ファイルをインストールします。


    # cp /etc/mail/sendmail.cf /etc/mail/sendmail.cf.save
    # cp myhost.cf /etc/mail/sendmail.cf
    
  8. sendmail サービスを再起動します。


    # /etc/init.d/sendmail start
    

代替構成を使用したメール配信の管理 (手順)

送受信されるメールの転送を容易にするため、sendmail の新しいデフォルトの構成は、デーモンとクライアントキューランナーを使用します。デーモンを無効にしている場合は、次の作業を行います。詳細は、新しい構成ファイル submit.cf を参照してください。

sendmail.cf の代替構成を使ってメール配信を管理する方法

sendmail のデフォルトの構成では、クライアントキューランナーは、ローカルの SMTP ポートのデーモンにメールを送信できなければなりません。デーモンが SMTP ポート上で待機していない場合、メールはキューに留まります。この問題を避けるには、次の作業を行います。デーモンとクライアントキューランナーについての詳細、およびこの代替構成を使用する必要性を理解するには、新しい構成ファイル submit.cf を参照してください。

この手順を実行すると、デーモンは、ローカルホストからの接続を受け付けるためだけに動作するようになります。

  1. スーパーユーザー、またはそれと同等の役割になります。

    役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。

  2. sendmail を停止します。


    # /etc/init.d/sendmail stop
    
  3. 変更しようとする構成ファイル (必要に応じて subsidiary.mcmain.mc のいずれか) のコピーを作成します。この例では、subsidiary.mc ファイルを使用します。


    # cd /usr/lib/mail/cf
    # cp subsidiary.mc myhost.mc
    

    myhost

    .mc ファイルの新しい名前を指定

  4. 新しい構成ファイル (たとえば、myhost.mc) を編集します。

    MAILER() 行の前に次の行を追加します。


    # cat myhost.mc
    ..
    DAEMON_OPTIONS(`NAME=NoMTA4, Family=inet, Addr=127.0.0.1')dnl
    DAEMON_OPTIONS(`NAME=NoMTA6, Family=inet6, Addr=::1')dnl
    
  5. m4 を使って構成ファイルを構築します。


    # /usr/ccs/bin/make myhost.cf
    
  6. オリジナルのコピーを作成した後、新しい構成ファイルをインストールします。


    # cp /etc/mail/sendmail.cf /etc/mail/sendmail.cf.save
    # cp myhost.cf /etc/mail/sendmail.cf
    
  7. sendmail サービスを再起動します。


    # /etc/init.d/sendmail start
    

メール別名ファイルの管理 (作業マップ)

次の表では、メール別名ファイルの管理の手順を説明します。このトピックの詳細は、第 26 章「メールサービス (リファレンス)」メール別名ファイルを参照してください。

作業 

説明 

参照先 

NIS+ mail_aliases テーブルで別名のエントリを管理する

ネームサービスが NIS+ である場合に、mail_aliases テーブルの内容を管理する手順。エントリの表示、追加、編集、削除の方法を説明する

NIS+ mail_aliases テーブルの別名エントリを管理する方法

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

ネームサービスが NIS の場合、mail.aliases マップを使って別名を設定する手順

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

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

NIS や NIS+ などのネームサービスを使用していない場合に、/etc/mail/aliases ファイルを使って別名を設定する手順

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

キー付きマップファイルを作成する 

キー付きマップファイルを使って別名を設定する手順 

キー付きマップファイルの作成方法

postmaster 別名を設定する

postmaster 別名を管理する手順。この別名は必須

postmaster 別名の管理

メール別名ファイルの管理

メール別名はドメイン独自にする必要があります。この節では、メール別名ファイルを管理する手順を説明します。また、Solaris 管理コンソールの「メーリングリスト」機能を使って別名データベース上でこれらの作業を実行することもできます。

その他に、makemap を使ってローカルメールホストにデータベースファイルを作成することもできます。makemap(1M) のマニュアルページを参照してください。ローカルのデータベースファイルを使用しても、NIS や NIS+ のようなネームサービスを使用するほどの利点は得られません。しかし、ネットワークのルックアップは必要ないため、ローカルのデータベースファイルからの方がより早くデータを取り出すことができます。詳細は、第 26 章「メールサービス (リファレンス)」sendmail とネームサービスの相互作用および メール別名ファイルを参照してください。

NIS+ mail_aliases テーブルの別名エントリを管理する方法

NIS+ テーブルでエントリを管理するために、aliasadm コマンドを使用できます。aliasadm コマンドを使ってテーブルエントリを表示、追加、変更、または削除するには、次の手順に従います。

  1. テーブルを所有する NIS+ グループのメンバーになるか、メールサーバーのスーパーユーザーになるか、同等の役割になります。

    役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。

  2. 必要に応じて、次に挙げる例のいずれかの手順に従って作業します。

場合によっては、最初にメールクライアント、クライアントのメールボックスの位置、およびメールサーバーシステム名のそれぞれのリストをコンパイルする必要があります。

NIS+ mail_aliases テーブルを作成する例

テーブルを作成するには、次の手順に従います。

  1. テーブルを所有する NIS+ グループのメンバーになるか、メールサーバーのスーパーユーザーになるか、同等の役割になります。

    役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。

  2. NIS+ テーブルを作成します。


    # aliasadm -I
    
  3. テーブルにエントリを追加します。

詳細は、aliasadm(1M) のマニュアルページを参照してください。

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

テーブルの全内容を表示するには、次の手順に従います。

  1. テーブルを所有する NIS+ グループのメンバーになるか、メールサーバーのスーパーユーザーになるか、同等の役割になります。

    役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。

  2. 別名のアルファベット順に全エントリを表示します。


    # aliasadm -1
    

詳細は、aliasadm(1M) のマニュアルページを参照してください。

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

テーブルの個々のエントリを表示するには、次の手順に従います。

  1. テーブルを所有する NIS+ グループのメンバーになるか、メールサーバーのスーパーユーザーになるか、同等の役割になります。

    役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。

  2. 個々のエントリを表示します。


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

    このコマンドは、完全に一致する別名のみ表示し、部分的に一致するエントリは表示しません。aliasadm -m オプションでは、メタキャラクタ (*? など) は使用できません。

詳細は、aliasadm(1M) のマニュアルページを参照してください。

NIS+ mail_aliases テーブル内の部分一致エントリを表示する例

テーブルの部分一致エントリを表示するには、次の手順に従います。

  1. テーブルを所有する NIS+ グループのメンバーになるか、メールサーバーのスーパーユーザーになるか、同等の役割になります。

    役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。

  2. テーブル内の部分一致エントリを表示します。


    # aliasadm -l | grep partial_string
    

    partial_string

    検索に使用する文字列を指定 

詳細は、aliasadm(1M) のマニュアルページを参照してください。

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

2 つまたは 3 つの別名をテーブルに追加するには、次の手順に従います。

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

  2. テーブルを所有する NIS+ グループのメンバーになるか、メールサーバーのスーパーユーザーになるか、同等の役割になります。

    役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。

  3. (省略可能) 必要な場合は、NIS+ テーブルを作成します。

    まったく新しい NIS+ mail_aliases テーブルを作成する場合は、最初に NIS+ テーブルを初期設定しなければなりません。テーブルの作成方法については、NIS+ mail_aliases テーブルを作成する例 を参照してください。

  4. テーブルに別名を追加します。

    次に、一般的なエントリの例を示します。


    # aliasadm -a iggy iggy.ignatz@saturn "Iggy Ignatz"
    

    上記の例の入力内容を次に説明します。

    -a

    別名を追加するためのオプション 

    iggy

    簡略別名 

    iggy.ignatz@saturn

    拡張別名 

    "Iggy Ignatz"

    引用符で囲んだ別名 

  5. 作成したエントリを表示して間違いがないことを確認します。


    # aliasadm -m alias
    

    alias

    作成したエントリ 

詳細は、aliasadm(1M) のマニュアルページを参照してください。

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

多数の別名をテーブルに追加するには、次の手順に従います。

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

  2. テーブルを所有する NIS+ グループのメンバーになるか、メールサーバーのスーパーユーザーになるか、同等の役割になります。

    役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。

  3. 別名テーブルを表示して編集します。


    # aliasadm -e
    

    このコマンドは、テーブルを表示し、テーブルの編集を可能にします。使用するエディタは、$EDITOR 環境変数で設定されています。この変数が設定されていない場合、vi がデフォルトのエディタになります。

  4. 次の形式で、1 行に 1 別名ずつ入力します。


    alias: expanded_alias # ["option" # "comments"]

    alias

    この列には、簡略別名を入力 

    expanded_alias

    この列には、拡張別名を入力 

    option

    この列は、将来の拡張のために予約されている 

    comments

    この列は、別名など、個々の別名に関するコメントに使用 

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

    NIS+ mail_aliases テーブルでは、エントリの順序は重要ではありません。aliasadm -l コマンドがリストをソートし、エントリをアルファベット順に表示します。

    詳細は、メール別名ファイル および aliasadm(1M) のマニュアルページを参照してください。

例 — NIS+ mail_aliases テーブル内のエントリを編集する

テーブル内のエントリを編集するには、次の手順に従います。

  1. テーブルを所有する NIS+ グループのメンバーになるか、メールサーバーのスーパーユーザーになるか、同等の役割になります。

    役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。

  2. 別名エントリを表示します。


    # aliasadm -m alias
    

    alias

    割り当てられている別名を指定 

  3. 必要に応じて別名エントリを編集します。


    # aliasadm -c alias expanded_alias [options comments]
    

    alias

    必要な場合は、別名を編集 

    expanded_alias

    必要な場合は、拡張別名を編集 

    options

    必要な場合は、オプションを編集 

    comments

    必要な場合は、このエントリのコメントを編集 

    詳細は、aliasadm(1M) のマニュアルページおよび メール別名ファイルを参照してください。

  4. 編集したエントリを表示し、エントリに間違いがないことを確認します。


    # aliasadm -m alias
    

詳細は、aliasadm(1M) のマニュアルページを参照してください。

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

テーブルからエントリを削除するには、次の手順に従います。

  1. テーブルを所有する NIS+ グループのメンバーになるか、メールサーバーのスーパーユーザーになるか、同等の役割になります。

    役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。

  2. テーブルからエントリを削除します。


    # aliasadm -d alias
    

    alias

    削除するエントリの別名を指定 

詳細は、aliasadm(1M) のマニュアルページを参照してください。

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

次の手順によって、NIS の mail.aliases マップを使って別名の設定を容易に行うことができます。

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

  2. NIS マスターサーバーのスーパーユーザーになるか、同等の役割になります。

    役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。

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

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


      # cat /etc/mail/aliases
      ..
      alias:expanded_alias
      

      alias

      簡略別名を指定 

      expanded_alias

      拡張別名 (user@host.domain.com) を指定

    2. Postmaster: root エントリがあることを確認します。


      # cat /etc/mail/aliases
      ..
      Postmaster: root
      
    3. root の別名を追加します。ポストマスターとして指定された個人のメールアドレスを使用します。


      # cat /etc/mail/aliases
      ..
      root: user@host.domain.com
      

      user@host.domain.com

      指定されたポストマスターに割り当てられているアドレスを指定 

  4. NIS マスターサーバーがネームサービスを実行中で、各メールサーバーのホスト名を解釈処理できることを確認します。

  5. /var/yp ディレクトリに移動します。


    # cd /var/yp
    
  6. make コマンドを適用します。


    # make
    

    /etc/hosts および /etc/mail/aliases ファイルの変更は、NIS スレーブシステムに伝達され、遅くとも数分後には有効になります。

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

ローカルメール別名ファイルで別名を解釈処理するには、次の手順に従います。

  1. ユーザーとメールボックスの場所の各リストをコンパイルします。

  2. メールサーバーのスーパーユーザーになるか、あるいは同等の役割になります。

    役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。

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

    1. ユーザーごとにエントリを追加します。


      user1: user2@host.domain
      

      user1

      新しい別名を指定 

      user2@host.domain

      新しい別名の実際のアドレスを指定 

    2. Postmaster: root エントリがあることを確認します。


      # cat /etc/mail/aliases
      ..
      Postmaster: root
      
    3. root の別名を追加します。ポストマスターとして指定された個人のメールアドレスを使用します。


      # cat /etc/mail/aliases
      ..
      root: user@host.domain.com
      

      user@host.domain.com

      指定されたポストマスターに割り当てられているアドレスを指定 

  4. 別名データベースを再構築します。


    # newaliases
    

    /etc/mail/sendmail.cfAliasFile オプションの構成に応じて、このコマンドは、/etc/mail/aliases.db ファイルを 1 つ、または /etc/mail/aliases.dir/etc/mail/aliases.pag の 1 組のファイルのどちらかをバイナリ形式で生成します。

  5. 次の手順のどちらかを実行して、生成されたファイルをコピーします。

    1. (省略可能) /etc/mail/aliases/etc/mail/aliases.dir、および /etc/mail/aliases.pag ファイルを他の各システムにコピーします。

      rcp または rdist コマンドを使用して 3 つのファイルをコピーできます。詳細は、rcp(1) のマニュアルページまたは rdist(1) のマニュアルページを参照してください。また、この目的のためのスクリプトを作成することもできます。

      これらのファイルをコピーしたら、newaliases コマンドを他の各システムで実行する必要はありません。ただし、メールクライアントを追加または削除するたびにすべての /etc/mail/aliases ファイルを更新する必要があるので注意してください。

    2. (省略可能) /etc/mail/aliases.db ファイルを他の各システムにコピーします。

      rcp または rdist コマンドを使用してファイルをコピーできます。詳細は、rcp(1) のマニュアルページまたは rdist(1) のマニュアルページを参照してください。また、この目的のためのスクリプトを作成することもできます。

      このファイルをコピーしたら、newaliases コマンドを他の各システムで実行する必要はありません。ただし、メールクライアントを追加または削除するたびにすべての /etc/mail/aliases ファイルを更新する必要があるので注意してください。

キー付きマップファイルの作成方法

キー付きマップファイルを作成するには、次の手順に従います。

  1. メールサーバーのスーパーユーザーになるか、同等の役割になります。

    役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。

  2. 入力ファイルを作成します。

    エントリには、次の構文を使用できます。


    old_name@newdomain.com   new_name@newdomain.com
    old_name@olddomain.com    error:nouser No such user here
    @olddomain.com          %1@newdomain.com
    

    old_name@newdomain.com

    新たに割り当てたドメインでこれまで割り当てられていたユーザー名を指定 

    new_name@newdomain.com

    新たに割り当てるアドレスを指定 

    old_name@olddomain.com

    これまで割り当てられていたドメインでこれまで割り当てられていたユーザー名を指定 

    olddomain.com

    これまで割り当てられていたドメインを指定 

    newdomain.com

    新たに割り当てるドメインを指定 

    1 番目のエントリにより、メールは新しい別名に転送されます。2 番目のエントリにより、不適切な別名が使用されたときにメッセージが作成されます。最後のエントリにより、すべての着信メールは olddomain から newdomain へ転送されます。

  3. データベースファイルを作成します。


    # /usr/sbin/makemap maptype newmap < newmap
    

    maptype

    dbmbtreehash などのデータベースタイプを選択

    newmap

    入力ファイル名とデータベースファイル名の最初の部分を指定。dbm データベースタイプを選択すると、データベースファイルは接尾辞に .pag または .dir を使って作成される。他の 2 つのデータベースタイプの場合、ファイル名には .db が付く

postmaster 別名の管理

各システムは postmaster メールボックスにメールを送信できなければなりません。postmaster の NIS または NIS+ 別名を作成できます。あるいは、ローカルの /etc/mail/aliases ファイルそれぞれに別名を作成することもできます。次の手順を参照してください。

ローカルの各 /etc/mail/aliases ファイルに postmaster 別名を作成する方法

postmaster 別名をローカルの各 /etc/mail/aliases ファイルに作成する場合は、次の手順に従います。

  1. 各ローカルシステムのスーパーユーザーになるか、同等の役割になります。

    役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。

  2. /etc/mail/aliases エントリを表示します。


    # cat /etc/mail/aliases
    # Following alias is required by the mail protocol, RFC 2821
    # Set it to the address of a HUMAN who deals with this system's
    # mail problems.
    Postmaster: root
  3. 各システムの /etc/mail/aliases ファイルを編集します。

    root をポストマスターに指定する個人のメールアドレスに変更します。


    Postmaster: mail_address
    

    mail_address

    ポストマスターとして指定された個人に割り当てられたアドレスを使用します。 

  4. (省略可能) ポストマスター用に別のメールボックスを作成します。

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

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

postmaster 用に別のメールボックスを作成する場合は、次の手順に従います。

  1. メールサーバーのスーパーユーザーになるか、あるいは同等の役割になります。

    役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。

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

    ユーザーアカウントの追加の詳細については、『Solaris のシステム管理 (基本編)』の「ユーザーアカウントとグループの管理 (手順)」を参照してください。

  3. メールが配信されたら、mail プログラムがメールボックス名に読み書きできるようにします。


    # mail -f postmaster
    

    postmaster

    割り当てられているアドレスを指定 

postmaster メールボックスを /etc/mail/aliases ファイルの別名に追加する方法

postmaster メールボックスを /etc/mail/aliases ファイル内の別名に追加する場合は、次の手順に従います。

  1. 各システムのスーパーユーザーになるか、同等の役割になります。

    役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。

  2. root の別名を追加します。ポストマスターとして指定された個人のメールアドレスを使用します。


    # cat /etc/mail/aliases
    ..
    root: user@host.domain.com
    

    user@host.domain.com

    ポストマスターとして指定された個人に割り当てられたアドレスを使用します。 

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


    # cat /etc/mail/aliases
    ..
    sysadmin: /usr/somewhere/somefile
    

    sysadmin

    新しい別名の名前を作成 

    /usr/somewhere/somefile

    ローカルメールボックスのパスを指定 

  4. 別名データベースを再構築します。


    # newaliases
    

キューディレクトリの管理 (作業マップ)

次の表では、メールキューの管理の手順を説明します。

作業 

説明 

参照先 

メールキュー /var/spool/mqueue の内容を表示する

キューにあるメッセージの数とそれらのメッセージがキューから消去されるのにかかる時間を表示する手順 

メールキュー /var/spool/mqueue の内容を表示する方法

メールキュー /var/spool/mqueue を強制処理する

以前にメッセージを受信できなかったシステムへのメッセージを処理する手順  

メールキュー /var/spool/mqueue でメールキューを強制処理する方法

メールキュー /var/spool/mqueue のサブセットを実行する

ホスト名などアドレスの部分文字列を強制的に処理したり、キューから特定のメッセージを排除したりする手順 

メールキュー /var/spool/mqueue のサブセットを実行する方法

メールキュー /var/spool/mqueue を移動する

メールキューを移動する手順 

メールキュー /var/spool/mqueue を移動する方法

古いメールキュー /var/spool/omqueue を実行する

古いメールキューを実行する手順 

古いメールキュー /var/spool/omqueue を実行する方法

キューディレクトリの管理 (手順)

この節では、キューの管理に役立つ作業について説明します。クライアント専用のキューの詳細については、新しい構成ファイル submit.cf を参照してください。他の関連情報については、キューの新しい機能 を参照してください。

メールキュー /var/spool/mqueue の内容を表示する方法

キューにあるメッセージの数とそれらのメッセージがキューから消去されるのにかかる時間を表示するには、次の手順に従います。

次の情報を表示するには、以下に示すコマンドを使用します。


# /usr/bin/mailq | more

このコマンドは、認証属性 solaris.admin.mail.mailq を確認します。確認が取れると、sendmail-bp フラグを指定するのと同じ処理が実行されます。確認ができない場合は、エラーメッセージが表示されます。デフォルトでは、この認証属性はすべてのユーザーで使用できるようになっています。認証属性は、prof_attr 内のユーザーエントリを変更することにより無効にできます。詳細は、prof_attr(4) および mailq(1) のマニュアルページを参照してください。

メールキュー /var/spool/mqueue でメールキューを強制処理する方法

たとえば、以前にメッセージを受信できなかったシステムへのメッセージを処理するには、次の手順に従います。

  1. スーパーユーザーになるか、それと同等の役割になります。

    役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。

  2. キューを強制処理し、キューが消去されるとジョブの進捗状況を表示します。


    # /usr/lib/sendmail -q -v 
    

メールキュー /var/spool/mqueue のサブセットを実行する方法

たとえば、ホスト名などアドレスの部分文字列を強制的に処理したり、キューから特定のメッセージを強制処理したりするには、次の手順に従います。

  1. スーパーユーザーになるか、それと同等の役割になります。

    役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。

  2. -qRstring を使用して、いつでもメールキューのサブセットを実行できます。


    # /usr/lib/sendmail -qRstring
    

    string

    受信者の別名または user@host.domain の部分文字列 (ホスト名など) を指定

    代わりに、-qInnnnn を使ってメールキューのサブセットを実行することもできます。


    # /usr/lib/sendmail -qInnnnn
    

    nnnnn

    キュー ID を指定 

メールキュー /var/spool/mqueue を移動する方法

メールキューを移動する場合は、次の手順に従います。

  1. メールホストのスーパーユーザーになるか、同等の役割になります。

    役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。

  2. sendmail デーモンを終了します。


    # /etc/init.d/sendmail stop
    

    これで、sendmail はキューディレクトリを処理しなくなります。

  3. /var/spool ディレクトリに移動します。


    # cd /var/spool
    
  4. mqueue ディレクトリとディレクトリ内のすべての内容を omqueue ディレクトリに移動します。次に、mqueue という名前の新しい空のディレクトリを作成します。


    # mv mqueue omqueue; mkdir mqueue
    
  5. ディレクトリのアクセス権を所有者は読み取り/書き込み/実行に、またグループは読み取り/実行に設定します。また、所有者とグループを daemon に設定します。


    # chmod 750 mqueue; chown root:bin mqueue
    
  6. sendmail を起動します。


    # /etc/init.d/sendmail start
    

古いメールキュー /var/spool/omqueue を実行する方法

古いメールキューを実行するには、次の手順に従います。

  1. スーパーユーザーになるか、それと同等の役割になります。

    役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。

  2. 古いメールキューを実行します。


    # /usr/lib/sendmail -oQ/var/spool/omqueue -q
    

    -oQ フラグは代替キュー (待ち行列) ディレクトリを指定し、-q フラグはキューでの各ジョブを処理するように指示します。画面に冗長出力を表示している場合は、-v フラグを使用します。

  3. 空のディレクトリを削除します。


    # rmdir /var/spool/omqueue
    

.forward ファイルの管理 (作業マップ)

次の表では、.forward ファイルを管理するための手順を説明します。詳細は、第 26 章「メールサービス (リファレンス)」.forward ファイルを参照してください。

作業 

説明 

参照先 

.forward ファイルを無効にする

たとえば、自動転送を禁止する場合に実行する手順 

.forward ファイルを無効にする方法

.forward ファイルの検索パスを変更する

たとえば、すべての .forward ファイルを共通ディレクトリに移動させる場合に実行する手順

.forward ファイルの検索パスを変更する方法

/etc/shells を作成し生成する

メールをプログラムまたはファイルに転送するために、ユーザーが .forward ファイルを使用できるようにする手順

/etc/shells の作成および生成方法

.forward ファイルの管理 (手順)

この節では、.forward ファイルの管理に関する複数の手順を説明します。これらファイルはユーザーが編集できるので、ファイルが問題の原因になる場合があります。詳細は、第 26 章「メールサービス (リファレンス)」.forward ファイル を参照してください。

.forward ファイルを無効にする方法

この手順は、自動転送を禁止し、特定のホストの .forward ファイルを無効にします。

  1. スーパーユーザーになるか、それと同等の役割になります。

    役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。

  2. /usr/lib/mail/domain/solaris-generic.m4 またはサイト固有のドメイン m4 ファイルのコピーを作成します。


    # cd /usr/lib/mail/domain
    # cp solaris-generic.m4 mydomain.m4
    

    mydomain

    選択するファイル名を指定 

  3. 次の行を、作成したファイルに追加します。


    define(`confFORWARD_PATH',`')dnl
    

    m4 ファイルに confFORWARD_PATH の値がすでに存在する場合は、NULL 値で置き換えられます。

  4. 新しい構成ファイルを構築してインストールします。

    この手順の詳細については、新しい sendmail.cf ファイルを構築する方法を参照してください。

.forward ファイルの検索パスを変更する方法

たとえば、すべての .forward ファイルを共通ディレクトリに入れる場合は、次の手順に従います。

  1. スーパーユーザーになるか、それと同等の役割になります。

    役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。

  2. /usr/lib/mail/domain/solaris-generic.m4 またはサイト固有のドメイン m4 ファイルのコピーを作成します。


    # cd /usr/lib/mail/domain
    # cp solaris-generic.m4 mydomain.m4
    

    mydomain

    選択するファイル名を指定 

  3. 次の行を作成したファイルに追加します。


    define(`confFORWARD_PATH',`$z/.forward:/var/forward/$u')dnl

    m4 ファイルに confFORWARD_PATH の値がすでに存在する場合は、新しい値で置き換えられます。

  4. 新しい構成ファイルを構築してインストールします。

    この手順の詳細については、新しい sendmail.cf ファイルを構築する方法を参照してください。

/etc/shells の作成および生成方法

このファイルは標準のリリースには含まれていないので、プログラムまたはファイルにメールを転送するためにユーザーが .forward ファイルを使用できるようにする場合には、追加する必要があります。grep を使用して、パスワードファイルにリストされたすべてのシェルを特定し、ファイルを手動で作成することができます。これにより、シェルをファイルに入力できます。しかし、ダウンロード可能なスクリプトを使用する次の手順の方がより簡単です。

  1. スクリプトをダウンロードします。

    http://www.sendmail.org/vendor/sun/gen-etc-shells.html

  2. スーパーユーザーになるか、それと同等の役割になります。

    役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。

  3. シェルのリストを作成するために、gen-etc-shells を実行します。


    # ./gen-etc-shells.sh> /tmp/shells
    

    このスクリプトでは、getent コマンドを使用して、/etc/nsswitch.conf 内にリストされたパスワードファイルソースに組み込まれたシェルの名前を収集します。

  4. /tmp/shells 内のシェルのリストを調べて編集します。

    選択したエディタを使用し、組み込まないシェルを削除します。

  5. ファイルを /etc/shells に移動します。


    # mv /tmp/shells /etc/shells
    

メールサービスの障害対処とヒント (作業マップ)

次の表では、メールサービスの障害追跡手順とヒントを説明します。

作業 

説明 

参照先 

メール構成をテストする 

sendmail 構成ファイルの変更をテストする手順

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

メール別名を確認する 

指定された受信者にメールを配信できるかどうかを確認する手順 

メール別名を確認する方法

ルールセットをテストする 

sendmail ルールセットの入力と戻りを確認する手順

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

他のシステムへの接続を確認する 

他のシステムへの接続を確認するためのヒント 

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

syslogd プログラムを使ってメッセージを記録する

エラーメッセージ情報を収集するためのヒント 

エラーメッセージの記録

診断情報のその他の情報源を確認する 

他の情報源から診断情報を取得するためのヒント 

メール診断情報のその他の情報源

メールサービスの障害回避とヒント (手順)

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

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

構成ファイルに対して行なった変更をテストするには、次の手順に従います。

  1. 変更した構成ファイルがあるシステムで sendmail を再起動します。


    # pkill -HUP sendmail
    
  2. 各システムからテストメッセージを送信します。


    # /usr/lib/sendmail -v names </dev/null
    

    names

    受信者の電子メールアドレスを指定 

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

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

  4. (省略可能) ネットワークに接続している場合は、別のシステムの個人宛に次の 3 方向でメールを送信します。

    • メインシステムからクライアントシステムへ

    • クライアントシステムからメインシステムへ

    • クライアントシステムから別のクライアントシステムへ

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

  6. (省略可能) 電話回線上に別のホストへの UUCP 接続を設定している場合は、そのホストの誰かにメールを送信し、その個人にメールを返信してもらうか、あるいはその個人がメッセージを受信した時に電話してもらいます。

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

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

  8. 異なるシステムからメッセージを postmaster 宛てに送信し、ポストマスターのメールボックスに配信されることを確認します。

メール別名を確認する方法

別名を確認し、メールが指定された受信者に配信されるかどうかを確認するには、次の手順に従います。

別名を表示し、最終アドレスが配信可能かどうかを特定します。


% /usr/lib/sendmail -v -bv recipient

recipient

受信者の別名を指定 

以下に出力例を示します。


% /usr/lib/sendmail -v -bv sandy
sandy... aliased to ssmith
ssmith... aliased to sandy@phoenix
sandy@phoenix... deliverable: mailer esmtp, host phoenix, user sandy@phoenix.example.com
%

ローカルおよびドメインの両方で別名を使用する場合は、ループやデータベースの不整合が生じないようにしてください。ユーザーをあるシステムから別のシステムに移動する時は、別名のループを作成しないように特に注意してください。

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

sendmail ルールセットの入力と戻りを確認するには、次の手順に従います。

  1. アドレステストモードに変更します。


    # /usr/lib/sendmail -bt
    
  2. メールアドレスをテストします。

    最後のプロンプト (>) で次の数値とアドレスを入力します。


    > 3,0 mail_address
    

    mail_address

    テストするメールアドレスを指定 

  3. セッションを終了します。

    Control-D キーを押します。

以下に出力例を示します。


% /usr/lib/sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 3,0 sandy@phoenix
canonify           input: sandy @ phoenix
Canonify2          input: sandy < @ phoenix>
Canonify2        returns: sandy < @ phoenix . example . com .>
canonify         returns: sandy < @ phoenix . example . com .>
parse              input: sandy < @ phoenix . example . com .>
Parse0             input: sandy < @ phoenix . example . com .>
Parse0           returns: sandy < @ phoenix . example . com .>
ParseLocal         input: sandy < @ phoenix . example . com .>
ParseLocal       returns: sandy < @ phoenix . example . com .>
Parse1             input: sandy < @ phoenix . example . com .>
MailerToTriple     input: < mailhost . phoenix . example . com> 
     sandy < @ phoenix . example . com .>
MailerToTriple   returns: $# relay $@ mailhost . phoenix . example . com 
     $: sandy < @ phoenix . example . com .>
Parse1           returns: $# relay $@ mailhost . phoenix . example . com 
     $: sandy < @ phoenix . example . com .>
parse            returns: $# relay $@ mailhost . phoenix . example . com 
     $: sandy < @ phoenix . example . com .>

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

mconnect プログラムは、指定したホスト上のメールサーバーへの接続を開き、接続をテストできるようにします。プログラムは対話式で実行されるので、さまざまな診断コマンドを実行できます。詳細は、mconnect(1) のマニュアルページを参照してください。次の例では、ユーザー名 sandy へのメールが配信可能かどうかを調べます。


% mconnect phoenix
onnecting to host phoenix (172.31.255.255), port 25
connection open
220 phoenix.example.com ESMTP Sendmail 8.12.0+Sun/8.12.0;Sun, 4 Sep 2001 3:52:56 -0700(PDT)
expn sandy
250 2.1.5 <sandy@phoenix.example.com>
quit

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

エラーメッセージの記録

メールサービスは、syslogd プログラムを使って大部分のエラーメッセージを記録します。デフォルトでは、syslogd プログラムはこれらのメッセージを /etc/hosts ファイルで指定されている loghost というシステムに送信します。loghost が NIS ドメイン全体のすべてのログを保持するように定義できます。loghost を指定しなければ、syslogd からのエラーメッセージはレポートされません。

/etc/syslog.conf ファイルは、syslogd プログラムがメッセージをどこに転送するかを制御します。 /etc/syslog.conf ファイルを編集することにより、デフォルトの構成を変更できます。変更内容を有効にするには、syslog デーモンを再起動する必要があります。メールに関する情報を収集するために、ファイルに次の選択を追加できます。

/etc/syslog.conf ファイルの次のエントリは、すべての重大な情報を含むデバッグメッセージを /var/log/syslog に送信します。


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

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

ログは、連続したレベルとして並べられます。最下位レベルでは、異常なイベントだけが記録されます。最上位レベルでは、もっとも必須なイベントと注目する必要のないイベントが記録されます。通常、10 以下のログレベルが「有用」とみなされます。10 を超えるログレベルは通常、デバッグに使用されます。loghost および syslogd プログラムの詳細については、Solaris のシステム管理 (上級編)』の「システムのメッセージ記録のカスタマイズ」を参照してください。

メール診断情報のその他の情報源

その他の診断情報については、次の情報源を確認してください。

エラーメッセージの解釈

この節では、Solaris 9 オペレーティング環境で発生する sendmail 関連のエラーメッセージを解釈し対処する方法について説明します。http://www.sendmail.org/faq/ も参照してください。

以下のエラーメッセージには、次の種類の情報が含まれます。


451 timeout waiting for input during source

原因 –タイムアウトの可能性があるソース (SMTP 接続など) から読み取るとき、sendmail は、読み込みを開始する前にさまざまな Timeout オプションの値をタイマーに設定します。タイマーが期限切れになる前に読み取りが完了しなかった場合、このメッセージが表示され、読み取りが停止します。通常、この状況は RCPT 時に発生します。メールメッセージは、後で配信するためにキューに入れられます。

対処方法 –このメッセージが頻繁に表示される場合は、/etc/mail/sendmail.cf ファイルの Timeout オプションの値を大きくします。タイマーがすでに大きな値に設定されている場合は、ネットワークの配線や接続などハードウェアの問題点を探します。

関連項目 –Timeout オプションの詳細については、Timeout オプションの変更点を参照してください。オンラインマニュアルを使用している場合は、検索語として「timeouts」を指定します。


550 hostname... Host unknown

原因 –この sendmail のメッセージは、単価記号 (@) の後のアドレス部分で指定されている受信先のホストマシンが、ドメインネームシステム (DNS) ルックアップ時に見つからなかったことを示します。

対処方法 –nslookup コマンドを使用して、受信先ホストが、そのドメインまたは他のドメインにあることを確認します。スペルが間違っている可能性があります。あるいは、受信者に連絡して正しいアドレスを確認します。


550 username... User unknown

原因 –この sendmail のメッセージは、単価記号 (@) の前のアドレス部分で指定されている受信者を受信先ホストマシンで検出できなかったことを示します。

対処方法 –電子メールアドレスを確認し、再度送信してみます。スペルが間違っている可能性があります。これで解決しない場合は、受信者に連絡して正しいアドレスを確認します。


554 hostname... Local configuration error

原因 –この sendmail メッセージは通常、ローカルホストがメールを自分宛に送信しようとしていることを示します。

対処方法 –/etc/mail/sendmail.cf ファイル内の $j マクロの値が完全指定ドメイン名になっていることを確認します。

技術メモ –送信側のシステムが SMTP の HELO コマンドで受信側のシステムに自身のホスト名を示すと、受信側のシステムはそのホスト名を送信者の名前と比較します。これらの名前が同じ場合、受信側のシステムはこのエラーメッセージを発行し、接続を閉じます。HELO コマンドで提供される名前は、$j マクロの値です。

関連項目 –追加情報については、http://www.sendmail.org/faq/section4.html#4.5 を参照してください。


config error: mail loops back to myself.

原因 –MX レコードを設定し、ホスト bar をドメイン foo のメールエクスチェンジャーにする場合で、かつ、ホスト bar に自分がドメイン foo のメールエクスチェンジャーであることを認識させる設定をしていない場合、このエラーメッセージを受け取ります。

また、送信側システムと受信側システムの両方が同じドメインとして識別される場合にも、このメッセージを受け取ります。

対処方法 –手順については、http://www.sendmail.org/faq/section4.html#4.5 を参照してください。


host name configuration error

対処方法 –次のエラーメッセージの対処方法で説明されている手順に従います。554 hostname... Local configuration error.

技術メモ – これは sendmail の古いメッセージで、「I refuse to talk to myself」というメッセージから置き換えられたもので現在は、「Local configuration error」メッセージに置き換えられています。


user unknown

説明 –メールをユーザー宛てに送信しようとすると、「Username... user unknown」のエラーが表示されます。ユーザーが同じシステム上にいます。

対処方法 –入力した電子メールアドレスに誤字がないか確認します。あるいは、ユーザーが、/etc/mail/aliases またはユーザーの .mailrc ファイルに存在しない電子メールアドレスに別名を割り当てられている可能性があります。また、ユーザー名の大文字も確認してください。できれば、電子メールアドレスは大文字と小文字が区別されないようにします。

関連項目 –追加情報については、http://www.sendmail.org/faq/section4.html#4.17 を参照してください。