2013年5月1日水曜日

SMTPのETRN(Extended TuRN)プロトコルについて



メール配送時、自分のsmtpサーバから他のsmtpサーバに対して、メールの送信や、
送信待ちメールのデキューのリクエストを行えるsmtpプロトコルが存在した。

通常はメールを送れば相手先にはすぐに届くのはずなのだが、
自分が利用するsmtpサーバの都合や、または相手先の事情で
一時的に配送処理ができないとキューに落ちるため、
利用するメールサーバの設定に従って再送処理されるのを待たざるを得ない。

しかしetrnリクエストを利用することで、 リモートサーバに格納されているメールを
指定されたホストに送信させることができる。


・自分が配送依頼するメールサーバのMX
 example.com
・リクエストする対象ドメイン
 example.net

% telnet example.com 25
Trying *.*.*.*...
Connected to localhost.
Escape character is '^]'.
220 mta01.example.com ESMTP server
ehlo example.net
250-mta01.example.net
250-PIPELINING
250-DSN
250-8BITMIME
250 SIZE 10485760
etrn example.net
252 Ok, pending messages for node example.net started

エンドユーザーが任意に該当ド メインの処理を要求できるので便利なように思えるが、
サーバ管理者にしてみればメールの配送処理をユーザ操作に依存する危険なコマンドになる。
そのため通常は一般ユーザからのetrnリクエストは拒否させる設定になっているはずである。

しかしこのコマンドは使い方によってはサーバ管理者にも利点がある。
特定ドメインのキュー配送処理を手動で制御できる点である。
一般ユーザからの操作は禁止し、管理者だけに許可を、または一般ユーザがアクセスできない
キュー配送専用サーバだけは許可させる、という使い方はできるのではないか。