0

メールを受信して​​保存できる独自の SMTP サーバーを実装することを考えています。これは小さな趣味のプロジェクトなので、コードをシンプルに保ちたいと考えています。たとえば、メールを送信するためのロジックを実装したくありません。ただし、RFC 5321の次のセクションが気になります。

サーバーは
、メール データ表示の終了に続く処理が部分的にしか
成功しない場合に、特別な処理を行う必要があります。これは
、SMTP サーバーが、複数の受信者とメール データを受け入れた後
、すべてではなく一部の
受信者にメール データが正常に配信されたことを検出した場合に発生する可能性があります。そのような場合、DATA コマンドへの応答
は OK 応答でなければなりません。ただし、SMTP サーバーは、
「配信不能メール」通知メッセージを作成して、
メッセージの発信者に送信する必要があります。

これは、通常250 OK、メッセージが安全に保存されていることを確認した場合にのみ戻る場合でも、誰かが既存のメールと非同時に既存のメールアドレス?標準に違反せずにそれを回避する方法はありますか? 452 Too many recipients (my RCPT limit is 1, not 100 as required by RFC 5321)そうでない場合、誰かが複数の受信者にメールを送信しようとするたびに返信するのはどれほど悪いことでしょうか?

4

2 に答える 2

0

このような場合、DATAコマンドへの応答はOK応答でなければなりません。ただし、SMTPサーバーは、「配信不能メール」通知メッセージを作成して、メッセージの発信者に送信する必要があります。

それは私にはかなり明白に思えます。標準に準拠する場合は、OK応答(一部の受信者にメッセージを配信できるため)と発信者に失敗通知(他の受信者に配信できなかったため)の両方を返す必要があります。

一方、あなたの質問では、1人の受信者のみの配信を受け入れるとのことでした。そのため、a)100人の受信者を許可しないことで、いずれにせよ標準に準拠していないことをすでに辞任しています。b)「メール」の失敗モード受信者が1人だけの場合、すべてではありませんが一部の受信者にデータを正常に配信できます。

于 2013-02-24T23:22:42.720 に答える
0

状況を再考した後、サーバーがRCPTコマンド時にすべての受信者にメールを配信できることを保証できる場合、RFC 準拠の方法でこれを行うことが実際に可能であると思います。対応するRCPTコマンドを受信しました。もちろん、これはサーバーが各受信者と最大メールサイズに十分なハードディスク容量を確保する必要があることを意味します。また、受信者の現在のメールボックス サイズに最大メール サイズを加えた値が最大メールボックス サイズを超える場合、サーバーは受信者へのメールを単に拒否することができます。

もちろん、並行性をサポートするために、実際の実装はもう少し複雑です。

于 2013-02-25T16:10:17.377 に答える