各メールサービスは、いくつかのソフトウェアコンポーネントを使用します。このセクションでは、次のソフトウェアコンポーネントについて説明します。
メールユーザーエージェント – ユーザーと sendmail メール転送エージェント間のインタフェースとして機能するプログラムです。Oracle Solaris OS では、/usr/bin/mail および /usr/bin/mailx メールユーザーエージェントが提供されています。
メール転送エージェント – メールメッセージのルーティングとメールアドレスの解決を行います。このエージェントは、「メールトランスポートエージェント」とも呼ばれます。Oracle Solaris OS のデフォルトのメール転送エージェントは sendmail プログラムです。メール転送エージェントは次の機能を実行します。
メールユーザーエージェントからメッセージを受信する
宛先アドレスを解決する
適切な配信エージェントを選択してメールを配信する
ほかのメール転送エージェントからのメールを受信する
ローカル配信エージェント – メール配信プロトコルを実行するプログラムです。Oracle Solaris OS では、mail.local および procmail ローカル配信エージェントが提供されています。
メールプログラムは、sendmail 固有の用語です。メールプログラムは sendmail プログラムによって使用され、カスタマイズされたローカル配信エージェントまたはカスタマイズされたメール転送エージェントの特定のインスタンスを特定します。sendmail.cf ファイルに少なくとも 1 つのメールプログラムを指定する必要があります。sendmail プログラムは Simple Mail Transfer Protocol (SMTP) メールプログラムを使用します。 SMTP プロトコルでは、次のメールプログラムが定義されています。
ほかのサーバーへの標準 SMTP 転送機能を提供します
ほかのサーバーへの拡張 SMTP 転送機能を提供します
8 ビットデータを MIME に変換することなく、ほかのサーバーへの SMTP 転送機能を提供します
F=% メールプログラムフラグを使ってオンデマンド配信機能を提供します
「メールボックス」は、電子メールメッセージの最終的な宛先となるファイルです。メールボックス名には、ユーザー名または postmaster などの特定の機能の名前を指定できます。メールボックスは、ユーザーのローカルシステムかリモートのメールサーバーのいずれかの /var/mail/username ファイルにあります。ただし、いずれの場合でも、メールボックスはメールが配信されるシステム上にあります。
メールは常にローカルファイルシステムに配信される必要があります。これにより、ユーザーエージェントはメールスプールからメールを取り出し、それをローカルメールボックスに格納できます。ユーザーのメールボックスの宛先として、NFS でマウントされたファイルシステムを使用しないでください。特にリモートサーバーから /var/mail ファイルシステムをマウントしているメールクライアントには、直接メールを送信しないでください。ユーザー宛てのメールは、クライアントのホスト名ではなく、メールサーバーにアドレス指定する必要があります。NFS でマウントされたファイルシステムは、メールの配信とメールの処理に問題を起こすことがあります。
/etc/mail/aliases ファイルと NIS などのネームサービスは、電子メールアドレスの別名を作成するためのメカニズムを提供します。ユーザーは、ユーザーのメールボックスの正確なローカル名を知る必要はありません。
次の表に、特殊な目的のメールボックスに対する共通の命名規則をいくつか示します。
sendmail version 8 以降では、グループの別名に送信されるメールの封筒の送信者が変更されたことにより、別名に送信されたメールは、配信時に、別名の所有者から送信されたように見えます。この変更によって、メールエラーは、送信者に返送されるのではなく、別名の所有者に送信されるようになりました。次の別名のフォーマットは、この変更に関連したいくつかの問題に対応します。
mygroup: :include:/pathname/mygroup.list owner-mygroup: mygroup-request mygroup-request: john, bob
この例では、mygroup 別名が、このグループの実際のメール別名です。owner-mygroup の別名は、エラーメッセージを受信します。mygroup-request の別名は、管理の要求に使用してください。この構造は、mygroup 別名に送信されたメールでは、封筒の送信者が mygroup-request に変更されることを意味します。
別名とは、メールボックスの場所を割り当てたり、メールリストを定義したりするために使用できる代替名のことです。詳細は、メール別名ファイルの管理のタスクマップおよび メール別名ファイルを参照してください。
大きなサイトでは通常、メール別名は、メールボックスの場所を定義します。メール別名を提供することは、複数の部屋を占有する大きな会社の個人のアドレスに部屋番号を付けることに似ています。部屋番号を提供しない場合は、メールは中央アドレスに配信されます。部屋番号がなければ、ビルの内部のどこにメールを配信するかを特定するために余分な労力が必要になります。そして、誤りが発生する可能性も増加します。たとえば、同じ建物に Kevin Smith という名前の人が 2 人居る場合、一方だけがメールを受け取ることになります。この問題を解決するには、それぞれの Kevin Smith のアドレスに部屋番号を追加する必要があります。
メールリストを作成するときは、ドメインと場所に依存しないアドレスを使用してください。別名ファイルの移植性と柔軟性を高めるため、メールリスト内の別名エントリをできるかぎり一般的でシステムに依存しない形式にしてください。たとえば、ドメイン example.com のシステム mars に john という名前のユーザーが居るとします。この場合、john@mars ではなく john@example という別名を作成してください。ユーザー john がシステム名を変更しても、example ドメインには存在し続ける場合、システム名の変更を反映するように別名ファイルを更新する必要はありません。
ローカルおよびドメインの両方で別名を使用する場合は、ループやデータベースの不整合が生じないようにしてください。また、あるシステムから別のシステムにユーザーを移動するときは、別名のループが生じないようにしてください。
別名エントリを作成するときは、1 行ごとに 1 つの別名を入力します。ユーザーのシステム名を含むエントリは 1 つだけにしてください。たとえば、ユーザー john には、次のエントリを作成できます。
john: john.smith johns: john.smith john.smith: john@mars
ローカル名やドメインに別名を作成できます。たとえば、システム mars にメールボックスがある、ドメイン north 内のユーザー fred の別名エントリでは、NIS 別名マップに次のエントリを作成できます。
fred: fred@north
ドメイン外のユーザーを含むメールリストを作成するときは、ユーザー名とドメイン名を持つ別名を作成してください。たとえば、ドメイン example.com のシステム privet に john という名前のユーザーが居るとします。この場合、john@example.com という別名を作成してください。送信者の電子メールアドレスは、メールがユーザードメイン外に発信されるときは、完全指定ドメイン名に自動的に変換されます。
メール別名ファイルの作成と管理には、次の方法を使用できます。
NIS aliases マップ、または、ローカルの /etc/mail/aliases ファイルでグローバルな使用のためのメール別名を作成します。また、同じ別名ファイルを使用するメールリストを作成して管理することができます。
メールサービスの構成に応じて、NIS ネームサービスを使って別名を管理し、グローバルな aliases データベースを保持します。または、すべてのローカル /etc/mail/aliases ファイルを更新して、別名の同期を維持することもできます。
自分だけが使用できるローカル ~/.mailrc ファイルか、だれでも使用できるローカル /etc/mail/aliases ファイルで、別名を作成して使用します。通常のユーザーは NIS 別名ファイルの作成や管理はできません。