aboutsummaryrefslogtreecommitdiff
path: root/contrib/sendmail/libmilter/docs/design.html
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/sendmail/libmilter/docs/design.html')
-rw-r--r--contrib/sendmail/libmilter/docs/design.html147
1 files changed, 0 insertions, 147 deletions
diff --git a/contrib/sendmail/libmilter/docs/design.html b/contrib/sendmail/libmilter/docs/design.html
deleted file mode 100644
index f2e5f11d8e07..000000000000
--- a/contrib/sendmail/libmilter/docs/design.html
+++ /dev/null
@@ -1,147 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>Architecture</TITLE>
-</HEAD>
-<BODY>
-<!--
-$Id: design.html,v 1.12 2006/08/08 20:55:57 ca Exp $
--->
-
-<H1>Architecture</H1>
-
-<H2>Contents</H2>
-
-<UL>
- <LI>Design Goals
- <LI>Implementing Filtering Policies
- <LI>MTA - Filter Communication
-</UL>
-
-<H2>Goals</H2>
-
-The Sendmail Content Management API (Milter) provides an interface for
-third-party software to validate and modify messages as they pass
-through the mail transport system. Filters can process messages'
-connection (IP) information, envelope protocol elements, message
-headers, and/or message body contents, and modify a message's
-recipients, headers, and body. The MTA configuration file specifies
-which filters are to be applied, and in what order, allowing an
-administrator to combine multiple independently-developed filters.
-
-<P>
-We expect to see both vendor-supplied, configurable mail filtering
-applications and a multiplicity of script-like filters designed by and
-for MTA administrators. A certain degree of coding sophistication and
-domain knowledge on the part of the filter provider is assumed. This
-allows filters to exercise fine-grained control at the SMTP level.
-However, as will be seen in the example, many filtering applications
-can be written with relatively little protocol knowledge.
-
-<P>
-Given these expectations, the API is designed to achieve the following
-goals:
-
-<OL>
- <LI>Safety/security.
- Filter processes should not need to run as root
- (of course, they can if required, but that is a local issue);
- this will simplify coding
- and limit the impact of security flaws in the filter program.
-<P>
- <LI>Reliability.
- Coding failures in a Milter process that cause that process
- to hang or core-dump
- should not stop mail delivery.
- Faced with such a failure,
- sendmail should use a default mechanism,
- either behaving as if the filter were not present
- or as if a required resource were unavailable.
- The latter failure mode will generally have sendmail return
- a 4xx SMTP code (although in later phases of the SMTP protocol
- it may cause the mail to be queued for later processing).
-<P>
- <LI>Simplicity.
- The API should make implementation of a new filter
- no more difficult than absolutely necessary.
- Subgoals include:
- <UL>
- <LI>Encourage good thread practice
- by defining thread-clean interfaces including local data hooks.
- <LI>Provide all interfaces required
- while avoiding unnecessary pedanticism.
- </UL>
-<P>
- <LI>Performance.
- Simple filters should not seriously impact overall MTA performance.
-</OL>
-
-<H2>Implementing Filtering Policies</H2>
-
-Milter is designed to allow a server administrator to combine
-third-party filters to implement a desired mail filtering policy. For
-example, if a site wished to scan incoming mail for viruses on several
-platforms, eliminate unsolicited commercial email, and append a mandated
-footer to selected incoming messages, the administrator could configure
-the MTA to filter messages first through a server based anti-virus
-engine, then via a large-scale spam-catching service, and finally
-append the desired footer if the message still met requisite criteria.
-Any of these filters could be added or changed independently.
-
-<P>
-Thus the site administrator, not the filter writer, controls the
-overall mail filtering environment. In particular, he/she must decide
-which filters are run, in what order they are run, and how they
-communicate with the MTA. These parameters, as well as the
-actions to be taken if a filter becomes unavailable, are selectable
-during MTA configuration. <A href="installation.html">Further
-details</A> are available later in this document.
-
-<H2>MTA - Filter communication</H2>
-
-Filters run as separate processes, outside of the sendmail address
-space. The benefits of this are threefold:
-
-<OL>
- <LI>The filter need not run with "root" permissions, thereby
- avoiding a large family of potential security problems.</LI>
-
- <LI>Failures in a particular filter will not affect the MTA or
- other filters.</LI>
-
- <LI>The filter can potentially have higher performance because of
- the parallelism inherent in multiple processes.</LI>
-</OL>
-
-<P>
-Each filter may communicate with multiple MTAs at the same time over
-local or remote connections, using multiple threads of execution.
-<A HREF="#figure-1">Figure 1</A> illustrates a possible network of
-communication channels between a site's filters, its MTAs, and other
-MTAs on the network:
-</P>
-<DIV align="center">
-<A name="figure-1"><IMG src="figure1.jpg" ALT=""></A><BR>
-<B>Figure 1: A set of MTA's interacting with a set of filters.</B>
-</DIV>
-<P>
-The Milter library (libmilter) implements the communication protocol.
-It accepts connections from various MTAs, passes the relevant data to
-the filter through callbacks, then makes appropriate responses based
-on return codes. A filter may also send data to the MTA as a result
-of library calls. <A href="#figure-2">Figure 2</A> shows a single
-filter process processing messages from two MTAs:
-</P>
-<DIV align="center">
-<IMG src="figure2.jpg" ALT=""><BR>
-<B>Figure 2: A filter handling simultaneous requests from two MTA's.</B>
-</DIV>
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 2000, 2003 Sendmail, Inc. and its suppliers.
-All rights reserved.
-<BR>
-By using this file, you agree to the terms and conditions set
-forth in the LICENSE.
-</FONT>
-</BODY>
-</HTML>