この節では、LMTP ダイアログのサンプルを使用して、そこで示される内容を説明します。リレー上の LMTP クライアントでは、標準の LMTP プロトコルを使用してバックエンドストア上の LMTP サーバーと交信します。ただし、このプロトコルは特定の方法で使用されます。例:
---> LHLO <--- 250 OK |
LHLO メッセージに対してアクションは実行されません。返信は常に 250 OK です。
---> MAIL FROM: address size=messageSizeInBytes <--- 250 OK |
差出人のアドレスに対するチェックまたは変換は行われません。size= パラメータにより、配信されるメッセージのサイズがバイト単位で指定されます。これは、プロトコルで記述されているサイズと同じサイズです。必ずしもメッセージの正確なサイズではありませんが、実際のサイズがこれを超えることはありません。LMTP サーバーによって、メッセージの受信に必要な、このサイズのメモリバッファーが割り当てられます。
---> RCPT TO: uid+folder@domain xquota=size,number xdflg=xxx <--- 250 OK |
受信される際に受取人のアドレスのチェックは行われませんが、受取人の一覧が後で使用するために作成されます。プライマリドメインの uids では、アドレスの @domain の部分は省略されます。また、+folder の部分はオプションです。これは MTA のメッセージストアチャネルで使用されるものと同じアドレス形式です。
xquota= パラメータでは、最大合計サイズと最大メッセージ数で構成されるユーザーのメッセージ制限容量が指定されます。この情報は、アドレス変換を実行するためにユーザーについての LDAP 検索を実行している間に取得されたもので、MTA によって提供されます。また、この情報は、ディレクトリと同期化されたメッセージストアで制限容量の情報を保持するために使用されます。制限容量の情報を取得しても、パフォーマンスヒットが追加で発生することはありません。
xdflg= パラメータではビットフィールドとして解釈される数値が指定されます。このビットによってメッセージの配信方法が制御されます。たとえば、値が 2 であるビットが設定されている場合、ユーザーが制限容量を超えていてもメッセージの配信が保証されます。xdflg は内部パラメータであり、それに含まれるビットは予告なしに変更または追加されることがあるので注意してください。サーバーでこの拡張機能を使用してほかのクライアントをサポートしたり、ほかのサーバーでこのパラメータとともにクライアントを使用することはできません。
この対話は何度も繰り返されます (受取人ごとに 1 回実行)。
--->DATA ---> <メッセージテキスト> --->. |
次に、SMTP の場合と同じように、LMTP クライアントからメッセージ全体がドット付きで送信されます。行にある単独のドット (.) でメッセージは終わります。メッセージサイズが超過している場合、LMTP サーバーは次の内容を送信します。
<--- 500 message too big
その後接続を終了します。
メッセージが正しく受信された場合、LMTP サーバーは RCPT TO: 行で指定されている各受取人のステータスを LMTP クライアントに返します。たとえば、メッセージの配信が成功した場合の応答は次のようになります。
<--- 250 2.5.0 address OK
この address は RCPT TO: 行に表示されたアドレスです。
交信は別の MAIL FROM: 行と繰り返されるか、あるいは次の対話で終了します。
---> quit <--- 221 OK |
表 15–1 に、各受取人のステータスコードを示します。この表には 3 つの列があり、最初の列にショートコード、2 番目の列にそれと同義のロングコード、3 番目の列にステータステキストを示します。2.x.x ステータスコードは成功コード、4.x.x コードは再試行可能なエラー、5.x.x コードは再試行不能なエラーです。
表 15–1 受取人の LMTP ステータスコード
ショートコード |
ロングコード |
ステータステキスト |
---|---|---|
250 |
2.5.0 |
OK |
420 |
4.2.0 |
Mailbox Locked |
422 |
4.2.2 |
Quota Exceeded |
420 |
4.2.0 |
Mailbox Bad Formats |
420 |
4.2.0 |
Mailbox not supported |
430 |
4.3.0 |
IMAP IOERROR |
522 |
5.2.2 |
Persistent Quota Exceeded |
523 |
5.2.3 |
Message too large |
511 |
5.1.1 |
mailbox nonexistent |
560 |
5.6.0 |
message contains null |
560 |
5.6.0 |
message contains nl |
560 |
5.6.0 |
message has bad header |
560 |
5.6.0 |
message has no blank line |
これ以外の場合は、メッセージストアのメールボックス、ネイティブ (したがって UNIX も)、およびファイルの配信オプションに変更があります。これらのルールの目的は、メッセージが適切な LMTP チャネルを介してバックエンドサーバーに送信されるアドレスを生成することです。生成されたアドレスは、次の形式のソースルートされたアドレスになります。
@sourceroute:localpart@domain |