home *** CD-ROM | disk | FTP | other *** search
- .SH
- Deliver
- .PP
- The \fBdeliver\fR process changed little until late 1984,
- when a dead-host caching facility and advanced retry mechanisms
- were added to \fBdeliver\fR.
- Until then, the major changes to \fBdeliver\fR were
- bug fixes and changes to enhance error recovery.
- Most notably, the mechanism to return mail was made much more persistent.
- In MMDFI, if a message could not be returned to the sender, it
- was ``dropped on the floor''. This is not acceptable.
- The new mechanism first tries to return to the sender; if that fails,
- an attempt is made to send the message to the local ``Postmaster''
- address. If this too fails, then \fBdeliver\fR tries to write the message
- into a ``dead letter'' file
- (usually /usr/mmdf/lock/home/DeadLetters).
- The last resort is to scream loudly into the log files.
- .PP
- The recent changes to \fBdeliver\fR are
- designed to reduce \fBdeliver\fR's load
- on a system that handles a large amount of mail.
- The first change is to move the dead-host caching function out
- of the channels (currently only SMTP) and into \fBdeliver\fR. This has
- two advantages.
- First, \fBdeliver\fR no longer has to hand every address to
- the channel to find out that the host is dead. This was expensive, since
- communications between \fBdeliver\fR and the channel
- are interactive using pipes
- and thus involved a great deal of context-switching and pipe I/O.
- Second, the dead-host caching is now a generally available facility that
- can be used by any channel without duplication of code.
- .PP
- The second change is to add a mechanism for storing the retry history
- for each dead host on each channel including retry count and last retry
- time.
- From this information it is possible to implement intelligent
- retry strategies using exponential backoff and maximal retry times.
- This greatly reduces the overhead caused by recalcitrant hosts
- that are unavailable over a long period of time.
- The retry history change is conditionally compiled
- into deliver since it can,
- by design, use quite a bit of memory if there are a lot of dead
- hosts or pending messages (or both!).
- Machines with a relatively limited address space may not
- be able to use this feature.
-