diff options
author | Gilles Chehade <gilles@cvs.openbsd.org> | 2009-03-16 20:39:42 +0000 |
---|---|---|
committer | Gilles Chehade <gilles@cvs.openbsd.org> | 2009-03-16 20:39:42 +0000 |
commit | 24232d701433fb2f0f245805809f63900d59155a (patch) | |
tree | 9628ec1318691a6eb55a3d38eb9b73b581fa966e /usr.sbin/smtpd | |
parent | 932526b9f20b41f7f875ae17b1139b17d7fdbe45 (diff) |
this file has been deprecated for a while and will not be updated, so
lets just remove it as some people may believe it actually describes
the architecture ...
Diffstat (limited to 'usr.sbin/smtpd')
-rw-r--r-- | usr.sbin/smtpd/ARCHITECTURE | 105 |
1 files changed, 0 insertions, 105 deletions
diff --git a/usr.sbin/smtpd/ARCHITECTURE b/usr.sbin/smtpd/ARCHITECTURE deleted file mode 100644 index 0214305de1d..00000000000 --- a/usr.sbin/smtpd/ARCHITECTURE +++ /dev/null @@ -1,105 +0,0 @@ -+==============================+ -|The SMTP Daemon Architecture | -+==============================+ - -Introduction ------------- - -The SMTP daemon is a complete mail architecture designed to provide -an MTA and MDA for OpenBSD systems (and others!). - -The SMTP daemon is configurable through a simple pf-like syntax to -select external or local delivery and the means to do so. - -The SMTP Daemon relies on a fully asynchronous and event based data -transfer model. The IMSG pseudo-protocol is used throughout the daemon -to provide communication between separate privilege-separated -processes. - -The following processes are currently implemented: - - * smtp: The unprivileged SMTP server - * mfa: Mail filter agent - * queue: A queue scheduler - * mda: Local mail delivery agent - * mta: Remote mail delivery agent - * lka: Lookup agent: handles DNS, db, file and external maps - * control: External interaction gateway - -The SMTP Server ---------------- - -The SMTP Server conforms to RFC 5321 and also provides interesting -extensions such as STARTTLS (RFC 2487). - - -The Mail Filter Agent ---------------------- - -The mail filter agent has two roles. First it decides if a mail is -allowed to be delivered by the daemon, and then performs resolution -to determine the delivery method that applies to the mail, either -local or remote. The second duty is to perform optional modifications -on the envelope content. - - -WorkFlow --------- - -The base structure that traverses most of smtpd's architecture is a -struct msg. The typical workflow is as shown below from left to right: - -+------+ +-----+ -| SMTP |======+ +===| MDA | -+------+ | +-----+ +-------+ | +-----+ - |=====| MFA |=====| Queue |=====| - +-----+ +-------+ | +-----+ - || +===| MTA | - +-----+ +-----+ - | LKA | - +-----+ - - -Client -> Server workflow: - -1- The message is initially received from either the listening service or - /usr/sbin/sendmail (for which smtpctl is a link). - -2- As envelope is gathered, the information is handed out to MFA for - validation. - -3- MFA takes decision as to whether or not the message can be delivered - locally or relayed out and notifies SMTP of its decision. - -4- If message is not rejected, a file descriptor is requested from QUEUE - by SMTP which will then write the message to the file descriptor. - -5- Once content is written, SMTP notifies QUEUE that the content is - fully written and provides a list of recipients. - -6- QUEUE constructs batches of messages with same message ID and going - to same destination, and registers them to the batch queue. It then - writes the information on-disk so that it can recover from a crash - or shutdown, and notifies SMTP that message is accepted. - -7- SMTP notifies client that message was accepted. - - -Queue workflow: - -1- A batch queue traversal is done. For each batch, QUEUE computes the - retry time based on the number of times it was tried already and - the time of last attempt. A batch may be in three states: - - a) It is either ready for processing, in which case it is - handed to MDA or MTA for delivery attempt. - - b) The delay before next retry has not yet expired, the - scheduler will simply ignore it. - - c) The batch age (currently 4 days) has expired. The - scheduler will eventually generate a mailer daemon batch - and remove the original batch from the queue. - - -XXX - needs to be completed/improved/updated |