ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris 11.1 での sendmail サービスの管理 Oracle Solaris 11.1 Information Library (日本語) |
sendmail のコンパイルに使用できるフラグと使用できないフラグ
MILTER (sendmail のメールフィルタ API)
SMTP (Simple Mail Transfer Protocol) メールプログラム
UUCP (UNIX-to-UNIX Copy Program) メールプログラム
sendmail の version 8.13 で TLS を使用して SMTP を実行するためのサポート
TLS を使用して SMTP を実行するための構成ファイルのオプション
TLS を使用した SMTP の実行に関連するセキュリティーの検討事項
sendmail の version 8.13 で追加されたコマンド行オプション
sendmail の version 8.13 で追加または改訂された構成ファイルオプション
sendmail の version 8.13 で追加または改訂された FEATURE() の宣言
sendmail の version 8.12 からの変更点
sendmail の version 8.12 からの TCP ラッパーのサポート
sendmail の version 8.12 からの submit.cf 構成ファイル
sendmail.cf と submit.cf の機能の相違点
sendmail の version 8.12 からの機能の変更
sendmail の version 8.12 から追加されたまたは非推奨のコマンド行オプション
sendmail の version 8.12 から PidFile オプションおよび ProcessTitlePrefix オプションに追加された引数
sendmail の version 8.12 から追加定義されたマクロ
sendmail の version 8.12 から追加されたマクロ
sendmail の version 8.12 から追加された MAX マクロ
sendmail の version 8.12 から追加または改訂された m4 構成マクロ
sendmail の version 8.12 からの FEATURE() の宣言についての変更点
sendmail の version 8.12 からの MAILER() の宣言についての変更点
sendmail の version 8.12 から追加された配信エージェントのフラグ
sendmail の version 8.12 から追加された配信エージェントの設定
sendmail の version 8.12 から追加されたキューの機能
sendmail の version 8.12 からの LDAP の変更点
sendmail の version 8.12 からの組み込まれたメールプログラムの変更
sendmail の version 8.12 から追加されたルールセット
sendmail の version 8.12 からのファイルの変更点
メールサービスには、相互に対応する数多くのプログラムやデーモンが含まれています。このセクションでは、電子メールの管理に関連するファイル、プログラム、用語、および概念について説明します。
vacation ユーティリティーが機能強化され、自動生成された応答をどの着信メッセージが受けるかをユーザーが指定できるようになりました。この拡張機能により、ユーザーは、知らない人と機密情報や連絡先を共有せずにすみます。スパマーや知らない人からのメッセージは、応答を受け取りません。
この拡張機能は、着信電子メールの送信者のアドレスを .vacation.filter ファイル内のドメインまたは電子メールアドレスのリストと付き合わせることによって機能します。このファイルは、ユーザーによって作成され、ユーザーのホームディレクトリにあります。ドメインまたは電子メールアドレスで一致するものがあると、応答が送られます。一致するものがなければ、応答は送られません。
.vacation.filter には、次のようなエントリが含まれます。
company.com mydomain.com onefriend@hisisp.com anotherfriend@herisp.com
各行には、1 つのドメインまたは 1 つの電子メールアドレスが含まれます。1 つのエントリを 1 行に入力する必要があります。送信者の電子メールアドレスが電子メールアドレスエントリと一致するには、大文字と小文字の違いを除いて、完全に一致している必要があります。送信者のアドレスの文字が小文字であるか大文字であるかは無視されます。送信者の電子メールアドレスがドメインエントリと一致するには、一覧表示されているドメインに送信者のアドレスが含まれている必要があります。たとえば、somebody@dept.company.com と someone@company.com の両方が、company.com のドメインエントリと一致します。
詳細は、vacation(1) のマニュアルページを参照してください。
次の表にメールサービスに使用する /usr/bin ディレクトリの内容を示します。
|
次の表に、/etc/mail ディレクトリの内容を示します。
|
/etc/mail ディレクトリには、sendmail.cf ファイルを構築するために必要なすべてのファイルを含む cf というサブディレクトリがあります。Table 3–9 に 表 3-9 ディレクトリの内容を示します。
読み取り専用の /usr ファイルシステムをサポートするために、/usr/lib/mail ディレクトリの内容が /etc/mail/cf ディレクトリに移動されました。ただし、例外があります。シェルスクリプト /usr/lib/mail/sh/check-hostname および /usr/lib/mail/sh/check-permissions は、/usr/sbin ディレクトリに置かれるようになりました。「メールサービスに使用するその他のファイル」を参照してください。下位互換性を確保するために、シンボリックリンクが各ファイルの新しい位置を示します。
表 3-9 メールサービスに利用する /etc/mail/cf ディレクトリの内容
|
次の表にメールサービスに使用する /usr/lib ディレクトリの内容を示します。
表 3-10 /usr/lib ディレクトリの内容
|
メールサービスは、その他のいくつかのファイルおよびディレクトリを使用します。これらを表 3-11 に示します。
表 3-11 メールサービスに使用するその他のファイル
|
メールサービスは次のプログラムで構成され、図 3-2 のように作用します。
図 3-2 メールプログラム間の相互作用
次に、メールプログラムの相互作用について説明します。
ユーザーは、mailx などのプログラムを使ってメッセージを送信します。詳細は、mailx(1) のマニュアルページを参照してください。
メッセージは、そのメッセージを生成したプログラムによって収集され、sendmail デーモンに渡されます。
sendmail デーモンがメッセージのアドレスを識別可能な各部に分割して解析します。sendmail デーモンは、/etc/mail/sendmail.cf という構成ファイルの情報を使ってネットワーク名の構文、別名、転送情報、およびネットワークトポロジを決定します。sendmail はこの情報を使用して、メッセージが受信者に到達する経路を決定します。
sendmail デーモンはメッセージを適切なシステムに渡します。
ローカルシステムの /usr/lib/mail.local プログラムは、メッセージの受信者の /var/mail/username ディレクトリのメールボックスにメールを配信します。
受信者は、メールが届いたことが通知されるので、mail、mailx などのプログラムを使用してメールを受け取ります。
sendmail は、TCP/IP や UUCP などの異なる通信プロトコルを使用できます。
sendmail は、SMTP サーバー、メッセージキュー、メーリングリストを実装します。
sendmail は、次の命名規則に準拠したパターンマッチングシステムを使って名前の解釈を制御します。
ドメインベースの命名規則。ドメインの手法は、物理的なネーミングと論理的なネーミングの問題を分離します。詳細は、「メールアドレス」を参照してください。
ほかのネットワークのホストからローカルに見えるネットワーク名を提供するなどの即席のテクニック。
任意 (以前) の命名構文。
異種の命名スキーム。
Oracle Solaris オペレーティングシステムでは、sendmail プログラムをメールルーターとして使用します。次に、機能の一部を示します。
sendmail は、mail.local や procmail などのローカル配信エージェントとの間で、電子メールメッセージの受信や配信を行う役割を果たします。
sendmail はメール転送エージェントであり、mailx や Mozilla Mail などのユーザーエージェントからメッセージを受け取り、そのメッセージをインターネット経由でその宛先までルーティングします。
sendmail は、ユーザーが送信する電子メールメッセージを次の方法で制御します。
受信者のアドレスを確認します。
適切な配信プログラムを選択します。
アドレスを配信エージェントが処理できるフォーマットに書き換えます。
必要に応じて、メールヘッダーをフォーマットし直します。
最後に転送されたメッセージをメール配信プログラムに渡します。
sendmail の詳細は、次のトピックを参照してください。
sendmail プログラムでは、メールルーティングに必要な 3 つのメカニズムをサポートしています。適切なメカニズムは、変更の種類によって決まります。
サーバーの変更
ドメイン全体の変更
単独のユーザーの変更
さらに、選択する再ルーティングメカニズムによって必要な管理レベルが異なります。次のオプションを考慮してください。
再ルーティングメカニズムの 1 つは「別名」です。
別名を使用すれば、使用するファイルの種類に基づいて、サーバー全体またはネームサービス全体をベースにしてアドレス名をマップできます。
次に、ネームサービスの別名の長所と短所を示します。
ネームサービス別名ファイルを使用すれば、メール再ルーティングの変更を単一のソースで管理できます。ただし、ネームサービスの別名指定では、再ルーティングの変更を伝達する際に遅延が起こります。
通常、ネームサービスの管理は、特定のシステム管理者グループに制限されます。一般ユーザーは、このファイルを管理しません。
次に、サーバー別名ファイルを使用する際の長所と短所を示します。
サーバー別名ファイルを使用すれば、指定されたサーバーの root になることができる任意のユーザーが再ルーティングを管理できます。
サーバー別名指定は、再ルーティングの変更を伝達する際の遅延はほとんどありません。
変更はローカルサーバーだけに影響します。ほとんどのメールが単一のサーバーに送信される場合は、影響が少なくなります。ただし、この変更を多くのメールサーバーに伝達する必要がある場合は、ネームサービスの別名指定を使用します。
一般ユーザーは、この変更を管理しません。
詳細は、この章の 「メール別名ファイル」を参照してください。タスクマップについては、「メール別名ファイルの管理 (タスクマップ)」の 第 2 章メールサービス (タスク)を参照してください。
次のメカニズムは、「転送」です。
このメカニズムでは、ユーザーがメールの再ルーティングを管理できます。ローカルユーザーは、受信メールを次の対象に再ルーティングできます。
別のメールボックス
別のメールプログラム
別のメールホスト
このメカニズムは、.forward ファイルによってサポートされます。.forward ファイルの詳細は、この章の 「.forward ファイル」を参照してください。タスクマップについては、「.forward ファイルの管理 (タスクマップ)」の 第 2 章メールサービス (タスク)を参照してください。
最後のメカニズムは、「取り込み」です。
このメカニズムでは、root アクセス権を持たないユーザーも別名リストを保守できます。このメカニズムを提供するには、root ユーザーは、サーバー上の別名ファイル内に適切なエントリを作成する必要があります。このエントリが作成されると、ユーザーは必要に応じてメールをルーティングし直すことができるようになります。取り込みの詳細は、この章の 「/etc/mail/aliases ファイル」を参照してください。タスクマップについては、「メール別名ファイルの管理 (タスクマップ)」の 第 2 章メールサービス (タスク)を参照してください。
注 - /usr/bin/mailx のようなメールを読み取るプログラムは、プログラム自身の別名を持つことができ、それらはメッセージが sendmail に達する前に展開されます。sendmail の別名は、ローカルファイル、NIS など、さまざまなネームサービスソースからのものでもかまいません。検索順序は svc:/system/name-service/switch サービスによって決定されます。nsswitch.conf(4) のマニュアルページを参照してください。
sendmail プログラムには、次のような機能があります。
sendmail は、信頼性の高いプログラムです。すべてのメッセージを正しく配信するように設計されています。どのようなメッセージも完全に失われることはありません。
sendmail は、既存のソフトウェアを配信に随時使用します。たとえば、ユーザーは、メール生成プログラムおよびメール送信プログラムと対話します。メール送信が依頼されると、メール生成プログラムは sendmail を呼び出し、sendmail は適切なメールプログラムにメッセージを送信します。発信者の一部はネットワークサーバーであったり、またメールプログラムの一部はネットワーククライアントであるため、sendmail は、インターネットメールゲートウェイとしても使用できます。このプロセスの詳細は、「メールプログラム間の相互作用」を参照してください。
sendmail は、複数のネットワークなど、複雑な環境を処理するように構成できます。sendmail は、アドレスとその構文の内容を確認し、どのメールプログラムを使用するかを判断します。
sendmail は、構成情報をコードにコンパイルする代わりに、構成ファイルを使ってメール構成を制御します。
ユーザーは独自のメーリングリストを管理できます。さらに各ユーザーは、ドメイン全体の別名ファイル (通常、NIS によって管理されるドメイン全体の別名の中にある) を修正することなく自分自身の転送メカニズムを指定できます。
各ユーザーは、受信メールを処理するカスタムメールプログラムを指定できます。カスタムメールプログラムは、次のようなメッセージを返すこともできます。 「私は休暇中です」。詳細は、vacation(1) のマニュアルページを参照してください。
sendmail は、1 つのホストでアドレスを処理し、ネットワークトラフィックを削減します。
「構成ファイル」は、sendmail がその機能を実行する方法を制御します。構成ファイルにより、配信エージェント、アドレスの変換の規則、およびメールヘッダーのフォーマットが選択されます。sendmail プログラムは、/etc/mail/sendmail.cf ファイルの情報を使用して、その機能を実行します。
Oracle Solaris オペレーティングシステムには、/etc/mail ディレクトリに次の 2 つのデフォルト構成ファイルがあります。
デーモンモードの代わりにメール配信プログラムモードで sendmailを実行するために使用する submit.cf 構成ファイル。詳細は、「sendmail の version 8.12 からの submit.cf 構成ファイル」を参照してください。
メールクライアント、メールサーバー、メールホスト、メールゲートウェイを設定するときは、次を考慮してください。
メールホストやメールゲートウェイを設定するには、メール構成に必要な中継メールプログラムおよび中継ホストのパラメータを設定します。タスク情報については、「メールサービスの設定 (タスクマップ)」の 「sendmail 構成を変更する」または 第 2 章メールサービス (タスク)を参照してください。sendmail version 8.13 では、main.cf ファイルは必要ありません。
次に、サイトの要求に応じて変更が可能な構成パラメータをいくつか説明します。
次の情報を指定する時間値。
読み取りのタイムアウト。
メッセージが送信者に返送されるまで、配信されずにキューに置かれる時間。「sendmail の version 8.12 から追加されたキューの機能」を参照してください。タスクマップについては、「キューディレクトリの管理 (タスクマップ)」を参照してください。
メール配信の速度を指定する配信 (delivery) モード。
ビジー期間中の効率を高めるためのロード制限。これらのパラメータは、sendmail が、長いメッセージ、多くの受信者へのメッセージ、および長時間ダウンしているサイトへのメッセージを配信しないようにします。
別名を保守するには、次のファイル、マップ、またはテーブルを使用します。
別名を保守する方法は、だれが使用し、だれが変更するかによって決まります。別名のタイプにはそれぞれ固有の形式要件があります。
関連するタスク情報については、「メール別名ファイルの管理 (タスクマップ)」の 第 2 章メールサービス (タスク)を参照してください。
.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 プログラムが別名をバイナリ形式で使用できるようにします。タスク情報については、「ローカルメール別名ファイルを設定する方法」の 第 2 章メールサービス (タスク)を参照してください。
現在のホスト名やホスト名なしなどのローカル名のみに別名を作成できます。たとえば、システム saturn にメールボックスのあるユーザー ignatz の別名エントリには、/etc/mail/aliases ファイルの次のエントリが入ります。
ignatz: ignatz@saturn
各メールサーバーに管理アカウントを作成する必要があります。管理アカウントを作成するには、メールサーバーのメールボックスを root に割り当て、root のエントリを /etc/mail/aliases ファイルに追加します。たとえば、システム saturn がメールボックスサーバーの場合は、エントリ root: sysadmin@saturn を /etc/mail/aliases ファイルに追加します。
通常は、root ユーザーだけがこのファイルを編集できます。または、次のエントリを作成します。
aliasname: :include:/path/aliasfile
aliasname は、ユーザーがメールを送信するときに使用する名前であり、/path/aliasfile は別名リストを含むファイルへのフルパスになります。別名ファイルには、各行に 1 つの電子メールエントリを入れ、その他の表記は付けないでください。
user1@host1 user2@host2
/etc/mail/aliases に追加のメールファイルを定義して、ログやバックアップコピーの管理もできます。次のエントリでは、aliasname に送信されるすべてのメールを filename 内に格納します。
aliasname: /home/backup/filename
また、ほかのプロセスにメールを回送することもできます。次の例のように入力すると、メールメッセージのコピーが filename 内に格納され、コピーがプリントされます。
aliasname: "|tee -a /home/backup/filename |lp"
タスクマップについては、「メール別名ファイルの管理 (タスクマップ)」の 第 2 章メールサービス (タスク)を参照してください。
ローカルドメインのすべてのユーザーは、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 ファイルを含むサーバー用のホスト名です。
タスク情報については、「NIS mail.aliases マップを設定する方法」の 第 2 章メールサービス (タスク)を参照してください。
ホームディレクトリに .forward ファイルを作成すると、sendmail およびその他のプログラムは、メールのリダイレクトや送信にこのファイルを使用できます。次のトピックを参照してください。
タスクマップについては、「.forward ファイルの管理 (タスクマップ)」の 第 2 章メールサービス (タスク)を参照してください。
次に、容易に回避または修復できる状況を示します。
メールが宛先のアドレスに配信されない場合は、ユーザーの .forward ファイルをチェックしてください。ユーザーは、ホームディレクトリ host1 に .forward ファイルを配置して、user@host2 にメールを転送するようにしたのかもしれません。host2 にメールが着信すると、sendmail は NIS 別名に user があるかどうかを確認し、メッセージを user@host1 に返送します。このルーティングによってループが発生し、バウンスメールの増加を引き起こしています。
セキュリティーの問題を予防するために、root または bin アカウントに .forward ファイルを決して置かないでください。必要な場合は、代わりに 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 以外に設定すると、このオプションは無効になります。