メールサービスはさまざまなプログラムとの組み合わせで動作します。次の図に、各プログラムがどのように連携するかを示します。
図 3 sendmail の動作の仕組み
メールメッセージを送信するとき、sendmail プログラムは次の手順を実行します。
mailx などのプログラムを使ってメッセージが送信されます。詳細は、mailx(1) のマニュアルページを参照してください。
メッセージは、そのメッセージを生成したプログラムによって収集され、sendmail デーモンに渡されます。
sendmail デーモンがメッセージのアドレスを識別可能な各部に分割して解析します。sendmail デーモンは、/etc/mail/sendmail.cf という構成ファイルの情報を使ってネットワーク名の構文、別名、転送情報、およびネットワークトポロジを決定します。sendmail はこの情報を使用して、メッセージが受信者に到達する経路を決定します。
sendmail デーモンはメッセージを適切なシステムに渡します。
ローカルシステムの /usr/lib/mail.local プログラムは、メッセージの受信者の /var/mail/username ディレクトリのメールボックスにメールを配信します。
受信者は、メールが届いたことが通知されるので、mail、mailx などのプログラムを使用してメールを受け取ります。
sendmail プログラムは、メールの再ルーティングのメカニズムとして、別名指定、転送、および取り込みの 3 つをサポートしています。
選択する再ルーティングメカニズムによって必要な管理レベルが異なります。
別名を使用すれば、使用するファイルの種類に基づいて、サーバー全体またはネームサービス全体をベースにしてアドレス名をマップできます。
ネームサービス別名ファイルを使用すれば、メール再ルーティングの変更を単一のソースで管理できます。ただし、ネームサービスの別名指定では、再ルーティングの変更を伝達する際に遅延が起こります。
通常、ネームサービスの管理は、特定のシステム管理者グループに制限されます。一般ユーザーは、このファイルを管理できません。
サーバー別名ファイルを使用する際の考慮事項:
指定されたメールサーバーの管理者になる任意のユーザーが再ルーティングを管理できます。標準ユーザーはこのファイルを管理できません。
サーバー別名指定は、再ルーティングの変更を伝達する際の遅延はほとんどありません。
変更はローカルメールサーバーだけに影響します。ほとんどのメールが単一のメールサーバーに送信される場合は、影響が少なくなります。ただし、この変更を多くのメールサーバーに伝達する必要がある場合は、ネームサービスの別名指定を使用します。
詳細は、メール別名ファイルおよび メール別名ファイルを管理するを参照してください。
転送では、ユーザーが .forward ファイルを作成して、着信メールを別のメールボックス、別のメールプログラム、または別のメールホストに再ルーティングできます。
詳細は、.forward ファイルおよび .forward ファイルを管理するを参照してください。
取り込み
取り込みでは、root アクセス権を必要とせず、ユーザーが別名リストを保守します。このメカニズムを提供するには、root ユーザーは、サーバー上の別名ファイル内に適切なエントリを作成する必要があります。このエントリが作成されると、ユーザーは必要に応じてメールをルーティングし直すことができるようになります。詳細は、/etc/mail/aliases ファイルおよび メール別名ファイルを管理するを参照してください。
配信時にメールメッセージがたどる経路は、メールクライアントシステムの設定とメールドメインのトポロジによって異なります。メールホストやメールドメインの各追加レベルでは、別名のもう 1 つの解釈を追加できますが、ルーティングプロセスはほとんどのホストで同じになります。
メールクライアントシステムは、sendmail をローカルモードで実行してメールをローカルで受信するように設定できます。すべてのメールサーバーと一部のメールクライアントでは、ローカルモードがデフォルトモードです。ローカルモードでは、メールメッセージは次のようにルーティングされます。
可能な場合はメール別名を展開し、ローカルのルーティングプロセスを再起動します。
ネームサービスでメール別名を確認することで、メールアドレスが展開されます。新しい値が見つかった場合、古い値が置換されます。次にこの新しい別名が再度確認されます。
メールがローカルの場合、/usr/lib/mail.local に配信されます。
メールはローカルのメールボックスに配信されます。
メールアドレスがこのメールドメインにホストを含んでいると、そのホストにメールを配信します。
アドレスがこのメールドメインにホストを含んでいない場合、メールホストにメールを転送します。
メールホストはメールサーバーと同じルーティングプロセスを使用します。ただし、メールホストはホスト名に加えて、ドメイン名が宛先になっているメールも受信できます。