The code for SMTP is divided internally into two sections:
front-end and back-end code.
The front-end code handles the low-level details of the protocol.
The back-end code handles the validation and delivery details in a
The following features are common to all SMTP front-ends:
Validates senders and recipients according to ``mailrules'' processing.
is set, all recipient addresses not rejected by mail rules are allowed,
and its contents are appended to each recipient address.
Back-end validation is omitted.
Handles RFC 2554 SMTP authentication.
After authentication all recipients not rejected by mail rules are allowed,
and back-end validation is omitted.
Automatically handles either bare NL or RFC 821/2821 compliant CR/NL
Rejects messages that exceed
bytes in the body.
Times out connections after
seconds of inactivity (defaults to 1200 seconds or 20 minutes), or
seconds after the connection was established (defaults to 86400 seconds or
Counts the number of "Received:" and "Delivered-To:" headers, and rejects
the message if more than
of either are seen (defaults to 100).
All error responses are logged.
Handles (ignores) RFC 1869 extended parameters on the ``RCPT TO:''
and ``MAIL FROM:'' commands.
Initial greeting message is configureable by
Rejects bounce messages (messages with an empty envelope sender) that
attempt to deliver to multiple recipients.
Optionally adds a fixup "Received:" header for hosts that have different
incoming and outgoing hostnames or IPs.
if you want this header added.
Uses the echo backend to simply echo back the sender and recipient
parameters, and the size of the data to the client.
Uses the ``qmail validation features'' to validate addresses, and
the ``qmail backend'' to deliver messages.
is set, all SMTP commands are rejected with this message.
If the message starts with a "-", a permanent error number is used and the
leading "-" is stripped.
is not set, it execs its command line.