Expand description
SMTP (Simple Mail Transfer Protocol) layer implementation.
Implements RFC 5321 SMTP and RFC 1869 ESMTP packet parsing as a zero-copy view into a packet buffer.
§Protocol Overview
SMTP is a text-based protocol operating over TCP. Standard ports:
- 25: MTA-to-MTA relay
- 587: Client submission (RFC 6409)
- 465: SMTPS (deprecated, but still widely used)
§Packet Format
Client Command:
VERB [parameters]\r\nServer Reply:
NNN<SP>text\r\n (single-line)
NNN-text\r\n ... NNN<SP>text\r\n (multi-line)§SMTP Commands (RFC 5321 §4.1)
| Command | Description |
|---|---|
| EHLO | Extended HELLO (ESMTP) |
| HELO | HELLO |
| Begin mail transaction (FROM) | |
| RCPT | Identify recipient (TO) |
| DATA | Begin message data |
| RSET | Reset transaction |
| VRFY | Verify address |
| EXPN | Expand mailing list |
| HELP | Help information |
| NOOP | No operation |
| QUIT | Terminate connection |
| AUTH | Authenticate (RFC 4954) |
| STARTTLS | Start TLS negotiation (RFC 3207) |
Re-exports§
pub use builder::SmtpBuilder;
Modules§
- builder
- SMTP packet builder.
Structs§
- Smtp
Layer - A zero-copy view into an SMTP layer within a packet buffer.
Constants§
- CMD_
AUTH - CMD_
BDAT - CMD_
DATA - CMD_
EHLO - CMD_
EXPN - CMD_
HELO - CMD_
HELP - CMD_
MAIL - CMD_
NOOP - CMD_
QUIT - CMD_
RCPT - CMD_
RSET - CMD_
STARTTLS - CMD_
VRFY - REPLY_
ARG_ SYNTAX_ ERROR - REPLY_
AUTH_ FAILED - REPLY_
AUTH_ INPUT - REPLY_
AUTH_ REQUIRED - REPLY_
AUTH_ SUCCESS - REPLY_
BAD_ CMD_ SEQUENCE - REPLY_
CANNOT_ VRFY - REPLY_
CLOSING - REPLY_
CMD_ NOT_ IMPL - REPLY_
CMD_ NOT_ IMPL_ PARAM - REPLY_
CMD_ UNRECOGNIZED - REPLY_
DATA_ INPUT - REPLY_
EXCEED_ STORAGE - REPLY_
HELP - REPLY_
INSUFF_ STORAGE - REPLY_
LOCAL_ ERROR - REPLY_
MAILBOX_ NAME_ INVALID - REPLY_
MAILBOX_ UNAVAIL - REPLY_
MAILBOX_ UNAVAIL_ PERM - REPLY_
OK - REPLY_
SERVICE_ READY - REPLY_
SERVICE_ UNAVAIL - REPLY_
SYSTEM_ STATUS - REPLY_
TEMP_ AUTH_ FAIL - REPLY_
TRANSACTION_ FAILED - REPLY_
USER_ NOT_ LOCAL - REPLY_
USER_ NOT_ LOCAL_ PERM - SMTPS_
PORT - SMTPS (over TLS) port.
- SMTP_
MIN_ HEADER_ LEN - Minimum SMTP payload size.
- SMTP_
PORT - SMTP standard relay port.
- SMTP_
SUBMISSION_ PORT - SMTP submission port (RFC 6409).
Statics§
- SMTP_
COMMANDS - SMTP_
FIELD_ NAMES - Field names for Python/generic access.
Functions§
- is_
smtp_ payload - Returns true if
buflooks like an SMTP control-connection payload. - reply_
code_ description - Returns a description for an SMTP reply code.
- smtp_
show_ fields - Returns a human-readable display of SMTP layer fields.