メールサービスの概要
メールサービスの設定と障害追跡 (トラブルシューティング)
メールサービスの背景情報について
メールサービスの新機能情報について
電子メールサービスの設定と維持管理には、ネットワークの日常の運用にとって不可欠な、複雑な作業が伴います。ネットワーク管理者は、既存のメールサービスを拡張しなければならない場合があります。または、新しいネットワークまたはサブネット上でメールサービスを設定しなければならないこともあります。メールサービスに関する各章では、ネットワークでメールサービスを計画したり設定したりするために必要な情報を提供します。この章では、sendmail の新機能および参考資料を紹介します。この章ではまた、メールサービスを確立するために必要なソフトウェアおよびハードウェアコンポーネントの概要を説明します。
第 22 章「メールサービス (手順)」では、メールサービスの設定および管理方法の手順を説明します。詳細は、メールサービス (作業マップ)を参照してください。
第 23 章「メールサービス (リファレンス)」では、メールサービスのコンポーネントについて詳しく説明します。 また、この章では、メールサービスのプログラムとファイル、メールルーティング処理、ネームサービスを使った sendmail の対話型操作についても説明します。
今回の Solaris 9 リリースには sendmail のバージョン 8.12 が含まれています。第 24 章「メールサービスの新機能 (リファレンス)」 では、すべての新機能について説明します。以下に、sendmail の重要な変更点の一部を紹介します。
第 24 章「メールサービスの新機能 (リファレンス)」 では、上記以外の次の変更点についても説明します。
次に、上記以外の sendmail 関連の参考資料を示します。
Costales、Bryan 著、『sendmail, Second Edition 』、O'Reilly & Associates, Inc.、1997
sendmail 関連のホームページ – http://www.sendmail.org
sendmail 関連の FAQ – http://www.sendmail.org/faq
新しい sendmail 構成ファイルの README – http://www.sendmail.org/m4/readme.html
sendmail の最新 Sun バージョン 8.* への移行ガイド – http://www.sendmail.org/vendor/sun/
メールサービスを確立するためには、多くのソフトウェアコンポーネントおよびハードウェアコンポーネントが必要になります。以下では、これらのコンポーネントについて簡単に紹介します。コンポーネントの説明で使用する用語についても紹介します。
最初の節 ソフトウェアコンポーネントの概要 では、メール配信システムのソフトウェア部分を説明するのに使用する用語を定義します。その次の節 ハードウェアコンポーネントの概要 では、メール構成におけるハードウェアシステムの機能について取り上げます。
次の表にメールシステムのソフトウェアコンポーネントを示します。 ソフトウェアコンポーネントすべてに関する完全な説明については、ソフトウェアのコンポーネント を参照してください。
コンポーネント |
説明 |
---|---|
.forward ファイル |
ユーザーのホームディレクトリ内で設定して、メールを自動的にリダイレクトしたり、プログラムに送ったりすることができるファイル |
メールボックス |
メールサーバー上にあり、電子メールメッセージの最終受信先であるファイル |
メールアドレス |
メールメッセージが配信される受信者とシステムの名称を含むアドレス |
メール別名 |
メールアドレス内で使用されている代替名 |
メールキュー |
メールサーバーによる処理を必要とするメールメッセージの集まり |
ポストマスター |
メールサービスについての問題を報告し質問を出すために使用される特別なメール別名 |
sendmail 構成ファイル |
メールのルーティングに必要なすべての情報の入ったファイル |
メール構成では次の 3 つの要素が必要ですが、これらは同じシステムで組み合わせることも、別のシステムで提供することもできます。
メールホスト – 解釈処理が困難なメールアドレスを扱うように構成されたシステム
少なくとも 1 台のメールサーバー – 1 つまたは複数のメールボックスを保持するように構成されたシステム
メールクライアント – メールサーバーからメールにアクセスするシステム
ユーザーがドメイン外のネットワークと通信をするためには、4 番目の要素であるメールゲートウェイを追加する必要があります。
図 21–1 には、一般的な電子メール構成を示しますが、ここでは基本的な 3 つのメール要素とメールゲートウェイが使用されています。
各要素については、ハードウェアコンポーネント を参照してください。
この章ではメールサービスを設定し、管理する方法について説明します。メールサービスの管理に詳しくない場合は、メールサービスのコンポーネントを紹介している第 21 章「メールサービス (概要)」を参照してください。この章では、一般的なメールサービス構成についても説明しています (図 21–1 を参照)。この章では、次の関連作業について説明します。
メールサービスのコンポーネントについての詳細は、第 23 章「メールサービス (リファレンス)」を参照してください。 また、この章では、メールサービスのプログラムとファイル、メールルーティング処理、ネームサービスを使った sendmail の対話型操作についても説明します。
sendmail バージョン 8.12 の新機能については、第 24 章「メールサービスの新機能 (リファレンス)」を参照してください。mail.local、mailstats、および makemap の変更点についての説明もあります。 また、第 24 章「メールサービスの新機能 (リファレンス)」では、新しい保守コマンド editmap についても説明します。
次の表から、具体的な一連の手順を扱っている他の作業マップがわかります。
作業 |
説明 |
参照先 |
---|---|---|
メールサービスを設定する |
メールサービスの各コンポーネントを設定する手順。メールサーバー、メールクライアント、メールホスト、メールゲートウェイ、および仮想ホストの設定方法について説明する。sendmail で DNS を利用する方法についても説明する | |
sendmail 構成ファイルを構築する |
sendmail.cf ファイルを変更する手順。例としてドメインマスカレードを有効にする方法を取り上げる | |
代替構成を使ってメール配信を管理する |
マスターデーモンが無効な場合に発生する可能性があるメール配信上の問題を防ぐための手順 | |
メール別名ファイルを管理する |
ネットワークで別名を提供するための手順。NIS+ テーブルのエントリの管理方法を説明する。また、NIS マップ、ローカルメール別名、キー付きマップファイル、およびポストマスター別名の設定方法も説明する | |
メールキューを管理する |
スムーズなキュー処理を提供するための手順。メールキューを表示したり移動したりする方法、強制的なメールキュー処理方法、およびメールキューのサブセットの実行方法について説明する。古いメールキューの実行方法についても説明する | |
.forward ファイルを管理する |
.forward を無効にしたり、.forward ファイルの検索パスを変更したりする手順。/etc/shells を作成し生成することにより、.forward ファイルの使用をユーザーに許可する方法も説明する | |
メールサービスの障害追跡手順とヒント |
メールサービスで発生した問題を解決するための手順とヒント。メール構成のテスト、メール別名の確認、sendmail ルールセットのテスト、他のシステムへの接続の確認、メッセージの記録などの方法について学ぶ。他のメール診断情報の情報源も紹介する | |
エラーメッセージを解釈処理する |
メール関連のエラーメッセージを解釈処理するための情報 |
以下に、メールシステムを計画するときに考慮すべき点を挙げます。
必要に応じてメール構成のタイプを決定します。この節では、メール構成の基本の 2 タイプについて説明し、各構成を設定するために必要なことがらについて簡単に説明します。新しいメールシステムを設定する必要がある場合、あるいは既存のメールシステムを拡張する場合は、この節の内容が役立つでしょう。ローカルメール専用 では、1 番目の構成タイプについて、ローカルメールとリモート接続 では 2 番目の構成タイプについて説明します。
必要に応じてメールサーバー、メールホスト、およびメールゲートウェイとして動作するシステムを選択します。
サービスを提供するすべてのメールクライアントのリストを作成し、メールボックスの場所も含めます。このリストは、ユーザーのメール別名を作成するときに役立ちます。
別名の更新方法とメールメッセージの転送方法を決めます。ユーザーがメールの転送要求を送る場所として、 aliases メールボックスを設定できます。ユーザーはこのメールボックスを使って、デフォルトのメール別名の変更要求を送ることもできます。システムで NIS または NIS+ を使用する場合、メール転送の管理は、ユーザー自身ではなく、管理者が行うこともできます。メール別名ファイルの管理 (作業マップ) に、別名に関連する作業の一覧があります。.forward ファイルの管理 (作業マップ) に、.forward ファイルの管理に関連する作業の一覧があります。
メールシステムの計画を立てたら、サイトにシステムを設定し、メールサービスの設定 (作業マップ) で説明する機能を実行します。他の作業については、メールサービス (作業マップ) を参照してください。
図 22–1 に示すように、もっとも単純なメール構成は、1 台のメールホストに 2 台以上のワークステーションが接続されている場合です。メールは完全にローカルです。すべてのクライアントがローカルのディスクにメールを格納し、すべてのクライアントがメールサーバーとして機能します。メールアドレスは /etc/mail/aliases ファイルを使って構文解析されます。
この種類のメール構成を設定するには、以下が必要です。
メールホストとして指定されたサーバー。 メールホストを指定するには、メールホストの /etc/hosts ファイルに mailhost.domain_name を追加。また、NIS や NIS+ を実行していない場合は、すべてのメールクライアントの /etc/hosts ファイルにメールホスト IP アドレス行を追加
NIS または NIS+ を実行しない場合、ローカルメールボックスのあるすべてのシステム上に、対応する /etc/mail/aliases ファイルが必要
各メールクライアントシステムの /var/mail に、メールボックスを格納できるだけの十分な領域
メールサービスの設定の詳細については、メールサービスの設定 (作業) を参照してください。 メールサービスの設定に関する特定の手順については、メールサービスの設定 (作業マップ)を参照してください。
小規模のネットワークにおけるもっとも一般的なメール構成を図 22–2 に示します。1 つのシステムが、メールサーバー、メールホスト、およびリモート接続を行うメールゲートウェイを兼ねています。メールは、メールゲートウェイ上の /etc/mail/aliases ファイルを使って配布されます。ネームサービスは必要ありません。
この構成では、メールクライアントがメールホスト上の /var/mail からメールファイルをマウントすると想定できます。この種類のメール構成を設定するには、以下が必要です。
メールゲートウェイ上に main.cf ファイル。MX (メール交換局) レコードを使用する場合、このファイルは編集不要
各メールクライアントシステム上に、デフォルトの /etc/mail/sendmail.cf ファイル。このファイルは編集不要
メールホストとして指定されたサーバー。 メールホストを指定するには、メールホストの /etc/hosts ファイルに mailhost.domain_name を追加。また、NIS や NIS+ を実行していない場合は追加情報が必要。すべてのメールクライアントの /etc/hosts ファイルにメールホストの IP アドレス行を追加
NIS または NIS+ を実行しない場合、ローカルメールボックスのあるすべてのシステム上に、対応する /etc/mail/aliases ファイルが必要
メールサーバーの /var/mail に、クライアントのメールボックスを格納できるだけの十分な領域
メールサービスの設定の詳細については、メールサービスの設定 (作業) を参照してください。 メールサービスの設定に関する特定の手順については、メールサービスの設定 (作業マップ)を参照してください。
作業 |
説明 |
参照先 |
---|---|---|
メールサーバーを設定する |
サーバーがメールを経路指定できるようにする手順 | |
メールクライアントを設定する |
ユーザーがメールを受信できるようにする手順 | |
メールホストを設定する |
電子メールアドレスを解釈処理できるメールホストを確立する手順 | |
メールゲートウェイを設定する |
ドメイン外のネットワークとの通信を管理する手順 | |
sendmail で DNS を使用する |
DNS ホストルックアップ機能を有効にする手順 | |
仮想ホストを設定する |
ホストに複数の IP アドレスを割り当てる手順 |
サイトが企業外の電子メールサービスに接続していないか、あるいは企業が 1 つのドメイン内にある場合は、メールサービスを比較的容易に設定できます。
ローカルメール用に 2 つのタイプの構成が必要です。これらの構成については、ローカルメール専用の図 22–1 を参照してください。ドメイン外のネットワークと通信するためには、さらに 2 つのタイプの構成が必要です。これらの構成については、ハードウェアコンポーネントの概要の図 21–1 または ローカルメールとリモート接続の図 22–2 を参照してください。これらの構成は、同じシステムで組み合わせるか、または別のシステムで提供できます。たとえば、同じシステムにメールホストとメールサーバーの機能を持たせる場合は、この節の説明に従って、まずそのシステムをメールホストとして設定します。次に、この節の説明に従って、同じシステムをメールサーバーとして設定します。
次のメールサーバーとメールクライアントの設定の手順は、メールボックスが NFS でマウントされているときに適用されます。ただし、メールボックスは通常、ローカルにマウントされた /var/mail ディレクトリで維持されるので、次の手順は必要ありません。
メールサーバーはローカルユーザーにメールサービスを提供するだけなので、設定には特別な手順は必要ありません。ユーザーはパスワードファイルまたは名前空間にエントリが必要です。さらに、メールが配信されるためには、ユーザーはローカルのホームディレクトリを用意して、 ~/.forward ファイルを確認する必要があります。 このため、ホームディレクトリサーバーがしばしばメールサーバーとして設定されます。メールサーバーについては、第 23 章「メールサービス (リファレンス)」の ハードウェアコンポーネントでさらに詳しく説明します。
メールサーバーは、メールクライアント宛てにメールを経路指定します。このタイプのメールサーバーは、クライアントのメールボックス用に十分なスプール空間が必要です。
クライアントが自分のメールボックスにアクセスするには、/var/mail ディレクトリをリモートマウントに利用できなければなりません。または、POP (Post Office Protocol)、IMAP (Internet Message Access Protocol) などのサービスをサーバーから利用できなければなりません。以下では、/var/mail ディレクトリを使ってメールサーバーを設定する方法を示します。このマニュアルでは、POP または IMAP の構成方法については説明しません。
次の作業のために、/var/mail ディレクトリがエクスポートされていることを /etc/dfs/dfstab ファイルで確認します。
メールサーバーのスーパーユーザーになるか、同等の役割になります。
役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。
sendmail を停止します。
# /etc/init.d/sendmail stop |
/var/mail ディレクトリをリモートアクセスに使用できるかどうかを確認します。
# share |
/var/mail ディレクトリが表示された場合は、手順 5 に進みます。
/var/mail ディレクトリが表示されない場合、あるいはリストが表示されない場合は、該当する手順に進みます。
(省略可能) リストが表示されない場合は、NFS サービスを起動します。
ファイルシステム自動共有を設定する方法 の手順に従って、 /var/mail ディレクトリを使用して NFS サービスを起動します。
(省略可能) /var/mail ディレクトリがリストに含まれていない場合は、/var/mail ディレクトリを /etc/dfs/dfstab に追加します。
/etc/dfs/dfstab ファイルに次のコマンド行を追加します。
share -F nfs -o rw /var/mail |
ファイルシステムをマウントできるようにします。
# shareall |
ネームサービスが起動されていることを確認します。
(省略可能) NIS を実行している場合は、次のコマンドを使用します。
# ypwhich |
詳細は、ypwhich(1) のマニュアルページを参照してください。
(省略可能) NIS+ を実行している場合は、次のコマンドを使用します。
# nisls |
詳細は、nisls(1) のマニュアルページを参照してください。
(省略可能) DNS を実行している場合は、次のコマンドを使用します。
# nslookup hostname |
ホスト名を指定
詳細は、nslookup(1M) のマニュアルページを参照してください。
(省略可能) LDAP を実行している場合は、次のコマンドを使用します。
# ldaplist |
詳細は、ldaplist(1) のマニュアルページを参照してください。
sendmail を再起動します。
# /etc/init.d/sendmail start |
mail.local プログラムは、メッセージがはじめて配信されたときに /var/mail ディレクトリでメールボックスを自動的に作成します。メールクライアントの個々のメールボックスを作成する必要はありません。
メールクライアントは、メールサーバー上にメールボックスを持っている、メールサービスのユーザーです。メールクライアントにはさらに、/etc/mail/aliases ファイルで、メールボックスの位置を示すメール別名が設定されています。第 23 章「メールサービス (リファレンス)」の ハードウェアコンポーネントに、メールクライアントについての簡単な説明があります。
POP (Post Office Protocol) または IMAP (Internet Message Access Protocol) のようなサービスを使ってメールクライアントを設定することもできます。ただし、POP または IMAP の構成方法については、このマニュアルでは説明していません。
メールクライアントシステム上でスーパーユーザーになるか、同等の役割になります。
役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。
sendmail を停止します。
# /etc/init.d/sendmail stop |
メールクライアントのシステムで /var/mail マウントポイントがあることを確認します。
マウントポイントは、インストール過程で作成されています。ls を使用すると、ファイルシステムが存在するかどうかを確認できます。次の例はファイルシステムが作成されていない場合に受け取る応答を示しています。
# ls -l /var/mail /var/mail not found |
/var/mail ディレクトリにファイルが何もないことを確認します。
メールファイルがこのディレクトリにある場合は、それらのファイルを移動させ、サーバーから /var/mail ディレクトリがマウントされる時にその対象とならないようにします。
メールサーバーから /var/mail ディレクトリをマウントします。
メールディレクトリは自動的にマウントすることも、ブート時にマウントすることもできます。
(省略可能) /var/mail を自動的にマウントします。
次のようなエントリを /etc/auto_direct ファイルに追加します。
/var/mail -rw,hard,actimeo=0 server:/var/mail |
割り当てられているサーバー名を指定
(省略可能) ブート時に /var/mail をマウントします。
/etc/vfstab ファイルに以下のエントリを追加します。このエントリにより、指定されたメールサーバー上の /var/mail ディレクトリがローカルの /var/mail ディレクトリをマウントできます。
server:/var/mail - /var/mail nfs - no rw,hard,actimeo=0 |
システムをリブートするたびに、クライアントのメールボックスが自動的にマウントされます。 システムをリブートしない場合は、次のコマンドを入力すれば、クライアントのメールボックスをマウントできます。
# mountall |
メールボックスのロックとメールボックスへのアクセスが適切に動作するには、NFS サーバーからメールをマウントする時に actimeo=0 オプションを入れる必要があります。
/etc/hosts を更新します。
/etc/hosts ファイルを編集し、メールサーバーのエントリを追加します。ネームサービスを使用する場合、この手順は必要ありません。
# cat /etc/hosts # # Internet host table # .. IP_address mailhost mailhost mailhost.example.com |
割り当てられている IP アドレスを指定
割り当てられているドメインを指定
割り当てられているメールホストを指定
詳細は、hosts(4) のマニュアルページを参照してください。
別名ファイルの 1 つにクライアントのエントリを追加します。
メール別名ファイルの管理に関する作業マップについては、メール別名ファイルの管理 (作業マップ) を参照してください。
mail.local プログラムは、メッセージがはじめて配信されたときに /var/mail ディレクトリでメールボックスを自動的に作成します。メールクライアントの個々のメールボックスを作成する必要はありません。
sendmail を再起動します。
# /etc/init.d/sendmail start |
メールホストは、電子メールアドレスを解決し、ドメイン内でメールを再度ルーティングします。メールホストに適しているのは、ネットワークにリモート接続を提供するシステム、または親ドメインにネットワークを接続するシステムです。 次に、メールホストを設定する手順を示します。
メールホストシステム上でスーパーユーザーになるか、同等の役割になります。
役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。
sendmail を停止します。
# /etc/init.d/sendmail stop |
ホスト名の構成を確認します。
次のように check-hostname スクリプトを実行し、sendmail が、このサーバーの完全指定のホスト名を識別できるかどうかを確認します。
% /usr/lib/mail/sh/check-hostname hostname phoenix OK: fully qualified as phoenix.example.com |
このスクリプトによる完全指定ホスト名の識別ができなかった場合は、完全指定ホスト名を /etc/hosts 内のホストの最初の別名として追加する必要があります。
/etc/hosts ファイルを更新します。
以下から、適切な手順を選択します。
(省略可能) NIS または NIS+ を使用している場合は、新しいメールホストとなるシステムの /etc/hosts ファイルを編集します。
メールホストシステムの IP アドレスとシステム名の後に mailhost と mailhost.domain を追加します。
IP_address mailhost mailhost mailhost.domain loghost |
割り当てられている IP アドレスを指定
メールホストシステムのシステム名を指定
拡張ドメイン名を指定
これで、このシステムはメールホストとして指定されます。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 |
(省略可能) NIS または NIS+ を使用しない場合は、ネットワーク内の各システムにある /etc/hosts ファイルを編集します。次のようなエントリを作成します。
IP_address mailhost mailhost mailhost.domain loghost |
正しい構成ファイルを選択し、コピーして名前を変更します。
次のコマンドは、/etc/mail/main.cf ファイルをコピーし名前を変更します。
# cp /etc/mail/main.cf /etc/mail/sendmail.cf |
sendmail を再起動します。
# /etc/init.d/sendmail start |
メール構成をテストします。
手順については、メール構成をテストする方法 を参照してください。
メールホストの詳細については、第 23 章「メールサービス (リファレンス)」の ハードウェアコンポーネントを参照してください。
メールゲートウェイは、ドメイン外のネットワークとの通信を管理します。送信側メールゲートウェイ上のメールプログラムは、受信側システムのメールプログラムと同じでなければなりません。
メールゲートウェイに適しているのは、Ethernet および電話回線に接続されているシステムです。インターネットへのルーターとして設定されているシステムも適しています。メールホストをメールゲートウェイとして設定するか、あるいは別のシステムをメールゲートウェイとして設定できます。複数のメールゲートウェイを自分のドメイン用として設定できます。UUCP (UNIX-to-UNIX Copy Program) 接続がある場合は、メールゲートウェイとして UUCP 接続を使ってシステムを構成します。
メールゲートウェイ上でスーパーユーザーになるか、同等の役割になります。
役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。
sendmail を停止します。
# /etc/init.d/sendmail stop |
正しい構成ファイルを選択し、コピーして名前を変更します。
次のコマンドは main.cf ファイルをコピーし名前を変更します。
# cp /etc/mail/main.cf /etc/mail/sendmail.cf |
ホスト名の構成を確認します。
次のように check-hostname スクリプトを実行し、sendmail が、このサーバーの完全指定のホスト名を識別できるかどうかを確認します。
# /usr/lib/mail/sh/check-hostname hostname phoenix OK: fully qualified as phoenix.example.com |
このスクリプトによる完全指定ホスト名の識別ができなかった場合は、完全指定ホスト名を /etc/hosts 内のホストの最初の別名として追加する必要があります。この手順の詳細については、メールホストを設定する方法 の 手順 4を参照してください。
ネームサービスが起動されていることを確認します。
(省略可能) NIS を実行している場合は、次のコマンドを使用します。
# ypwhich |
詳細は、ypwhich(1) のマニュアルページを参照してください。
(省略可能) NIS+ を実行している場合は、次のコマンドを使用します。
# nisls |
詳細は、nisls(1) のマニュアルページを参照してください。
(省略可能) DNS を実行している場合は、次のコマンドを使用します。
# nslookup hostname |
ホスト名を指定
詳細は、nslookup(1M) のマニュアルページを参照してください。
(省略可能) LDAP を実行している場合は、次のコマンドを使用します。
# ldaplist |
詳細は、ldaplist(1) のマニュアルページを参照してください。
sendmail を再起動します。
# /etc/init.d/sendmail start |
メール構成をテストします。
手順については、メール構成をテストする方法 を参照してください。
メールゲートウェイの詳細については、第 23 章「メールサービス (リファレンス)」の ハードウェアコンポーネントを参照してください。
DNS ネームサービスは、個別の別名をサポートしません。このネームサービスは、MX (メール交換局) レコードおよび CNAME レコードを使用するホストまたはドメインの別名をサポートします。ホスト名とドメイン名は両方またはいずれか一方を DNS データベースで指定できます。sendmail と DNS の詳細については、第 23 章「メールサービス (リファレンス)」の sendmail とネームサービスの相互作用、または『Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)』を参照してください。
スーパーユーザー、またはそれと同等の役割になります。
役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。
DNS ホストルックアップ機能を有効にします (NIS+ のみ)。
/etc/nsswitch.conf ファイルを編集し、dns フラグを含む hosts の定義から # を削除します。DNS ホスト別名を使用するには、次の例に示すように、ホストエントリに dns フラグが含まれている必要があります。
# grep hosts /etc/nsswitch.conf #hosts: nisplus [NOTFOUND=return] files hosts: dns nisplus [NOTFOUND=return] files |
mailhost と mailhost.domain エントリを確認します。
nslookup を使用して、mailhost と mailhost.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 |
.cf ファイルの名前を指定
sendmail.cf 構成ファイルの構築 (手順) では、構築手順の一部として、これと同じ 3 つの手順を説明しています。
/etc/mail/sendmail.cf ファイルを生成したら、次の手順に進み、仮想ユーザーテーブルを作成できます。
新しい sendmail.cf ファイルを構築する方法 で、構成ファイルの構築方法について説明します。sendmail.cf ファイルの以前のバージョンも引き続き使用できますが、新しい形式を使用することをお勧めします。
/usr/lib/mail/README。構成手順の詳細な説明
http://www.sendmail.org。sendmail 構成に関するオンライン情報
第 23 章「メールサービス (リファレンス)」の 構成ファイルのバージョンと sendmail 構成ファイル。いくつかのガイダンス
第 24 章「メールサービスの新機能 (リファレンス)」の次の節では、新しい m4 構成機能について説明しています。
次に、新しい構成ファイルを構築する手順を示します。
/usr/lib/mail/cf/main-v7sun.mc は、 /usr/lib/mail/cf/main.mc になりました。
スーパーユーザー、またはそれと同等の役割になります。
役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。
sendmail を停止します。
# /etc/init.d/sendmail stop |
変更しようとする構成ファイルのコピーを作成します。
# cd /usr/lib/mail/cf # cp main.mc myhost.mc |
.mc ファイルの新しい名前を指定
必要に応じて、新しい構成ファイル (たとえば、myhost.mc) を編集します。
たとえば、ドメインマスカレードを有効にするには、次のコマンド行を追加します。
# cat myhost.mc .. MASQUERADE_AS(`host.domain') |
目的のホスト名とドメイン名を指定
この例では、MASQUERADE_AS は、送信されたメールに、$j ではなく host.domain から送信されたものとしてラベルを付けます。
m4 を使って構成ファイルを構築します。
# /usr/ccs/bin/make myhost.cf |
-C オプションを使用して、新しい構成ファイルをテストし、新しいファイルを指定します。
# /usr/lib/sendmail -C myhost.cf -v testaddr </dev/null |
このコマンドはメッセージを表示するとともに、メッセージを testaddr に送信します。システム上で sendmail サービスを再起動することなく送信メールだけをテストできます。まだメールを処理していないシステムでは、メール構成をテストする方法 で説明する完全なテスト手順を使用してください。
オリジナルのコピーを作成した後、新しい構成ファイルをインストールします。
# cp /etc/mail/sendmail.cf /etc/mail/sendmail.cf.save # cp myhost.cf /etc/mail/sendmail.cf |
sendmail サービスを再起動します。
# /etc/init.d/sendmail start |
送受信されるメールの転送を容易にするため、sendmail の新しいデフォルトの構成は、デーモンとクライアントキューランナーを使用します。デーモンを無効にしている場合は、次の作業を行います。詳細は、新しい構成ファイル submit.cf を参照してください。
sendmail のデフォルトの構成では、クライアントキューランナーは、ローカルの SMTP ポートのデーモンにメールを送信できなければなりません。デーモンが SMTP ポート上で待機していない場合、メールはキューに留まります。この問題を避けるには、次の作業を行います。デーモンとクライアントキューランナーについての詳細、およびこの代替構成を使用する必要性を理解するには、新しい構成ファイル submit.cf を参照してください。
この手順を実行すると、デーモンは、ローカルホストからの接続を受け付けるためだけに動作するようになります。
スーパーユーザー、またはそれと同等の役割になります。
役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。
sendmail を停止します。
# /etc/init.d/sendmail stop |
変更しようとする構成ファイルのコピーを作成します。必要に応じて、subsidiary.mc または main.mc をコピーします。この例では、subsidiary.mc ファイルを使用します。
# cd /usr/lib/mail/cf # cp subsidiary.mc myhost.mc |
.mc ファイルの新しい名前を指定
新しい構成ファイル (たとえば、myhost.mc) を編集します。
MAILER() 行の前に次の行を追加します。
# cat myhost.mc .. DAEMON_OPTIONS(`NAME=NoMTA4, Family=inet, Addr=127.0.0.1')dnl |
(省略可能) ホストで IPv6 ローカルホストアドレスが使用できる場合は、新しい構成ファイルを次のように編集します。
MAILER() 行の前に次の 2 行を追加します。
# cat myhost.mc .. DAEMON_OPTIONS(`NAME=NoMTA4, Family=inet, Addr=127.0.0.1')dnl DAEMON_OPTIONS(`NAME=NoMTA6, Family=inet6, Addr=::1')dnl |
(省略可能) ホストで IPv6 ローカルホストアドレスが使用可能かどうかを調べるには、次のコマンドを実行します。
# /usr/sbin/ifconfig -a |
IPv6 を使用できる場合は、次のような出力が得られます。
lo0: flags=2000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6> mtu 8252 index 1 inet6 ::1/128 |
m4 を使って構成ファイルを構築します。
# /usr/ccs/bin/make myhost.cf |
オリジナルのコピーを作成した後、新しい構成ファイルをインストールします。
# cp /etc/mail/sendmail.cf /etc/mail/sendmail.cf.save # cp myhost.cf /etc/mail/sendmail.cf |
sendmail サービスを再起動します。
# /etc/init.d/sendmail start |
次の表では、メール別名ファイルの管理の手順を説明します。 このトピックの詳細は、第 23 章「メールサービス (リファレンス)」の メール別名ファイルを参照してください。
作業 |
説明 |
参照先 |
---|---|---|
NIS+ mail_aliases テーブルで別名のエントリを管理する |
ネームサービスが NIS+ である場合に、mail_aliases テーブルの内容を管理する手順。エントリの表示、追加、編集、削除の方法を説明する | |
NIS mail.aliases マップを設定する |
ネームサービスが NIS の場合、mail.aliases マップを使って別名を設定する手順 | |
ローカルのメール別名ファイルを設定する |
NIS や NIS+ などのネームサービスを使用していない場合に、/etc/mail/aliases ファイルを使って別名を設定する手順 | |
キー付きマップファイルを作成する |
キー付きマップファイルを使って別名を設定する手順 | |
postmaster 別名を設定する |
postmaster 別名を管理する手順。この別名は必須 |
メール別名はドメイン独自にする必要があります。 この節では、メール別名ファイルを管理する手順を説明します。また、Solaris 管理コンソールの「メーリングリスト」機能を使って別名データベース上でこれらの作業を実行することもできます。
その他に、makemap を使ってローカルメールホストにデータベースファイルを作成することもできます。makemap(1M) のマニュアルページを参照してください。ローカルのデータベースファイルを使用しても、NIS や NIS+ のようなネームサービスを使用するほどの利点は得られません。しかし、ネットワークのルックアップは必要ないため、ローカルのデータベースファイルからの方がより早くデータを取り出すことができます。詳細は、第 23 章「メールサービス (リファレンス)」 のsendmail とネームサービスの相互作用 およびメール別名ファイル を参照してください。
NIS+ テーブルでエントリを管理するために、aliasadm コマンドを使用できます。aliasadm コマンドを使ってテーブルエントリを表示、追加、変更、または削除するには、次の手順に従います。
テーブルを所有する NIS+ グループのメンバーになるか、メールサーバーのスーパーユーザーになるか、同等の役割になります。
役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。
必要に応じて、次に挙げる例のいずれかの手順に従って作業します。
場合によっては、最初にメールクライアント、クライアントのメールボックスの位置、およびメールサーバーシステム名のそれぞれのリストをコンパイルする必要があります。
テーブルを所有する NIS+ グループのメンバーになるか、メールサーバーのスーパーユーザーになるか、同等の役割になります。
役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。
NIS+ テーブルを作成します。
# aliasadm -I |
テーブルにエントリを追加します。
2 つまたは 3 つの別名を追加する方法については、例 — コマンド行から NIS+ mail_aliases テーブルへ別名を追加するを参照してください。
多数の別名を追加する方法については、例 — NIS+ mail_aliases テーブルを編集してエントリを追加するを参照してください。
詳細は、aliasadm(1M) のマニュアルページを参照してください。
テーブルを所有する NIS+ グループのメンバーになるか、メールサーバーのスーパーユーザーになるか、同等の役割になります。
役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。
別名のアルファベット順に全エントリを表示します。
# aliasadm -1 |
詳細は、aliasadm(1M) のマニュアルページを参照してください。
テーブルの個々のエントリを表示するには、次の手順に従います。
テーブルを所有する NIS+ グループのメンバーになるか、メールサーバーのスーパーユーザーになるか、同等の役割になります。
役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。
個々のエントリを表示します。
# aliasadm -m ignatz ignatz: ignatz@saturn # Alias for Iggy Ignatz |
このコマンドは、完全に一致する別名のみ表示し、部分的に一致するエントリは表示しません。aliasadm -m オプションでは、メタキャラクタ (*、? など) は使用できません。
詳細は、aliasadm(1M) のマニュアルページを参照してください。
テーブルの部分一致エントリを表示するには、次の手順に従います。
テーブルを所有する NIS+ グループのメンバーになるか、メールサーバーのスーパーユーザーになるか、同等の役割になります。
役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。
テーブル内の部分一致エントリを表示します。
# aliasadm -l | grep partial_string |
検索に使用する文字列を指定
詳細は、aliasadm(1M) のマニュアルページを参照してください。
2 つまたは 3 つの別名をテーブルに追加するには、次の手順に従います。
メールクライアント、メールボックスの場所、およびメールサーバーシステムの名前の各リストをコンパイルします。
テーブルを所有する NIS+ グループのメンバーになるか、メールサーバーのスーパーユーザーになるか、同等の役割になります。
役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。
(省略可能) 必要な場合は、NIS+ テーブルを作成します。
まったく新しい NIS+ mail_aliases テーブルを作成する場合は、最初に NIS+ テーブルを初期設定しなければなりません。 テーブルの作成方法については、NIS+ mail_aliases テーブルを作成する例 を参照してください。
テーブルに別名を追加します。
次に、一般的なエントリの例を示します。
# aliasadm -a iggy iggy.ignatz@saturn "Iggy Ignatz" |
上記の例の入力内容を次に説明します。
別名を追加するためのオプション
簡略別名
拡張別名
引用符で囲んだ別名
作成したエントリを表示し、エントリに間違いがないことを確認します。
# aliasadm -m alias |
作成したエントリ
詳細は、aliasadm(1M) のマニュアルページを参照してください。
メールクライアント、メールボックスの場所、およびメールサーバーシステムの名前の各リストをコンパイルします。
テーブルを所有する NIS+ グループのメンバーになるか、メールサーバーのスーパーユーザーになるか、同等の役割になります。
役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。
別名テーブルを表示して編集します。
# aliasadm -e |
このコマンドは、テーブルを表示し、テーブルの編集を可能にします。使用するエディタは、$EDITOR 環境変数で設定されています。この変数が設定されていない場合、vi がデフォルトのエディタになります。
次の形式で、1 行に 1 別名ずつ入力します。
alias: expanded_alias # ["option" # "comments"] |
この列には、簡略別名を入力
この列には、拡張別名を入力
この列は、将来の拡張のために予約されている
この列は、別名など、個々の別名に関するコメントに使用
オプション列をブランクにする場合は、空の引用符 2 つ ("") を入力し、その後にコメントを追加します。
NIS+ mail_aliases テーブルでは、エントリの順序は重要ではありません。aliasadm -l コマンドがリストをソートし、エントリをアルファベット順に表示します。
詳細は、メール別名ファイル および aliasadm(1M) のマニュアルページを参照してください。
テーブルを所有する NIS+ グループのメンバーになるか、メールサーバーのスーパーユーザーになるか、同等の役割になります。
役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。
別名エントリを表示します。
# aliasadm -m alias |
割り当てられている別名を指定
必要に応じて別名エントリを編集します。
# aliasadm -c alias expanded_alias [options comments] |
必要な場合は、別名を編集
必要な場合は、拡張別名を編集
必要な場合は、オプションを編集
必要な場合は、このエントリのコメントを編集
詳細は、aliasadm(1M) のマニュアルページおよび メール別名ファイルを参照してください。
編集したエントリを表示し、エントリに間違いがないことを確認します。
# aliasadm -m alias |
詳細は、aliasadm(1M) のマニュアルページを参照してください。
テーブルを所有する NIS+ グループのメンバーになるか、メールサーバーのスーパーユーザーになるか、同等の役割になります。
役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。
テーブルからエントリを削除します。
# aliasadm -d alias |
削除するエントリの別名を指定
詳細は、aliasadm(1M) のマニュアルページを参照してください。
次の手順によって、NIS の mail.aliases マップを使って別名の設定を容易に行うことができます。
メールクライアント、メールボックスの場所、およびメールサーバーシステムの名前の各リストをコンパイルします。
NIS マスターサーバーのスーパーユーザーになるか、同等の役割になります。
役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。
/etc/mail/aliases ファイルを編集し、次のようなエントリを作成します。
メールクライアントごとにエントリを追加します。
# cat /etc/mail/aliases .. alias:expanded_alias |
簡略別名を指定
拡張別名 (user@host.domain.com) を指定
Postmaster: root エントリがあることを確認します。
# cat /etc/mail/aliases .. Postmaster: root |
root の別名を追加します。 ポストマスターとして指定された個人のメールアドレスを使用します。
# cat /etc/mail/aliases .. root: user@host.domain.com |
指定されたポストマスターに割り当てられているアドレスを指定
NIS マスターサーバーがネームサービスを実行中で、各メールサーバーのホスト名を解釈処理できることを確認します。
/var/yp ディレクトリに移動します。
# cd /var/yp |
make コマンドを適用します。
# make |
/etc/hosts および /etc/mail/aliases ファイルの変更は、NIS スレーブシステムに伝達されます。変更は、遅くとも数分後には有効になります。
ローカルメール別名ファイルで別名を解釈処理するには、次の手順に従います。
ユーザーとメールボックスの場所の各リストをコンパイルします。
メールサーバーのスーパーユーザーになるか、あるいは同等の役割になります。
役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。
/etc/mail/aliases ファイルを編集し、次のようなエントリを作成します。
ユーザーごとにエントリを追加します。
user1: user2@host.domain |
新しい別名を指定
新しい別名の実際のアドレスを指定
Postmaster: root エントリがあることを確認します。
# cat /etc/mail/aliases .. Postmaster: root |
root の別名を追加します。 ポストマスターとして指定された個人のメールアドレスを使用します。
# cat /etc/mail/aliases .. root: user@host.domain.com |
指定されたポストマスターに割り当てられているアドレスを指定
別名データベースを再構築します。
# newaliases |
/etc/mail/sendmail.cf の AliasFile オプションの構成によって、このコマンドがバイナリ形式で、/etc/mail/aliases.db ファイルを 1 つ生成するか、または /etc/mail/aliases.dir と /etc/mail/aliases.pag の 1 組のファイルを生成するかが決まります。
次の手順のどちらかを実行して、生成されたファイルをコピーします。
(省略可能) /etc/mail/aliases、/etc/mail/aliases.dir、および /etc/mail/aliases.pag ファイルを他の各システムにコピーします。
rcp または rdist コマンドを使用して 3 つのファイルをコピーできます。 詳細は、rcp(1) のマニュアルページまたは rdist(1) のマニュアルページを参照してください。 また、この目的のためのスクリプトを作成することもできます。
これらのファイルをコピーしたら、newaliases コマンドを他の各システムで実行する必要はありません。ただし、メールクライアントを追加または削除するたびにすべての /etc/mail/aliases ファイルを更新する必要があるので注意してください。
(省略可能) /etc/mail/aliases.db ファイルを他の各システムにコピーします。
rcp または rdist コマンドを使用してファイルをコピーできます。 詳細は、rcp(1) のマニュアルページまたは rdist(1) のマニュアルページを参照してください。 また、この目的のためのスクリプトを作成することもできます。
このファイルをコピーしたら、newaliases コマンドを他の各システムで実行する必要はありません。ただし、メールクライアントを追加または削除するたびにすべての /etc/mail/aliases ファイルを更新する必要があるので注意してください。
キー付きマップファイルを作成するには、次の手順に従います。
メールサーバーのスーパーユーザーになるか、同等の役割になります。
役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。
入力ファイルを作成します。
エントリには、次の構文を使用できます。
old_name@newdomain.com new_name@newdomain.com old_name@olddomain.com error:nouser No such user here @olddomain.com %1@newdomain.com |
新たに割り当てたドメインでこれまで割り当てられていたユーザー名を指定
新たに割り当てるアドレスを指定
これまで割り当てられていたドメインでこれまで割り当てられていたユーザー名を指定
これまで割り当てられていたドメインを指定
新たに割り当てるドメインを指定
1 番目のエントリにより、メールは新しい別名に転送されます。2 番目のエントリにより、不適切な別名が使用されたときにメッセージが作成されます。最後のエントリにより、すべての着信メールは olddomain から newdomain へ転送されます。
データベースファイルを作成します。
# /usr/sbin/makemap maptype newmap < newmap |
dbm、btree、hash などのデータベースタイプを選択
入力ファイル名とデータベースファイル名の最初の部分を指定。dbm データベースタイプを選択すると、データベースファイルは接尾辞に .pag または .dir を使って作成される。他の 2 つのデータベースタイプの場合、ファイル名には .db が付く
各システムは postmaster メールボックスにメールを送信できなければなりません。postmaster の NIS または NIS+ 別名を作成できます。あるいは、ローカルの /etc/mail/aliases ファイルそれぞれに別名を作成することもできます。次の手順を参照してください。
postmaster 別名をローカルの各 /etc/mail/aliases ファイルに作成する場合は、次の手順に従います。
各ローカルシステムのスーパーユーザーになるか、同等の役割になります。
役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。
/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 |
各システムの /etc/mail/aliases ファイルを編集します。
root をポストマスターに指定する個人のメールアドレスに変更します。
Postmaster: mail_address |
ポストマスターとして指定された個人に割り当てられたアドレスを使用します。
(省略可能) ポストマスター用に別のメールボックスを作成します。
ポストマスターがポストマスターメールと個人メールとを区別するために、別のメールボックスを作成できます。別のメールボックスを作成する場合は、/etc/mail/aliases ファイルを編集するときに、ポストマスターの個人メールアドレスではなくメールボックスアドレスを使用してください。詳細は、postmaster 用に別のメールボックスを作成する方法を参照してください。
postmaster 用に別のメールボックスを作成する場合は、次の手順に従います。
メールサーバーのスーパーユーザーになるか、あるいは同等の役割になります。
役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。
postmaster として指定された個人のアカウントを作成します。パスワードフィールドにアスタリスク (*) を入力します。
ユーザーアカウントの追加の詳細については、『Solaris のシステム管理 (基本編)』の「ユーザーアカウントとグループの管理 (手順)」を参照してください。
メールが配信されたら、mail プログラムがメールボックス名に読み書きできるようにします。
# mail -f postmaster |
割り当てられているアドレスを指定
postmaster メールボックスを /etc/mail/aliases ファイル内の別名に追加する場合は、次の手順に従います。
各システムのスーパーユーザーになるか、同等の役割になります。
役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。
root の別名を追加します。 ポストマスターとして指定された個人のメールアドレスを使用します。
# cat /etc/mail/aliases .. root: user@host.domain.com |
ポストマスターとして指定された個人に割り当てられたアドレスを使用します。
ポストマスターのローカルシステムで、 /etc/mail/aliases ファイルに別名の名前を定義するエントリを作成します。 sysadmin が 1 例です。 ローカルメールボックスへのパスも指定します。
# cat /etc/mail/aliases .. sysadmin: /usr/somewhere/somefile |
新しい別名の名前を作成
ローカルメールボックスのパスを指定
別名データベースを再構築します。
# newaliases |
作業 |
説明 |
参照先 |
---|---|---|
メールキュー /var/spool/mqueue の内容を表示する |
キューにあるメッセージの数とそれらのメッセージがキューから消去されるのにかかる時間を表示する手順 | |
メールキュー /var/spool/mqueue を強制処理する |
以前にメッセージを受信できなかったシステムへのメッセージを処理する手順 | |
メールキュー /var/spool/mqueue のサブセットを実行する |
ホスト名など、アドレスの部分文字列を強制的に処理する手順。さらに、特定のメッセージをキューから強制的に処理する手順 | |
メールキュー /var/spool/mqueue を移動する |
メールキューを移動する手順 | |
古いメールキュー /var/spool/omqueue を実行する |
古いメールキューを実行する手順 |
この節では、キューの管理に役立つ作業について説明します。クライアント専用のキューの詳細については、新しい構成ファイル submit.cf を参照してください。他の関連情報については、キューの新しい機能 を参照してください。
キューにあるメッセージの数とそれらのメッセージがキューから消去されるのにかかる時間を表示するには、次の手順に従います。
次の情報を表示するには、以下に示すコマンドを使用します。
キュー ID
メッセージのサイズ
メッセージがキューに入った日付
メッセージの状態
送信者と受信者
# /usr/bin/mailq | more |
このコマンドは、認証属性 solaris.admin.mail.mailq を確認します。確認が取れると、sendmail で -bp フラグを指定するのと同じ処理が実行されます。確認ができない場合は、エラーメッセージが表示されます。デフォルトでは、この認証属性はすべてのユーザーで使用できるようになっています。認証属性は、prof_attr 内のユーザーエントリを変更することにより無効にできます。詳細は、prof_attr(4) および mailq(1) のマニュアルページを参照してください。
たとえば、以前にメッセージを受信できなかったシステムへのメッセージを処理するには、次の手順に従います。
スーパーユーザーになるか、それと同等の役割になります。
役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。
キューを強制処理し、キューが消去されるとジョブの進捗状況を表示します。
# /usr/lib/sendmail -q -v |
たとえば、ホスト名など、アドレスの部分文字列を強制的に処理するには、次の手順に従います。また、特定のメッセージをキューから強制的に処理するにも、次の手順に従います。
スーパーユーザーになるか、それと同等の役割になります。
役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。
-qRstring を使用して、いつでもメールキューのサブセットを実行できます。
# /usr/lib/sendmail -qRstring |
受信者の別名または user@host.domain の部分文字列 (ホスト名など) を指定
代わりに、-qInnnnn を使ってメールキューのサブセットを実行することもできます。
# /usr/lib/sendmail -qInnnnn |
キュー ID を指定
メールホストのスーパーユーザーになるか、同等の役割になります。
役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。
sendmail デーモンを終了します。
# /etc/init.d/sendmail stop |
これで、sendmail はキューディレクトリを処理しなくなります。
/var/spool ディレクトリに移動します。
# cd /var/spool |
mqueue ディレクトリとディレクトリ内のすべての内容を omqueue ディレクトリに移動します。次に、mqueue という名前の新しい空のディレクトリを作成します。
# mv mqueue omqueue; mkdir mqueue |
ディレクトリのアクセス権を所有者は読み取り/書き込み/実行に、またグループは読み取り/実行に設定します。また、所有者とグループを daemon に設定します。
# chmod 750 mqueue; chown root:bin mqueue |
sendmail を起動します。
# /etc/init.d/sendmail start |
スーパーユーザーになるか、それと同等の役割になります。
役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。
古いメールキューを実行します。
# /usr/lib/sendmail -oQ/var/spool/omqueue -q |
-oQ フラグで、代替キューディレクトリを指定します。-q フラグで、キューのすべてのジョブを実行するように指示します。画面に冗長出力を表示する場合は、-v フラグを使用します。
空のディレクトリを削除します。
# rmdir /var/spool/omqueue |
次の表では、.forward ファイルを管理するための手順を説明します。詳細は、第 23 章「メールサービス (リファレンス)」の .forward ファイルを参照してください。
作業 |
説明 |
参照先 |
---|---|---|
.forward ファイルを無効にする |
たとえば、自動転送を禁止する場合に実行する手順 | |
.forward ファイルの検索パスを変更する |
たとえば、すべての .forward ファイルを共通ディレクトリに移動させる場合に実行する手順 | |
/etc/shells を作成し生成する |
メールをプログラムまたはファイルに転送するために、ユーザーが .forward ファイルを使用できるようにする手順 |
この節では、.forward ファイルの管理に関する複数の手順を説明します。これらファイルはユーザーが編集できるので、ファイルが問題の原因になる場合があります。詳細は、第 23 章「メールサービス (リファレンス)」 の .forward ファイル を参照してください。
自動転送を禁止し、特定のホストの .forward ファイルを無効にするには、次の手順に従います。
スーパーユーザーになるか、それと同等の役割になります。
役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。
/usr/lib/mail/domain/solaris-generic.m4 またはサイト固有のドメイン m4 ファイルのコピーを作成します。
# cd /usr/lib/mail/domain # cp solaris-generic.m4 mydomain.m4 |
選択するファイル名を指定
define(`confFORWARD_PATH',`')dnl |
m4 ファイルに confFORWARD_PATH の値がすでに存在する場合は、NULL 値で置き換えられます。
新しい構成ファイルを構築してインストールします。
この手順の詳細については、新しい sendmail.cf ファイルを構築する方法を参照してください。
.mc ファイルを編集する場合は、忘れずに DOMAIN(`solaris-generic') を DOMAIN(`mydomain') に変更してください。
たとえば、すべての .forward ファイルを共通ディレクトリに入れる場合は、次の手順に従います。
スーパーユーザーになるか、それと同等の役割になります。
役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。
/usr/lib/mail/domain/solaris-generic.m4 またはサイト固有のドメイン m4 ファイルのコピーを作成します。
# cd /usr/lib/mail/domain # cp solaris-generic.m4 mydomain.m4 |
選択するファイル名を指定
次の行を作成したファイルに追加します。
define(`confFORWARD_PATH',`$z/.forward:/var/forward/$u')dnl |
m4 ファイルに confFORWARD_PATH の値がすでに存在する場合は、新しい値で置き換えられます。
新しい構成ファイルを構築してインストールします。
この手順の詳細については、新しい sendmail.cf ファイルを構築する方法を参照してください。
.mc ファイルを編集する場合は、忘れずに DOMAIN(`solaris-generic') を DOMAIN(`mydomain') に変更してください。
このファイルは標準リリースには含まれていません。.forward ファイルを使用してプログラムまたはファイルにメールを転送することをユーザーに許可する場合は、このファイルを追加する必要があります。grep を使用して、パスワードファイルにリストされたすべてのシェルを特定し、ファイルを手動で作成することができます。これにより、シェルをファイルに入力できます。しかし、次に示す、ダウンロード可能なスクリプトを使用する手順の方が簡単です。
スクリプトをダウンロードします。
スーパーユーザーになるか、それと同等の役割になります。
役割については、『Solaris のシステム管理 (セキュリティサービス)』の「特権付きアプリケーションの使用」を参照してください。
シェルのリストを作成するために、gen-etc-shells を実行します。
# ./gen-etc-shells.sh> /tmp/shells |
このスクリプトでは、getent コマンドを使用して、/etc/nsswitch.conf 内にリストされたパスワードファイルソースに組み込まれたシェルの名前を収集します。
/tmp/shells 内のシェルのリストを調べて編集します。
選択したエディタを使用し、組み込まないシェルを削除します。
ファイルを /etc/shells に移動します。
# mv /tmp/shells /etc/shells |
次の表では、メールサービスの障害追跡手順とヒントを説明します。
作業 |
説明 |
参照先 |
---|---|---|
メール構成をテストする |
sendmail 構成ファイルの変更をテストする手順 | |
メール別名を確認する |
指定された受信者にメールを配信できるかどうかを確認する手順 | |
ルールセットをテストする |
sendmail ルールセットの入力と戻りを確認する手順 | |
他のシステムへの接続を確認する |
他のシステムへの接続を確認するためのヒント | |
syslogd プログラムを使ってメッセージを記録する |
エラーメッセージ情報を収集するためのヒント | |
診断情報のその他の情報源を確認する |
他の情報源から診断情報を取得するためのヒント |
この節では、メールサービスの問題解決に使用できる手順とヒントをいくつか示します。
構成ファイルに対して行なった変更をテストするには、次の手順に従います。
変更した構成ファイルがあるシステムで sendmail を再起動します。
# /etc/init.d/sendmail restart |
各システムからテストメッセージを送信します。
# /usr/lib/sendmail -v names </dev/null |
受信者の電子メールアドレスを指定
このコマンドは、指定された受信者に NULL メッセージを送信し、画面にメッセージの動作を表示します。
メッセージを通常のユーザー名に送ることによって、メールを自分自身またはローカルシステム上の他の人に送信します。
(省略可能) ネットワークに接続している場合は、別のシステムの個人宛に次の 3 方向でメールを送信します。
メインシステムからクライアントシステムへ
クライアントシステムからメインシステムへ
クライアントシステムから別のクライアントシステムへ
(省略可能) メールゲートウェイがある場合、メールホストから別のドメインにメールを送信して、リレーメールプログラムおよびホストが適切に設定されていることを確認します。
(省略可能) 電話回線上で別のホストへの UUCP 接続を設定している場合は、そのホストのだれかにメールを送信します。メッセージを受信した時点で、メールを返信してもらうか、電話してもらいます。
UUCP 接続を介してメールを送信するように他の人に頼みます。
sendmail プログラムは、メッセージが配信されたかどうかは検出しません。これは、配信のためにプログラムがメッセージを UUCP に渡すためです。
異なるシステムからメッセージを postmaster 宛てに送信し、ポストマスターのメールボックスにそのメッセージが配信されたことを確認します。
次の例は、別名を確認する方法を示します。
% mconnect connecting to host localhost (127.0.0.1), port 25 connection open 220 your.domain.com ESMTP Sendmail 8.12.6+Sun/8.12.6; Tue, 12 Nov 2002 13:34:13 -0800 (PST) expn sandy 250 2.1.5 <sandy@phoenix.example.com> quit 221 2.0.0 your.domain.com closing connection % |
この例では、mconnect プログラムがローカルホスト上のメールサーバーとの接続を確立し、接続をテストできるようにします。プログラムは対話式で実行されるので、さまざまな診断コマンドを実行できます。詳細は、mconnect(1) のマニュアルページを参照してください。 expn sandy のエントリに、展開されたアドレス sandy@phoenix.example.com が示されています。したがって、別名 sandy でメールを配信できることが確認されました。
ローカルおよびドメインの両方で別名を使用する場合は、ループやデータベースの不整合が生じないようにしてください。あるシステムから別のシステムにユーザーを移動するときは、別名のループが生じないよう特に注意してください。
sendmail ルールセットの入力と戻りを確認するには、次の手順に従います。
アドレステストモードに変更します。
# /usr/lib/sendmail -bt |
メールアドレスをテストします。
最後のプロンプト (>) で次の数値とアドレスを入力します。
> 3,0 mail_address |
テストするメールアドレスを指定
セッションを終了します。
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 connecting 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 ポートに接続できない場合は、次の条件を確認してください。
システム負荷が高すぎないか
sendmail デーモンが動作しているか
システムに適切な /etc/mail/sendmail.cf ファイルがあるか
sendmail が使用するポート 25 がアクティブであるか
メールサービスは、syslogd プログラムを使って大部分のエラーメッセージを記録します。デフォルトでは、syslogd プログラムはこれらのメッセージを /etc/hosts ファイルで指定されている loghost というシステムに送信します。loghost が NIS ドメイン全体のすべてのログを保持するように定義できます。loghost を指定しなければ、syslogd からのエラーメッセージはレポートされません。
/etc/syslog.conf ファイルは、syslogd プログラムがメッセージをどこに転送するかを制御します。 /etc/syslog.conf ファイルを編集することにより、デフォルトの構成を変更できます。変更内容を有効にするには、syslog デーモンを再起動する必要があります。メールに関する情報を収集するために、ファイルに次の選択を追加できます。
mail.alert – ここで訂正する必要のある状態メッセージ
mail.crit – クリティカルメッセージ
mail.warning – 警告メッセージ
mail.notice – エラーではないが注意すべきメッセージ
mail.info – 情報メッセージ
mail.debug – デバッグメッセージ
/etc/syslog.conf ファイルの次のエントリは、すべての重大な情報を含むデバッグメッセージを /var/log/syslog に送信します。
mail.crit;mail.info;mail.debug /var/log/syslog |
システムログの各行には、タイムスタンプ、そのログ行を生成したシステム名、およびメッセージが入っています。syslog ファイルは、大量の情報を記録できます。
ログは、連続したレベルとして並べられます。最下位レベルでは、異常なイベントだけが記録されます。最上位レベルでは、もっとも必須なイベントと注目する必要のないイベントが記録されます。通常、10 以下のログレベルが「有用」とみなされます。10 を超えるログレベルは通常、デバッグに使用されます。loghost および syslogd プログラムの詳細については、『Solaris のシステム管理 (上級編)』の「システムのメッセージ記録のカスタマイズ」を参照してください。
その他の診断情報については、次の情報源を確認してください。
メッセージのヘッダーの Received 行を調べます。 これらの行は、メッセージがリレーされる時にとった経路を追跡できます。 時間帯の違いを考慮するのを忘れないでください。
ワークステーショングループの配信上の問題を記録するシステムログを確認します。sendmail プログラムは常に、その処理内容をシステムログに記録します。crontab ファイルを修正して、ログを調べるシェルスクリプトを夜間に実行できます。このスクリプトは、ログで SYSERR メッセージを検索し、検出したメッセージをポストマスターにメールで送信します。
mailstats プログラムを使ってメールタイプをテストし、着信メッセージと発信メッセージの数を判定します。
この節では、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 を参照してください。
sendmail プログラムは、メール転送エージェントです。このプログラムは、構成ファイルを使用して、別名処理、転送、ネットワークゲートウェイへの自動ルーティング、柔軟な構成を提供します。Solaris オペレーティング環境では、ほとんどのサイトで使用できる標準構成ファイルが付属しています。第 21 章「メールサービス (概要)」では、メールサービスのコンポーネントと典型的なメールサービスの構成を紹介します。第 22 章「メールサービス (手順)」では、電子メールシステムをセットアップして管理する方法について説明します。この章では、以下のトピックについて説明します。
sendmail バージョン 8.12 に含まれている新しい機能については、第 24 章「メールサービスの新機能 (リファレンス)」を参照してください。 mail.local、mailstats、makemap に関する変更、および新しいメンテナンスユーティリティである editmap についてもお読みください。以上の章で説明されていない詳細については、sendmail(1M)、mail.local(1M)、mailstats(1)、makemap(1M)、および editmap(1M) のマニュアルページを参照してください。
ここでは、以下の項目について sendmail の Solaris 版と一般的な Berkeley バージョンを比較します。
次に、Solaris 9 に含まれている sendmail のバージョンをコンパイルするときに使用するフラグを示します。構成に他のフラグが必要な場合は、そのソースをダウンロードし、バイナリにコンパイルし直してください。このプロセスについては、http://www.sendmail.org を参照してください。
表 23–1 一般的な sendmail フラグ
フラグ |
説明 |
---|---|
SOLARIS=20900 |
Solaris 9 オペレーティング環境をサポートする |
MILTER |
メールフィルター API をサポートする |
NETINET6 |
IPv6 をサポートする。このフラグは、conf.h から Makefile に移動 |
表 23–2 マップとデータベースの種類
フラグ |
説明 |
---|---|
NDBM |
ndbm データベースをサポートする |
NEWDB |
db データベースをサポートする |
USERDB |
User データベースをサポートする |
NIS |
nis データベースをサポートする |
NISPLUS |
nisplus データベースをサポートする |
LDAPMAP |
LDAP のマップをサポートする |
MAP_REGEX |
正規表現のマップをサポートする |
表 23–3 Solaris のフラグ
フラグ |
説明 |
---|---|
SUN_EXTENSIONS |
sun_compat.o に含まれる Sun の拡張をサポートする |
SUN_LOOKUP_MACRO |
sendmail.cf の L と G 構成コマンドをサポートする。この 2 つのコマンドの使用は推奨されない |
SUN_INIT_DOMAIN |
下位互換性を確保するために、NIS ドメイン名をサポートしてローカルホスト名を完全指定する。詳細は、http://www.sendmail.org のベンダー固有の情報を参照 |
SUN_SIMPLIFIED_LDAP |
Sun 固有の簡略化された LDAP API をサポートする。詳細は、http://www.sendmail.org のベンダー固有の情報を参照 |
VENDOR_DEFAULT=VENDOR_SUN |
Sun をデフォルトのベンダーに選択する |
次の表に、Solaris 9 に添付される sendmail のバージョンのコンパイルに使用されない一般的なフラグを示します。
表 23–4 sendmail の Solaris 版に使用されない一般的なフラグ
フラグ |
説明 |
---|---|
SASL |
Simple Authentication and Security Layer (RFC 2554) |
STARTTLS |
Transaction Level Security (RFC 2487) |
sendmail のコンパイルに使用するフラグの一覧を参照するには、次のコマンドを使用します。
% /usr/lib/sendmail -bt -d0.10 < /dev/null |
上記のコマンドでは、Sun 固有のフラグは表示されません。
Solaris リリースには、Berkley による汎用リリースで提供されているコマンドの同義語がすべて組み込まれているわけではありません。次の表は、すべてのコマンドの別名を示したリストです。この表には、コマンドが Solaris リリースに組み込まれているかどうか、および sendmail を使って同じ動作を生成する方法も示しています。
表 23–5 代替 sendmail コマンド
代替名 |
Solaris への組み込み |
sendmail を使用したオプション |
---|---|---|
hoststat | 組み込まれていない | sendmail -bh |
mailq | 組み込まれている | sendmail -bp |
newaliases | 組み込まれている | sendmail -bi |
purgestat | 組み込まれていない | sendmail -bH |
smtpd | 組み込まれていない | sendmail -bd |
Solaris 9 に含まれている sendmail の バージョンには、sendmail.cf ファイルのバージョンを定義するための構成オプションが含まれます。現在のバージョンの sendmail でも以前のバージョンの構成ファイルを使用できます。バージョンレベルには 0 から 10 の値を設定できます。また、ベンダーの定義もできます。Berkeley または Sun をベンダーとして選択できます。ベンダーを定義しないでバージョンレベルだけを設定した場合は、Sun がデフォルトとして使用されます。次の表に有効なオプションを示します。
表 23–6 構成ファイルのバージョン値
フィールド |
説明 |
---|---|
V7/Sun |
sendmail のバージョン 8.8 で使用された設定 |
V8/Sun |
sendmail のバージョン 8.9 で使用された設定。この設定は、Solaris 8 に含まれていた |
V9/Sun |
sendmail のバージョン 8.10 と 8.11 で使用された設定 |
V10/Sun |
sendmail のバージョン 8.12 で使用される設定。バージョン 8.12 は、Solaris 9 のデフォルト |
V1/Sun は使用しないでください。詳細は、 http://www.sendmail.org/vendor/sun/differences.html#4 を参照してください。
作業手順については、第 22 章「メールサービス (手順)」の sendmail.cf 構成ファイルの構築 (手順) を参照してください。
ここでは、メールシステムのソフトウェアとハードウェアの構成要素について説明します。
各メールサービスには、少なくとも以下のどれかのソフトウェアコンポーネントが含まれます。
ここでは、以下のソフトウェアコンポーネントについても説明します。
「メールユーザーエージェント」は、ユーザーとメール転送エージェント間のインタフェースとして機能するプログラムです。sendmail プログラムは、メール転送エージェントです。Solaris のオペレーティング環境は、以下のメールユーザーエージェントを提供します。
/usr/bin/mail
/usr/bin/mailx
$OPENWINHOME/bin/mailtool
/usr/dt/bin/dtmail
「メール転送エージェント」は、メールメッセージのルーティングとメールアドレスの解釈を行います。このエージェントは、メールトランスポートエージェントとも呼ばれます。Solaris オペレーティング環境ソフトウェアの転送エージェントは sendmail です。 転送エージェントは次の機能を実行します。
メールユーザーエージェントからメッセージを受信する
宛先アドレスを認識する
適切な配信エージェントを選択してメールを配信する
他のメール転送エージェントからのメールを受信する
「ローカル配信エージェント」は、メールの配信プロトコルを実行するプログラムです。Solaris オペレーティング環境に搭載されているローカル配信エージェントについては以下に述べます。
UUCP ローカル配信エージェントは uux を使ってメールを配信します。
標準の Solaris リリースでは mail.local であるローカル配信エージェントを配信します。
第 24 章「メールサービスの新機能 (リファレンス)」では、以下の関連項目について説明します。
「メールプログラム」は、sendmail 固有の用語です。メールプログラムは sendmail によって使用され、カスタマイズしたローカル配信エージェントまたはカスタマイズされたメール転送エージェントの特定のインスタンスを指定します。sendmail.cf ファイルに少なくとも 1 つのメールプログラムを指定する必要があります。作業手順については、第 22 章「メールサービス (手順)」 の sendmail.cf 構成ファイルの構築 (手順) を参照してください。 ここでは、2 種類のメールプログラムについて説明します。
メールプログラムの詳細については、http://www.sendmail.org/m4/readme.html または /usr/lib/mail/README を参照してください。
SMTP はインターネットで使用される標準のメールプロトコルです。このプロトコルが、メールプログラムを定義します。
smtp は、他のサーバーへの標準 SMTP 転送機能を提供します。
esmtp は、他のサーバーへの拡張 SMTP 転送機能を提供します。
smtp8 は、8 ビットデータを MIME に変更することなく、他のサーバーに SMTP 転送機能を提供します。
dsmtp は、F=% メールプログラムフラグを使ってオンデマンド配信機能を提供します。第 24 章「メールサービスの新機能 (リファレンス)」 の MAILER() の宣言についての変更点 と 配信エージェントの新しいフラグ を参照してください。
UUCP の使用は、できるだけ避けてください。説明については、http://www.sendmail.org/m4/uucp.html を参照するか、/usr/lib/mail/README で「UUCP メールプログラムの使用」という文字列を検索してください。
UUCP が、メールプログラムを定義します。
$=U クラスの名前が uucp-old に送られます。 uucp は、このメールプログラムの以前の名前です。 uucp-old メールプログラムはヘッダーでは感嘆符を用いるアドレスを使用します。
$=Y クラスの名前が uucp-new に送られます。 受信側の UUCP メールプログラムが単一の転送で複数の受信者を管理できる場合は、このメールプログラムを使用します。suucp は、このメールプログラムの以前の名前です。 uucp-new メールプログラムはヘッダーで感嘆符を用いるアドレスも使用します。
構成に MAILER(smtp) も指定されている場合は、さらに以下の 2 つのメールプログラムが定義されます。
このメールプログラムは、ドメインスタイルアドレスを使用し、基本的に SMTP のリライトルールを適用します。
$=Z クラスの名前が uucp-uudom に送られます。 uucp-uudom と uucp-dom は、ドメインスタイルアドレスという同じヘッダーアドレスフォーマットを使用します。
smtp メールプログラムは UUCP メールプログラムを変更するので、.mc ファイルの MAILER(uucp) の前に必ず MAILER(smtp) を記述します。
「メールアドレス」には、受信者の名前と、メールメッセージが配信されるシステムが含まれます。ネームサービスを使用しない小さなメールシステムを管理する場合、メールのアドレス指定は簡単です。つまり、ログイン名がユーザーを一意に識別します。メールボックスを含む複数のシステムで構成されるメールシステム、または 1 つ以上のドメインで構成されるメールシステムを管理する場合は複雑になります。UUCP またはその他のメールシステムによってネットワーク外部のサーバーに接続する場合は、さらに複雑になります。以下の節で、メールアドレスの各部とその複雑さを説明しています。
電子メールのアドレス指定には、ドメインが使用されます。「ドメイン」は、ネットワークアドレスの命名のためのディレクトリ構造です。ドメインは 1 つ以上の「サブドメイン」を持つことができます。アドレスのドメインとサブドメインは、ファイルシステムの階層と比較できます。サブディレクトリが上位のディレクトリに含まれるように、メールアドレスの各サブドメインもその右のドメインに含まれると考えられます。
表 23–7 最上位のドメイン
ドメイン |
説明 |
---|---|
com |
企業 |
edu |
教育機関用 |
gov |
米国の政府機関 |
mil |
米国の軍事機関 |
net |
ネットワーク組織 |
org |
その他の非営利組織 |
ドメインには大文字と小文字の区別がありません。アドレスのドメイン部分には、大文字、小文字、またはその両方を区別なく混合して使用できます。
ドメインについての詳細は、『Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)』の「ドメインネームシステム (概要)」を参照してください。
ネームサービスドメイン名とメールドメイン名を操作するときは、以下のことに注意します。
sendmail プログラムは、デフォルトで NIS または NIS+ ドメイン名から最初の構成要素を取り除き、メールドメイン名とします。たとえば、NIS+ ドメイン名が bldg5.example.com の場合、メールドメイン名は example.com になります。
メールドメインアドレスは大文字と小文字の区別をしませんが、NIS または NIS+ ドメイン名は異なります。メールと NIS または NIS+ ドメイン名を設定するときは、小文字を使用するのが最善です。
DNS ドメイン名とメールドメイン名は同じでなければなりません。
詳細は、sendmail とネームサービスの相互作用を参照してください。
一般に、メールアドレスは次のような書式になります。詳細は、経路に依存しないメールアドレスを参照してください。
user@subdomain. ... .subdomain2.subdomain1.top-level-domain |
アドレスの @ 記号より左の部分はローカルアドレスです。ローカルアドレスには、以下の内容を含めることができます。
別のメールトランスポートを使用するルーティングに関する情報 (たとえば、bob::vmsvax@gateway または smallberries%mill.uucp@gateway)
別名 (たとえば、iggy.ignatz)
受信側のメールプログラムでアドレスのローカル部分を解釈する必要があります。 メールプログラムの詳細は、メールプログラムを参照してください。
アドレスの @ 記号より右の部分は、ローカルアドレスが位置するドメインレベルを示します。各サブドメインはドットで区切られます。アドレスのドメイン部分は、組織、物理的な場所、または地域を表すことができます。 さらに、ドメイン情報の順序は階層的で、ローカルなサブドメインほど @ 記号に近いサブドメインになります。
メールアドレスは、経路に依存しないアドレス指定ができます。経路に依存しないアドレス指定では、電子メールメッセージの発信者は、受信者の名前と最終の宛先を指定する必要があります。インターネットなどの高速ネットワークでは、経路に依存しないアドレスを使用します。経路に依存しないアドレスは次のような書式になります。
user@host.domain |
UUCP 接続の経路に依存しないアドレスは次のような書式になります。
host.domain!user |
コンピュータのドメイン階層命名方式が普及したため、経路に依存しないアドレスがより一般的になってきました。実際、次に示すように、もっとも一般的な経路に依存しないアドレスはホスト名を省略し、電子メールメッセージの最終宛先の識別をドメインネームサービスに任せています。
user@domain |
経路に依存しないアドレスは、まず @ 記号を検索して読み取られます。 次に、ドメイン階層が右 (最上位) から左 (@ 記号の右側にあるもっとも固有な部分) へと読み取られます。
「メールボックス」は、電子メールメッセージの最終的な宛先となるファイルです。メールボックス名には、ユーザー名または postmaster などの特定の機能の名前を指定できます。メールボックスは、ユーザーのローカルシステムかリモートのメールサーバーのいずれかの /var/mail/username ファイルにあります。ただし、いずれの場合でも、メールボックスはメールが配信されるシステム上にあります。
ユーザーエージェントがメールスプールからメールを取り出し、ローカルメールボックスに容易に格納できるように、メールは常にローカルファイルシステムに配信される必要があります。ユーザーのメールボックスの宛先として、NFS でマウントされたファイルシステムを使用しないでください。特にリモートサーバーから /var/mail ファイルシステムをマウントしているメールクライアントには、直接メールを送信しないでください。この場合ユーザー宛てのメールは、クライアントのホスト名ではなく、メールサーバーにアドレス指定する必要があります。NFS でマウントされたファイルシステムは、メールの配信と処理に問題を起こすことがあります。
/etc/mail/aliases ファイルと NIS や NIS+ といったネームサービスを利用すると、電子メールアドレスの別名を作成できます。したがって、ユーザーは、個々のユーザーのメールボックスの正確なローカル名を知る必要はありません。
次の表に、特殊な目的のメールボックスに対する共通の命名規則をいくつか示します。
表 23–8 メールボックス名の書式についての規則
sendmail バージョン 8 より、所有者の別名が存在する場合、グループの別名に送信されるメールの封筒の送信者は、所有者の別名から展開されるアドレスに変更されました。この変更によって、メールエラーは、送信者に返送されるのではなく、別名の所有者に送信されるようになりました。この変更によって、別名に送信されたメールは、別名の所有者から送信されたように見えます。次の別名の書式は、この変更に関連したいくつかの問題に対応します。
mygroup: :include:/pathname/mygroup.list owner-mygroup: mygroup-request mygroup-request: sandys, ignatz |
この例では、mygroup の別名が、このグループの実際のメール別名です。owner-mygroup の別名は、エラーメッセージを受信します。mygroup-request の別名は、管理の要求に使用してください。この構造は、mygroup の別名に送信されたメールでは、封筒の送信者が mygroup-request に変更されることを意味します。
「別名 (alias) 」とは、もう 1 つの別の名前を指します。電子メールでは、メールボックスの場所を割り当てたり、メールリストを定義したりするために別名を使用できます。作業マップについては、第 22 章「メールサービス (手順)」 の メール別名ファイルの管理 (作業マップ) を参照してください。 この章の メール別名ファイルも参照してください。
大きなサイトでは通常、メール別名は、メールボックスの場所を定義します。メール別名を提供することは、複数の部屋を占有する大きな会社の個人のアドレスに部屋番号を含めるようなものです。部屋番号を提供しない場合は、メールは中央アドレスに配信されます。部屋番号がなければ、ビルの内部のどこにメールを配信するかを特定するために余分な労力が必要になります。そして、誤りが発生する可能性も増加します。たとえば、同じ建物に Kevin Smith という名前の人が 2 人いる場合、一方だけがメールを受け取ることになる可能性があります。この問題を解決するには、それぞれの Kevin Smith のアドレスに部屋番号を追加する必要があります。
メールリストを作成するときは、なるべくドメインの場所に依存しないアドレスを使用してください。別名ファイルの移植性と柔軟性を高めるため、別名エントリをできるかぎり一般的でシステムに依存しない形式にしてください。 たとえば、システム mars のドメイン example.com に ignatz というユーザー名がある場合、別名は ignatz@mars ではなく、ignatz@example としてください。ユーザー ignatz がシステム名を変更しても、example ドメインには存在し続ける場合、システム名の変更を反映するように別名ファイルを更新する必要はありません。
別名エントリを作成するときは、1 行ごとに 1 つの別名を入力します。ユーザーのシステム名を含むエントリは 1 つだけにしてください。たとえば、ユーザー ignatz には、次のエントリを作成できます。
ignatz: iggy.ignatz iggyi: iggy.ignatz iggy.ignatz: ignatz@mars |
ローカル名やドメインに別名を作成できます。たとえば、システム mars にメールボックスがあり、ドメイン planets 内のユーザー fred の別名エントリでは、NIS+ 別名テーブルに次のエントリを作成できます。
fred: fred@planets |
ドメイン外のユーザーを含むメールリストを作成するときは、ユーザー名とドメイン名を持つ別名を作成してください。たとえば、example.com ドメインの privet システムに smallberries というユーザーが存在する場合は、smallberries@example.com という別名を作成します。送信者の電子メールアドレスは、メールがユーザードメイン外に発信されるときは、完全指定ドメイン名に自動的に変換されます。
以下に、メール別名のファイルを作成して管理する方法を示します。
NIS+ mail_aliases テーブル、NIS aliases マップ、または、ローカルの /etc/mail/aliases ファイルでグローバルに使用するメール別名を作成します。また、同じ別名ファイルを使用するメールリストを作成して管理することができます。
メールサービスの構成によっては、NIS または NIS+ ネームサービスを使って別名を管理し、グローバルな aliases データベースを持てます。または、すべてのローカル /etc/mail/aliases ファイルを更新して、別名の同期を維持することもできます。
また、ユーザー自身が別名を作成して使用できます。ユーザーは、別名をユーザーだけが使用できるようにローカル ~/.mailrc ファイルで作成することも、誰でも使用できるようにローカル /etc/mail/aliases ファイルで作成することもできます。通常の場合、ユーザーは NIS や NIS+ 別名ファイルの作成および管理はできません。
メールの構成に必要な 3 つの要素は、単一のシステムによって提供することも個別のシステムによって提供することもできます。
ユーザーがドメイン外のネットワークと通信をするためには、4 番目の要素であるメールゲートウェイを追加する必要があります。詳細は、メールゲートウェイ を参照してください。次の節では各ハードウェアコンポーネントについて説明しています。
「メールホスト」は、ネットワークのメインのメールマシンに指定するマシンです。メールホストはサイトにおいて、他のシステムでは配信できないメールを転送するためのマシンになります。hosts データベースにシステムをメールホストとして指定するには、ローカル /etc/hosts ファイルの IP アドレスの右に mailhost を追加します。 または、ネームサービスのホストファイルに mailhost を同じように追加することもできます。メールホストシステムでは、main.cf ファイルもメール構成ファイルとして使用する必要があります。作業手順については、第 22 章「メールサービス (手順)」 の メールホストを設定する方法 を参照してください。
メールホストとして適切なのは、ローカルエリアネットワーク上のシステムで、電話回線に PPP または UUCP リンクを設定するためのモデムがあるものです。もう 1 つの候補は、ネットワークからグローバルなインターネットネットワークへのルーターとして構成されたシステムです。詳細は、第 25 章「Solaris PPP 4.0 (概要)」、第 34 章「UUCP (概要)」、および『Solaris のシステム管理 (IP サービス)』の「ルーターの構成」を参照してください。ローカルネットワークのどのシステムにもモデムがない場合は、システムの 1 つをメールホストに指定します。
サイトの中には、タイムシェアリング構成でネットワークに接続されていないスタンドアロンのマシンを使用するものがあります。具体的に言うと、スタンドアロンのマシンが、シリアルポートに接続された端末として機能する場合です。このような構成では、スタンドアロンのシステムをシングルシステムネットワークのメールホストに指定することで、電子メールを設定できます。第 21 章「メールサービス (概要)」 の ハードウェアコンポーネントの概要に、典型的な電子メール構成を示す図があります。
「メールボックス」は、特定のユーザーの電子メールを含む単一のファイルです。メールは、ローカルマシンまたはリモートサーバーのユーザーのメールボックスが存在するシステムに配信されます。「メールサーバー」は、/var/mail ディレクトリにユーザーのメールボックスを保持しているいずれかのシステムになります。作業手順については、第 22 章「メールサービス (手順)」 の メールサーバーを設定する方法 を参照してください。
メールサーバーはクライアントからすべてのメールをルーティングします。クライアントがメールを送信すると、メールサーバーは配信のためにそのメールをキューに入れます。 メールがキューに入れられたら、ユーザーはこれらのメールメッセージを失わずに、クライアントをリブートしたり、電源を切ったりすることができます。 受信者がクライアントからメールを受け取ると、メッセージの「From」行のパスには、メールサーバー名が含まれます。受信者が応答すると、その応答はユーザーのメールボックスに送られます。メールサーバーとして適しているのは、ユーザーにホームディレクトリを提供するシステムか、定期的にバックアップされるシステムです。
メールサーバーがユーザーのローカルシステムでない場合、構成内で NFS ソフトウェアを使用するユーザーは、 root アクセスがあれば、/etc/vfstab ファイルを使用することによって、/var/mail ディレクトリをマウントできます。それ以外の場合は、オートマウンタを使用できます。NFS サポートが利用できない場合、ユーザーはサーバーにログインしてメールを読み込めます。
ネットワーク上のユーザーが、オーディオファイル、DTP システムからのファイルなど他の形式のファイルを送信する場合は、メールボックスのメールサーバーには、さらに多くの領域を割り当てる必要があります。
全メールボックス用に 1 台のメールサーバーを設定すると、バックアップ作業が簡単になります。メールが多くのシステムに分散しているとバックアップ作業が困難になる場合があります。1 台のサーバーに多くのメールボックスを保存する場合の短所は、サーバーに障害が発生した場合に多くのユーザーが影響を受けることです。ただし、十分なバックアップ機能を提供すれば、1 台のサーバーを採用する価値があります。
「メールクライアント」は、メールサーバーでメールを受信し、ローカルの /var/mail のないシステムです。 このような構成は、リモートモードと呼ばれます。リモートモードは、デフォルトでは /etc/mail/subsidiary.cf で使用することができます。
メールクライアントに対応するエントリが /etc/vfstab ファイルに指定されていることを確認する必要があります。 メールサーバーからメールボックスをマウントするためのマウントポイントが、メールクライアントに与えられていることを確認してください。またクライアントの別名の宛先が、クライアント名ではなく、メールサーバーのホスト名になっていることを確認してください。作業手順については、第 22 章「メールサービス (手順)」の メールクライアントを設定する方法を参照してください。
「メールゲートウェイ」は、異なる通信プロトコルを実行するネットワーク間の接続を処理したり、同じプロトコルを使用する異なるネットワーク間の通信を処理するマシンです。たとえば、メールゲートウェイでは、SNA (Systems Network Architecture) プロトコルセットを実行するネットワークに、TCP/IP ネットワークを接続する場合もあります。
設定のもxっとも簡単なメールゲートウェイは、同じプロトコルかメールプログラムを使用する 2 つのネットワークを接続するものです。このシステムでは、sendmail がドメインで受信者を見つけられないアドレスのあるメールを処理します。 メールゲートウェイがある場合、sendmail はメールゲートウェイを使用して、ドメイン外でメールの送受信を行います。
2 つのネットワーク間には、次の図に示すように内容の異なるメールプログラムを使ってメールゲートウェイを設定できます。この構成をサポートするには、メールゲートウェイシステムで sendmail.cf ファイルをカスタマイズする必要がありますが、これは困難で時間のかかる作業になる場合もあります。
メールゲートウェイを設定する場合に、必要とするものにもっとも近いゲートウェイ構成ファイルを見つけ、状況に合わせて修正する必要があります。
インターネットに接続できるマシンがある場合は、そのマシンをメールゲートウェイとして構成できます。メールゲートウェイを構成するときは、まずサイトのセキュリティ要件を慎重に考慮する必要があります。社内ネットワークを他のネットワークと接続するには、ファイアウォールゲートウェイを構築し、それをメールゲートウェイとして設定しなければならない場合があります。作業手順については、第 22 章「メールサービス (手順)」 の メールゲートウェイを設定する方法 を参照してください。
メールサービスには、相互に対応する数多くのプログラムやデーモンが含まれています。ここでは、電子メールの管理に関連するファイル、プログラム、用語、および概念について説明します。
次の表にメールサービスに使用する /usr/bin ディレクトリの内容を示します。
名前 |
形式 |
説明 |
---|---|---|
ファイル |
NIS+ 別名マップを処理するプログラム |
|
ファイル |
ユーザーエージェント |
|
ファイル |
メールを SunOS 4.1 メールボックスフォーマットに格納するフィルタ |
|
リンク |
/usr/lib/sendmail へのリンク。メールキューを表示するために使用 |
|
ファイル |
/etc/mail/statistics ファイルに格納されたメール統計情報の読み込みに使用するプログラム (存在する場合のみ) |
|
ファイル |
ユーザーエージェント |
|
ファイル |
アドレスの検証とデバッグのためメールプログラムに接続するプログラム |
|
ファイル |
別名データベースを表示するコマンド。praliases(1) のマニュアルページにあるコンパイルされていない情報を参照 |
|
リンク |
/usr/bin/mail へのリンク。メール送信だけに使用されるコマンド |
|
ファイル |
メールへの自動応答を設定するコマンド |
次の表に、/etc/mail ディレクトリの内容を示します。
名前 |
形式 |
説明 |
---|---|---|
ファイル |
mailtool ユーザーエージェントのデフォルトの設定値 |
|
ファイル |
メール転送情報 |
|
ファイル |
newaliases の実行によって作成されるデフォルトのバイナリ形式のメール転送情報 |
|
ファイル |
newaliases の実行によって作成されるバイナリ形式のメール転送情報まだ使用できるが、Solaris 9 ではデフォルトでは使用されない |
|
ファイル |
newaliases の実行によって作成されるバイナリ形式のメール転送情報まだ使用できるが、Solaris 9 ではデフォルトでは使用されない |
|
ファイル |
mailx ユーザーエージェントのデフォルトの設定値 |
|
ファイル |
メインシステム用の構成ファイルの例 |
|
ファイル |
リレーを許容するすべてのドメインのリスト。デフォルトでは、ローカルドメインだけが使用できる |
|
ファイル |
メールルーティング用の構成ファイル |
|
ファイル |
メール送信プログラム (MSP) のための新しい構成ファイル。詳細は、新しい構成ファイル submit.cf を参照 |
|
ファイル |
メールホスト用の別名の数が多すぎるときに作成可能なオプションファイル |
|
ファイル |
SMTP HELP コマンドで使用するヘルプファイル |
|
ファイル |
リスニングデーモンの PID をリストし、現在は /var/run にあるファイル |
|
ファイル |
sendmail 統計ファイル。このファイルが存在すると、sendmail は各メールプログラムのトラフィック量をログに記録する。このファイルは以前 sendmail.st と呼ばれていた。 |
|
ファイル |
サブシステム用の構成ファイルの例 |
|
ファイル |
特定のメール操作を実行するための信頼を与えられたユーザーをリストするファイル (各行 1 ユーザー)。デフォルトでは、root だけがこのファイルに入っている。信頼されていないユーザーが特定のメール操作を実行すると、X-Authentication-Warning: header being added to a message という警告が生成される |
表 23–9 にメールサービスに使用する /usr/lib ディレクトリの内容を示します。
表 23–9 /usr/lib ディレクトリの内容
名前 |
形式 |
説明 |
---|---|---|
ファイル |
メールボックスにメールを配信するメールプログラム |
|
ファイル |
メール転送エージェントとしても知られるルーティングプログラム |
|
ファイル |
sendmail の |program 構文を使用して /var/adm/sm.bin ディレクトリにあるプログラムに対して sendmail を実行できるプログラムを制限するシェルプログラム (sendmail に限定されたシェル)。/var/adm/sm.bin に含める内容については、smrsh(1M) のマニュアルページを参照。有効にするには、この m4 コマンドと FEATURE(`smrsh') を mc ファイルに含める |
/usr/lib ディレクトリには、sendmail.cf ファイルを構築するために必要なすべてのファイルを含む mail というサブディレクトリがあります。表 23–10 に mail ディレクトリの内容を示します。
表 23–10 メールサービスに利用する /usr/lib/mail ディレクトリの内容
名前 |
形式 |
説明 |
---|---|---|
ファイル |
構成ファイルの説明 |
|
ディレクトリ |
ホストのサイトに依存する、およびサイトに依存しない説明 |
|
ファイル |
以前は cf/main-v7sun.mc という名前のファイル 。メインの構成ファイル |
|
ファイル |
新しい構成ファイルを作成する場合の規則を提供する |
|
ファイル |
メッセージを送信するためのメール差し出しプログラム (MSP) のための構成ファイル |
|
ファイル |
以前は cf/subsidiary-v7sun.mc という名前のファイル。別のホストから /var/mail を NFS マウントするホストのための構成ファイル |
|
ディレクトリ |
サイトに依存するサブドメインの説明 |
|
ファイル |
Berkeley からの汎用ドメインファイル |
|
ファイル |
sendmail 関数を以前の Solaris 版のようにする変更を伴うドメインファイル。ただし、リレーは完全に無効に設定されるので、ホスト名のない送信者アドレスは拒否され、解決されないドメインは拒否される |
|
ファイル |
sendmail 関数を以前の Solaris 版のようにする変更を伴うデフォルトドメインファイル |
|
ディレクトリ |
特定のホスト用の特別な機能の定義を含む。機能の詳細な説明は README を参照 |
|
ディレクトリ |
サイトに依存しないインクルードファイルを含む |
|
ディレクトリ |
local、smtp、uucp などのメールプログラムの定義を含む |
|
ディレクトリ |
各種のオペレーティングシステム環境の説明 |
|
ファイル |
デフォルトのローカルメールプログラムを mail.local に定義する |
|
ファイル |
デフォルトのローカルメールプログラムを mail.local に定義する |
|
ファイル |
ローカルメールプログラムを mail に定義する |
|
ファイル |
ローカルメールプログラムを LMTP モードで mail.local に定義し、IPv6 を有効にし、sendmail.pid ファイルのディレクトリとして /var/run を指定する |
|
ディレクトリ |
m4 構築プロセスと移行補助に使用するシェルスクリプトを含む |
|
ファイル |
include: 別名と .forward ファイルのアクセス権、および正確なアクセス権に必要なこれらの親ディレクトリのパスを確認する |
|
ファイル |
sendmail が完全指定のホスト名を判別できることを確認する |
メールサービスは、その他のいくつかのファイルおよびディレクトリを使用します。これらを表 23–11 に示します。
表 23–11 メールサービスに使用するその他のファイル
メールサービスは以下のプログラムで構成され、図 23–2 のように作用します。
さらに詳しい図については、sendmail プログラムの機能 を参照してください。
以下に、メールプログラムの相互作用について説明します。
ユーザーは、mailx 、mailtool などのプログラムを使ってメッセージを送信します。これらのプログラムについては、mailx(1) または mailtool(1) のマニュアルページを参照してください。
メッセージは、そのメッセージを生成したプログラムによって収集され、sendmail デーモンに渡されます。
sendmail デーモンがメッセージのアドレスを識別可能な各部に分割して解析します。sendmail デーモンは、/etc/mail/sendmail.cf という構成ファイルの情報を使ってネットワーク名の構文、別名、転送情報、およびネットワークトポロジを決定します。sendmail はこの情報を使用して、メッセージが受信者に到達する経路を決定します。
sendmail デーモンはメッセージを適切なシステムに渡します。
ローカルシステムの /usr/lib/mail.local プログラムは、メッセージの受信者の /var/mail/username ディレクトリのメールボックスにメールを配信します。
受信者は、メールが届いたことが通知されるので、mail、mailx、mailtool などのプログラムを使用してメールを受け取ります。
以下に、 sendmail プログラムの機能の一部を示します。
sendmail は、TCP/IP や UUCP などの異なる通信プロトコルを使用できます。
sendmail は、SMTP サーバー、メッセージキュー、メーリングリストを実装します。
sendmail は、以下の命名規則に準拠したパターンマッチングシステムを使って名前の解釈を制御します。
ドメインベースの命名規則ドメインの手法は、物理的なネーミング対論理的なネーミングの問題を分離します。詳細は、メールアドレス を参照してください。
他のネットワークのホストからローカルに見えるネットワーク名を提供するなどの即席のテクニック
任意 (以前) の命名構文
異種の命名スキーム
Solaris オペレーティング環境では、sendmail プログラムをメールルーターとして使用します。 以下に、機能の一部を示します。
sendmail は、電子メールメッセージの受信と配信を担当します。
sendmail は、mail、mailx、 mailtool などのメール読み出しプログラムと uucp などのメール転送プログラムとのインタフェースです。
sendmail は、次の要領でユーザーが送信する電子メールメッセージを制御します。
受信者のアドレスを確認します。
適切な配信プログラムを選択します。
アドレスを配信エージェントが処理できるフォーマットに書き換えます。
必要に応じて、メールヘッダーをフォーマットし直します。
最後に転送されたメッセージをメール配信プログラムに渡します。
sendmail の詳細は、以下のトピックを参照してください。
sendmail プログラムでは、メールルーティングに必要な 3 つのメカニズムをサポートしています。 適切なメカニズムは、変更の種類によって決まります。
サーバーの変更
ドメイン全体の変更
単独のユーザーの変更
さらに、選択する再ルーティングメカニズムによって必要な管理レベルが異なります。次のオプションを考慮してください。
再ルーティングメカニズムの 1 つは別名です。
別名を使用すれば、使用するファイルの種類に基づいて、サーバー全体またはネームサービス全体をベースにしてアドレス名をマップできます。
以下に、ネームサービスの別名の長所と短所を示します。
ネームサービス別名ファイルを使用すれば、メール再ルーティングの変更を単一のソースで管理できます。ただし、ネームサービスの別名指定では、再ルーティングの変更を伝達する際に遅延が起こります。
通常、ネームサービスの管理は、特定のシステム管理者グループに制限されます。一般ユーザーは、このファイルを管理しません。
以下に、サーバー別名ファイルを使用する際の長所と短所を示します。
サーバー別名ファイルを使用すれば、指定されたサーバーの root になることができる任意のユーザーが再ルーティングを管理できます。
サーバー別名指定は、再ルーティングの変更を伝達する際の遅延はほとんどありません。
変更はローカルサーバーだけに影響します。ほとんどのメールが単一のサーバーに送信される場合は、影響が少なくなります。ただし、この変更を多くのメールサーバーに伝達する必要がある場合は、ネームサービスの別名指定を使用します。
一般ユーザーは、この変更を管理しません。
詳細は、この章の メール別名ファイルを参照してください。 作業マップについては、第 22 章「メールサービス (手順)」 の メール別名ファイルの管理 (作業マップ) を参照してください。
次のメカニズムは、転送です。
このメカニズムでは、ユーザーがメールの再ルーティングを管理できます。ローカルユーザーは、受信メールを以下の対象に再ルーティングできます。
別のメールボックス
別のメールプログラム
別のメールホスト
このメカニズムは、.forward ファイルによってサポートされます。.forward ファイルの詳細は、この章の .forward ファイルを参照してください。作業マップについては、第 22 章「メールサービス (手順)」の .forward ファイルの管理 (作業マップ)を参照してください。
最後のメカニズムは、取り込みです。
このメカニズムでは、root アクセス権を持たないユーザーも別名リストを保守できます。このメカニズムを提供するには、root ユーザーは、サーバー上の別名ファイル内に適切なエントリを作成する必要があります。このエントリが作成されると、ユーザーは必要に応じてメールをルーティングし直すことができるようになります。取り込みの詳細は、この章の /etc/mail/aliases ファイルを参照してください。 作業マップについては、第 22 章「メールサービス (手順)」 の メール別名ファイルの管理 (作業マップ) を参照してください。
図 23–3 は、sendmail がユーザー別名をどのように使用するかを示します。 /usr/bin/mailx のようなメールを読み取るプログラムは、プログラム自身の別名を持つことができ、それらはメッセージが sendmail に達する前に展開されます。sendmail の別名は、ローカルファイル、NIS、NIS+ など、さまざまなネームサービスソースからのものでもかまいません。検索順序は nsswitch.conf ファイルによって決定されます。nsswitch.conf(4) のマニュアルページを参照してください。
sendmail プログラムには、次のような機能があります。
sendmail は、信頼性の高いプログラムです。すべてのメッセージを正しく配信するように設計されています。どのようなメッセージも完全に失われることはありません。
sendmail は、既存のソフトウェアを配信に随時使用します。
sendmail は、1 つのネットワークタイプ (UUCP や Ethernet など) に複数の接続を行う場合なども含め、複雑な環境を処理するように構成できます。sendmail は、名前とその構文を確認し、どのメールプログラムを使用するかを判断します。
sendmail は、構成情報をコードにコンパイルする代わりに、構成ファイルを使ってメール構成を制御します。
ユーザーは独自のメーリングリストを管理できます。さらに各ユーザーは、ドメイン全体で有効な別名ファイル (通常、NIS または NIS+ によって管理されるドメイン全体の別名の中にある) を修正することなく自分自身の転送メカニズムを指定できます。
各ユーザーは、受信メールを処理するカスタムメールプログラムを指定できます。カスタムメールプログラムは、「I am on vacation. (私は休暇中です)」のようなメッセージを返すこともできます。詳細は、vacation(1) マニュアルページを参照してください。
sendmail は、1 つのホストでアドレスを処理し、ネットワークトラフィックを削減します。
図 23–4 には、sendmail がメールシステムで他のプログラムと相互作用する方法を示します。
図 23–4 に示すように、ユーザーはメール作成プログラムおよびメール送信プログラムと対話できます。メール送信が依頼されると、メール生成プログラムは sendmail を呼び出し、sendmail は適切なメールプログラムにメッセージを送信します。 発信者の一部はネットワークサーバーであったり、またメールプログラムの一部はネットワーククライアントであるため、sendmail は、インターネットメールゲートウェイとしても使用できます。このプロセスの詳細は、メールプログラム間の相互作用を参照してください。
構成ファイルは、sendmail がその機能を実行する方法を制御します。構成ファイルにより、配信エージェント、アドレスの変換の規則、およびメールヘッダのフォーマットが選択されます。
sendmail プログラムは、/etc/mail/sendmail.cf ファイルの情報を使用して、その機能を実行します。各システムには、/etc/mail ディレクトリにインストールされたデフォルトの sendmail.cf ファイルがあります。メールサーバーまたはメールクライアントのためにデフォルト構成ファイルを編集または変更する必要はありません。カスタマイズされた構成ファイルを必要とするシステムは、メールホストとメールゲートウェイだけです。
Solaris オペレーティング環境には、以下に示すように、/etc/mail ディレクトリに 3 つのデフォルト構成ファイルがあります。
メールホストまたはメールゲートウェイとして使用する 1 つまたは複数のシステムを指定するための、main.cf という名前の構成ファイル
デーモンモードの代わりにメール送信プログラムモードで sendmail を実行するために使用する submit.cf という名前の構成ファイル。詳細は、新しい構成ファイル submit.cfを参照
システムで使用する構成ファイルは、メールサービスのシステムの役割によって異なります。
メールホストやメールゲートウェイを設定するには、main.cf ファイルをコピーし、/etc/mail ディレクトリでファイル名を sendmail.cf に変更します。次に、 sendmail の構成ファイルを再構成して、リレーメールプログラムを設定して、メール設定に必要なホストパラメータをリレーします。 作業手順については、第 22 章「メールサービス (手順)」 の メールサービスの設定 (作業マップ) または sendmail.cf 構成ファイルの構築 (手順) を参照してください。
次に、サイトの要求に応じて変更が可能な構成パラメータをいくつか説明します。
以下の情報を指定する時間値
読み取りのタイムアウト。Timeout オプションの変更点を参照してください。
メッセージが送信者に返送されるまで、配信されずにキューに置かれる時間。キューの新しい機能を参照してください。作業マップについては、キューディレクトリの管理 (作業マップ)を参照してください。
メール配信の速度を指定する配信 (delivery) モード
長いメッセージ、多くの受信者へのメッセージ、および長時間ダウンしているサイトへのメッセージを配信しないことにより、ビジー期間中の効率を高めるためのロード制限
別名を保守するには、以下のファイル、マップ、またはテーブルを使用します。
別名を保守する方法は、誰が使用し、誰が変更するかによって決まります。別名のタイプにはそれぞれ固有の形式要件があります。
関連する作業については、第 22 章「メールサービス (手順)」の メール別名ファイルの管理 (作業マップ)を参照してください。
.mailrc ファイルのリストに入っている別名には、ファイルを所有するユーザーしかアクセスできません。この制限により、ユーザーは自分で制御し、所有者だけが使用できる別名を作成できます。.mailrc ファイルの別名は、次のようになります。
alias aliasname value value value ... |
aliasname は、ユーザーがメールの送信時に使用する名前であり、value は有効な電子メールアドレスです。
ユーザーが scott に個人的な別名を作成し、それがネームサービスの scott の電子メールアドレスと一致しない場合、そのユーザーが作成したメールにユーザーが返信しようとするときに、メールが間違ったユーザーに転送されることになります。これを回避するには、別の別名命名方式を使用する以外にありません。
/etc/mail/aliases ファイルで作成したいずれの別名も、その別名の名前とファイルを含んでいるシステムのホスト名を知っているユーザーなら誰でも使用できます。ローカルの /etc/mail/aliases ファイルの配布リストは、以下のようになります。
aliasname: value,value,value ... |
aliasname は、ユーザーがこの別名にメールを送信するときに使用する名前で、value は有効な電子メールアドレスになります。
ご使用のネットワークがネームサービスを実行していない場合は、各システムの /etc/mail/aliases ファイルにすべてのメールクライアントのエントリを入れておく必要があります。各システムのファイルを編集するか、1 つのシステムのファイルを編集してからそのファイルを他のシステムに個々にコピーします。
/etc/mail/aliases ファイルの別名は、テキスト形式で保存されます。/etc/mail/aliases ファイルを編集するときには、newaliases プログラムを実行する必要があります。このプログラムは、データベースをコンパイルし直し、sendmail プログラムが別名をバイナリ形式で使用できるようにします。作業手順については、第 22 章「メールサービス (手順)」の ローカルメール別名ファイルを設定する方法を参照してください。 それ以外の場合、Solaris 管理コンソールの「メーリングリスト」機能を使ってローカルの /etc ファイルに保存されているメール別名を管理できます。
別名を作成できるのは、ローカル名、つまり現在のホスト名に対してだけ、またはホスト名は指定できません。 たとえば、システム saturn 上にメールボックスを持っているユーザー ignatz に対する別名エントリは、以下のエントリを /etc/mail/aliases ファイル内に持っています。
ignatz: ignatz@saturn |
各メールサーバーに管理アカウントを作成する必要があります。管理アカウントを作成するには、メールサーバーのメールボックスを root に割り当て、root のエントリを /etc/mail/aliases ファイルに追加します。たとえば、システム saturn がメールボックスサーバーの場合は、エントリ root: sysadmin@saturn を /etc/mail/aliases ファイルに追加します。
通常は、root ユーザーだけがこのファイルを編集できます。ただし、Administration を使用する場合は、sysadmin グループであるグループ 14 のすべてのユーザーが、ローカルファイルを変更できます。または、以下のエントリを作成します。
aliasname: :include:/path/aliasfile |
aliasname は、ユーザーがメールを送信するときに使用する名前であり、/path/aliasfile は別名リストを含むファイルへの完全パスになります。別名ファイルには、各行に 1 つの電子メールエントリを入れ、その他の表記は付けないでください。
user1@host1 user2@host2 |
/etc/mail/aliases に追加のメールファイルを定義して、ログやバックアップコピーの管理もできます。以下のエントリでは、filename の aliasname に送信されるすべてのメールを格納します。
aliasname: /home/backup/filename |
また、メールを他のプロセスにルーティングすることもできます。次の例のように入力すると、メールメッセージのコピーが filename 内に格納され、コピーが出力されます。
aliasname: "|tee -a /home/backup/filename |lp" |
作業マップについては、第 22 章「メールサービス (手順)」 の メール別名ファイルの管理 (作業マップ) を参照してください。
ローカルドメインのすべてのユーザーは、NIS aliases マップのエントリを使用できます。 sendmail プログラムは、ローカルの /etc/mail/aliases ファイルの代わりに NIS aliases マップを使って送信アドレスを決定できるからです。詳細は、nsswitch.conf(4) のマニュアルページを参照してください。
NIS aliases マップの別名は、以下のようになります。
aliasname: value,value,value ... |
aliasname は、ユーザーがメールを送信するときに使用する名前であり、value は有効な電子メールアドレスです。
NIS aliases マップには、すべてのメールクライアント用のエントリを含めてください。一般にこれらのエントリを変更できるのは、NIS マスターの root ユーザーだけです。この種の別名は頻繁に変更される場合には適していません。次の構文例のように、他の別名ファイルをポイントする場合には役立ちます。
aliasname: aliasname@host |
aliasname はユーザーがメールを送信するときに使用する名前であり、host は /etc/mail/alias ファイルを含むサーバー用のホスト名です。
作業手順については、第 22 章「メールサービス (手順)」の 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"] |
表 23–12 に、NIS+ mail_aliases テーブルの 4 つの列を示します。
表 23–12 NIS+ mail_aliases テーブルの列
列 |
説明 |
---|---|
alias |
別名の名前 |
expansion |
sendmail の /etc/mail/aliases ファイルに現れる別名の値または別名のリスト |
options |
今後の使用のために予約された列 |
comments |
個々の別名のコメントのための列 |
NIS+ mail_aliases テーブルには、すべてのメールクライアントのエントリを含めてください。NIS+ aliases テーブルでは、aliasadm コマンドで、エントリの表示、作成、変更、および削除ができます。aliasadm コマンドを使用するには、aliases テーブルを所有する NIS+ グループのメンバーでなければなりません。作業手順については、第 22 章「メールサービス (手順)」の NIS+ mail_aliases テーブルの別名エントリを管理する方法を参照してください。 Solaris 管理コンソールの「メーリングリスト」機能を使用して NIS+ メール別名を管理することもできます。
新規の NIS+ aliases テーブルを作成する場合は、エントリを作成する前にテーブルを初期設定する必要があります。テーブルが存在するときは、初期設定は不要です。
ホームディレクトリに .forward ファイルを作成すれば、sendmail およびその他のプログラムは、メールのリダイレクトや送信にこのファイルを使用できます。以下の節を参照してください。
作業マップについては、第 22 章「メールサービス (手順)」の .forward ファイルの管理 (作業マップ)を参照してください。
以下に、容易に回避または修復できる状況を示します。
メールが宛先のアドレスに配信されない場合は、ユーザーの .forward ファイルをチェックします。ユーザーが host1 のホームディレクトリに .forward ファイルを置いている場合があります。この場合、メールは user@host2 に転送されます。host2 にメールが着信すると、sendmail は NIS または NIS+ 別名に user があるかどうかを確認し、メッセージを user@host1 に返送します。これによってループが発生し、メールのバウンスが増加します。
セキュリティの問題を予防するために、.forward ファイルは決して root または bin アカウントに入れないでください。必要な場合は、代わりに aliases ファイルを使ってメールを転送してください。
メール配信で .forward ファイルを有効に使用するために、アクセス権などの以下の設定が正しく適用されていることを確認します。
.forward ファイルへの書き込みは、ファイルの所有者に制限されます。この制限によって、他のユーザーに対するセキュリティを確保できます。
ホームディレクトリのパスは root だけが所有し、root だけが書き込めるようにする必要があります。たとえば、.forward ファイルが /export/home/terry にある場合、 /export および /export/home は root が所有し、root だけが書き込めるようにします。
また実際のホームディレクトリに書き込めるのは、そのユーザーだけでなければなりません。
.forward ファイルをシンボリックリンクにすることはできません。また、複数のハードリンクを持つこともできません。
.forward.hostname ファイルを作成すれば、特定のホストに送信されるメールをリダイレクトできます。たとえば、ユーザーの別名が sandy@phoenix.example.com から sandy@example.com に変更された場合は、sandy のホームディレクトリに .forward.phoenix ファイルを置きます。
% cat .forward.phoenix sandy@example.com "|/usr/bin/vacation sandy" % cat .vacation.msg From: sandy@example.com (via the vacation program) Subject: my alias has changed My alias has changed to sandy@example.com. Please use this alias in the future. The mail that I just received from you has been forwarded to my new address. Sandy |
この例では、メールが正しい宛先に転送され、送信者には別名の変更が通知されます。vacation プログラムではメッセージファイルは 1 つしか使用できないため、この場合 1 回につき 1 つのメッセージしか実行できません。ただし、メッセージが特定のホストに限定されない場合、.forward ファイルで複数のホストに同じ休暇メッセージファイルを使用できます。
転送メカニズムの拡張機能にはこの他に、.forward+detail ファイルがあります。detail 文字列には、演算子文字を除く任意の文字を使用できます。演算子文字とは、.:%&!^[]+ です。この種のファイルを使用すれば、他のユーザーが電子メールアドレスを無断で使用しているかどうかを確認できます。たとえば、あるユーザーが、誰かに電子メールアドレス sandy+test1@example.com を使用するように指示した場合、ユーザーは、この別名に配信されるメールを、アドレスに送信されるメールの中から識別できます。デフォルトにより、sandy+test1@example.com の別名に送信されたメールはすべて、この別名と .forward+detail ファイルと突き合わせて検査されます。ここで一致しない場合は、そのメールは最終的に sandy@example.com に配信されますが、ユーザーは、これらのメールの To: ヘッダ内の変更箇所を調べることができます。
このファイルは、sendmail のための初期設定用オプションを保存し、ホストをアップグレードしたときにオプションが除去されないようにするために使用します。次の変数を使用することができます。
クライアントデーモンで使用する追加オプションを選択します。クライアントデーモンは、クライアントだけのキュー (/var/spool/clientmqueue) の内容を確認し、クライアントキューランナーとして動作します。構文の確認は行われないため、この変数を変更するときは間違えないように注意してください。
CLIENTQUEUEINTERVAL には、QUEUEINTERVAL オプションと同様に、メールキューの実行間隔を設定します。ただし、CLIENTQUEUEINTERVAL オプションは、マスターデーモンではなくクライアントデーモンの機能を制御します。一般に、マスターデーモンはすべてのメッセージを SMTP ポートに配信できます。ただし、メッセージ負荷が高すぎる場合、またはマスターデーモンが実行されていない場合、メッセージはクライアントだけのキューである /var/spool/clientmqueue に入ります。次に、クライアントだけのキューをチェックするクライアントデーモンがクライアントキューを処理します。
SMTP クライアントとサーバーが、定期的なキューの実行を待たずに即座に対話を実行できるようにします。サーバーは、指定されたホストに送信されるキューを即座に配信できます。詳細は、etrn(1M) のマニュアルページを参照してください。
sendmail を起動するためのモードを選択します。-bd オプションを使用するか、未定義のままにしておきます。
マスターデーモンで使用される追加オプションを選択します。構文の確認は行われないため、この変数を変更するときは間違えないように注意してください。
マスターデーモンのメールキューの実行間隔を設定します。# は正の整数とし、その後に秒の場合は s、分の場合は m、時の場合は h、日の場合は d、週の場合は w を付けます。この構文は sendmail の起動前に確認されます。この間隔が負の場合、またはエントリの最後の文字が不適当な場合、この間隔は無視され、sendmail は 15 分のキュー間隔で起動します。
キューを実行するたびに新しいキューランナーを作成する代わりに、各実行の間に休止する単一の永続的なキューランナーを使用できるようにします。このオプションに設定可能な値は p だけです。p 以外に設定すると、このオプションは無効になります。
配信時にメールメッセージが辿る経路は、クライアントシステムの設定とメールドメインのトポロジによって異なります。メールホストやメールドメインの各追加レベルでは、別名のもう 1 つの解釈を追加できますが、ルーティングプロセスは基本的にほとんどのホストで同じになります。
クライアントシステムは、メールをローカルに受信できるようにセットアップできます。メールをローカルで受信することは、ローカルモードでの sendmail の実行として知られています。すべてのメールサーバーと一部のクライアントでは、ローカルモードがデフォルトです。ローカルモードのメールサーバーまたはクライアントでは、メッセージは以下の要領でルーティングされます。
次の例では、sendmail.cf ファイルに設定されたデフォルトの規則を使用することを前提にしています。
可能な場合はメール別名を展開し、ローカルのルーティングプロセスを再起動します。
ネームサービスでメール別名を確認し、見つかった場合に新しい値と置換することで、メールアドレスが展開されます。次にこの新しい別名が再度確認されます。
メールがローカルの場合、/usr/lib/mail.local に配信されます。
メールはローカルのメールボックスに配信されます。
メールアドレスがこのメールドメインにホストを含んでいると、そのホストにメールを配信します。
アドレスがこのドメインにホストを含んでいない場合、メールホストにメールを転送します。
メールホストはメールサーバーと同じルーティングプロセスを使用します。ただし、メールホストはホスト名に加えて、ドメイン名が宛先になっているメールも受信できます。
ここでは、 sendmail とネームサービスに適用されるドメイン名について説明します。さらに、ネームサービスを有効に利用するための規則、および sendmail とネームサービスの相互作用について説明します。詳細は、以下のトピックを参照してください。
関連する作業については、第 22 章「メールサービス (手順)」の sendmail で DNS を使用する方法または メール別名ファイルの管理 (作業マップ)を参照してください。
標準の sendmail.cf ファイルは、メールドメインを使ってメールを直接配信するか、あるいはメールホストを経由して配信するかを決定します。ドメイン内メールは直接 SMTP 接続経由で配信され、ドメイン間メールはメールホストに送られます。
セキュリティの高いネットワークでは、ほんの少数の選ばれたホストだけが、外部宛てのパケットを生成する権限を与えられています。ホストがメールドメインの外部のリモートホストの IP アドレスを持っている場合も、SMTP 接続の確立は保証されません。標準の sendmail.cf では次のことを仮定しています。
現在のホストは、パケットを直接メールドメイン外のホストに送信する権限がない
メールホストは、パケットを外部ホストに直接送信できる認可されたホストにメールを転送できます。実際には、メールホストが認可されたホストになることがあります。
このように仮定すると、ドメイン間メールの配信または転送はメールホスト側の責任です。
sendmail は各種の要件をネームサービスに課します。これらの要件の理解を深めるために、この節では、まずメールドメインからネームサービスドメインへの関係について説明します。次に個々の要件について説明します。以下を参照してください。
in.named(1M)、nis+(1)、nisaddent(1M)、および nsswitch.conf(4) のマニュアルページ
メールドメイン名はネームサービスドメイン名の接尾辞の 1 つでなければなりません。たとえば、ネームサービスのドメイン名が「A.B.C.D」ならば、メールドメイン名は次のうちのいずれかです。
A.B.C.D
B.C.D
C.D
D
メールドメイン名は、最初に設定されたときには、多くの場合ネームサービスドメインと同じになります。ネットワークが大きくなれば、ネームサービスドメインを小さく分割してネームサービスを管理しやすくすることができます。ただし、メールドメインは、一貫した別名を提供するために分割されないまま残ることがあります。
ここでは、sendmail がネームサービスに必要とする要件について説明します。
ネームサービスにおけるホストテーブルまたはマップは、次の 3 種類の gethostbyname() による問い合わせをサポートするように設定しなければなりません。
mailhost – いくつかのネームサービスの構成では、自動的にこの要件を満たします。
完全なホスト名 (たとえば、smith.admin.acme.com) – 多くのネームサービスの構成がこの要件を満たします。
短いホスト名 (たとえば、smith) – sendmail は、外部メールを転送するためにメールホストに接続する必要があります。メールアドレスが現在のメールドメイン内であるかどうかを判定するために、gethostbyname() が完全なホスト名で呼び出されます。エントリが見つかると、アドレスは内部にあるとみなされます。
NIS、NIS+、および DNS は、短いホスト名を引数にする gethostbyname() をサポートします。したがって、この要件は自動的に満たされます。
ネームサービス内に有効な sendmail サービスを確立するために、ホストネームサービスに追加された以下の 2 つの規則に従う必要があります。
完全なホスト名と短いホスト名の引数を持った gethostbyname() は、同一の結果を生成する必要があります。たとえば、両関数がメールドメイン admin.acme.com から呼び出された場合、gethostbyname (smith.admin.acme.com) と gethostbyname (smith) が同じ結果になるようにします。
共通のメールドメイン下のすべてのネームサービスドメインに対しては、短いホスト名による gethostbyname() で同じ結果を生じるようにします。たとえば、ebb.admin.acme.com ドメインおよび esg.admin.acme.com ドメインから smith.admin.acme.com メールドメインを呼び出した場合、どちらの場合も gethostbyname(smith) は同じ結果を返す必要があります。主なメールドメイン名は通常ネームサービスドメインより短く、このために各種ネームサービスにとって特別な意味のあるものになっています。
gethostbyname() 関数については、gethostbyname(3NSL) のマニュアルページを参照してください。
以下に、sendmail と NIS との相互作用について説明し、ガイドラインを示します。
メールドメイン名 – NIS をプライマリネームサービスとして設定している場合に、sendmail は、自動的に NIS ドメイン名の最初の構成要素を取り除いた結果をメールドメイン名として使用します。 たとえば、ebs.admin.acme.com は、admin.acme.com となります。
メールホスト名 – NIS のホストマップには、mailhost エントリが必要になります。
完全なホスト名 – 通常の NIS の設定では、完全なホスト名は認識されません。NIS に完全なホスト名を認識させようとするよりは、sendmail.cf ファイルを編集し %l を %y で置き換えて、sendmail 側からこの要件をなくしてください。この変更によって、sendmail のドメイン間のメール検出機能をオフにできます。ターゲットとするホストの IP アドレスを取得できれば、SMTP による直接配信が試みられます。NIS のホストマップに現在のメールドメインの外部のホストのエントリが含まれていないことを確認してください。もし、そのエントリがあれば、さらに sendmail.cf ファイルをカスタマイズする必要があります。
ホストの完全名および短縮名のマッチング – 前述した手順を参考にして、完全なホスト名による gethostbyname() をオフにしてください。
1 つのメールドメイン内の複数の NIS ドメイン – 共通のメールドメインの NIS のホストマップ中のホストのエントリは同じでなければなりません。たとえば、ebs.admin.acme.com ドメインのホストマップは、esg.admin.acme.com のホストマップと同じものにします。異なる場合には、ある NIS ドメインで有効なアドレスが他の NIS ドメインでは無効になることがあります。
作業手順については、第 22 章「メールサービス (手順)」の メール別名ファイルの管理 (作業マップ)を参照してください。
以下に、sendmail と NIS および DNS との相互作用について説明し、ガイドラインを示します。
メールドメイン名 – NIS をプライマリネームサービスとして設定している場合に、sendmail は、自動的に NIS ドメイン名の最初の構成要素を取り除いた結果をメールドメイン名として使用します。 たとえば、ebs.admin.acme.com は、admin.acme.com となります。
メールホスト名 – DNS の転送機能がオンになっていれば、NIS で解決できない照会は DNS に転送されるため、NIS ホストマップに mailhost エントリは必要ありません。
完全なホスト名 – NIS が完全なホスト名を認識できなくても、DNS が認識します。NIS と DNS の通常の設定手順を踏んでいる場合には、完全なホスト名の要件は満たされます。
ホストの完全名および短縮名のマッチング – NIS のホストテーブルにおけるすべてのホストエントリに対して、DNS にも対応するホストエントリが必要です。
1 つのメールドメイン内の複数の NIS ドメイン – 共通のメールドメインの NIS のホストマップ中のホストのエントリは同じでなければなりません。たとえば、ebs.admin.acme.com ドメインのホストマップは、esg.admin.acme.com のホストマップと同じものにします。異なる場合には、ある NIS ドメインで有効なアドレスが他の NIS ドメインでは無効になることがあります。
作業手順については、第 22 章「メールサービス (手順)」の sendmail で DNS を使用する方法と メール別名ファイルの管理 (作業マップ) 参照してください。
以下に、sendmail と NIS+ との相互作用について説明し、ガイドラインを示します。
メールドメイン名 - プライマリネームサービスとして NIS+ を設定していれば、sendmail は NIS+ の sendmailvars テーブルからメールドメインを確認できます。 この NIS+ テーブルには、キー列と値列が 1 つずつあります。メールドメインを設定するには、 1 つのエントリをこのテーブルに追加する必要があります。このエントリは、キー列に文字列 maildomain が、値列には自分のメールドメイン名が設定されている必要があります。たとえば、 admin.acme.com です。NIS+ では、sendmailvars テーブルにどのような文字列でも設定できますが、メールシステムが正常に機能するように接尾辞の規則が適用されます。nistbladm を使用して、maildomail エントリを sendmailvars テーブルに追加できます。以下の例では、メールドメインが NIS+ ドメインの接尾辞になっています。
nistbladm -A key="maildomain" value=<mail domain> sendmailvars.org_dir.<NIS+ domain> |
mailhost ホスト名 - NIS+ ホスト名には、mailhost エントリが必要です。
完全なホスト名 – NIS+ は、完全なホスト名を認識することができます。 通常の NIS+ の設定手順を行えば、この完全なホスト名の要件は満たされます。
ホストの完全名および短縮名のマッチング – この要件を満たすには、ホストテーブルでエントリをコピーします。 または、ユーザーネームサービスのドメイン中の全ホストのエントリを、メールドメインレベルのマスターホストテーブルに入力します。
1 つのメールドメイン内の複数の NIS ドメイン – この要件を満たすには、すべてのホストテーブルのエントリをコピーします。または、ユーザーネームサービスのドメイン中の全ホストのエントリを、メールドメインレベルのマスターホストテーブルに入力します。事実上、論理的または物理的に複数のホストテーブルを 1 つのホストテーブルにマージすることになります。したがって、メールドメインを共有する複数のネームサービスドメインで同じホスト名を使用することはできません。
作業手順については、第 22 章「メールサービス (手順)」の メール別名ファイルの管理 (作業マップ)を参照してください。
以下に、sendmail と NIS+ および DNS との相互作用について説明し、ガイドラインを示します。
メールドメイン名 – プライマリネームサービスとして NIS+ を設定していれば、sendmail は NIS+ の sendmailvars テーブルからメールドメインを確認できます。 この NIS+ テーブルには、キー列と値列が 1 つずつあります。メールドメインを設定するには、 1 つのエントリをこのテーブルに追加する必要があります。このエントリは、キー列に文字列 maildomain が、値列には自分のメールドメイン名が設定されている必要があります。たとえば、 admin.acme.com です。NIS+ では、sendmailvars テーブルにどのような文字列でも設定できますが、メールシステムが正常に機能するように接尾辞の規則が適用されます。nistbladm を使用して、maildomail エントリを sendmailvars テーブルに追加できます。以下の例では、メールドメインが NIS+ ドメインの接尾辞になっています。
nistbladm -A key="maildomain" value=<mail domain> sendmailvars.org_dir.<NIS+ domain> |
メールホスト名 – ネットワークがホストデータベースのソースとして NIS+ と DNS の両方を使用しているときは、mailhost エントリを NIS+ あるいは DNS ホストテーブルのいずれかに置くことができます。NIS+ と DNS の両方をホストデータベースのソースとして /etc/nsswitch.conf ファイルに含めるようにしてください。
完全なホスト名 – NIS+ も DNS も完全なホスト名を認識します。通常の NIS+ と DNS の設定手順を踏めば、この項目の要件は満たされます。
ホストの完全名および短縮名のマッチング – NIS+ ホストテーブルの全ホストエントリに対して、対応するホストエントリが DNS に必要です。
1 つのメールドメイン内の複数の NIS ドメイン – この要件を満たすには、すべてのホストテーブルのエントリをコピーします。または、ユーザーネームサービスのドメイン中の全ホストのエントリを、メールドメインレベルのマスターホストテーブルに入力します。
作業手順については、第 22 章「メールサービス (手順)」の メール別名ファイルの管理 (作業マップ)と sendmail で DNS を使用する方法を参照してください。
第 21 章「メールサービス (概要)」では、メールサービスのコンポーネントの概要および一般的なメール構成について説明しています。第 22 章「メールサービス (手順)」では、標準の構成ファイルを使用して、電子メールシステムを設定および管理する方法について説明しています。第 23 章「メールサービス (リファレンス)」では、メールサービスのコンポーネントについて、詳しく説明しています。 また、メールサービスのプログラムとファイル、メールルーティング処理、ネームサービスを使った sendmail の対話式操作についても説明しています。この章では、今回の Solaris 9 リリースに付属している sendmail バージョン 8.12 の新機能について説明します。 mail.local、mailstats、および makemap の変更点についての説明もあります。 また、この章では、新しい保守ユーティティ editmap についても説明します。 特定のトピックについては、下記のページを参照してください。
この章で扱っていないトピックについては、sendmail(1M)、mail.local(1M)、mailstats(1)、makemap(1M)、および editmap(1M) のマニュアルページを参照してください。sendmail バージョン 8.12 には、新しい構成ファイル /etc/mail/submit.cf が含まれています。この新しいファイル submit.cf を使用して、sendmail をデーモンモードではなく、メール差し出しプログラムモードで実行できます。 デーモンモードとは異なり、メール差し出しプログラムモードでは root 権限は必要ありません。そのため、この新しいパラダイムを使用すると、セキュリティが向上します。
submit.cf の機能については、次のリストを参照してください。
sendmail は、MSP (メール差し出しプログラム) モードでは submit.cf を使って実行します。submit.cf は、電子メールを送信したり、ユーザー以外の mailx のようなプログラムによって呼び出したりすることができます。 -Ac オプションおよび -Am オプションについては、コマンド行の新しいオプションまたは推奨されないオプション の説明を参照してください。
submit.cf は、次の操作モードで使用します。
-bm デフォルトの操作モード
-bs 標準入力を使用して SMTP を実行する
-bt アドレスの解決に使用されるテストモード
submit.cf を使用している場合には、sendmail は SMTP デーモンとして動作しません。
submit.cf を使用している場合には、sendmail はクライアント専用のメールキューである /var/spool/clientmqueue を使用します。このキューにより、sendmail デーモンに配信されなかったメッセージが保持されます。 クライアント専用キューにあるメッセージは、クライアントの「デーモン」によって配信されます。実際には、このデーモンが、クライアントキューを実行します。
デフォルトでは、sendmail は submit.cf を使用して、定期的に MSP キュー (クライアント専用キュー) である /var/spool/clientmqueue を実行します。
/usr/lib/sendmail -Ac -q15m |
次の事項に注意してください。
Solaris 9 オペレーティング環境をインストールまたはそれにアップグレードすると、submit.cf は自動的にインストールされます。
Solaris 9 オペレーティング環境をインストールする前に、submit.cf について計画および準備をする必要はありません。
構成ファイルを指定しないかぎり、sendmail は、必要に応じて、submit.cf を自動的に使用します。 基本的に、sendmail は各タスクについて、submit.cf と sendmail.cf のどちらを使用するのが適切かを判断できます。
submit.cf を変更することはできません。
構成ファイル sendmail.cf は、デーモンモードで使用します。このファイルを使用すると、sendmail は、メール転送エージェント (MTA) として動作します。sendmail は、root によって起動されます。
/usr/lib/sendmail -L sm-mta -bd -q1h |
sendmail.cf 特有の他の機能については、次のリストを参照してください。
デフォルトでは、sendmail.cf は、ポート 25 および 587 で SMTP 接続を受け入れます。
デフォルトでは、sendmail.cf がメインキュー /var/spool/mqueue を実行します。
submit.cf が追加されたため、次の機能が変更されました。
sendmail バージョン 8.12 では、root だけがメインキューを実行できます。 この変更の詳細については、mailq(1) のマニュアルページを参照してください。 新しい作業手順については、キューディレクトリの管理 (作業マップ) を参照してください。
メール通信プログラムモードは、root 権限がなくても実行されるので、sendmail が特定のファイル (.forward ファイルなど) にアクセスできないことがあります。したがって、sendmail に -bv オプションを追加すると、誤った項目が出力されることがあります。回避策はありません。
8.12 より前のバージョンの sendmail では、sendmail デーモンを実行しない場合、つまりデーモンモードで実行しない場合は、受信メールの配信を防止することしかできませんでした。バージョン 8.12 では、デフォルトの構成で、sendmail デーモンを実行しない場合でも、送信メールの配信を防止することができます。クライアントキューランナー (メール通信プログラム) を設定して、ローカル SMTP ポートのデーモンにメールを送信できるようにする必要があります。クライアントキューランナーが SMTP のセッションをローカルホストで開こうとした場合で、デーモンが SMTP ポートで待機していないときには、メールはキューにとどまります。デフォルトの構成では、デーモンが実行されます。そのため、デフォルト構成を使用する場合には、この問題は発生しません。ただし、デーモンを無効にした場合の解決方法については、代替構成を使用したメール配信の管理 (手順) を参照してください。
次の表では、sendmail の新しいコマンド行オプションについて説明します。 コマンド行の他のオプションについては、sendmail(1M) のマニュアルページを参照してください。
表 24–1 sendmail のコマンド行の新しいオプション
オプション |
説明 |
---|---|
オペレーションモードが新しいメールの差し出し依頼を示していない場合でも、構成ファイル submit.cf を使用する。 submit.cf の詳細については、新しい構成ファイル submit.cf を参照 |
|
オペレーションモードが新しいメールの差し出し依頼を示している場合でも、構成ファイル sendmail.cf を使用する。 詳細は、新しい構成ファイル submit.cf を参照 |
|
各キューのエントリ数を出力する |
|
コマンド行から送信したメッセージが、新たな差し出しを依頼するものではなく、リレーするものであることを示す。 アドレスが絶対パスではない場合は、メッセージは拒否される。正規化は実行されない。 ftp://ftp.sendmail.org で sendmail とともに配布しているリリースノートで説明しているように、将来のリリースでは、不適切な形式のメッセージを拒否される可能性がある |
|
指定された syslog メッセージに使用する識別子を タグ (tag) に設定する |
|
受信者にこの部分文字列 (substring) を含むジョブだけを処理する。オプションに !を追加すると、受信者にこの部分文字列 (substring) を含まないジョブだけを処理する |
|
キュー ID にこの部分文字列 (substring) を含むジョブだけを処理する。オプションに ! を追加すると、キューID にこの部分文字列 (substring) を含まないジョブだけを処理する |
|
送信者にこの部分文字列 (substring) を含むジョブだけを処理する。オプションに ! を追加すると、送信者にこの部分文字列 (substring) を含まないジョブだけを処理する |
|
キューにあるメッセージをシステムコール fork を使用しないで一度処理し、フォアグラウンドで処理を実行する。 fork(2) のマニュアルページを参照 |
|
キューグループ「name (名前)」にあるメッセージだけを処理する |
|
各キュー用にフォークされた子を使用して、キューに保存されているメッセージを指定した間隔で処理する。 次にキューが実行されるまでの間、この子は動作しない。この新しいオプションは -qtime に似ている。-qtime は、定期的に子をフォークしてキューを処理する |
|
ftp://ftp.sendmail.org で sendmail とともに配布しているリリースノートで説明しているように、このオプションは、バージョン 8.12 では使用できない。メールユーザーエージェントでは、引数 -G を使用する必要がある |
この節では、構成ファイルの新しいオプションと改訂されたオプションについて、また次の関連トピックについて説明しています。
これらのオプションを宣言する場合は、次の構文のどれかを使用します。
O OptionName=argument # 構成ファイル -OOptionName=argument # コマンド行 define(`m4Name',argument) # m4 を使った構成記述 |
新しい sendmail.cf ファイルを構築する必要がある場合は、第 22 章「メールサービス (手順)」 の sendmail.cf 構成ファイルの構築 (手順) を参照してください。
次の表では、sendmail の新しいオプションおよび改訂されたオプションについて説明しています。
表 24–2 sendmail の新しいオプションおよび改訂されたオプション
オプション |
説明 |
---|---|
m4 名 : confBAD_RCPT_THROTTLE 引数 : 数値 この新しいオプションを使用して、受信者のしきい値が拒否された後、SMTP エンベロープ内の受信者を承認する率を制限する |
|
詳細については、新しい ClientPortOptions オプション を参照 |
|
m4 名 : confCONNECTION_RATE_THROTTLE 引数 : 数値 ConnectionRateThrottle オプションを使用して、各デーモンへの合計接続数ではなく、1 秒あたりの接続数を制限する |
|
m4 名 : confCONTROL_SOCKET_NAME 引数 : ファイル名。推奨ソケット名は /var/spool/mqueue/.smcontrol。セキュリティを向上させるために、この UNIX ドメインソケットを、root だけがアクセスできるディレクトリに置く この新しいオプションを設定すると、デーモン管理用の制御ソケットが作成される。このオプションを使用して、指定した名前のソケットを使って実行した sendmail デーモンの状態を、外部のプログラムから制御したり照会したりすることができる。このソケットは、INN ニュースサーバーに対する ctlinnd インタフェースに似ている。このオプションを設定しないと、制御ソケットは使用できない |
|
詳細については、DaemonPortOptions オプションの変更点を参照 |
|
m4 名 : confDF_BUFFER_SIZE 引数 : 数値 この新しいオプションを指定すると、ディスクベースのファイルを使用する前にメモリーに蓄積できるデータ (df) ファイルの最大サイズを、バイトで制御できる。 デフォルトは 4096 バイト。Solaris オペレーティング環境のデフォルトを変更する必要はない |
|
m4 名 : confDEAD_LETTER_DROP 引数 : ファイル名 この新しいオプションを使用して、システム全体のファイル dead.letter の場所を定義する。前のバージョンでは、このファイルは /usr/tmp/dead.letter に固定されていた。このオプションを設定する必要はない |
|
m4 名 : confDELAY_LA 引数 : 数値 この新しいオプションに 0 より大きな値を設定すると、次のように動作する 平均負荷率が指定値を超えると、接続を 1 秒ずつ遅らせる ほとんどの SMTP コマンドを 1 秒ずつ遅れて実行する デフォルト値が 0 であるため、このオプションを設定しないと sendmail の動作は変更されない |
|
m4 名 : confDELIVER_BY_MIN 引数 : 時間 この新しいオプションを使用して、クライアントは、RFC 2852 の「Deliver By SMTP Service Extension」で指定されているように、電子メールメッセージを配信する際の最短時間を指定できる time を 0 に設定すると、時間は表示されない time を 0 より小さくすると、拡張は利用できない time を 0 より大きくすると、その拡張した時間が EHLO のキーワードである DELIVERBY の最短時間として表示される |
|
m4 名 : confDIRECT_SUBMISSION_MODIFIERS 引数 : 修飾子 この新しいオプションにより、直接の実行依頼 (コマンド行) の ${daemon_flags} を定義する。このオプションを設定しない場合、${daemon_flags} の値はオプション -G を使用すると CC f に、使用しないと c u になる |
|
新たに、次の引数を使用できる 引数 NonRootSafeAddr が追加された。sendmail に .forward プログラムを実行したり、所有者としてそのファイルに配信する権限がない場合には、アドレスは「安全ではない」とマークされる。 また、RunAsUser を設定すると、プログラムを使用したり、.forward プログラムのファイルに配信したりすることができない。 これらの問題を解決するには、NonRootSafeAddr を使用する |
|
m4 名 : confDOUBLE_BOUNCE_ADDRESS 引数 : アドレス。デフォルトは、postmaster sendmail がエラーメッセージを送信する際にエラーが発生した場合には、sendmail は、このオプションの引数で指定したアドレスに、「double-bounced」エラーメッセージを送信する |
|
m4 名 : confFALLBACK_MX 引数 : 完全指定ドメイン名 このオプションを使用して、MX レコードを参照することができる。MX レコードを参照しない前のバージョンのオプションを使用するには、名前を角括弧で括って指定する |
|
m4 名 : confFAST_SPLIT 引数 : 数値。デフォルト値は 1 この新しいオプションを指定すると、次の動作を実行する このオプションを 0 より大きな値に設定する場合、アドレスをソートする場合、最初の MX 参照を行わない。そのため、エンベロープをより高速に分割できる メールをコマンド行から送信する場合は、この値により、エンベロープを配信するのに使用するプロセスの数を制限できる さらに多くのエンベロープが作成されると、エンベロープはいったんキューに置かれ、キューが実行されると解釈処理される |
|
m4 名 : confLDAP_DEFAULT_SPEC 引数 : 適切に定義されたクラス指定。たとえば、-hhost、-pport、-dbind DN など この新しいオプションを使用して、LDAP マップのデフォルトのマップ仕様を指定できる。 K コマンドを使って個別のマップ仕様を作成しないかぎり、ここで行われたデフォルトの設定が、すべての LDAP マップに使用される。このオプションを設定してから、LDAP マップを定義する |
|
m4 名 : confMAILBOX_DATABASE 引数 : デフォルト値は pw。これは、getpwnam() を使用する。他の値を使用することはできない この新しいオプションにより、ローカルな受信者を確認するのに使用されるメールボックスデータベースのタイプを指定できる |
|
m4 名 : confMAX_HEADERS_LENGTH 引数 : 数値 このオプションにより、全ヘッダーの合計した最大の長さを指定できる。また、このオプションを使用して、サービス拒否害攻撃を防止できる。 デフォルト値は 32768。 16384 より小さい値を使用すると、警告が発行される。 Solaris オペレーティング環境のデフォルト値を変更する必要はない |
|
m4 名 : confMAX_MIME_HEADER_LENGTH 引数 : 数値 このオプションにより、特定の MIME ヘッダ ーフィールド値の最大の長さを、文字数 x に設定できる。また、ヘッダー内のパラメータについては、y の最大の長さを指定できる。値を結合すると、「x/y」のようになる。y を指定しない場合には、x の半分の値が使用される。 デフォルト値は 0 であるため、値を指定しないと、確認が実行されない。 このオプションは、メールユーザーエージェントをバッファーオーバーフロー攻撃から保護する目的で提供されている。推奨値の範囲は、256/128 から 1024/256。128/40 より小さい値を使用すると、警告が発行される。 |
|
m4 名 : confMAX_QUEUE_CHILDREN 引数 : 数値 この新しいコマンドにより、同時にアクティブになるキューランナー処理の数を引数で指定した値に制限できる。このオプションを使用すると、キューの処理時に使用されるシステム資源を制限できる。複数のキューグループにおけるキューランナーの合計数が定義した引数を超えると、残りのキューグループは、後で実行される |
|
m4 名 : confMAX_RCPTS_PER_MESSAGE 引数 : 数値 このオプションを設定すると、SMTP エンベロープ内の受信者が指定した数を超えないようにする。最小の引数は 100。このオプションは、コマンド行からも、構成ファイルからも宣言できる。ただし、通常のユーザーは、コマンド行からこのオプションを設定し、sendmail -bs を使って送信したメッセージの上書きを有効にすることができる。この場合でも、sendmail は、その root 権限を放棄しない |
|
m4 名 : confMAX_RUNNERS_PER_QUEUE 引数 : 数値。デフォルト値は 1。リソースについてよく考慮し、この値を高く設定しないように注意する この新しいオプションにより、1 キューグループあたりのキューランナーの最大数を指定できる。複数のキューランナーは、キューグループのメッセージを並行処理する。この動作は、前のメッセージ処理が原因で次のメッセージの処理が遅れる可能性がある場合に便利である |
|
m4 名 : confNICE_QUEUE_RUN 引数 : 数値 この新しいオプションにより、キューランナーの優先順位を設定できる。nice(1) のマニュアルページを参照 |
|
m4 名 : confPID_file 引数 : PidFile オプションおよび ProcessTitlePrefix オプションのその他の引数 を参照 この新しいオプションにより、pid ファイルの場所を定義できる。 ファイルを開く前に、そのファイル名がマクロで展開される。デフォルトは /var/run/sendmail.pid |
|
詳細については、PrivacyOptions オプションの変更点 を参照 |
|
m4 名 : confPROCESS_TITLE_PREFIX 引数 : PidFile オプションおよび ProcessTitlePrefix オプションのその他の引数 を参照 この新しいオプションにより、/usr/ucb/ps auxww にリストされるプロセスのタイトルについて、接頭辞の列を指定できる。この文字列はマクロで処理される。Solaris オペレーティング環境のデフォルト値を変更する必要はない |
|
m4 名 : confQUEUE_FILE_MODE 引数 : 数値 この新しいオプションを使用すると、キューファイルのデフォルトアクセス権を 8 進数で指定できる。このオプションを設定しないと、sendmail は 0600 を使用する。ただし、オプションの実ユーザー ID と実行ユーザー ID が異なる場合には、sendmail は 0644 を使用する |
|
m4 名 : confQUEUE_LA 引数 : 数値 デフォルト値は、8 からシステム起動時にオンラインであるプロセッサ数の 8 倍に変更された。 単一プロセッサマシンでは、このデフォルト値の変更による影響はない。 この値を変更するとデフォルト値が無効になり、プロセッサ数を考慮しなくなる。 そのため、値を変更することによる影響について、よく理解する必要がある |
|
m4 名 : confQUEUE_SORT_ORDER このオプションにより、キューのソートに使用するアルゴリズムを設定する。デフォルト値は priority であり、キューをメッセージの優先順位でソートする。 次の変更に注意してください。 host の引数は、ホスト名を逆にしてからソートを実行する。つまり、ドメインをグループ化して、キューを同時に実行する。このように改良されたため、接続キャッシュがある場合には、それをより有効に使用できる 新しい引数 filename は、キューをファイル名でソートする。この動作によって、キューを実行する準備をする際に、各キューにあるファイルを開いたり読み込んだりすることを避けることができる 新しい引数 modification は、キューを変更日時でソートし、qf ファイルのエントリを古い順に実行する 新しい引数 random は、キューを無作為にソートする。こうすると、複数のキューランナーを手動で開始する際に、回線争奪を避けることができる 詳細については、sendmail(1M) マニュアルページの「QueueSortOrder」を参照 |
|
m4 名 : confREFUSE_LA 引数 : 数値 デフォルト値は、12 からシステム起動時にオンラインであるプロセッサ数の 12 倍に変更された。 単一プロセッサマシンでは、このデフォルト値の変更による影響はない。 この値を変更するとデフォルト値が無効になり、プロセッサ数を考慮しなくなる。 そのため、値を変更することによる影響について、よく理解する必要がある |
|
このオプションについては、2 つの点が変更された ホスト名を正規化しようとする時、不具合が発生したネームサーバーが IPv6 T_AAAA 参照について一時障害メッセージ SERVFAIL を返すことがある。新しい引数 WorkAroundBrokenAAAA を使用して、このような動作を避けることができる また、引数 RES_USE_INET6 は、新しいフラグ use_inet6 を使って制御できる。詳細は、resolver(3RESOLV) のマニュアルページを参照 |
|
m4 名 : confRRT_IMPLIES_DSN 引数 :true または false この新しいオプションを設定すると、「Return-Receipt-To:」ヘッダーによって DSN (Delivery Status Notification) が要求され、エンベロープの送信側に DNS が送信される。DSN はヘッダーで指定されているアドレスには送信されない |
|
m4 名 : confMIME_FORMAT_ERRORS 引数 : true または false デフォルトは true |
|
m4 名 : confSHARED_MEMORY_KEY 引数 : 数値 この新しいオプションを使用すると、共有メモリーがある場合に、それを使ってキューのファイルシステム用の容量を保存できる。このオプションにより、空き容量を確認するシステムコールの数を最小限にすることができる |
|
m4 名 : confSAFE_QUEUE 引数 : true、false、または interactive。デフォルト値および推奨値は true。false は使用しないこと このオプションを true に設定すると、キューのファイルをすぐに配信する場合でも、それらは常にインスタンス化される。 interactive と DeliveryMode=i を同時に使用して、このモード用に、コード実行パスで重複している同期コールをスキップすることができる |
|
詳細については、Timeout オプションの変更点 を参照 |
|
m4 名 : confTRUSTED_USER 引数 : ユーザー名またはユーザー ID の数値 この新しいオプションを使用して、root の代わりに重要なファイルを所有するユーザー名を指定することができる。このオプションを設定すると、そのユーザーは、生成された別名データベースと、設定した場合には制御ソケットを自動的に所有する。このオプションには、HASFCHOWN を設定する必要がある。HASFCHOWN については、sendmail のコンパイルに使用できるフラグと使用できないフラグ を参照 TrustedUser、root、およびクラス t ($=t) のユーザーだけが、別名マップを構築できる |
|
m4 名 : confUSE_MSP 引数 : true または falseデフォルトは、false この新しいオプションにより、グループが sendmail バイナリのグループ ID セットグループと同じ場合には、キューファイルをそのグループについて書き込み可能にすることが許可される。 submit.cf では、このオプションを true に設定する必要がある |
|
m4 名 : confXF_BUFFER_SIZE 引数 : 数値 この新しいオプションを指定すると、ディスクベースのファイルを使用する前にメモリーに蓄積できるトランスクリプト (xf) ファイルの最大サイズを、バイトで制御できる。 デフォルトは 4096 バイト。Solaris オペレーティング環境のデフォルトを変更する必要はない |
構成ファイルで推奨されないオプションについては、次の表を参照してください。この表には AutoRebuildAliases オプションが記載されていますが、このオプションは、sendmail バージョン 8.12 には含まれていません。
表 24–3 sendmail の構成ファイルにおける推奨されないオプションまたはサポートされていないオプション
オプション |
説明 |
---|---|
このオプションを設定するとサービス妨害攻撃が実行されることがあるため、このオプションは sendmail バージョン 8.12 には含まれていない。ftp://ftp.sendmail.org で sendmail とともに配布しているリリースノートを参照。 別名ファイルを構築中に、sendmail の処理を停止して、そのファイルを矛盾した状態のままにすることができる さらに、AutoRebuildAliases を使用できないため、/etc/mail/aliases に加えた変更を適用するには、newaliases を手動で実行する必要がある。また、このバージョンでは、sendmail は setuid root ではないため、root だけが newaliases を実行できる |
|
このオプションのデフォルトは True になっており、その使用を推奨されていない ftp://ftp.sendmail.org で sendmail とともに配布しているリリースノートを参照 |
|
このオプションは推奨されていない。 必要に応じて、GroupWritableForwardFileSafe および GroupWritableIncludeFileSafe の引数を DontBlameSendmail オプションに使用する必要がある |
|
このオプションは推奨されていない。 また、このオプションは RFC 1123 に違反するため、使用しないこと |
新しく追加された ClientPortOptions オプションは発信接続に使用します。このオプションは、DaemonPortOptions オプションに似ています。このオプションにより、クライアントの SMTP オプションが設定されます。クライアントの SMTP オプションは、一連の key=value ペアです。 このオプションを宣言するには、次の構文のどれかを使用します。 フォーマットのために、これらの例には 2 組のペアが含まれています。 ただし、1 組以上のペアを適用できます。
O ClientPortOptions=pair,pair # 構成ファイル -OClientPortOptions=pair,pair # コマンド行 define(`confCLIENT_OPTIONS',`pair,pair') # m4 を使った構成記述 |
新しい sendmail.cf ファイルを構築する必要がある場合は、第 22 章「メールサービス (手順)」 の sendmail.cf 構成ファイルの構築 (手順) を参照してください。
次の表では、このオプションの新しいキーについて説明しています。
表 24–4 ClientPortOptions の新しいキー
キー |
説明 |
---|---|
Addr |
アドレスマスクを指定する。 この値は、ドット表記した数値のアドレスにすることも、ネットワーク名にすることもできる。このペアが省略されると、デフォルトは INADDR_ANY となり、どのネットワークからの接続も受け入れる |
Family |
アドレスファミリーを指定する。 AF_INET のキーのデフォルトは inet。 他の値は、AF_INET6 には inet6、AF_ISO には iso、AF_NS には ns、AF_CCITT には x.25 である |
Listen |
待機キューのサイズを指定する。 キーのデフォルトは 10。 Solaris オペレーティング環境のデフォルトを変更する必要はない |
Port |
待機ポートの名前および番号を指定する。 キーのデフォルトは smtp |
RcvBufSize |
TCP/IP 送信バッファーのサイズを指定する。キーにはデフォルト値がないため、サイズが自動的に設定されることはない。このオプションを 0 より大きな値に設定すると、その値が使用される。Solaris オペレーティング環境では、このバッファーのサイズを制限する必要はない |
Modifier |
次のような sendmail のフラグを指定する h フラグは、HELO または EHLO コマンドに、送信インタフェースアドレスに対応する名前を使用する。これは、その名前が接続パラメータで選択されたものであっても、デフォルトのものであっても同様である A フラグは、AUTH を無効にする。このフラグは、DaemonPortOptions の Modifier キーに使用できる。DaemonPortOptions オプションの変更点 を参照 S フラグは、電子メールの配信中または受信中に、STARTTLS を使用できないようにしたり、それを提供したりしないようにする |
このオプションを宣言するには、次の構文のどれかを使用します。 この例では、pair は key=value を示します。フォーマットのために、これらの例には 2 組のペアが含まれています。 ただし、1 組以上のペアを適用できます。
O DaemonPortOptions=pair,pair # 構成ファイル -ODaemonPortOptions=pair,pair # コマンド行 define(`confDAEMON_OPTIONS',`pair,pair') # m4 を使った構成記述 |
セキュリティのリスクを少なくするために、このオプションをコマンド行から設定すると、sendmail はスーパーユーザーアクセス権を放棄します。
新しい sendmail.cf ファイルを構築する必要がある場合は、第 22 章「メールサービス (手順)」 の sendmail.cf 構成ファイルの構築 (手順) を参照してください。
次の表では、DaemonPortOptions オプションの新しいキーおよび改訂されたキーについて説明しています。
表 24–5 DaemonPortOptions の新しいキーおよび改訂されたキー
キー |
説明 |
---|---|
Name |
この新しいキーは、ユーザーが定義可能な sendmail の名前を指定する。このキーは、エラーメッセージおよびログに使用する。デフォルトは、MTA |
Modifier |
この新しいキーは、sendmail の値を指定する。この値は、区切り記号なしで、順番にリストすることができる。値のリストについては、表 24–6 を参照 |
Family |
DaemonPortOptions オプションで、Family を指定しないかぎり、inet だけがデフォルトとなる。また、IPv6 ユーザーが、IPv6 インタフェースに対しても待機するには、Family=inet6 設定を DaemonPortOptions オプションに追加して、追加ソケットを sendmail.cf に設定する |
次の表では、新しい Modifier キーの値について説明しています。
表 24–6 新しい Modifier キーの値
値 |
説明 |
---|---|
A |
Modifier 値を a にして、AUTH を無効にする ClientPortOptions の Modifier キーに使用できる。 新しい ClientPortOptions オプション を参照 |
C |
ホスト名の正規化を実行しない |
E |
ETRN コマンドを不許可にする |
O |
障害が発生したら、ソケットを無視する |
S |
電子メールの配信中または受信中に、STARTTLS を使用できないようにしたり、それを提供したりしないようにする ClientPortOptions の Modifier キーに使用できる |
a |
認証を要求する |
b |
メールを受信するインタフェースに結合する |
c |
ホスト名の正規化を実行する。この値は、構成ファイルの宣言でのみ使用する |
f |
完全指定ホスト名を要求する。この値は、構成ファイルの宣言でのみ使用する |
h |
送信 HELO コマンドに、インタフェース名を使用する |
u |
修飾されていないアドレスを使用する。この値は、構成ファイルの宣言でのみ使用する |
次の表では、PidFile オプションおよび ProcessTitlePrefix オプションにおけるマクロ処理の引数について説明します。これらのオプションについては、表 24–2 を参照してください。
表 24–7 PidFile オプションおよび ProcessTitlePrefix オプションの引数
マクロ |
説明 |
---|---|
${daemon_addr} |
0.0.0.0 などのデーモンアドレスを提供する |
${daemon_family} |
inet や inet6 などのデーモンファミリーを提供する |
${daemon_info} |
SMTP+queueing@00:30:00 などのデーモン情報を提供する |
${daemon_name} |
MSA などのデーモン名を提供する |
${daemon_port} |
25 などのデーモンポートを提供する |
${queue_interval} |
キューを実行する間隔を提供する (00:30:00 など) |
次の表では、PrivacyOptions (popt) の新しい引数および改訂された引数を説明しています。このオプションは、sendmail がその root 権限を放棄することなく、コマンド行から宣言できます。この sendmail オプションを宣言するには、次の構文のどれかを使用します。
O PrivacyOptions=argument # 構成ファイル -OPrivacyOptions=argument # コマンド行 define(`confPRIVACY_FLAGS',`argument') # m4 を使った構成記述 |
新しい sendmail.cf ファイルを構築する必要がある場合は、第 22 章「メールサービス (手順)」 の sendmail.cf 構成ファイルの構築 (手順) を参照してください。
次の表では、PrivacyOptions オプションの新しい引数および改訂された引数について説明しています。
表 24–8 PrivacyOptions の新しい引数および改訂された引数
引数 |
説明 |
---|---|
goaway |
この引数には、フラグ noetrn、restrictmailq、restrictqrun、restrictexpand、nobodyreturn、および noreceipts は使用できない |
nobodyreturn |
この引数は、元のメッセージの本文を DNS (Delivery Status Notifications) に含めないように、sendmail に指示する |
noreceipts |
この引数を設定すると、DSN (Delivery Status Notifications) が通知されない |
restrictexpand |
この引数は、root でも TrustedUser でもないユーザーが -bv オプションを指定した場合に、権限を解除するように sendmail に指示する。ユーザーは、.forward ファイルまたは :include: ファイルなどの非公開の別名を読み込むことができない。 また、この引数は、コマンド行オプションの -v を無効にする |
次の表では、Timeout オプションの変更点について説明しています。具体的に言うと、この sendmail オプションには、ident における新しいキーワードおよび新しい値があります。Solaris オペレーティング環境では、この表に表示されているキーワードのデフォルト値を変更する必要はありません。ただし、変更する場合には、keyword=value の構文を使用してください。この value は、時間の間隔です。次の例を参照してください。
O Timeout.keyword=value # 構成ファイル -OTimeout.keyword=value # コマンド行 define(`m4_name', value) # m4 を使った構成記述 |
新しい sendmail.cf ファイルを構築する必要がある場合は、第 22 章「メールサービス (手順)」 の sendmail.cf 構成ファイルの構築 (手順) を参照してください。
セキュリティのリスクを少なくするために、このオプションをコマンド行から設定すると、sendmail はスーパーユーザーアクセス権を放棄します。
キーワード |
デフォルト値 |
説明 |
---|---|---|
aconnect |
0 |
m4 名 : confTO_ACONNECT 1 回の配信について、すべての接続が成功するまでの合計時間を制限する。最大値は指定されていない |
control |
2m |
m4 名 : confTO_CONTROL 制御ソケットの要求を完了するまでにかかる合計時間を制限する |
ident |
5s |
m4 名 : confTO_IDENT デフォルトでは、30 秒ではなく 5 秒。IDENT パケットを欠落させるサイトへのメール送信が原因で発生する通常の遅延を防止する。最大値は指定されていない |
lhlo |
2m |
m4 名 : confTO_LHLO LMTP LHLO コマンドからの応答を待つ時間を制限する。最大値は指定されていない |
queuereturn |
5d |
m4 名 : confTO_QUEUERETURN 値 now を含める。こうすると、キューにあるエントリを配信しないで、すぐに戻すことができる |
resolver.retrans |
状況により異なる |
m4 名 : confTO_RESOLVER_RETRANS リゾルバによる再伝送の間隔を秒で指定する。この間隔は、resolver.retrans.first および resolver.retrans.normal に適用される |
resolver.retrans.first |
状況により異なる |
m4 名 : confTO_RESOLVER_RETRANS_FIRST リゾルバが、メッセージをはじめて配信する際の再送の間隔を秒で設定する |
resolver.retrans.normal |
状況により異なる |
m4 名 : confTO_RESOLVER_RETRANS_NORMAL リゾルバが、最初のメッセージ配信を除く、すべての参照を実行する際の再伝送の間隔を指定する |
resolver.retry |
状況により異なる |
m4 名 : confTO_RESOLVER_RETRY リゾルバクエリーを再送する回数を設定する。この回数は、Timeout.resolver.retry.first および Timeout.resolver.retry.normal に適用される |
resolver.retry.first |
状況により異なる |
m4 名 : confTO_RESOLVER_RETRY_FIRST メッセージをはじめて配信する際にリゾルバクエリーを再送する回数を設定する |
resolver.retry.normal |
状況により異なる |
m4 名 : confTO_RESOLVER_RETRY_NORMAL 最初のメッセージ配信を除く、すべてのリゾルバ参照を実行する際に、リゾルバクエリーを再送する回数を設定する |
次の表では、sendmail プログラムで使用するための新しいマクロについて説明しています。マクロの値は、内部で割り当てられています。詳細は、sendmail(1M) のマニュアルページを参照してください。
表 24–10 sendmail に定義されたマクロ
マクロ |
説明 |
---|---|
${addr_type} |
現在のアドレスを、エンベロープの送信側または受信者アドレスと認定する |
${client_resolve} |
${client_name} の解釈処理コールの結果、つまり OK、FAIL、FORGED、または TEMP を保持する |
${deliveryMode} |
DeliveryMode オプションの値ではなく、sendmail が使用している現在のデリバリモードを指定する |
${dsn_notify}、${dsn_envid}、${dsn_ret} |
対応する DSN パラメータ値を保持する |
${if_addr} |
インタフェースがループバックネット上にない場合に、受信接続用インタフェースのアドレスを提供する。このマクロは、特に仮想ホスティングに便利である |
${if_addr_out}、${if_name_out}、${if_family_out} |
${if_addr} の再利用を避ける。次の値を、それぞれ保持する 送信接続用インタフェースのアドレス 送信接続用インタフェースのホスト名 送信接続用インタフェースのファミリ |
${if_name} |
受信接続用のインタフェースのホスト名を提供する。これは、特に仮想ホスティングに便利である |
${load_avg} |
実行キューにあるジョブの現在の平均数を確認して報告する |
${msg_size} |
ESMTP ダイアログにあるメッセージサイズの値 ( SIZE=parameter) を保持してから、メッセージを収集する。その後、sendmail によって計算されたメッセージサイズを保持したマクロを check_compat で使用する。check_compat については、表 24–14 を参照 |
${nrcpts} |
妥当性検査を行った受信者の数を保持する |
${ntries} |
配信を試みた回数を保持する |
${rcpt_mailer}、 ${rcpt_host}、${rcpt_addr}、${mail_mailer}、${mail_host}、および${mail_addr} |
引数 RCPT および MAIL を構文解析した結果を保持する。つまり、メール配信エージェント ($# mailer)、ホスト ($@host)、およびユーザー ($:addr) から解釈処理された RHS (Right-Hand Side) トリプレットを保持する |
表 24–11、構成ファイル sendmail を構築するのに使用する新しいマクロ
マクロ |
説明 |
---|---|
LOCAL_MAILER_EOL |
ローカルメールプログラムの行末を示すデフォルト文字列を置きかえる |
LOCAL_MAILER_FLAGS |
デフォルトでは、Return-Path: ヘッダを追加する |
MAIL_SETTINGS_DIR |
メール設定ディレクトリのパスを格納する (末尾のスラッシュを含む) |
MODIFY_MAILER_FLAGS |
*_MAILER_FLAGS を拡張する。このマクロは、フラグを設定、追加、または削除する |
RELAY_MAILER_FLAGS |
リレーメールプログラムの追加フラグを定義する |
次の新しいマクロを使用して、受け入れ可能なコマンドを最大数設定し、sendmail による配信の遅れを防止することができます。これらの MAX マクロは、コンパイル時に設定できます。次の表にある最大値は、現在のデフォルト値でもあります。
表 24–12 新しい MAX マクロ
マクロ |
最大値 |
各マクロが確認するコマンド |
---|---|---|
25 |
未知のコマンド |
|
20 |
NOOP、VERB、ONEX 、XUSR |
|
3 |
HELO、EHLO |
|
6 |
VRFY、EXPN |
|
8 |
ETRN |
マクロによる確認を無効にするには、マクロの値を 0 に設定します。
この節では、sendmail における新しい m4 構成マクロおよび改訂された m4 構成マクロを、表を使って説明します。これらのマクロを宣言するには、次の構文を使用します。
symbolic_name(`value') |
新しい sendmail.cf ファイルを構築する必要がある場合は、第 22 章「メールサービス (手順)」 の sendmail.cf 構成ファイルの構築 (手順) を参照してください。
表 24–13 sendmail における新しい m4 構成マクロおよび改訂された m4 構成マクロ
m4 マクロ |
説明 |
---|---|
FEATURE() |
詳細は、FEATURE() の宣言についての変更点を参照 |
このマクロは、クラス w ($=w) にエントリを追加する |
|
マスカレードできないホストやサブドメインを定義する新しいマクロ |
|
このマクロは user@[ host] のように、括弧で囲まれたアドレスに使用できる |
|
これらのマクロを使用する場合は、$=R に $={VirtHost} を含める。 $=R は一連のホスト名で、これらを使ってリレーすることができる |
FEATURE() の宣言についての変更点については、次の表を参照してください。
FEATURE の新しい名前および改訂された名前を使用するには、次の構文を使用します。
FEATURE(`name', `argument') |
新しい sendmail.cf ファイルを構築する必要がある場合は、第 22 章「メールサービス (手順)」 の sendmail.cf 構成ファイルの構築 (手順) を参照してください。
表 24–14 新規および改訂された FEATURE() の宣言
FEATURE() の名前 |
説明 |
---|---|
引数 : 次の段落の例を参照 この新しい FEATURE() によって、送信者アドレスと受信者アドレスからなるアクセスマップ内でキーを検索できる。この FEATURE() は、文字列 <@> で区切る。例 - sender@sdomain<@>recipient@rdomain |
|
引数 : friend にすると、スパムメールの friend テストを実行できる。また、hater にすると、スパムメールの hater テストを実行できる すべての確認作業を遅らせる新しい FEATURE()。FEATURE(`delay_checks') を使用すると、クライアントが接続する場合、またはクライアントが MAIL コマンドを発行する場合に、ルールセット check_mail および check_relay は呼び出されない。代わりに、これらのルールセットはルールセット check_rcpt によって呼び出される。詳細については、/usr/lib/mail/README ファイルを参照 |
|
引数 : この FEATURE() は、最大次の 2 つの引数を受け入れる。
DNS 参照の戻り値を確認する回数を複数にできる新しい FEATURE()。この FEATURE() を使用して、参照が一時的に失敗した場合の動作を指定できる |
|
引数 : ドメイン名 dnsbl の強化バージョン。この FEATURE() を使用して、DNS 参照の戻り値を確認できる。詳細は、/usr/lib/mail/README を参照 |
|
引数 : なし genericstable を $=G のサブドメインに適用するのに使用する新しい FEATURE() |
|
引数 : 詳細については、http://www.sendmail.org の「リリースノート」を参照 LDAP アドレスルーティングを実装する新しい FEATURE() |
|
引数 : LMTP (Local Mail Transfer Protocol) を使用できるメールプログラムのパス名。デフォルトは mail.local であり、今回の Solaris リリースでは LMTP を使用できる ローカルメールプログラムの DSN (delivery status notification) 診断コードのタイプを SMTP の正しい値に設定する FEATURE() |
|
引数 : なし ローカルメールプログラムをマスカレードしないようにするために使用する新しい FEATURE() |
|
引数 : なし アクセスマップの .domain を参照するのに使用する新しい FEATURE() |
|
引数 : canonify_hosts またはなし FEATURE() には次の機能が含まれている CANONIFY_DOMAIN または CANONIFY_DOMAIN_FILE で指定した、ドメインのリストを演算子 $[ および $] に渡して正規化することができる canonify_hosts がそのパラメータとして指定されている場合には、ホスト名だけを持つアドレス (<user@host> など) を正規化できる 複数のコンポーネントを持つアドレスの末尾にドットを追加できる |
|
引数 : なし sendmail のデフォルト設定を m4 構成ファイルでオフにする新しい FEATURE()。このファイルは、複数の異なるポート上で待機するために生成されたもので、RFC 2476 に実装されている |
|
引数 : reject にすると、! トークンを使用できない。 nospecial にすると、! トークンを使用できる ! トークンをアドレスのローカルの部分に使用するかどうかを決定する FEATURE() |
|
引数 : なし 通常の構成ですべてのルールセットを提供する FEATURE()。スパムメール対策チェックを実行する |
|
引数 : なし sendmail がアドレスをローカル配信エージェントに渡す際に、アドレスの +detail の部分を保存できる新しい FEATURE() |
|
引数 : なし LUSER_RELAY を使用している場合に、受信者のホスト名を保存できる新しい FEATURE() |
|
引数 : なし 電子メールのアドレス全体または受信者のドメインに基づいたキューグループを選択できる新しい FEATURE() |
|
引数 : ドメインは、任意の引数 メールの送信側がアクセスマップに RELAY として指定されており、それをヘッダ行 From: で呼び出せる場合に、リレーを許可する新しい FEATURE()。 任意の引数ドメインを指定すると、メール送信側のドメインの部分が確認される |
|
引数 : なし $={VirtHost} を適用するのに使用する FEATURE()。$={VirtHost} は、VIRTUSER_DOMAIN または VIRTUSER_DOMAIN_FILE を使って生成できる virtusertable エントリを一致させるための新しいクラス また、FEATURE(`virtuser_entire_domain') を使用して、クラス $={VirtHost} をサブドメイン全体に適用することもできる |
表 24–15 宣言がサポートされていない FEATURE()
MAILER() を宣言すると、配信エージェントのサポートを指定できます。 配信エージェントを宣言するには、次の構文を使用します。
MAILER(`symbolic_name') |
次の変更に注意してください。
この新しいバージョンの sendmail では、MAILER(`smtp') を宣言すると、メールプログラム dsmtp が追加されます。dsmtp により、メールプログラムのフラグ F=% を使用して、オンデマンドに配信することができます。dsmtp メールプログラムを定義する際には、新しい DSMTP_MAILER_ARGS を使用します。DSMTP_MAILER_ARGS のデフォルトは IPC $h です。
MAILER によって使用されるルールセットの番号は削除されました。 MAILER(`uucp') を除いて、MAILER の表示順を自由に設定できます。uucp-dom および uucp-uudom を使用する場合には、MAILER(`uucp') の後に MAILER(`smtp') を配置する必要があります。
メールプログラムの詳細については、メールプログラムを参照してください。新しい sendmail.cf ファイルを構築する必要がある場合は、第 22 章「メールサービス (手順)」 の sendmail.cf 構成ファイルの構築 (手順) を参照してください。
次の表では、配信エージェントの新しいフラグについて説明しています。デフォルトでは、これらのフラグは設定されていません。これらの 1 文字のフラグはブール型です。このフラグを設定したりその設定を解除したりするには、次の例のように、フラグを構文ファイルの F= 文に含めるか除外します。
Mlocal, P=/usr/lib/mail.local, F=lsDFMAw5:/|@qSXfmnz9, S=10/30, R=20/40, Mprog, P=/bin/sh, F=lsDFMoqeu9, S=10/30, R=20/40, D=$z:/, Msmtp, P=[IPC], F=mDFMuX, S=11/31, R=21, E=\r\n, L=990, Mesmtp, P=[IPC], F=mDFMuXa, S=11/31, R=21, E=\r\n, L=990, Msmtp8, P=[IPC], F=mDFMuX8, S=11/31, R=21, E=\r\n, L=990, Mrelay, P=[IPC], F=mDFMuXa8, S=11/31, R=61, E=\r\n, L=2040, |
フラグ |
説明 |
---|---|
% |
このフラグを使用するメールプログラムは、ETRN 要求やキューオプション -qI、-qR、または -qS のいずれかを使ってキューにあるメッセージを選択しないかぎり、最初の受信者宛にメールを配信したり、キューを実行したりしない |
1 |
このフラグは、\0 などのヌル文字を送信するメールプログラムの機能を無効にする |
2 |
このフラグは、ESMTP の使用を無効にし、代わりに SMTP を使用するように要求する |
6 |
このフラグを指定すると、メールプログラムでヘッダを 7 ビットにすることができる |
次の表では、配信エージェントを定義するコマンド M とともに使用できる新しい等号 (=) について説明しています。次の構文は、等号 (=) を新たに付加する方法、および構成ファイルの既存の等号に新しい引数を付加する方法を示しています。
Magent_name, equate, equate, ... |
次の例には、新しい等式 W= が含まれています。この等式は、すべてのデータが送信されたあとでメールプログラムが戻るまでの最長待ち時間を指定します。
Msmtp, P=[IPC], F=mDFMuX, S=11/31, R=21, E=\r\n, L=990, W=2m |
m4 の構成値の定義を変更するには、次の例のような構文を使用します。
define(`SMTP_MAILER_MAXMSGS', `1000') |
この例では、smtp メールプログラムで 1 回の接続で配信されるメッセージ数を 1000 に制限しています。
新しい sendmail.cf ファイルを構築する必要がある場合は、第 22 章「メールサービス (手順)」 の sendmail.cf 構成ファイルの構築 (手順) を参照してください。
通常、mailer ディレクトリで、この等号の定義を変更するのは、微調整が必要な場合だけです。
本リリースでは、複数のキューディレクトリをサポートしています。複数のキューを使用するには、次の例のように、アスタリスク (*) で終わっている QueueDirectory オプション値を構成ファイルに追加します。
O QueueDirectory=/var/spool/mqueue/q* |
このオプション値 /var/spool/mqueue/q* は、「q」で始まっているすべてのディレクトリ (またはディレクトリへのシンボリックリンク) をキューのディレクトリとして使用します。sendmail の実行中には、キューのディレクトリ構造を変更しないでください。キューを実行すると、デーモン以外のキューの実行時に冗長フラグ (-v) を使用しないかぎり、各キューについての実行プロセスが作成されます。この新しい項目が、無作為にキューに割り当てられます。
この新しいキューのファイルの名前付けシステムで使用する名前は、60 年間一意であることが保証されます。 このシステムでは、キュー ID が複雑なファイルシステムのロックを使用しないで割り当てられるため、キューにある項目を簡単に他のキューに移動することができます。
sendmail バージョン 8.12 では、root だけがメインキューを実行できます。 この変更の詳細については、mailq(1) のマニュアルページを参照してください。 新しい作業手順については、キューディレクトリの管理 (作業マップ) を参照してください。
エンベロープの分割に対応するために、キューファイルの名前は 14 文字ではなく、15 文字にします。 14 文字までの名前を持つファイルシステムは、サポートされません。
関連作業については、キューディレクトリの管理 (作業マップ) を参照してください。
次に、LDAP (Lightweight Directory Access Protocol) を sendmail で使用する際の変更点について説明します。
LDAPROUTE_EQUIVALENT() および LDAPROUTE_EQUIVALENT_FILE() を使用して、同じホスト名を指定することができます。これらのホスト名は、LDAP ルーティング参照のマスカレードドメイン名と置き換えられます。詳細は、/usr/lib/mail/README を参照してください。
ftp://ftp.sendmail.org で sendmail とともに配布しているリリースノートで説明しているように、LDAPX マップの名前は LDAP に変更されました。 LDAP には、次の構文を使用します。
Kldap ldap options |
本リリースでは、一度の LDAP 参照に複数の値を返すことができます。次の例のように、返す値を -v オプションを付加したコンマ区切りの文字列に配置します。
Kldap ldap -v"mail,more_mail" |
LDAP マップの宣言で LDAP 属性が指定されていない場合は、一致した属性がすべて返されます。
このバージョンの sendmail は、LDAP 別名ファイルに指定された引用符などで囲まれたキーや値の文字列内のコンマによって、1 つのエントリが複数のエントリに分割されるのを防止します。
このバージョンの sendmail には、LDAP マップ用の新しいオプションがあります。この -Vseparator オプションを使用して、区切り文字を指定できます。そのため、参照を行うと、該当する separator によって区切られた属性と値の両方が返されることがあります。
%s トークンを使用して LDAP フィルタ指定を構文解析する代わりに、新しいトークンである %0 を使用して、キーバッファーを符号化することができます。%0 トークンは、LDAP の特殊文字に対して、文字どおりの意味を適用します。
次の例では、これらのトークンが「*」検索でどのように変化するかを説明します。
表 24–18 トークンの比較
LDAP のマップ指定 |
同等の指定 |
結果 |
---|---|---|
-k"uid=%s" |
-k"uid=*" |
レコードとユーザー属性を照合する |
-k"uid=%0" |
-k"uid=\2A" |
ユーザーと名前「*」を照合する |
次の表では、LDAP マップの新しいフラグについて説明しています。
表 24–19 LDAP マップの新しいフラグ
フラグ |
説明 |
---|---|
-1 |
一致したレコードが 1 つだけだった場合、そのレコードを返す。複数のレコードが一致して返される場合には、結果として、レコードが検出されなかったことと同じとなる |
-r never|always|search|find |
LDAP 別名の参照を解除するオプションを設定する |
-Z size |
一致したもののうち、返すレコード数を制限する |
前のバージョンに組み込まれていたメールプログラム [TCP] は使用できません。代わりに、新しく組み込まれたメールプログラム P=[IPC] を使用してください。新しく組み込まれたプロセス間通信メールプログラム ([IPC]) を使用して、それをサポートしているシステム上の UNIX ドメインソケット宛てにメールを配信できます。このメールプログラムは、指定したソケットで待機している LMTP 配信エージェントとともに使用できます。次に、メールプログラムの例を示します。
Mexecmail, P=[IPC], F=lsDFMmnqSXzA5@/:|, E=\r\n, S=10, R=20/40, T=DNS/RFC822/X-Unix, A=FILE /var/run/lmtpd |
[IPC] メールプログラムの最初の引数が、正当な値であるかどうかが確認されます。次の表では、最初のメールプログラム引数に設定可能な値について説明しています。
表 24–20 最初のメールプログラム引数に設定可能な値
値 |
説明 |
---|---|
A=FILE |
UNIX ドメインソケットによる配信に使用する |
A=TCP |
TCP/IP 接続に使用する |
A=IPC |
最初のメールプログラム引数としては使用できない |
次の表では、新しいルールセットとその動作について説明しています。
表 24–21 新しいルールセット
ルールセット |
説明 |
---|---|
ヘッダーから収集した情報を相関させ、欠けているヘッダーを確認する。 このルールセットは、マクロストレージマップとともに使用し、すべてのヘッダーが収集された後、呼び出される |
|
check_rcpt が RCPT を使用するように、ETRN コマンドを使用する |
|
check_rcpt が RCPT を使用するように、EXPN コマンドを使用する |
|
check_rcpt が RCPT を使用するように、 VRFY コマンドを使用する |
次に、ルールセットの新しい機能について説明します。
番号が付けられたルールセットには、名前も付けられました。ただし、これらのルールセットに、番号でアクセスすることもできます。
H ヘッダー構成ファイルコマンドを使用して、デフォルトのルールセット指定し、ヘッダーを確認することができます。各ヘッダーに、独自のルールセットが割り当てられていない場合にだけ、このルールセットが呼び出されます。
ルールセット内のコメント、つまり括弧内のテキストは、構成ファイルのバージョンが 9 かそれ以上である場合には削除されません。たとえば、次のルールは、入力 token (1) を照合します。ただし、入力 token は照合しません。
R$+ (1) $@ 1 |
TCP ラッパーまたは check_relay ルールセットが原因でコマンドを拒否する場合でも、sendmail は SMTP RSET コマンドを受け入れます。
OperatorChars オプションを何度も設定すると、警告が送信されます。また、ルールセットを定義した後で OperatorChars を設定しないでください。
無効なルールセットを宣言すると、行だけでなく、そのルールセットの名前も無視されます。そのルールセットの行は S0 に追加されません。
helpfile は、/etc/mail/helpfile にあります。 古い名前 (/etc/mail/sendmail.hf) には、新しい名前へのシンボリックリンクがあります。
trusted-users ファイルは、/etc/mail/trusted-users にあります。 アップグレード中に、新しい名前は検出されず、古い名前である /etc/mail/sendmail.ct が検出されると、古い名前から新しい名前へのハードリンクが作成されます。 それ以外の場合には、変更されません。 デフォルトの内容は、root です。
local-host-names ファイルは、/etc/mail/local-host-names にあります。 アップグレード中に、新しい名前は検出されず、古い名前である /etc/mail/sendmail.cw が検出されると、古い名前から新しい名前へのハードリンクが作成されます。 それ以外の場合には、変更されません。 デフォルトの内容は、ゼロ長です。
/usr/lib/mail/cf/main-v7sun.mc の新しい名前は /usr/lib/mail/cf/main.mc です。
/usr/lib/mail/cf/subsidiary-v7sun.mc の新しい名前は /usr/lib/mail/cf/subsidiary.mc です。
sendmail バージョン 8.12 では、アドレスを正しく識別するために、構成に使用する IPv6 アドレスの前に IPv6: タグを付ける必要があります。 IPv6 アドレスを識別しない場合は、タグを前に付けません。
次の表では、mail.local プログラムにおけるコマンド行の新しいオプションについて説明しています。sendmail は、このプログラムをローカルメールの配信エージェントとして使用します。
表 24–22 mail.local におけるコマンド行の新しいオプション
オプション |
説明 |
---|---|
-7 |
LMTP (Local Mail Transfer Protocol) モードで、LHLO 応答時に、8BITMIME のサポートが通知されるのを防止する |
-b |
メールボックスがその制限を超えた場合に、一時エラーではなく、永続エラーを発生させる |
LMTP モードのデフォルトは mail.local です。ただし、本リリースでは、LMTP モード以外で mail.local をローカル配信エージェントとして使用するには、次のどれかの操作を実行して S フラグを設定する必要があります。
構成ファイルには、次の構文を使用します。
MODIFY_MAILER_FLAGS(`LOCAL', `+S') # 構成ファイル |
または、m4 構成に対して次の 2 つの手順を実行します。
define(`MODIFY_MAILER_FLAGS', `S')dnl # 第 1 段階 MAILER(local)dnl # 第 2 段階 |
MODIFY_MAILER_FLAGS は、構成ファイルを構築するのに使用する新しいマクロです。詳細は、sendmail 構成ファイルを構築するのに使用する新しいマクロを参照してください。
詳細については、mail.local(1M) のマニュアルページを参照してください。
sendmail プログラムには、メールプログラムの使用状況を統計する機能を持つ mailstats プログラムが付属しています。次の表では、mailstats の新しいオプションについて説明します。
表 24–23 mailstats の新しいオプション
オプション |
説明 |
---|---|
-C filename |
sendmail 構成ファイルを指定する |
-p |
プログラムが読み取り可能なモードで、統計を明確に示す |
-P |
プログラムが読み取り可能なモードで、統計を明確に示す。ただし、このオプションを指定すると、統計ファイルは切り捨てられない |
詳細は、mailstats(1) のマニュアルページを参照してください。
makemap コマンドを実行すると、sendmail 用にキー付きのデータベースファイルが作成されます。次の表では、makemap の新しいオプションについて説明しています。 オプションを宣言する場合には、次の構文を使用します。
makemap options class filename |
-dN のように、option の前にダッシュを付けます。
class は、btree、dbm、または hash のようなデータベースのタイプです。
filename は、データベースファイルへの完全パスまたは相対名です。
オプション |
説明 |
---|---|
-C |
TrustedUser オプションの検出に、指定した sendmail 構成ファイルを使用する |
-c |
指定した hash および btree のキャッシュサイズを使用する |
-e |
RHS (right-hand side) から空の値を使用することを許可する |
-l |
サポートされているマップのタイプをリストする |
-t |
空白ではなく、別の区切り記号を指定する |
-u |
データベースの内容を標準出力にダンプ (マップ形式を元に戻す) する |
makemap を root として実行すると、生成されたマップの所有権は、構成ファイル sendmail で指定したように、自動的に TrustedUser に変更されます。TrustedUser オプションの詳細については、表 24–2 を参照してください。
詳細は、makemap(1M) のマニュアルページを参照してください。
新しい保守コマンド editmap を使用して、sendmail のキー付きデータベースマップのレコードを照会したり編集したりすることができます。コマンド行から、次の構文を使用します。
editmap options maptype mapname key "value" |
-Nf のように、option の前にダッシュを付けます。 使用できるオプションとその機能については、マニュアルページで説明しています。
maptype は、データベースのタイプです。editmap では、btree、dbm、および hash を使用できます。
mapname は、データベースファイルへの完全パスまたは相対名です。
key は、検索に使用する単一の文字列または複数トークン文字列です。
「value」は、キー付きのデータベースファイル内で、キーの右側に表示される文字列です。次の例では、キーは man で、man@example.com がそのキーに割り当てられている値です。
man man@host.com |
詳細および使用可能なオプションについては、editmap(1M) のマニュアルページを参照してください。
RFC 2476 で説明しているように、sendmail は、ポート 587 上で実行依頼に備えて待機します。
ftp://ftp.sendmail.org で sendmail とともに配布しているリリースノートで説明しているように、XUSR SMTP コマンドは推奨されていません。 メールユーザーエージェントは、最初のユーザーメッセージの実行依頼時に、RFC 2476 Message Submission の使用を開始する必要があります。
バージョンに関係なく、Sun の構成ファイルを使ってプログラムにパイプされるメッセージには、Content-Length: ヘッダーは提供されません。ただし、このヘッダーは、バージョンに関係なく、Sun の構成ファイルを使用する一般のメールボックスの配信には提供されます。
ディスクの容量が少ない場合でも、sendmail は接続を受け入れます。ただし、このような場合は、sendmail で使用できるコマンドは ETRN だけです。
別名ファイルのエントリを続けて入力するには、改行文字のすぐ前にバックスラッシュを置きます。
SMTP 経由でメッセージを送信する際のタイムアウトが変更され、5 分ごとに配信の進捗状況を確認するようになりました。 この変更により、送信できないメッセージを検出できるようになりました。そのため、情報をより迅速に送信したり、タイムアウトになるまで待機するプロセスの数を減らしたりすることができます。
クラスの内容を他のクラスにコピーするには、次の例のような構文を使用します。
C{Dest} $={Source} |
この例では、クラス $={ Source} にある全項目が、クラス $={ Dest} にコピーされます。
デフォルトでは、マップを省略することはできません。 また、マップに問題が発生すると、エラーメッセージが送信されます。
クラス P ($=P) のホストまたはドメインは正規化されません。
オプションに値が関連付けられていない場合には、等号 (=) は、そのオプションの展開に含まれません。
アドレスの経路は指定できません。たとえば、<@a,@b,@c:user@d> は <user@d> に変換されます。