RFC 1870 / START HERE
SMTP message size, before the details
SMTP Message Size Declaration; SMTP means Simple Mail Transfer Protocol. SIZE is the extension keyword, not a new transport protocol.
Mail systems transfer messages using SMTP. This extension lets a server advertise a fixed size limit and lets a sending client declare an estimated number of message bytes before sending the body.
The idea in one picture
Estimate bytes
Check resources
Transfer or refuse
A simplified picture of the idea; the chapters explain the actual mechanisms.
Why it exists
Large encoded messages consume bandwidth and storage. An early size check can avoid a transfer that will fail, while keeping fixed policy, temporary storage shortages and recipient-specific limits separate.
A familiar example
A fictional server advertises SIZE 1000000 and can reject a declared 1200000-octet message before its body arrives. A smaller declaration is only an estimate: storage can run out later, and SIZE never marks the end of DATA.
Helpful background
You can start here without reading another RFC. If these ideas are unfamiliar, these short introductions may help.
What you’ll learn next
Begin with chapter one, or choose a topic.
- Discover the server’s size policySMTP is the protocol mail systems use to transfer messages. EHLO asks which extensions the server supports; SIZE can also advertise a fixed byte limit.→
- Count message octets, not transport dotsAn octet is one eight-bit byte. SIZE counts the transmitted message headers, blank line, body and CRLF line endings, before SMTP dot quoting.→
- Reject early or continue the envelopeThe extended MAIL command gives the server a chance to refuse a costly transfer before any message body is sent.→
- Keep DATA framing separate from an estimateThe receiver still uses SMTP’s dot-line terminator to find the end of DATA, even when the declared size is wrong.→
- Track recipient outcomes and resource limitsOne envelope can have several recipients with different size policies. Keep their acceptance and retry outcomes separate.→
This introduction explains RFC 1870 (1995). Read the original RFC ↗