DSN:SMTP電子メールの配信ステータス通知

DSNがSMTP電子メールに配信ステータスを導入する方法を確認します。

あなたが送信したメールには何が起こったのだろうか?

SMTPプロトコルの簡単な見方だけでも、通常のHELOに加えて、 拡張 SMTPサーバーが元の標準を超えてその機能を宣伝するようにするEHLOもあります。 これらの1つはDSNです。 DSN? DNAとDDTは十分ではありませんか?

電子メールが信頼できないと主張するには、誰かが " ...自分のサーバーをより良くして、それは私のメールを食べました... "というのは珍しいことではありません。 私は自分でそれをする。 しかし、これらの疑惑を支持する理由はあまりありません。

デリバリは、RFC 821以降(1982年以降)行われています。 SMTPプロトコルのDATA部分が終了し、サーバーが配信のために電子メールを受け入れるとすぐに、それはそれを担当します。 何らかの理由で受信者に届かない場合は、エラーの通知とともに元の送信者に送り返す必要があります。 これは、あまり知られていない電子メールをもたらしました。

それとは別に、この古いコンベンションでは、 エラーメッセージが表示されたり、 何も知らなかったりすることがありませんでした。電子メールが到着したかどうかは分かりません。 多くの場合、エラーメッセージは、エラーメッセージがない場合と同様に役立ちます。 電子メールがますます重要になってきて、これはもはや満足できるものではなくなっています(前と同じように)。

SMTPへのDSN拡張

RFC 1891では、 SMTPプロトコルの拡張が提案されているため、より信頼性が高く使い易いDSNシステムが実現するはずです。 これは、MAILとRCPTコマンドの拡張セットです(これは何も意味しない場合は、 SMTPの仕組みを読んでからここに戻ってください)。

EHLOなし、楽しみなし

まず、サーバーがDSNをサポートしていることを確認する必要があります。 したがって、私たちは彼にEHLOと言い、慎重に耳を傾けなければなりません。 もしそれが機能リストの何らかのDSNで応答すれば、我々の要求に応えることができると想定することができる。 そうでない場合は、別のサーバーを試してみるか、DSNなしでメールに戻ってください。 例えば(私の入力は青、サーバの出力は黒):

220 larose.magnet.at ESMTP Sendmail 8.8.6 / 8.8.6; Sun、1997年8月24日18:23:22 +0200
EHLO localhost
Hello- localhost [127.0.0.1]、あなたにお会いできてうれしく思います。
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ONEX
250-ETRN
250-XUSR
250ヘルプ

幸いなことに、DSNが見つかりました。

DSN送信者拡張

次のコマンドは、通常MAIL FROM:です。 DSNでは、これは変わりません。 ただし、RETとENVIDの2つの追加オプションがあります。

RETオプションは、MAILコマンドに任意に配置されましたが、他の場所でも同様にここに収まります。 目的は、配信エラーが発生した場合に返される元のメッセージの量を指定することです。 有効な引数は、FULLおよびHDRSです。 前者は、完全なメッセージがエラーメッセージに含まれるべきであることを意味し、HDRSは、サーバに失敗したメールのヘッダのみを返すように指示する。 RETが指定されていない場合は、サーバーが何をすべきかによって決まります。 ほとんどの場合、HDRSがデフォルト値になります。

ENVIDは本当に送信者に属しています。彼女または(むしろ)彼女のメールクライアントがこのエンベロープ識別子を作る唯一のものになるからです。 その目的は、送信者に、おそらく発行されたエラーメッセージが対応する電子メールを伝えることです。 このIDのフォーマットは、基本的に送信者の想像力に委ねられています。 この例ではENVIDは使用しません(想像力!):

MAIL FROM:sender@example.com RET = HDRS
250 sender@example.com ...送信者OK

どうやら、私たちは私たちのDSNにヘッダを戻したいだけです。

DSN受信者拡張

RCPT TO:公平な共有の拡張を得る:NOTIFYとORCPT。

NOTIFYはDSNの本当の心です。 サーバー配信状況の通知を送信するタイミングを通知します。 第1の可能な値はNEVERであり、いかなる状況においてもDSNを送信者に返さなければならないことを意味する。 これはDSNなしでは不可能でした。 それからSUCCESSがあります。SUCCESSはあなたの郵便が目的地で手配されたときにあなたに通知します。 FAILUREはSUCCESSの対応(!)です:配信中にアラーが発生した場合、DSNが到着します。 最後のオプションはDELAYです。配送が異常に遅れても通知されますが、実際の配送の成果(成功または失敗)はまだ決まっていません。 それが指定されていれば、唯一の引数でなければなりません。残りの3つはカンマで区切ってリストに表示されます。 SUCCESSとFAILUREはあなたのメールに何が起こったのかを(ほぼ)あなたに伝えて、かなり強力なチーム(!)を一緒にしています。

ORCPTの目的は、たとえば別のアドレスに転送された場合など、電子メールメッセージの元の受信者を保護することです。 このオプションの引数は、元の受信者の電子メールアドレスとアドレスタイプです。 アドレスの種類が最初に来て、その後にセミコロンと最後にアドレスが続きます。 例えば:

RCPT TO:support@example.com NOTIFY = FAILURE、DELAY ORCPT = rfc822; support@example.com
250 support@example.com ...受信者ok(待ち行列に入れる)

これは私たちが知っているようにデータが続き、うまくいけば、あなたに成功を通知する配達状況の通知があります。

DSNは機能しますか?

もちろん、この美しさとウィットは、送信者から受信者までのメール転送エージェントがDSNをサポートしている場合にのみ機能します。 ある日、彼らはそうするでしょう。