summaryrefslogtreecommitdiffstats
path: root/contrib/sendmail/libmilter/docs
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>2008-08-28 02:25:51 +0000
committerpeter <peter@FreeBSD.org>2008-08-28 02:25:51 +0000
commitea50d71feb02a78d4d5fa746a26ca7ddc6e8cb19 (patch)
treedaf40952cf309641cc6c7d987989fd2abce2d758 /contrib/sendmail/libmilter/docs
parenta2b986fa722f9860a6c56bb5cc724b7e2937d1b7 (diff)
downloadFreeBSD-src-ea50d71feb02a78d4d5fa746a26ca7ddc6e8cb19.zip
FreeBSD-src-ea50d71feb02a78d4d5fa746a26ca7ddc6e8cb19.tar.gz
Stage 1 of sendmail dist tree flattening. contrib/sendmail/contrib
prevents doing this in one pass.
Diffstat (limited to 'contrib/sendmail/libmilter/docs')
-rw-r--r--contrib/sendmail/libmilter/docs/api.html320
-rw-r--r--contrib/sendmail/libmilter/docs/design.html147
-rw-r--r--contrib/sendmail/libmilter/docs/figure1.fig56
-rw-r--r--contrib/sendmail/libmilter/docs/figure1.jpgbin21406 -> 0 bytes
-rw-r--r--contrib/sendmail/libmilter/docs/figure1.ps173
-rw-r--r--contrib/sendmail/libmilter/docs/figure2.fig67
-rw-r--r--contrib/sendmail/libmilter/docs/figure2.jpgbin47947 -> 0 bytes
-rw-r--r--contrib/sendmail/libmilter/docs/figure2.ps242
-rw-r--r--contrib/sendmail/libmilter/docs/index.html92
-rw-r--r--contrib/sendmail/libmilter/docs/installation.html165
-rw-r--r--contrib/sendmail/libmilter/docs/other.html18
-rw-r--r--contrib/sendmail/libmilter/docs/overview.html215
-rw-r--r--contrib/sendmail/libmilter/docs/sample.html537
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_addheader.html126
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_addrcpt.html83
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_addrcpt_par.html88
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_chgfrom.html94
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_chgheader.html120
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_delrcpt.html82
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_getpriv.html62
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_getsymval.html105
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_insheader.html145
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_main.html51
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_opensocket.html78
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_progress.html68
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_quarantine.html73
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_register.html224
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_replacebody.html93
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_setbacklog.html64
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_setconn.html93
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_setdbg.html67
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_setmlreply.html145
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_setpriv.html80
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_setreply.html117
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_setsymlist.html107
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_settimeout.html66
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_stop.html74
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_version.html86
-rw-r--r--contrib/sendmail/libmilter/docs/xxfi_abort.html83
-rw-r--r--contrib/sendmail/libmilter/docs/xxfi_body.html97
-rw-r--r--contrib/sendmail/libmilter/docs/xxfi_close.html81
-rw-r--r--contrib/sendmail/libmilter/docs/xxfi_connect.html121
-rw-r--r--contrib/sendmail/libmilter/docs/xxfi_data.html89
-rw-r--r--contrib/sendmail/libmilter/docs/xxfi_envfrom.html97
-rw-r--r--contrib/sendmail/libmilter/docs/xxfi_envrcpt.html97
-rw-r--r--contrib/sendmail/libmilter/docs/xxfi_eoh.html56
-rw-r--r--contrib/sendmail/libmilter/docs/xxfi_eom.html62
-rw-r--r--contrib/sendmail/libmilter/docs/xxfi_header.html111
-rw-r--r--contrib/sendmail/libmilter/docs/xxfi_helo.html64
-rw-r--r--contrib/sendmail/libmilter/docs/xxfi_negotiate.html277
-rw-r--r--contrib/sendmail/libmilter/docs/xxfi_unknown.html84
51 files changed, 0 insertions, 5742 deletions
diff --git a/contrib/sendmail/libmilter/docs/api.html b/contrib/sendmail/libmilter/docs/api.html
deleted file mode 100644
index 4214df4..0000000
--- a/contrib/sendmail/libmilter/docs/api.html
+++ /dev/null
@@ -1,320 +0,0 @@
-<HTML>
-<HEAD><TITLE>Milter API</TITLE></HEAD>
-<BODY>
-<!--
-$Id: api.html,v 1.35 2006/11/30 23:09:23 ca Exp $
--->
-<H1>Milter API</H1>
-
-<H2>Contents</H2>
-<UL>
- <LI><A HREF="#LibraryControlFunctions">Library Control Functions</A>
- <LI><A HREF="#DataAccessFunctions">Data Access Functions</A>
- <LI><A HREF="#MessageModificationFunctions">Message Modification Functions</A>
- <LI><A HREF="#Callbacks">Callbacks</A>
- <LI><A HREF="#Miscellaneous">Miscellaneous</A>
-</UL>
-
-<H2><A NAME="LibraryControlFunctions">Library Control Functions</A></H2>
-
-Before handing control to libmilter (by calling
-<A HREF="smfi_main.html">smfi_main</A>), a filter may call the following
-functions to set libmilter parameters.
-In particular, the filter must call
-<A HREF="smfi_register.html">smfi_register</A> to register its callbacks.
-Each function will return either MI_SUCCESS or MI_FAILURE to
-indicate the status of the operation.
-
-<P>
-None of these functions communicate with the MTA. All alter the
-library's state, some of which is communicated to the MTA inside
-<A HREF="smfi_main.html">smfi_main</A>.
-
-<P>
-<TABLE BORDER="1" CELLSPACING=0 CELLPADDING=2><TR BGCOLOR="#dddddd"><TH>Function</TH><TH>Description</TH></TR>
-
-<TR><TD><A HREF="smfi_opensocket.html">smfi_opensocket</A></TD><TD>Try to create the interface socket.</TD></TR>
-
-<TR><TD><A HREF="smfi_register.html">smfi_register</A></TD><TD>Register a filter.</TD></TR>
-
-<TR><TD><A HREF="smfi_setconn.html">smfi_setconn</A></TD><TD>Specify socket to use.</TD></TR>
-
-<TR><TD><A HREF="smfi_settimeout.html">smfi_settimeout</A></TD><TD>Set timeout.</TD></TR>
-
-<TR><TD><A HREF="smfi_setbacklog.html">smfi_setbacklog</A></TD><TD>Define the incoming <CODE>listen(2)</CODE> queue size.</TD></TR>
-
-<TR><TD><A HREF="smfi_setdbg.html">smfi_setdbg</A></TD><TD>Set the milter library debugging (tracing) level.</TD></TR>
-
-<TR><TD><A HREF="smfi_stop.html">smfi_stop</A></TD><TD>Cause an orderly shutdown.</TD></TR>
-
-<TR><TD><A HREF="smfi_main.html">smfi_main</A></TD><TD>Hand control to libmilter.</TD></TR>
-
-</TABLE>
-
-<H2><A NAME="DataAccessFunctions">Data Access Functions</A></H2>
-
-The following functions may be called from within the filter-defined callbacks
-to access information about the current connection or message.
-<P>
-<TABLE BORDER="1" CELLSPACING=0 CELLPADDING=2><TR bgcolor="#dddddd"><TH>Function</TH><TH>Description</TH></TR>
-<TR><TD><A HREF="smfi_getsymval.html">smfi_getsymval</A></TD><TD>Return the value
-of a symbol.</TD></TR>
-
-<TR><TD><A HREF="smfi_getpriv.html">smfi_getpriv</A></TD><TD>Get the private data
-pointer.</TD></TR>
-
-<TR><TD><A HREF="smfi_setpriv.html">smfi_setpriv</A></TD><TD>Set the private data
-pointer.</TD></TR>
-
-<TR><TD><A HREF="smfi_setreply.html">smfi_setreply</A></TD><TD>Set the specific
-reply code to be used.</TD></TR>
-
-<TR><TD><A HREF="smfi_setmlreply.html">smfi_setmlreply</A></TD><TD>Set the
-specific multi-line reply to be used.</TD></TR>
-
-</TABLE>
-
-<H2><A NAME="MessageModificationFunctions">Message Modification Functions</A></H2>
-
-The following functions change a message's contents and attributes.
-<EM>They may only be called in <A HREF="xxfi_eom.html">xxfi_eom</A></EM>.
-All of these functions may invoke additional communication with the MTA.
-They will return either MI_SUCCESS or MI_FAILURE to indicate the status of
-the operation.
-
-<P>
-A filter must have set the appropriate flag (listed below) in the
-description passed to <A HREF="smfi_register.html">smfi_register</A>
-to call any message modification function. Failure to do so will
-cause the MTA to treat a call to the function as a failure of the
-filter, terminating its connection.
-
-<P>
-Note that the status returned indicates only whether or not the
-filter's message was successfully sent to the MTA, not whether or not
-the MTA performed the requested operation. For example,
-<A HREF="smfi_addheader.html">smfi_addheader</A>, when called with an
-illegal header name, will return MI_SUCCESS even though the MTA may
-later refuse to add the illegal header.
-<P>
-<TABLE BORDER="1" CELLSPACING=0 CELLPADDING=2><TR BGCOLOR="#dddddd"><TH>Function</TH><TH>Description</TH><TH>SMFIF_* flag</TR>
-<TR><TD><A HREF="smfi_addheader.html">smfi_addheader</A></TD><TD>Add a header to
-the message.</TD><TD>SMFIF_ADDHDRS</TD></TR>
-
-<TR><TD><A HREF="smfi_chgheader.html">smfi_chgheader</A></TD><TD>Change or delete a header.</TD><TD>SMFIF_CHGHDRS</TD></TR>
-
-<TR><TD><A HREF="smfi_insheader.html">smfi_insheader</A></TD><TD>Insert a
-header into the message.</TD><TD>SMFIF_ADDHDRS</TD></TR>
-
-<TR><TD><A HREF="smfi_chgfrom.html">smfi_chgfrom</A></TD><TD>Change the
-envelope sender address.</TD><TD>SMFIF_CHGFROM</TD></TR>
-
-<TR><TD><A HREF="smfi_addrcpt.html">smfi_addrcpt</A></TD><TD>Add a recipient to
-the envelope.</TD><TD>SMFIF_ADDRCPT</TD></TR>
-
-<TR><TD><A HREF="smfi_addrcpt_par.html">smfi_addrcpt_par</A></TD><TD>Add
-a recipient including ESMTP parameter to the envelope.
-</TD><TD>SMFIF_ADDRCPT_PAR</TD></TR>
-
-<TR><TD><A HREF="smfi_delrcpt.html">smfi_delrcpt</A></TD><TD>Delete a recipient
-from the envelope.</TD><TD>SMFIF_DELRCPT</TD></TR>
-
-<TR><TD><A HREF="smfi_replacebody.html">smfi_replacebody</A></TD><TD>Replace the
-body of the message.</TD><TD>SMFIF_CHGBODY</TD></TR>
-
-</TABLE>
-
-<H2>Other Message Handling Functions</H2>
-
-The following functions provide special case handling instructions for
-milter or the MTA, without altering the content or status of the message.
-<EM>They too may only be called in <A HREF="xxfi_eom.html">xxfi_eom</A></EM>.
-All of these functions may invoke additional communication with the MTA.
-They will return either MI_SUCCESS or MI_FAILURE to indicate the status of
-the operation.
-
-<P>
-Note that the status returned indicates only whether or not the
-filter's message was successfully sent to the MTA, not whether or not
-the MTA performed the requested operation.
-
-<P>
-<TABLE BORDER="1" CELLSPACING=0 CELLPADDING=2><TR BGCOLOR="#dddddd"><TH>Function</TH><TH>Description</TH></TR>
-<TR><TD><A HREF="smfi_progress.html">smfi_progress</A></TD><TD>Report operation in progress.</TD></TR>
-
-<TR><TD><A HREF="smfi_quarantine.html">smfi_quarantine</A></TD><TD>Quarantine a message.</TD></TR>
-
-</TABLE>
-
-<H2><A NAME="Callbacks">Callbacks</A></H2>
-
-The filter should implement one or more of the following callbacks,
-which are registered via <A HREF="smfi_register.html">smfi_register</A>:
-
-<P>
-<TABLE BORDER="1" CELLSPACING=0 CELLPADDING=2><TR BGCOLOR="#dddddd"><TH>Function</TH><TH>Description</TH></TR>
-
-<TR><TD><A HREF="xxfi_connect.html">xxfi_connect</A></TD><TD>connection info</TD></TR>
-
-<TR><TD><A HREF="xxfi_helo.html">xxfi_helo</A></TD><TD>SMTP HELO/EHLO command</TD></TR>
-
-<TR><TD><A HREF="xxfi_envfrom.html">xxfi_envfrom</A></TD><TD>envelope sender</TD></TR>
-
-<TR><TD><A HREF="xxfi_envrcpt.html">xxfi_envrcpt</A></TD><TD>envelope recipient</TD></TR>
-
-<TR><TD><A HREF="xxfi_data.html">xxfi_data</A></TD><TD>DATA command</TD></TR>
-
-<TR><TD><A HREF="xxfi_unknown.html">xxfi_unknown</A></TD><TD>Unknown SMTP command</TD></TR>
-
-<TR><TD><A HREF="xxfi_header.html">xxfi_header</A></TD><TD>header</TD></TR>
-
-<TR><TD><A HREF="xxfi_eoh.html">xxfi_eoh</A></TD><TD>end of header</TD></TR>
-
-<TR><TD><A HREF="xxfi_body.html">xxfi_body</A></TD><TD>body block</TD></TR>
-
-<TR><TD><A HREF="xxfi_eom.html">xxfi_eom</A></TD><TD>end of message</TD></TR>
-
-<TR><TD><A HREF="xxfi_abort.html">xxfi_abort</A></TD><TD>message aborted</TD></TR>
-
-<TR><TD><A HREF="xxfi_close.html">xxfi_close</A></TD><TD>connection cleanup</TD></TR>
-
-<TR><TD><A HREF="xxfi_negotiate.html">xxfi_negotiate</A></TD><TD>option negotiattion</TD></TR>
-
-</TABLE>
-
-<P>
-The above callbacks should all return one of the following return values,
-having the indicated meanings. Any return other than one of the below
-values constitutes an error, and will cause sendmail to terminate its
-connection to the offending filter.
-
-<P><A NAME="conn-spec">Milter</A> distinguishes between recipient-,
-message-, and connection-oriented routines. Recipient-oriented
-callbacks may affect the processing of a single message recipient;
-message-oriented callbacks, a single message; connection-oriented
-callbacks, an entire connection (during which multiple messages may be
-delivered to multiple sets of recipients).
-<A HREF="xxfi_envrcpt.html">xxfi_envrcpt</A> is recipient-oriented.
-<A HREF="xxfi_connect.html">xxfi_connect</A>,
-<A HREF="xxfi_helo.html">xxfi_helo</A> and
-<A HREF="xxfi_close.html">xxfi_close</A> are connection-oriented. All
-other callbacks are message-oriented.
-
-<P>
-<TABLE BORDER="1" CELLSPACING=0 CELLPADDING=2>
- <TR BGCOLOR="#dddddd"><TH>Return value</TH><TH>Description</TH></TR>
- <TR VALIGN="TOP">
- <TD>SMFIS_CONTINUE</TD>
- <TD>Continue processing the current connection, message, or recipient.
- </TD>
- </TR>
- <TR VALIGN="TOP">
- <TD>SMFIS_REJECT</TD>
- <TD>For a connection-oriented routine, reject this connection; call <A HREF="xxfi_close.html">xxfi_close</A>.<BR>
- For a message-oriented routine (except
- <A HREF="xxfi_eom.html">xxfi_eom</A> or
- <A HREF="xxfi_abort.html">xxfi_abort</A>), reject this message.<BR>
- For a recipient-oriented routine, reject the current recipient (but continue processing the current message).
- </TD>
- </TR>
- <TR valign="top">
- <TD>SMFIS_DISCARD</TD>
- <TD>For a message- or recipient-oriented routine, accept this message, but silently discard it.<BR>
- SMFIS_DISCARD should not be returned by a connection-oriented routine.
- </TD>
- </TR>
- <TR valign="top">
- <TD>SMFIS_ACCEPT</TD>
- <TD>For a connection-oriented routine, accept this connection without further filter processing; call <A HREF="xxfi_close.html">xxfi_close</A>.<BR>
- For a message- or recipient-oriented routine, accept this message without further filtering.<BR>
- </TD>
- </TR>
- <TR valign="top">
- <TD>SMFIS_TEMPFAIL</TD>
- <TD>Return a temporary failure, i.e., the corresponding SMTP command will return an appropriate 4xx status code.
- For a message-oriented routine (except <A HREF="xxfi_envfrom.html">xxfi_envfrom</A>), fail for this message. <BR>
- For a connection-oriented routine, fail for this connection; call <A HREF="xxfi_close.html">xxfi_close</A>. <BR>
- For a recipient-oriented routine, only fail for the current recipient; continue message processing.
- </TD>
- </TR>
-
- <TR valign="top">
- <TD><A NAME="SMFIS_SKIP">SMFIS_SKIP</A></TD>
- <TD>Skip further callbacks of the same type in this transaction.
- Currently this return value is only allowed in
- <A HREF="xxfi_body.html">xxfi_body()</A>.
- It can be used if a milter has received sufficiently many
- body chunks to make a decision, but still wants to invoke
- message modification functions that are only allowed to be called from
- <A HREF="xxfi_eom.html">xxfi_eom()</A>.
- Note: the milter <EM>must</EM>
- <A HREF="xxfi_negotiate.html">negotiate</A>
- this behavior with the MTA, i.e., it must check whether
- the protocol action
- <A HREF="xxfi_negotiate.html#SMFIP_SKIP"><CODE>SMFIP_SKIP</CODE></A>
- is available and if so, the milter must request it.
- </TD>
- </TR>
-
- <TR valign="top">
- <TD><A NAME="SMFIS_NOREPLY">SMFIS_NOREPLY</A></TD>
- <TD>Do not send a reply back to the MTA.
- The milter <EM>must</EM>
- <A HREF="xxfi_negotiate.html">negotiate</A>
- this behavior with the MTA, i.e., it must check whether
- the appropriate protocol action
- <A HREF="xxfi_negotiate.html#SMFIP_NR_"><CODE>SMFIP_NR_*</CODE></A>
- is available and if so, the milter must request it.
- If you set the
- <A HREF="xxfi_negotiate.html#SMFIP_NR_"><CODE>SMFIP_NR_*</CODE></A>
- protocol action for a callback, that callback <EM>must</EM>
- always reply with
- SMFIS_NOREPLY.
- Using any other reply code is a violation of the API.
- If in some cases your callback may return another value
- (e.g., due to some resource shortages), then you
- <EM>must not</EM> set
- <A HREF="xxfi_negotiate.html#SMFIP_NR_"><CODE>SMFIP_NR_*</CODE></A>
- and you must use
- SMFIS_CONTINUE as the default return code.
- (Alternatively you can try to delay reporting the problem to
- a later callback for which
- <A HREF="xxfi_negotiate.html#SMFIP_NR_"><CODE>SMFIP_NR_*</CODE></A>
- is not set.)
- </TD>
- </TR>
-
-</TABLE>
-
-<H2><A NAME="Miscellaneous">Miscellaneous</A></H2>
-
-<P>
-<TABLE BORDER="1" CELLSPACING=0 CELLPADDING=2><TR BGCOLOR="#dddddd"><TH>Function</TH><TH>Description</TH></TR>
-
-<TR><TD><A HREF="smfi_version.html">smfi_version</A></TD><TD>libmilter (runtime) version info</TD></TR>
-
-<TR><TD><A HREF="smfi_setsymlist.html">smfi_setsymlist</A></TD><TD>
-Set the list of macros that the milter wants to receive from the MTA
-for a protocol stage.
-</TD></TR>
-
-</TABLE>
-
-<P>
-<TABLE BORDER="1" CELLSPACING=0 CELLPADDING=2><TR BGCOLOR="#dddddd"><TH>Constant</TH><TH>Description</TH></TR>
-
-<TR><TD><A HREF="smfi_version.html">SMFI_VERSION</A></TD><TD>libmilter (compile time) version info</TD></TR>
-
-</TABLE>
-
-
-<HR SIZE="1">
-<FONT SIZE="-1">
-Copyright (c) 2000, 2003, 2006 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>
diff --git a/contrib/sendmail/libmilter/docs/design.html b/contrib/sendmail/libmilter/docs/design.html
deleted file mode 100644
index f2e5f11..0000000
--- 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>
diff --git a/contrib/sendmail/libmilter/docs/figure1.fig b/contrib/sendmail/libmilter/docs/figure1.fig
deleted file mode 100644
index e0cbdc8..0000000
--- a/contrib/sendmail/libmilter/docs/figure1.fig
+++ /dev/null
@@ -1,56 +0,0 @@
-#FIG 3.2
-Landscape
-Center
-Inches
-Letter
-100.00
-Single
--2
-1200 2
-6 975 225 5025 3375
-6 1500 1275 2700 2025
-2 2 0 2 1 7 50 0 -1 0.000 0 0 7 0 0 5
- 1650 1425 2550 1425 2550 1875 1650 1875 1650 1425
-4 0 1 50 0 0 20 0.0000 4 195 645 1800 1725 MTA\001
--6
-6 1950 2625 3150 3375
-2 2 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 5
- 2100 2775 3000 2775 3000 3225 2100 3225 2100 2775
-4 0 4 50 0 0 20 0.0000 4 195 645 2250 3075 MTA\001
--6
-6 1050 225 2250 975
-2 2 0 2 14 7 50 0 -1 0.000 0 0 7 0 0 5
- 1200 375 2100 375 2100 825 1200 825 1200 375
-4 0 14 50 0 0 20 0.0000 4 195 645 1350 675 MTA\001
--6
-2 1 0 2 1 7 50 0 -1 0.000 0 0 7 0 0 2
- 2550 1575 3750 2625
-2 1 0 2 1 7 50 0 -1 0.000 0 0 7 0 0 2
- 2550 1575 3750 1575
-2 1 0 2 1 7 50 0 -1 0.000 0 0 7 0 0 2
- 2550 1575 3750 825
-2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
- 3000 2925 3750 2625
-2 1 0 2 14 7 50 0 -1 0.000 0 0 7 0 0 2
- 2100 525 3750 825
-2 1 0 2 14 7 50 0 -1 0.000 0 0 7 0 0 2
- 2100 525 3750 2625
-2 1 0 4 0 7 50 0 -1 0.000 0 0 7 0 0 2
- 1050 3075 2100 3075
-2 1 0 4 0 7 50 0 -1 0.000 0 0 7 0 0 2
- 1050 1725 1650 1725
-2 1 0 4 0 7 50 0 -1 0.000 0 0 7 0 0 2
- 1050 675 1200 675
-2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
- 3750 2475 4950 2475 4950 2925 3750 2925 3750 2475
-2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
- 3750 1425 4950 1425 4950 1875 3750 1875 3750 1425
-2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
- 3750 525 4950 525 4950 975 3750 975 3750 525
-4 0 0 50 0 1 20 0.0000 4 210 795 3900 2775 Filter 3\001
-4 0 0 50 0 1 20 0.0000 4 210 795 3900 1725 Filter 2\001
-4 0 0 50 0 1 20 0.0000 4 210 795 3900 825 Filter 1\001
--6
-2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
- 300 525 1050 525 1050 3225 300 3225 300 525
-4 0 0 50 0 2 24 1.5708 4 255 1950 825 2850 INTERNET\001
diff --git a/contrib/sendmail/libmilter/docs/figure1.jpg b/contrib/sendmail/libmilter/docs/figure1.jpg
deleted file mode 100644
index 1a5f1de..0000000
--- a/contrib/sendmail/libmilter/docs/figure1.jpg
+++ /dev/null
Binary files differ
diff --git a/contrib/sendmail/libmilter/docs/figure1.ps b/contrib/sendmail/libmilter/docs/figure1.ps
deleted file mode 100644
index ae31760..0000000
--- a/contrib/sendmail/libmilter/docs/figure1.ps
+++ /dev/null
@@ -1,173 +0,0 @@
-%!PS-Adobe-2.0
-%%Title: figure1.fig
-%%Creator: fig2dev Version 3.2.3 Patchlevel
-%%CreationDate: Tue Jun 6 14:00:04 2000
-%%For: sean@host232.Sendmail.COM (Sean O'rourke,5400)
-%%Orientation: Landscape
-%%Pages: 1
-%%BoundingBox: 0 0 612 792
-%%BeginSetup
-%%IncludeFeature: *PageSize Letter
-%%EndSetup
-%%Magnification: 1.0000
-%%EndComments
-/$F2psDict 200 dict def
-$F2psDict begin
-$F2psDict /mtrx matrix put
-/col-1 {0 setgray} bind def
-/col0 {0.000 0.000 0.000 srgb} bind def
-/col1 {0.000 0.000 1.000 srgb} bind def
-/col2 {0.000 1.000 0.000 srgb} bind def
-/col3 {0.000 1.000 1.000 srgb} bind def
-/col4 {1.000 0.000 0.000 srgb} bind def
-/col5 {1.000 0.000 1.000 srgb} bind def
-/col6 {1.000 1.000 0.000 srgb} bind def
-/col7 {1.000 1.000 1.000 srgb} bind def
-/col8 {0.000 0.000 0.560 srgb} bind def
-/col9 {0.000 0.000 0.690 srgb} bind def
-/col10 {0.000 0.000 0.820 srgb} bind def
-/col11 {0.530 0.810 1.000 srgb} bind def
-/col12 {0.000 0.560 0.000 srgb} bind def
-/col13 {0.000 0.690 0.000 srgb} bind def
-/col14 {0.000 0.820 0.000 srgb} bind def
-/col15 {0.000 0.560 0.560 srgb} bind def
-/col16 {0.000 0.690 0.690 srgb} bind def
-/col17 {0.000 0.820 0.820 srgb} bind def
-/col18 {0.560 0.000 0.000 srgb} bind def
-/col19 {0.690 0.000 0.000 srgb} bind def
-/col20 {0.820 0.000 0.000 srgb} bind def
-/col21 {0.560 0.000 0.560 srgb} bind def
-/col22 {0.690 0.000 0.690 srgb} bind def
-/col23 {0.820 0.000 0.820 srgb} bind def
-/col24 {0.500 0.190 0.000 srgb} bind def
-/col25 {0.630 0.250 0.000 srgb} bind def
-/col26 {0.750 0.380 0.000 srgb} bind def
-/col27 {1.000 0.500 0.500 srgb} bind def
-/col28 {1.000 0.630 0.630 srgb} bind def
-/col29 {1.000 0.750 0.750 srgb} bind def
-/col30 {1.000 0.880 0.880 srgb} bind def
-/col31 {1.000 0.840 0.000 srgb} bind def
-
-end
-save
-newpath 0 792 moveto 0 0 lineto 612 0 lineto 612 792 lineto closepath clip newpath
-198.0 238.0 translate
- 90 rotate
-1 -1 scale
-
-/cp {closepath} bind def
-/ef {eofill} bind def
-/gr {grestore} bind def
-/gs {gsave} bind def
-/sa {save} bind def
-/rs {restore} bind def
-/l {lineto} bind def
-/m {moveto} bind def
-/rm {rmoveto} bind def
-/n {newpath} bind def
-/s {stroke} bind def
-/sh {show} bind def
-/slc {setlinecap} bind def
-/slj {setlinejoin} bind def
-/slw {setlinewidth} bind def
-/srgb {setrgbcolor} bind def
-/rot {rotate} bind def
-/sc {scale} bind def
-/sd {setdash} bind def
-/ff {findfont} bind def
-/sf {setfont} bind def
-/scf {scalefont} bind def
-/sw {stringwidth} bind def
-/tr {translate} bind def
-/tnt {dup dup currentrgbcolor
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
- bind def
-/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
- 4 -2 roll mul srgb} bind def
-/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
-/$F2psEnd {$F2psEnteredState restore end} def
-
-$F2psBegin
-%%Page: 1 1
-10 setmiterlimit
- 0.06000 0.06000 sc
-%%Page: 1 1
-/Times-Bold ff 360.00 scf sf
-825 2850 m
-gs 1 -1 sc 90.0 rot (INTERNET) col0 sh gr
-/Times-Roman ff 300.00 scf sf
-1800 1725 m
-gs 1 -1 sc (MTA) col1 sh gr
-% Polyline
-15.000 slw
-n 2100 2775 m 3000 2775 l 3000 3225 l 2100 3225 l
- cp gs col4 s gr
-/Times-Roman ff 300.00 scf sf
-2250 3075 m
-gs 1 -1 sc (MTA) col4 sh gr
-% Polyline
-n 1200 375 m 2100 375 l 2100 825 l 1200 825 l
- cp gs col14 s gr
-/Times-Roman ff 300.00 scf sf
-1350 675 m
-gs 1 -1 sc (MTA) col14 sh gr
-% Polyline
-n 2550 1575 m
- 3750 2625 l gs col1 s gr
-% Polyline
-n 2550 1575 m
- 3750 1575 l gs col1 s gr
-% Polyline
-n 2550 1575 m
- 3750 825 l gs col1 s gr
-% Polyline
-n 3000 2925 m
- 3750 2625 l gs col4 s gr
-% Polyline
-n 2100 525 m
- 3750 825 l gs col14 s gr
-% Polyline
-n 2100 525 m
- 3750 2625 l gs col14 s gr
-% Polyline
-45.000 slw
-n 1050 3075 m
- 2100 3075 l gs col0 s gr
-% Polyline
-n 1050 1725 m
- 1650 1725 l gs col0 s gr
-% Polyline
-n 1050 675 m
- 1200 675 l gs col0 s gr
-% Polyline
-15.000 slw
-n 3750 2475 m 4950 2475 l 4950 2925 l 3750 2925 l
- cp gs col0 s gr
-% Polyline
-n 3750 1425 m 4950 1425 l 4950 1875 l 3750 1875 l
- cp gs col0 s gr
-% Polyline
-n 3750 525 m 4950 525 l 4950 975 l 3750 975 l
- cp gs col0 s gr
-/Times-Italic ff 300.00 scf sf
-3900 2775 m
-gs 1 -1 sc (Filter 3) col0 sh gr
-/Times-Italic ff 300.00 scf sf
-3900 1725 m
-gs 1 -1 sc (Filter 2) col0 sh gr
-/Times-Italic ff 300.00 scf sf
-3900 825 m
-gs 1 -1 sc (Filter 1) col0 sh gr
-% Polyline
-7.500 slw
-n 300 525 m 1050 525 l 1050 3225 l 300 3225 l
- cp gs col0 s gr
-% Polyline
-15.000 slw
-n 1650 1425 m 2550 1425 l 2550 1875 l 1650 1875 l
- cp gs col1 s gr
-$F2psEnd
-rs
-showpage
diff --git a/contrib/sendmail/libmilter/docs/figure2.fig b/contrib/sendmail/libmilter/docs/figure2.fig
deleted file mode 100644
index c93bfe3..0000000
--- a/contrib/sendmail/libmilter/docs/figure2.fig
+++ /dev/null
@@ -1,67 +0,0 @@
-#FIG 3.2
-Landscape
-Center
-Inches
-Letter
-100.00
-Single
--2
-1200 2
-5 1 0 1 0 7 50 0 -1 0.000 0 0 1 0 2981.250 1200.000 2700 1050 3300 1200 2700 1350
- 1 1 1.00 60.00 120.00
-6 4200 900 6450 1350
-2 2 0 1 1 7 50 0 -1 0.000 0 0 7 0 0 5
- 4200 900 6450 900 6450 1350 4200 1350 4200 900
-4 0 1 50 0 0 16 0.0000 4 195 2040 4350 1200 xxfi_header callback\001
--6
-6 4200 2250 6450 2700
-2 2 0 1 4 7 50 0 -1 0.000 0 0 7 0 0 5
- 4200 2250 6450 2250 6450 2700 4200 2700 4200 2250
-4 0 4 50 0 0 16 0.0000 4 195 2040 4350 2550 xxfi_header callback\001
--6
-6 600 2100 1800 2850
-2 2 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 5
- 750 2250 1650 2250 1650 2700 750 2700 750 2250
-4 0 4 50 0 0 20 0.0000 4 195 645 900 2550 MTA\001
--6
-6 600 750 1800 1500
-2 2 0 2 1 7 50 0 -1 0.000 0 0 7 0 0 5
- 750 900 1650 900 1650 1350 750 1350 750 900
-4 0 1 50 0 0 20 0.0000 4 195 645 900 1200 MTA\001
--6
-2 1 0 2 1 7 50 0 -1 0.000 0 0 -1 1 0 2
- 1 1 2.00 120.00 240.00
- 4200 1200 3600 1200
-2 1 0 2 1 7 50 0 -1 0.000 0 0 -1 1 0 2
- 1 1 2.00 120.00 240.00
- 3450 900 4050 900
-2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
- 2400 300 6600 300 6600 3300 2400 3300 2400 300
-2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
- 2550 750 3450 750 3450 2700 2550 2700 2550 750
-2 1 0 2 4 7 50 0 -1 0.000 0 0 -1 1 0 2
- 1 1 2.00 120.00 240.00
- 3450 2700 4050 2700
-2 1 0 2 4 7 50 0 -1 0.000 0 0 -1 1 0 2
- 1 1 2.00 120.00 240.00
- 4200 2400 3600 2400
-2 1 0 2 4 7 50 0 -1 0.000 0 0 -1 1 0 2
- 1 1 2.00 120.00 240.00
- 1650 2700 2250 2700
-2 1 0 2 4 7 50 0 -1 0.000 0 0 -1 1 0 2
- 1 1 2.00 120.00 240.00
- 2400 2400 1800 2400
-2 1 0 2 1 7 50 0 -1 0.000 0 0 -1 1 0 2
- 1 1 2.00 120.00 240.00
- 1650 900 2250 900
-2 1 0 2 1 7 50 0 -1 0.000 0 0 -1 1 0 2
- 1 1 2.00 120.00 240.00
- 2400 1200 1800 1200
-4 0 0 50 0 0 20 0.0000 4 195 630 3900 600 Filter\001
-4 0 4 50 0 0 12 0.0000 4 180 1620 3450 3000 callback (arguments)\001
-4 0 4 50 0 0 12 0.0000 4 180 1575 3900 1950 optional library calls,\001
-4 0 4 50 0 0 12 0.0000 4 135 855 3900 2175 return code\001
-4 0 4 50 0 0 12 0.0000 4 135 780 1500 2100 responses\001
-4 0 0 50 0 0 16 0.0000 4 165 645 2700 2085 Milter\001
-4 0 0 50 0 0 16 0.0000 4 225 675 2700 2400 library\001
-4 0 4 50 0 0 12 0.0000 4 135 510 1500 3000 header\001
diff --git a/contrib/sendmail/libmilter/docs/figure2.jpg b/contrib/sendmail/libmilter/docs/figure2.jpg
deleted file mode 100644
index 8b11485..0000000
--- a/contrib/sendmail/libmilter/docs/figure2.jpg
+++ /dev/null
Binary files differ
diff --git a/contrib/sendmail/libmilter/docs/figure2.ps b/contrib/sendmail/libmilter/docs/figure2.ps
deleted file mode 100644
index 861a193..0000000
--- a/contrib/sendmail/libmilter/docs/figure2.ps
+++ /dev/null
@@ -1,242 +0,0 @@
-%!PS-Adobe-2.0
-%%Title: figure2.fig
-%%Creator: fig2dev Version 3.2.3 Patchlevel
-%%CreationDate: Tue Jun 6 13:57:47 2000
-%%For: sean@host232.Sendmail.COM (Sean O'rourke,5400)
-%%Orientation: Landscape
-%%Pages: 1
-%%BoundingBox: 0 0 612 792
-%%BeginSetup
-%%IncludeFeature: *PageSize Letter
-%%EndSetup
-%%Magnification: 1.5000
-%%EndComments
-/$F2psDict 200 dict def
-$F2psDict begin
-$F2psDict /mtrx matrix put
-/col-1 {0 setgray} bind def
-/col0 {0.000 0.000 0.000 srgb} bind def
-/col1 {0.000 0.000 1.000 srgb} bind def
-/col2 {0.000 1.000 0.000 srgb} bind def
-/col3 {0.000 1.000 1.000 srgb} bind def
-/col4 {1.000 0.000 0.000 srgb} bind def
-/col5 {1.000 0.000 1.000 srgb} bind def
-/col6 {1.000 1.000 0.000 srgb} bind def
-/col7 {1.000 1.000 1.000 srgb} bind def
-/col8 {0.000 0.000 0.560 srgb} bind def
-/col9 {0.000 0.000 0.690 srgb} bind def
-/col10 {0.000 0.000 0.820 srgb} bind def
-/col11 {0.530 0.810 1.000 srgb} bind def
-/col12 {0.000 0.560 0.000 srgb} bind def
-/col13 {0.000 0.690 0.000 srgb} bind def
-/col14 {0.000 0.820 0.000 srgb} bind def
-/col15 {0.000 0.560 0.560 srgb} bind def
-/col16 {0.000 0.690 0.690 srgb} bind def
-/col17 {0.000 0.820 0.820 srgb} bind def
-/col18 {0.560 0.000 0.000 srgb} bind def
-/col19 {0.690 0.000 0.000 srgb} bind def
-/col20 {0.820 0.000 0.000 srgb} bind def
-/col21 {0.560 0.000 0.560 srgb} bind def
-/col22 {0.690 0.000 0.690 srgb} bind def
-/col23 {0.820 0.000 0.820 srgb} bind def
-/col24 {0.500 0.190 0.000 srgb} bind def
-/col25 {0.630 0.250 0.000 srgb} bind def
-/col26 {0.750 0.380 0.000 srgb} bind def
-/col27 {1.000 0.500 0.500 srgb} bind def
-/col28 {1.000 0.630 0.630 srgb} bind def
-/col29 {1.000 0.750 0.750 srgb} bind def
-/col30 {1.000 0.880 0.880 srgb} bind def
-/col31 {1.000 0.840 0.000 srgb} bind def
-
-end
-save
-newpath 0 792 moveto 0 0 lineto 612 0 lineto 612 792 lineto closepath clip newpath
-144.0 65.5 translate
- 90 rotate
-1 -1 scale
-
-/cp {closepath} bind def
-/ef {eofill} bind def
-/gr {grestore} bind def
-/gs {gsave} bind def
-/sa {save} bind def
-/rs {restore} bind def
-/l {lineto} bind def
-/m {moveto} bind def
-/rm {rmoveto} bind def
-/n {newpath} bind def
-/s {stroke} bind def
-/sh {show} bind def
-/slc {setlinecap} bind def
-/slj {setlinejoin} bind def
-/slw {setlinewidth} bind def
-/srgb {setrgbcolor} bind def
-/rot {rotate} bind def
-/sc {scale} bind def
-/sd {setdash} bind def
-/ff {findfont} bind def
-/sf {setfont} bind def
-/scf {scalefont} bind def
-/sw {stringwidth} bind def
-/tr {translate} bind def
-/tnt {dup dup currentrgbcolor
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
- bind def
-/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
- 4 -2 roll mul srgb} bind def
-/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
-/$F2psEnd {$F2psEnteredState restore end} def
-
-$F2psBegin
-%%Page: 1 1
-10 setmiterlimit
- 0.09000 0.09000 sc
-%%Page: 1 1
-/Times-Roman ff 180.00 scf sf
-1500 3000 m
-gs 1 -1 sc (header) col4 sh gr
-/Times-Roman ff 240.00 scf sf
-4350 1200 m
-gs 1 -1 sc (xxfi_header callback) col1 sh gr
-% Polyline
-7.500 slw
-n 4200 2250 m 6450 2250 l 6450 2700 l 4200 2700 l
- cp gs col4 s gr
-/Times-Roman ff 240.00 scf sf
-4350 2550 m
-gs 1 -1 sc (xxfi_header callback) col4 sh gr
-% Polyline
-15.000 slw
-n 750 2250 m 1650 2250 l 1650 2700 l 750 2700 l
- cp gs col4 s gr
-/Times-Roman ff 300.00 scf sf
-900 2550 m
-gs 1 -1 sc (MTA) col4 sh gr
-% Polyline
-n 750 900 m 1650 900 l 1650 1350 l 750 1350 l
- cp gs col1 s gr
-/Times-Roman ff 300.00 scf sf
-900 1200 m
-gs 1 -1 sc (MTA) col1 sh gr
-% Arc
-7.500 slw
-gs clippath
-2713 1319 m 2667 1357 l 2761 1475 l 2710 1363 l 2808 1437 l cp
-eoclip
-n 2981.2 1200.0 318.8 -151.9 151.9 arc
-gs col0 s gr
- gr
-
-% arrowhead
-n 2808 1437 m 2710 1363 l 2761 1475 l 2808 1437 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
-15.000 slw
-gs clippath
-3585 1140 m 3585 1260 l 3872 1260 l 3632 1200 l 3872 1140 l cp
-eoclip
-n 4200 1200 m
- 3600 1200 l gs col1 s gr gr
-
-% arrowhead
-n 3872 1140 m 3632 1200 l 3872 1260 l 3872 1140 l cp gs col1 1.00 shd ef gr col1 s
-% Polyline
-gs clippath
-4065 960 m 4065 840 l 3778 840 l 4018 900 l 3778 960 l cp
-eoclip
-n 3450 900 m
- 4050 900 l gs col1 s gr gr
-
-% arrowhead
-n 3778 960 m 4018 900 l 3778 840 l 3778 960 l cp gs col1 1.00 shd ef gr col1 s
-% Polyline
-n 2400 300 m 6600 300 l 6600 3300 l 2400 3300 l
- cp gs col0 s gr
-% Polyline
-7.500 slw
-n 2550 750 m 3450 750 l 3450 2700 l 2550 2700 l
- cp gs col0 s gr
-% Polyline
-15.000 slw
-gs clippath
-4065 2760 m 4065 2640 l 3778 2640 l 4018 2700 l 3778 2760 l cp
-eoclip
-n 3450 2700 m
- 4050 2700 l gs col4 s gr gr
-
-% arrowhead
-n 3778 2760 m 4018 2700 l 3778 2640 l 3778 2760 l cp gs col4 1.00 shd ef gr col4 s
-% Polyline
-gs clippath
-3585 2340 m 3585 2460 l 3872 2460 l 3632 2400 l 3872 2340 l cp
-eoclip
-n 4200 2400 m
- 3600 2400 l gs col4 s gr gr
-
-% arrowhead
-n 3872 2340 m 3632 2400 l 3872 2460 l 3872 2340 l cp gs col4 1.00 shd ef gr col4 s
-% Polyline
-gs clippath
-2265 2760 m 2265 2640 l 1978 2640 l 2218 2700 l 1978 2760 l cp
-eoclip
-n 1650 2700 m
- 2250 2700 l gs col4 s gr gr
-
-% arrowhead
-n 1978 2760 m 2218 2700 l 1978 2640 l 1978 2760 l cp gs col4 1.00 shd ef gr col4 s
-% Polyline
-gs clippath
-1785 2340 m 1785 2460 l 2072 2460 l 1832 2400 l 2072 2340 l cp
-eoclip
-n 2400 2400 m
- 1800 2400 l gs col4 s gr gr
-
-% arrowhead
-n 2072 2340 m 1832 2400 l 2072 2460 l 2072 2340 l cp gs col4 1.00 shd ef gr col4 s
-% Polyline
-gs clippath
-2265 960 m 2265 840 l 1978 840 l 2218 900 l 1978 960 l cp
-eoclip
-n 1650 900 m
- 2250 900 l gs col1 s gr gr
-
-% arrowhead
-n 1978 960 m 2218 900 l 1978 840 l 1978 960 l cp gs col1 1.00 shd ef gr col1 s
-% Polyline
-gs clippath
-1785 1140 m 1785 1260 l 2072 1260 l 1832 1200 l 2072 1140 l cp
-eoclip
-n 2400 1200 m
- 1800 1200 l gs col1 s gr gr
-
-% arrowhead
-n 2072 1140 m 1832 1200 l 2072 1260 l 2072 1140 l cp gs col1 1.00 shd ef gr col1 s
-/Times-Roman ff 300.00 scf sf
-3900 600 m
-gs 1 -1 sc (Filter) col0 sh gr
-/Times-Roman ff 180.00 scf sf
-3450 3000 m
-gs 1 -1 sc (callback \(arguments\)) col4 sh gr
-/Times-Roman ff 180.00 scf sf
-3900 1950 m
-gs 1 -1 sc (optional library calls,) col4 sh gr
-/Times-Roman ff 180.00 scf sf
-3900 2175 m
-gs 1 -1 sc (return code) col4 sh gr
-/Times-Roman ff 180.00 scf sf
-1500 2100 m
-gs 1 -1 sc (responses) col4 sh gr
-/Times-Roman ff 240.00 scf sf
-2700 2085 m
-gs 1 -1 sc (Milter) col0 sh gr
-/Times-Roman ff 240.00 scf sf
-2700 2400 m
-gs 1 -1 sc (library) col0 sh gr
-% Polyline
-7.500 slw
-n 4200 900 m 6450 900 l 6450 1350 l 4200 1350 l
- cp gs col1 s gr
-$F2psEnd
-rs
-showpage
diff --git a/contrib/sendmail/libmilter/docs/index.html b/contrib/sendmail/libmilter/docs/index.html
deleted file mode 100644
index 517d2f6..0000000
--- a/contrib/sendmail/libmilter/docs/index.html
+++ /dev/null
@@ -1,92 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>Filtering Mail with Sendmail</TITLE>
-</HEAD>
-<BODY>
-<!--
-$Id: index.html,v 1.13 2006/08/08 20:55:57 ca Exp $
--->
-
-<H1>Filtering Mail with Sendmail</H1>
-
-<!--
-<P><B>Disclaimer</B>:
-This preliminary API description is provided for review only. This
-specification may change based on feedback from reviewers, and does
-not bind Sendmail to offer this functionality in any release.
--->
-
-<H2>Introduction</H2>
-
-<P>
-Sendmail's Content Management API (milter) provides third-party
-programs to access mail messages as they are being processed by the
-Mail Transfer Agent (MTA), allowing them to examine and modify message
-content and meta-information. Filtering policies implemented by
-Milter-conformant filters may then be centrally configured and
-composed in an end-user's MTA configuration file.
-
-<P>
-Possible uses for filters include spam rejection, virus
-filtering, and content control. In general, Milter seeks to address
-site-wide filtering concerns in a scalable way. Individual users' mail
-filtering needs (e.g. sorting messages by subject) are left to
-client-level programs such as <A href="http://www.procmail.org">Procmail</A>.
-
-<P>
-This document is a technical introduction intended for those
-interested in developing Milter filters. It includes:
-<UL>
-<LI>A description of Milter's design goals.
-
-<LI>An explanation of Milter application architecture, including
-interactions between the support library and user code, and between
-filters and the MTA.
-
-<LI>A specification of the C application programming interface.
-<LI>An example of a simple Milter filter.
-</UL>
-
-<H2>Contents</H2>
-
-<UL>
-<LI><A href="design.html">Architecture</A>
-<UL>
- <LI>Design Goals
- <LI>Implementing Filtering Policies
- <LI>MTA - Filter communication
-</UL>
-<LI><A href="overview.html">Technical Overview</A>
-<UL>
- <LI>Initialization
- <LI>Control flow
- <LI>Multithreading
- <LI>Resource Management
- <LI>Signal Handling
-</UL>
-<LI><A href="api.html">API Documentation</A>
-<UL>
- <LI>Library Control Functions
- <LI>Data Access Functions
- <LI>Message Modification Functions
- <LI>Callbacks
-</UL>
-<LI><A href="installation.html">Installation and Configuration</A>
-<UL>
- <LI>Compiling and Installing Your Filter
- <LI>Configuring Sendmail
-</UL>
-<LI><A href="sample.html">A Sample Filter</A>
-<!-- <LI><A href="other.html">Other Sources of Information</A> -->
-</UL>
-
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 2000, 2001, 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>
diff --git a/contrib/sendmail/libmilter/docs/installation.html b/contrib/sendmail/libmilter/docs/installation.html
deleted file mode 100644
index 07142e9..0000000
--- a/contrib/sendmail/libmilter/docs/installation.html
+++ /dev/null
@@ -1,165 +0,0 @@
-<HTML>
-<HEAD><TITLE>Installation and Configuration</TITLE>
-</HEAD>
-<BODY>
-<!--
-$Id: installation.html,v 1.23 2006/08/31 17:16:03 ca Exp $
--->
-<H1>Installation</H1>
-<H2>Contents</H2>
-<UL>
- <LI><A href="#compile">Compiling and Installing Your Filter</A>
- <LI><A href="#config">Configuring Sendmail</A>
-</UL>
-
-<H2><A name="compile">Compiling and Installing Your Filter</A></H2>
-
-To compile a filter, modify the Makefile provided with the sample program, or:
-<UL>
- <LI>Put the include and Sendmail directories in your include path
- (e.g. -I/path/to/include -I/path/to/sendmail).
-
- <LI>Make sure libmilter.a is in your library path, and link your
- application with it (e.g. "-lmilter").
-
- <LI>Compile with pthreads, either by using -pthread for gcc, or
- linking with a pthreads support library (-lpthread).
-</UL>
-Your compile command line will look like
-<PRE>
-cc -I/path/to/include -I/path/to/sendmail -c myfile.c
-</PRE>
-and your linking command line will look something like
-<PRE>
-cc -o myfilter [object-files] -L[library-location] -lmilter -pthread
-</PRE>
-
-<H2><A name="config">Configuring Sendmail</A></H2>
-
-If you use a sendmail version older than 8.13 please see
-the instructions for your version.
-The default compilation options for sendmail enable support
-for milters since 8.13.
-
-<P>
-Next, you must add the desired filters to your sendmail configuration
-(.mc) file.
-Mail filters have three equates:
-The required <CODE>S=</CODE> equate specifies the socket where
-sendmail should look for the filter; the optional <CODE>F=</CODE> and
-<CODE>T=</CODE> equates specify flags and timeouts, respectively.
-All equates names, equate field names, and flag values are case sensitive.
-
-<P>
-The current flags (<CODE>F=</CODE>) are:
-<P>
-<TABLE cellspacing="1" cellpadding=4 border=1>
-<TR bgcolor="#dddddd" align=left valign=top>
-<TH>Flag</TH> <TH align="center">Meaning</TH>
-</TR>
-<TR align="left" valign=top>
-<TD>R</TD> <TD>Reject connection if filter unavailable</TD>
-</TR>
-<TR align="left" valign=top>
-<TD>T</TD> <TD>Temporary fail connection if filter unavailable</TD>
-</TR>
-</TABLE>
-
-If a filter is unavailable or unresponsive and no flags have been
-specified, the MTA will continue normal handling of the current
-connection.
-The MTA will try to contact the filter again on each new connection.
-
-<P>
-There are three fields inside of the <CODE>T=</CODE> equate: S, R, and E.
-Note the separator between each is a ";" (semicolon), as ","
-(comma) already separates equates.
-The value of each field is a decimal number followed by a single letter
-designating the units ("s" for seconds, "m" for minutes).
-The fields have the following meanings:
-<P>
-<TABLE cellspacing="1" cellpadding=4 border=1>
-<TR bgcolor="#dddddd" align=left valign=top>
-<TH>Flag</TH> <TH align="center">Meaning</TH>
-</TR>
-<TR align="left" valign=top>
-<TD>C</TD> <TD>Timeout for connecting to a filter. If set to 0, the
- system's <CODE>connect(2)</CODE> timeout will be used.
- Default: 5m</TD>
-</TR>
-<TR align="left" valign=top>
-<TD>S</TD> <TD>Timeout for sending information from the MTA to a
- filter. Default: 10s</TD>
-</TR>
-<TR align="left" valign=top>
-<TD>R</TD> <TD>Timeout for reading reply from the filter. Default: 10s</TD>
-</TR>
-<TR align="left" valign=top>
-<TD>E</TD> <TD>Overall timeout between sending end-of-message to
- filter and waiting for the final acknowledgment. Default: 5m</TD>
-</TR>
-</TABLE>
-
-<P>
-The following sendmail.mc example specifies three filters.
-The first two rendezvous on Unix-domain sockets in the /var/run directory;
-the third uses an IP socket on port 999.
-<PRE>
- INPUT_MAIL_FILTER(`filter1', `S=unix:/var/run/f1.sock, F=R')
- INPUT_MAIL_FILTER(`filter2', `S=unix:/var/run/f2.sock, F=T, T=S:1s;R:1s;E:5m')
- INPUT_MAIL_FILTER(`filter3', `S=inet:999@localhost, T=C:2m')
-
- define(`confINPUT_MAIL_FILTERS', `filter2,filter1,filter3')
-<HR width="30%">
- m4 ../m4/cf.m4 myconfig.mc &gt; myconfig.cf
-</PRE>
-By default, the filters would be run in the order declared,
-i.e. "filter1, filter2, filter3"; however, since
-<CODE>confINPUT_MAIL_FILTERS</CODE> is defined, the filters will be
-run "filter2, filter1, filter3".
-Also note that a filter can be defined
-without adding it to the input filter list by using
-MAIL_FILTER() instead of INPUT_MAIL_FILTER().
-
-<P>
-The above macros will result in the following lines being added to
-your .cf file:
-<PRE>
- Xfilter1, S=unix:/var/run/f1.sock, F=R
- Xfilter2, S=unix:/var/run/f2.sock, F=T, T=S:1s;R:1s;E:5m
- Xfilter3, S=inet:999@localhost, T=C:2m
-
- O InputMailFilters=filter2,filter1,filter3
-</PRE>
-<P>
-Finally, the sendmail macros accessible via
-<A HREF="smfi_getsymval.html">smfi_getsymval</A> can be configured by
-defining the following m4 variables (or cf options):
-<TABLE cellspacing="1" cellpadding=4 border=1>
-<TR bgcolor="#dddddd" align=left valign=top>
-<TH align="center">In .mc file</TH> <TH align="center">In .cf file</TH>
-<TH align="center">Default Value</TH>
-</TR>
-<TR><TD>confMILTER_MACROS_CONNECT</TD><TD>Milter.macros.connect</TD>
-<TD><CODE>j, _, {daemon_name}, {if_name}, {if_addr}</CODE></TD></TR>
-<TR><TD>confMILTER_MACROS_HELO</TD><TD>Milter.macros.helo</TD>
-<TD><CODE>{tls_version}, {cipher}, {cipher_bits}, {cert_subject},
-{cert_issuer}</CODE></TD></TR>
-<TR><TD>confMILTER_MACROS_ENVFROM</TD><TD>Milter.macros.envfrom</TD>
-<TD><CODE>i, {auth_type}, {auth_authen}, {auth_ssf}, {auth_author},
-{mail_mailer}, {mail_host}, {mail_addr}</CODE></TD></TR>
-<TR><TD>confMILTER_MACROS_ENVRCPT</TD><TD>Milter.macros.envrcpt</TD>
-<TD><CODE>{rcpt_mailer}, {rcpt_host}, {rcpt_addr}</CODE></TD></TR>
-</TABLE>
-For information about available macros and their meanings, please
-consult the sendmail documentation.
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 2000-2003, 2006 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>
diff --git a/contrib/sendmail/libmilter/docs/other.html b/contrib/sendmail/libmilter/docs/other.html
deleted file mode 100644
index c33b536..0000000
--- a/contrib/sendmail/libmilter/docs/other.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<HTML>
-<HEAD><TITLE>Other Resources</TITLE>
-</HEAD>
-<BODY>
-<!--
-$Id: other.html,v 1.6 2006/08/08 20:55:57 ca Exp $
--->
-FAQ? Mailing list? More sample filters?
-<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>
diff --git a/contrib/sendmail/libmilter/docs/overview.html b/contrib/sendmail/libmilter/docs/overview.html
deleted file mode 100644
index b7e80df..0000000
--- a/contrib/sendmail/libmilter/docs/overview.html
+++ /dev/null
@@ -1,215 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>Technical Overview</TITLE>
-</HEAD>
-<BODY>
-<!--
-$Id: overview.html,v 1.19 2006/12/21 18:23:47 ca Exp $
--->
-
-<H1>Technical Overview</H1>
-
-<H2>Contents</H2>
-
-<UL>
- <LI><A HREF="#Initialization">Initialization</A>
- <LI><A HREF="#ControlFlow">Control Flow</A>
- <LI><A HREF="#Multithreading">Multithreading</A>
- <LI><A HREF="#ResourceManagement">Resource Management</A>
- <LI><A HREF="#SignalHandling">Signal Handling</A>
-</UL>
-
-<H2><A NAME="Initialization">Initialization</A></H2>
-
-In addition to its own initialization,
-libmilter expects a filter to initialize several parameters
-before calling <A HREF="smfi_main.html">smfi_main</A>:
-<UL>
- <LI>The callbacks the filter wishes to be called, and the types of
- message modification it intends to perform (required, see
- <A HREF="smfi_register.html">smfi_register</A>).
-
- <LI>The socket address to be used when communicating with the MTA
- (required, see <A HREF="smfi_setconn.html">smfi_setconn</A>).
-
- <LI>The number of seconds to wait for MTA connections before
- timing out (optional, see
- <A HREF="smfi_settimeout.html">smfi_settimeout</A>).
-</UL>
-<P>
-If the filter fails to initialize libmilter,
-or if one or more of the parameters it has passed are invalid,
-a subsequent call to smfi_main will fail.
-
-<H2><A NAME="ControlFlow">Control Flow</A></H2>
-
-<P>
-The following pseudocode describes the filtering process from the
-perspective of a set of <CODE>N</CODE> MTA's,
-each corresponding to a connection.
-Callbacks are shown beside the processing stages in which they are invoked;
-if no callbacks are defined for a particular stage,
-that stage may be bypassed.
-Though it is not shown,
-processing may be aborted at any time during a message,
-in which case the
-<A HREF="xxfi_abort.html">xxfi_abort</A> callback is invoked and control
-returns to <CODE>MESSAGE</CODE>.
-<P>
-<PRE>
-For each of N connections
-{
- For each filter
- process connection/helo (<A HREF="xxfi_connect.html">xxfi_connect</A>, <A HREF="xxfi_helo.html">xxfi_helo</A>)
-MESSAGE:For each message in this connection (sequentially)
- {
- For each filter
- process sender (<A HREF="xxfi_envfrom.html">xxfi_envfrom</A>)
- For each recipient
- {
- For each filter
- process recipient (<A HREF="xxfi_envrcpt.html">xxfi_envrcpt</A>)
- }
- For each filter
- {
- process DATA (<A HREF="xxfi_data.html">xxfi_data</A>)
- For each header
- process header (<A HREF="xxfi_header.html">xxfi_header</A>)
- process end of headers (<A HREF="xxfi_eoh.html">xxfi_eoh</A>)
- For each body block
- process this body block (<A HREF="xxfi_body.html">xxfi_body</A>)
- process end of message (<A HREF="xxfi_eom.html">xxfi_eom</A>)
- }
- }
- For each filter
- process end of connection (<A HREF="xxfi_close.html">xxfi_close</A>)
-}
-</PRE>
-
-<P>Note: Filters are contacted in order defined in config file.</P>
-
-<P>
-To write a filter, a vendor supplies callbacks to process relevant
-parts of a message transaction.
-The library then controls all sequencing, threading,
-and protocol exchange with the MTA.
-<A HREF="#figure-3">Figure 3</A> outlines control flow for a filter
-process, showing where different callbacks are invoked.
-</P>
-
-<DIV ALIGN="center"><A NAME="figure-3"></A>
-<TABLE border=1 cellspacing=0 cellpadding=2 width="70%">
-<TR bgcolor="#dddddd"><TH>SMTP Commands</TH><TH>Milter Callbacks</TH></TR>
-<TR><TD>(open SMTP connection)</TD><TD>xxfi_connect</TD></TR>
-<TR><TD>HELO ...</TD><TD>xxfi_helo</TD></TR>
-<TR><TD>MAIL From: ...</TD><TD>xxfi_envfrom</TD></TR>
-<TR><TD>RCPT To: ...</TD><TD>xxfi_envrcpt</TD></TR>
-<TR><TD>[more RCPTs]</TD><TD>[xxfi_envrcpt]</TD></TR>
-<TR><TD>DATA</TD><TD>xxfi_data</TD></TR>
-<TR><TD>Header: ...</TD><TD>xxfi_header</TD></TR>
-<TR><TD>[more headers]</TD><TD>[xxfi_header]</TD></TR>
-<TR><TD>&nbsp;</TD><TD>xxfi_eoh</TD></TR>
-<TR><TD>body... </TD><TD>xxfi_body</TD></TR>
-<TR><TD>[more body...]</TD><TD>[xxfi_body]</TD></TR>
-<TR><TD>.</TD><TD>xxfi_eom</TD></TR>
-<TR><TD>QUIT</TD><TD>xxfi_close</TD></TR>
-<TR><TD>(close SMTP connection)</TD><TD>&nbsp;</TD></TR>
-</TABLE>
-<B>Figure 3: Milter callbacks related to an SMTP transaction.</B>
-</DIV>
-
-<P>
-Note that although only a single message is shown above, multiple
-messages may be sent in a single connection.
-Note also that a message or connection may be aborted by
-either the remote host or the MTA
-at any point during the SMTP transaction.
-f this occurs during a message (between the MAIL command and the final "."),
-the filter's
-<A HREF="xxfi_abort.html">xxfi_abort</A> routine will be called.
-<A HREF="xxfi_close.html">xxfi_close</A> is called any time the
-connection closes.
-
-<H2><A NAME="Multithreading">Multithreading</A></H2>
-
-<P>
-A single filter process may handle any number of connections
-simultaneously.
-All filtering callbacks must therefore be reentrant,
-and use some appropriate external synchronization methods to access
-global data.
-Furthermore, since there is not a one-to-one correspondence
-between threads and connections
-(N connections mapped onto M threads, M &lt;= N),
-connection-specific data must be accessed
-through the handles provided by the Milter library.
-The programmer cannot rely on library-supplied thread-specific data blocks
-(e.g., <CODE>pthread_getspecific(3)</CODE>) to store connection-specific data.
-See the API documentation for
-<A HREF="smfi_setpriv.html">smfi_setpriv</A> and
-<A HREF="smfi_getpriv.html">smfi_getpriv</A> for details.
-
-<H2><A NAME="ResourceManagement">Resource Management</A></H2>
-
-Since filters are likely to be long-lived,
-and to handle many connections,
-proper deallocation of per-connection resources is important.
-The lifetime of a connection is bracketed by calls to the
-callbacks <A HREF="xxfi_connect.html">xxfi_connect</A> and
-<A HREF="xxfi_close.html">xxfi_close</A>.
-Therefore connection-specific
-resources (accessed via <A HREF="smfi_getpriv.html">smfi_getpriv</A>
-and <A HREF="smfi_setpriv.html">smfi_setpriv</A>) may be allocated in
-<A HREF="xxfi_connect.html">xxfi_connect</A>,
-and should be freed in
-<A HREF="xxfi_close.html">xxfi_close</A>.
-For further information see
-the <A HREF="api.html#conn-msg">discussion</A> of message- versus
-connection-oriented routines.
-In particular,
-note that there is only one connection-specific data pointer per connection.
-<P>
-
-Each message is bracketed by calls to
-<A HREF="xxfi_envfrom.html">xxfi_envfrom</A> and
-<A HREF="xxfi_eom.html">xxfi_eom</A> (or
-<A HREF="xxfi_abort.html">xxfi_abort</A>),
-implying that message-specific resources can be allocated
-and reclaimed in these routines.
-Since the messages in a connection are processed sequentially by each filter,
-there will be only one active message associated with a given
-connection and filter (and connection-private data block).
-These resources must still be accessed through
-<A HREF="smfi_getpriv.html">smfi_getpriv</A> and
-<A HREF="smfi_setpriv.html">smfi_setpriv</A>,
-and must be reclaimed in
-<A HREF="xxfi_abort.html">xxfi_abort</A>.
-
-<H2><A NAME="SignalHandling">Signal Handling</A></H2>
-
-libmilter takes care of signal handling,
-the filters are not influenced directly by signals.
-There are basically two types of signal handlers:
-
-<OL>
-<LI><TT>Stop</TT>: no new connections from the MTA will be accepted,
-but existing connections are allowed to continue.
-<LI><TT>Abort</TT>: all filters will be stopped as soon as the next
-communication with the MTA happens.
-</OL>
-
-Filters are not terminated asynchronously
-(except by signals that can't be caught).
-In the case of <TT>Abort</TT> the
-<A HREF="xxfi_abort.html">xxfi_abort</A> callback is invoked.
-
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 2000, 2001, 2003, 2006 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>
diff --git a/contrib/sendmail/libmilter/docs/sample.html b/contrib/sendmail/libmilter/docs/sample.html
deleted file mode 100644
index 48e25c5..0000000
--- a/contrib/sendmail/libmilter/docs/sample.html
+++ /dev/null
@@ -1,537 +0,0 @@
-<HTML>
-<HEAD><TITLE>A Sample Filter</TITLE></HEAD>
-<BODY>
-<!--
-$Id: sample.html,v 1.22 2006/10/09 23:14:51 ca Exp $
--->
-<H1>A Sample Filter</H1>
-
-The following sample logs each message to a separate temporary file,
-adds a recipient given with the -a flag,
-and rejects a disallowed recipient address given with the -r flag.
-It recognizes the following options:
-<P>
-<CENTER>
-<TABLE border="1" cellpadding=2 cellspacing=1>
-<TR><TD><CODE>-p port</CODE></TD><TD>The port through which the MTA will connect to the filter.</TD></TR>
-<TR><TD><CODE>-t sec</CODE></TD><TD>The timeout value.</TD></TR>
-<TR><TD><CODE>-r addr</CODE></TD><TD>A recipient to reject.</TD></TR>
-<TR><TD><CODE>-a addr</CODE></TD><TD>A recipient to add.</TD></TR>
-</TABLE>
-</CENTER>
-<HR>
-<PRE>
-#include &lt;sys/types.h&gt;
-#include &lt;sys/stat.h&gt;
-#include &lt;errno.h&gt;
-#include &lt;stdio.h&gt;
-#include &lt;stdlib.h&gt;
-#include &lt;string.h&gt;
-#include &lt;sysexits.h&gt;
-#include &lt;unistd.h&gt;
-
-#include "libmilter/mfapi.h"
-
-#ifndef bool
-# define bool int
-# define TRUE 1
-# define FALSE 0
-#endif /* ! bool */
-
-
-struct mlfiPriv
-{
- char *mlfi_fname;
- char *mlfi_connectfrom;
- char *mlfi_helofrom;
- FILE *mlfi_fp;
-};
-
-#define MLFIPRIV ((struct mlfiPriv *) <A href="smfi_getpriv.html">smfi_getpriv</A>(ctx))
-
-extern sfsistat mlfi_cleanup(SMFICTX *, bool);
-
-/* recipients to add and reject (set with -a and -r options) */
-char *add = NULL;
-char *reject = NULL;
-
-sfsistat
-<A href="xxfi_connect.html">mlfi_connect</A>(ctx, hostname, hostaddr)
- SMFICTX *ctx;
- char *hostname;
- _SOCK_ADDR *hostaddr;
-{
- struct mlfiPriv *priv;
- char *ident;
-
- /* allocate some private memory */
- priv = malloc(sizeof *priv);
- if (priv == NULL)
- {
- /* can't accept this message right now */
- return SMFIS_TEMPFAIL;
- }
- memset(priv, '\0', sizeof *priv);
-
- /* save the private data */
- <A href="smfi_setpriv.html">smfi_setpriv</A>(ctx, priv);
-
- ident = <A href="smfi_getsymval.html">smfi_getsymval</A>(ctx, "_");
- if (ident == NULL)
- ident = "???";
- if ((priv-&gt;mlfi_connectfrom = strdup(ident)) == NULL)
- {
- (void) mlfi_cleanup(ctx, FALSE);
- return SMFIS_TEMPFAIL;
- }
-
- /* continue processing */
- return SMFIS_CONTINUE;
-}
-
-sfsistat
-<A href="xxfi_helo.html">mlfi_helo</A>(ctx, helohost)
- SMFICTX *ctx;
- char *helohost;
-{
- size_t len;
- char *tls;
- char *buf;
- struct mlfiPriv *priv = MLFIPRIV;
-
- tls = <A href="smfi_getsymval.html">smfi_getsymval</A>(ctx, "{tls_version}");
- if (tls == NULL)
- tls = "No TLS";
- if (helohost == NULL)
- helohost = "???";
- len = strlen(tls) + strlen(helohost) + 3;
- if ((buf = (char*) malloc(len)) == NULL)
- {
- (void) mlfi_cleanup(ctx, FALSE);
- return SMFIS_TEMPFAIL;
- }
- snprintf(buf, len, "%s, %s", helohost, tls);
- if (priv-&gt;mlfi_helofrom != NULL)
- free(priv-&gt;mlfi_helofrom);
- priv-&gt;mlfi_helofrom = buf;
-
- /* continue processing */
- return SMFIS_CONTINUE;
-}
-
-sfsistat
-<A href="xxfi_envfrom.html">mlfi_envfrom</A>(ctx, argv)
- SMFICTX *ctx;
- char **argv;
-{
- int fd = -1;
- int argc = 0;
- struct mlfiPriv *priv = MLFIPRIV;
- char *mailaddr = <A href="smfi_getsymval.html">smfi_getsymval</A>(ctx, "{mail_addr}");
-
- /* open a file to store this message */
- if ((priv-&gt;mlfi_fname = strdup("/tmp/msg.XXXXXX")) == NULL)
- {
- (void) mlfi_cleanup(ctx, FALSE);
- return SMFIS_TEMPFAIL;
- }
-
- if ((fd = mkstemp(priv-&gt;mlfi_fname)) == -1)
- {
- (void) mlfi_cleanup(ctx, FALSE);
- return SMFIS_TEMPFAIL;
- }
-
- if ((priv-&gt;mlfi_fp = fdopen(fd, "w+")) == NULL)
- {
- (void) close(fd);
- (void) mlfi_cleanup(ctx, FALSE);
- return SMFIS_TEMPFAIL;
- }
-
- /* count the arguments */
- while (*argv++ != NULL)
- ++argc;
-
- /* log the connection information we stored earlier: */
- if (fprintf(priv-&gt;mlfi_fp, "Connect from %s (%s)\n\n",
- priv-&gt;mlfi_helofrom, priv-&gt;mlfi_connectfrom) == EOF)
- {
- (void) mlfi_cleanup(ctx, FALSE);
- return SMFIS_TEMPFAIL;
- }
- /* log the sender */
- if (fprintf(priv-&gt;mlfi_fp, "FROM %s (%d argument%s)\n",
- mailaddr ? mailaddr : "???", argc,
- (argc == 1) ? "" : "s") == EOF)
- {
- (void) mlfi_cleanup(ctx, FALSE);
- return SMFIS_TEMPFAIL;
- }
-
- /* continue processing */
- return SMFIS_CONTINUE;
-}
-
-sfsistat
-<A href="xxfi_envrcpt.html">mlfi_envrcpt</A>(ctx, argv)
- SMFICTX *ctx;
- char **argv;
-{
- struct mlfiPriv *priv = MLFIPRIV;
- char *rcptaddr = <A href="smfi_getsymval.html">smfi_getsymval</A>(ctx, "{rcpt_addr}");
- int argc = 0;
-
- /* count the arguments */
- while (*argv++ != NULL)
- ++argc;
-
- /* log this recipient */
- if (reject != NULL && rcptaddr != NULL &&
- (strcasecmp(rcptaddr, reject) == 0))
- {
- if (fprintf(priv-&gt;mlfi_fp, "RCPT %s -- REJECTED\n",
- rcptaddr) == EOF)
- {
- (void) mlfi_cleanup(ctx, FALSE);
- return SMFIS_TEMPFAIL;
- }
- return SMFIS_REJECT;
- }
- if (fprintf(priv-&gt;mlfi_fp, "RCPT %s (%d argument%s)\n",
- rcptaddr ? rcptaddr : "???", argc,
- (argc == 1) ? "" : "s") == EOF)
- {
- (void) mlfi_cleanup(ctx, FALSE);
- return SMFIS_TEMPFAIL;
- }
-
- /* continue processing */
- return SMFIS_CONTINUE;
-}
-
-sfsistat
-<A href="xxfi_header.html">mlfi_header</A>(ctx, headerf, headerv)
- SMFICTX *ctx;
- char *headerf;
- unsigned char *headerv;
-{
- /* write the header to the log file */
- if (fprintf(MLFIPRIV-&gt;mlfi_fp, "%s: %s\n", headerf, headerv) == EOF)
- {
- (void) mlfi_cleanup(ctx, FALSE);
- return SMFIS_TEMPFAIL;
- }
-
- /* continue processing */
- return SMFIS_CONTINUE;
-}
-
-sfsistat
-<A href="xxfi_eoh.html">mlfi_eoh</A>(ctx)
- SMFICTX *ctx;
-{
- /* output the blank line between the header and the body */
- if (fprintf(MLFIPRIV-&gt;mlfi_fp, "\n") == EOF)
- {
- (void) mlfi_cleanup(ctx, FALSE);
- return SMFIS_TEMPFAIL;
- }
-
- /* continue processing */
- return SMFIS_CONTINUE;
-}
-
-sfsistat
-<A href="xxfi_body.html">mlfi_body</A>(ctx, bodyp, bodylen)
- SMFICTX *ctx;
- unsigned char *bodyp;
- size_t bodylen;
-{
- struct mlfiPriv *priv = MLFIPRIV;
-
- /* output body block to log file */
- if (fwrite(bodyp, bodylen, 1, priv-&gt;mlfi_fp) != 1)
- {
- /* write failed */
- fprintf(stderr, "Couldn't write file %s: %s\n",
- priv-&gt;mlfi_fname, strerror(errno));
- (void) mlfi_cleanup(ctx, FALSE);
- return SMFIS_TEMPFAIL;
- }
-
- /* continue processing */
- return SMFIS_CONTINUE;
-}
-
-sfsistat
-<A href="xxfi_eom.html">mlfi_eom</A>(ctx)
- SMFICTX *ctx;
-{
- bool ok = TRUE;
-
- /* change recipients, if requested */
- if (add != NULL)
- ok = (<A href="smfi_addrcpt.html">smfi_addrcpt</A>(ctx, add) == MI_SUCCESS);
- return mlfi_cleanup(ctx, ok);
-}
-
-sfsistat
-<A href="xxfi_abort.html">mlfi_abort</A>(ctx)
- SMFICTX *ctx;
-{
- return mlfi_cleanup(ctx, FALSE);
-}
-
-sfsistat
-mlfi_cleanup(ctx, ok)
- SMFICTX *ctx;
- bool ok;
-{
- sfsistat rstat = SMFIS_CONTINUE;
- struct mlfiPriv *priv = MLFIPRIV;
- char *p;
- char host[512];
- char hbuf[1024];
-
- if (priv == NULL)
- return rstat;
-
- /* close the archive file */
- if (priv-&gt;mlfi_fp != NULL && fclose(priv-&gt;mlfi_fp) == EOF)
- {
- /* failed; we have to wait until later */
- fprintf(stderr, "Couldn't close archive file %s: %s\n",
- priv-&gt;mlfi_fname, strerror(errno));
- rstat = SMFIS_TEMPFAIL;
- (void) unlink(priv-&gt;mlfi_fname);
- }
- else if (ok)
- {
- /* add a header to the message announcing our presence */
- if (gethostname(host, sizeof host) &lt; 0)
- snprintf(host, sizeof host, "localhost");
- p = strrchr(priv-&gt;mlfi_fname, '/');
- if (p == NULL)
- p = priv-&gt;mlfi_fname;
- else
- p++;
- snprintf(hbuf, sizeof hbuf, "%s@%s", p, host);
- if (<A href="smfi_addheader.html">smfi_addheader</A>(ctx, "X-Archived", hbuf) != MI_SUCCESS)
- {
- /* failed; we have to wait until later */
- fprintf(stderr,
- "Couldn't add header: X-Archived: %s\n",
- hbuf);
- ok = FALSE;
- rstat = SMFIS_TEMPFAIL;
- (void) unlink(priv-&gt;mlfi_fname);
- }
- }
- else
- {
- /* message was aborted -- delete the archive file */
- fprintf(stderr, "Message aborted. Removing %s\n",
- priv-&gt;mlfi_fname);
- rstat = SMFIS_TEMPFAIL;
- (void) unlink(priv-&gt;mlfi_fname);
- }
-
- /* release private memory */
- if (priv-&gt;mlfi_fname != NULL)
- free(priv-&gt;mlfi_fname);
-
- /* return status */
- return rstat;
-}
-
-sfsistat
-<A href="xxfi_close.html">mlfi_close</A>(ctx)
- SMFICTX *ctx;
-{
- struct mlfiPriv *priv = MLFIPRIV;
-
- if (priv == NULL)
- return SMFIS_CONTINUE;
- if (priv-&gt;mlfi_connectfrom != NULL)
- free(priv-&gt;mlfi_connectfrom);
- if (priv-&gt;mlfi_helofrom != NULL)
- free(priv-&gt;mlfi_helofrom);
- free(priv);
- <A href="smfi_setpriv.html">smfi_setpriv</A>(ctx, NULL);
- return SMFIS_CONTINUE;
-}
-
-sfsistat
-<A href="xxfi_unknown.html">mlfi_unknown</A>(ctx, cmd)
- SMFICTX *ctx;
- char *cmd;
-{
- return SMFIS_CONTINUE;
-}
-
-sfsistat
-<A href="xxfi_data.html">mlfi_data</A>(ctx)
- SMFICTX *ctx;
-{
- return SMFIS_CONTINUE;
-}
-
-sfsistat
-<A href="xxfi_negotiate.html">mlfi_negotiate</A>(ctx, f0, f1, f2, f3, pf0, pf1, pf2, pf3)
- SMFICTX *ctx;
- unsigned long f0;
- unsigned long f1;
- unsigned long f2;
- unsigned long f3;
- unsigned long *pf0;
- unsigned long *pf1;
- unsigned long *pf2;
- unsigned long *pf3;
-{
- return SMFIS_ALL_OPTS;
-}
-
-struct smfiDesc smfilter =
-{
- "SampleFilter", /* filter name */
- SMFI_VERSION, /* version code -- do not change */
- SMFIF_ADDHDRS|SMFIF_ADDRCPT,
- /* flags */
- <A href="xxfi_connect.html">mlfi_connect</A>, /* connection info filter */
- <A href="xxfi_helo.html">mlfi_helo</A>, /* SMTP HELO command filter */
- <A href="xxfi_envfrom.html">mlfi_envfrom</A>, /* envelope sender filter */
- <A href="xxfi_envrcpt.html">mlfi_envrcpt</A>, /* envelope recipient filter */
- <A href="xxfi_header.html">mlfi_header</A>, /* header filter */
- <A href="xxfi_eoh.html">mlfi_eoh</A>, /* end of header */
- <A href="xxfi_body.html">mlfi_body</A>, /* body block filter */
- <A href="xxfi_eom.html">mlfi_eom</A>, /* end of message */
- <A href="xxfi_abort.html">mlfi_abort</A>, /* message aborted */
- <A href="xxfi_close.html">mlfi_close</A>, /* connection cleanup */
- <A href="xxfi_unknown.html">mlfi_unknown</A>, /* unknown SMTP commands */
- <A href="xxfi_data.html">mlfi_data</A>, /* DATA command */
- <A href="xxfi_negotiate.html">mlfi_negotiate</A> /* Once, at the start of each SMTP connection */
-};
-
-static void
-usage(prog)
- char *prog;
-{
- fprintf(stderr,
- "Usage: %s -p socket-addr [-t timeout] [-r reject-addr] [-a add-addr]\n",
- prog);
-}
-
-int
-main(argc, argv)
- int argc;
- char **argv;
-{
- bool setconn = FALSE;
- int c;
- const char *args = "p:t:r:a:h";
- extern char *optarg;
-
- /* Process command line options */
- while ((c = getopt(argc, argv, args)) != -1)
- {
- switch (c)
- {
- case 'p':
- if (optarg == NULL || *optarg == '\0')
- {
- (void) fprintf(stderr, "Illegal conn: %s\n",
- optarg);
- exit(EX_USAGE);
- }
- if (<A href="smfi_setconn.html">smfi_setconn</A>(optarg) == MI_FAILURE)
- {
- (void) fprintf(stderr,
- "smfi_setconn failed\n");
- exit(EX_SOFTWARE);
- }
-
- /*
- ** If we're using a local socket, make sure it
- ** doesn't already exist. Don't ever run this
- ** code as root!!
- */
-
- if (strncasecmp(optarg, "unix:", 5) == 0)
- unlink(optarg + 5);
- else if (strncasecmp(optarg, "local:", 6) == 0)
- unlink(optarg + 6);
- setconn = TRUE;
- break;
-
- case 't':
- if (optarg == NULL || *optarg == '\0')
- {
- (void) fprintf(stderr, "Illegal timeout: %s\n",
- optarg);
- exit(EX_USAGE);
- }
- if (<A href="smfi_settimeout.html">smfi_settimeout</A>(atoi(optarg)) == MI_FAILURE)
- {
- (void) fprintf(stderr,
- "smfi_settimeout failed\n");
- exit(EX_SOFTWARE);
- }
- break;
-
- case 'r':
- if (optarg == NULL)
- {
- (void) fprintf(stderr,
- "Illegal reject rcpt: %s\n",
- optarg);
- exit(EX_USAGE);
- }
- reject = optarg;
- break;
-
- case 'a':
- if (optarg == NULL)
- {
- (void) fprintf(stderr,
- "Illegal add rcpt: %s\n",
- optarg);
- exit(EX_USAGE);
- }
- add = optarg;
- smfilter.xxfi_flags |= SMFIF_ADDRCPT;
- break;
-
- case 'h':
- default:
- usage(argv[0]);
- exit(EX_USAGE);
- }
- }
- if (!setconn)
- {
- fprintf(stderr, "%s: Missing required -p argument\n", argv[0]);
- usage(argv[0]);
- exit(EX_USAGE);
- }
- if (<A href="smfi_register.html">smfi_register</A>(smfilter) == MI_FAILURE)
- {
- fprintf(stderr, "smfi_register failed\n");
- exit(EX_UNAVAILABLE);
- }
- return <A href="smfi_main.html">smfi_main</A>();
-}
-
-/* eof */
-
-</PRE>
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 2000-2004, 2006 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>
diff --git a/contrib/sendmail/libmilter/docs/smfi_addheader.html b/contrib/sendmail/libmilter/docs/smfi_addheader.html
deleted file mode 100644
index d068f9f..0000000
--- a/contrib/sendmail/libmilter/docs/smfi_addheader.html
+++ /dev/null
@@ -1,126 +0,0 @@
-<HTML>
-<HEAD><TITLE>smfi_addheader</TITLE></HEAD>
-<BODY>
-<!--
-$Id: smfi_addheader.html,v 1.19 2006/12/21 18:30:35 ca Exp $
--->
-<H1>smfi_addheader</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-int smfi_addheader(
- SMFICTX *ctx,
- char *headerf,
- char *headerv
-);
-</PRE>
-Add a header to the current message.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>Called only from <A href="xxfi_eom.html">xxfi_eom</A>.</TD>
-</TR>
-<TR align="left" valign=top>
-<TH width="80">Effects</TH>
-<TD>Adds a header to the current message.</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>ctx</TD>
- <TD>Opaque context structure.
- </TD></TR>
- <TR valign="top"><TD>headerf</TD>
- <TD>The header name, a non-NULL, null-terminated string.
- </TD></TR>
- <TR valign="top"><TD>headerv</TD>
- <TD>The header value to be added, a non-NULL, null-terminated string.
- This may be the empty string.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Return values ---------->
-<TR>
-<TH valign="top" align=left>RETURN VALUES</TH>
-
-<TD>smfi_addheader returns MI_FAILURE if:
-<UL><LI>headerf or headerv is NULL.
- <LI>Adding headers in the current connection state is invalid.
- <LI>Memory allocation fails.
- <LI>A network error occurs.
- <LI>SMFIF_ADDHDRS was not set when <A href="smfi_register.html">smfi_register</A> was called.
-</UL>
-Otherwise, it returns MI_SUCCESS.
-</TD>
-</TR>
-
-<!----------- Notes ---------->
-<TR align="left" valign=top>
-<TH>NOTES</TH>
-<TD>
-<UL><LI>smfi_addheader does not change a message's existing headers.
-To change a header's current value, use
-<A HREF="smfi_chgheader.html">smfi_chgheader</A>.
- <LI>A filter which calls smfi_addheader must have set the SMFIF_ADDHDRS
- flag in the smfiDesc_str passed to
- <A href="smfi_register.html">smfi_register</A>.
- <LI>For smfi_addheader, filter order is important.
- <B>Later filters will see the header changes made by earlier ones.</B>
- <LI>Neither the name nor the value of the header is checked for
- standards compliance.
- However, each line of the header must be under 2048 characters
- and should be under 998 characters.
- If longer headers are needed, make them multi-line.
- To make a multi-line header,
- insert a line feed (ASCII 0x0a, or <TT>\n</TT> in C)
- followed by at least one whitespace character
- such as a space (ASCII 0x20) or tab (ASCII 0x09, or <TT>\t</TT> in C).
- The line feed should NOT be preceded by a carriage return (ASCII 0x0d);
- the MTA will add this automatically.
- <B>It is the filter writer's responsibility to ensure that no standards
- are violated.</B>
- <LI>The MTA adds a leading space to an added header value.
-</UL>
-</TD>
-</TR>
-
-<!----------- Example code ---------->
-<TR>
-<TH valign="top" align=left>EXAMPLE</TH>
-
-<TD>
- <PRE>
- int ret;
- SMFICTX *ctx;
-
- ...
-
- ret = smfi_addheader(ctx, "Content-Type",
- "multipart/mixed;\n\tboundary=\"foobar\"");
- </PRE>
-</TD>
-</TR>
-
-</TABLE>
-
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 2000-2003, 2006 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>
diff --git a/contrib/sendmail/libmilter/docs/smfi_addrcpt.html b/contrib/sendmail/libmilter/docs/smfi_addrcpt.html
deleted file mode 100644
index cf997e5..0000000
--- a/contrib/sendmail/libmilter/docs/smfi_addrcpt.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<HTML>
-<HEAD><TITLE>smfi_addrcpt</TITLE></HEAD>
-<BODY>
-<!--
-$Id: smfi_addrcpt.html,v 1.11 2006/12/21 18:30:35 ca Exp $
--->
-<H1>smfi_addrcpt</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-int smfi_addrcpt(
- SMFICTX *ctx,
- char *rcpt
-);
-</PRE>
-Add a recipient for the current message.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>Called only from <A href="xxfi_eom.html">xxfi_eom</A>.</TD>
-</TR>
-<TR align="left" valign=top>
-<TH width="80">Effects</TH>
-<TD>Add a recipient to the message envelope.</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>ctx</TD>
- <TD>Opaque context structure.
- </TD></TR>
- <TR valign="top"><TD>rcpt</TD>
- <TD>The new recipient's address.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Return values ---------->
-<TR>
-<TH valign="top" align=left>RETURN VALUES</TH>
-
-<TD>smfi_addrcpt will fail and return MI_FAILURE if:
-<UL><LI>rcpt is NULL.
- <LI>Adding recipients in the current connection state is invalid.
- <LI>A network error occurs.
- <LI>SMFIF_ADDRCPT was not set when <A href="smfi_register.html">smfi_register</A> was called.
-</UL>
-Otherwise, it will return MI_SUCCESS.
-</TD>
-</TR>
-
-<!----------- Notes ---------->
-<TR align="left" valign=top>
-<TH>NOTES</TH>
-<TD>
-A filter which calls smfi_addrcpt must have set the SMFIF_ADDRCPT flag
-in the smfiDesc_str passed to
-<A href="smfi_register.html">smfi_register</A>.
-</TD>
-</TR>
-
-</TABLE>
-
-<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>
diff --git a/contrib/sendmail/libmilter/docs/smfi_addrcpt_par.html b/contrib/sendmail/libmilter/docs/smfi_addrcpt_par.html
deleted file mode 100644
index 776b02c..0000000
--- a/contrib/sendmail/libmilter/docs/smfi_addrcpt_par.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<HTML>
-<HEAD><TITLE>smfi_addrcpt_par</TITLE></HEAD>
-<BODY>
-<!--
-$Id: smfi_addrcpt_par.html,v 1.4 2007/03/19 16:38:02 ca Exp $
--->
-<H1>smfi_addrcpt_par</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-int smfi_addrcpt_par(
- SMFICTX *ctx,
- char *rcpt,
- char *args
-);
-</PRE>
-Add a recipient for the current message including ESMTP arguments.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>Called only from <A href="xxfi_eom.html">xxfi_eom</A>.</TD>
-</TR>
-<TR align="left" valign=top>
-<TH width="80">Effects</TH>
-<TD>Add a recipient to the message envelope.</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>ctx</TD>
- <TD>Opaque context structure.
- </TD></TR>
- <TR valign="top"><TD>rcpt</TD>
- <TD>The new recipient's address.
- </TD></TR>
- <TR valign="top"><TD>args</TD>
- <TD>The new recipient's ESMTP parameters.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Return values ---------->
-<TR>
-<TH valign="top" align=left>RETURN VALUES</TH>
-
-<TD>smfi_addrcpt will fail and return MI_FAILURE if:
-<UL><LI>rcpt is NULL.
- <LI>Adding recipients in the current connection state is invalid.
- <LI>A network error occurs.
- <LI>SMFIF_ADDRCPT_PAR was not set when
- <A href="smfi_register.html">smfi_register</A> was called.
-</UL>
-Otherwise, it will return MI_SUCCESS.
-</TD>
-</TR>
-
-<!----------- Notes ---------->
-<TR align="left" valign=top>
-<TH>NOTES</TH>
-<TD>
-A filter which calls smfi_addrcpt must have set the SMFIF_ADDRCPT_PAR flag
-in the smfiDesc_str passed to
-<A href="smfi_register.html">smfi_register</A>.
-</TD>
-</TR>
-
-</TABLE>
-
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 2006 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>
diff --git a/contrib/sendmail/libmilter/docs/smfi_chgfrom.html b/contrib/sendmail/libmilter/docs/smfi_chgfrom.html
deleted file mode 100644
index e8249e0..0000000
--- a/contrib/sendmail/libmilter/docs/smfi_chgfrom.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<HTML>
-<HEAD><TITLE>smfi_chgfrom</TITLE></HEAD>
-<BODY>
-<!--
-$Id: smfi_chgfrom.html,v 1.3 2006/12/21 18:30:35 ca Exp $
--->
-<H1>smfi_chgfrom</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-int smfi_chgfrom(
- SMFICTX *ctx,
- const char *mail,
- char *args
-);
-</PRE>
-Change the envelope sender (MAIL From) of the current message.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>Called only from <A href="xxfi_eom.html">xxfi_eom</A>.</TD>
-</TR>
-<TR align="left" valign=top>
-<TH width="80">Effects</TH>
-<TD>Change the envelope sender (MAIL From) of the current message.</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>ctx</TD>
- <TD>Opaque context structure.
- </TD></TR>
- <TR valign="top"><TD>mail</TD>
- <TD>The new sender address.
- </TD></TR>
- <TR valign="top"><TD>args</TD>
- <TD>ESMTP arguments.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Return values ---------->
-<TR>
-<TH valign="top" align=left>RETURN VALUES</TH>
-
-<TD>smfi_chgfrom will fail and return MI_FAILURE if:
-<UL><LI>mail is NULL.
- <LI>Changing the sender in the current connection state is invalid.
- <LI>A network error occurs.
- <LI>SMFIF_CHGFROM was not set when <A href="smfi_register.html">smfi_register</A> was called.
-</UL>
-Otherwise, it will return MI_SUCCESS.
-</TD>
-</TR>
-
-<!----------- Notes ---------->
-<TR align="left" valign=top>
-<TH>NOTES</TH>
-<TD>
-A filter which calls smfi_chgfrom must have set the SMFIF_CHGFROM flag
-in the smfiDesc_str passed to
-<A href="smfi_register.html">smfi_register</A>.
-<BR>
-Even though all ESMTP arguments could be set via this call,
-it does not make sense to do so for many of them,
-e.g., SIZE and BODY.
-Setting those may cause problems, proper care must be taken.
-Moreover, there is no feedback from the MTA to the milter
-whether the call was successful.
-</TD>
-</TR>
-
-</TABLE>
-
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 2006 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>
diff --git a/contrib/sendmail/libmilter/docs/smfi_chgheader.html b/contrib/sendmail/libmilter/docs/smfi_chgheader.html
deleted file mode 100644
index 0701a36..0000000
--- a/contrib/sendmail/libmilter/docs/smfi_chgheader.html
+++ /dev/null
@@ -1,120 +0,0 @@
-<HTML>
-<HEAD><TITLE>smfi_chgheader</TITLE></HEAD>
-<BODY>
-<!--
-$Id: smfi_chgheader.html,v 1.17 2006/12/21 18:30:35 ca Exp $
--->
-<H1>smfi_chgheader</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-int smfi_chgheader(
- SMFICTX *ctx,
- char *headerf,
- mi_int32 hdridx,
- char *headerv
-);
-</PRE>
-Change or delete a message header.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>Called only from <A href="xxfi_eom.html">xxfi_eom</A>.</TD>
-</TR>
-<TR align="left" valign=top>
-<TH width="80">Effects</TH>
-<TD>Changes a header's value for the current message.</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>ctx</TD>
- <TD>Opaque context structure.
- </TD></TR>
- <TR valign="top"><TD>headerf</TD>
- <TD>The header name, a non-NULL, null-terminated string.
- </TD></TR>
- <TR valign="top"><TD>hdridx</TD>
- <TD>Header index value (1-based). A hdridx value of 1 will modify the first occurrence of a header named headerf. If hdridx is greater than the number of times headerf appears, a new copy of headerf will be added.
- </TD></TR>
- <TR valign="top"><TD>headerv</TD>
- <TD>The new value of the given header. headerv == NULL implies that the header should be deleted.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Return values ---------->
-<TR>
-<TH valign="top" align=left>RETURN VALUES</TH>
-
-<TD>
-smfi_chgheader will return MI_FAILURE if
-<UL><LI>headerf is NULL
- <LI>Modifying headers in the current connection state is invalid.
- <LI>Memory allocation fails.
- <LI>A network error occurs.
- <LI>SMFIF_CHGHDRS was not set when <A href="smfi_register.html">smfi_register</A> was called.
-</UL>
-Otherwise, it returns MI_SUCCESS.
-</TR>
-
-<!----------- Notes ---------->
-<TR align="left" valign=top>
-<TH>NOTES</TH>
-<TD>
-<UL><LI>While smfi_chgheader may be used to add new headers, it is more efficient and far safer to use <A href="smfi_addheader.html">smfi_addheader</A>.
- <LI>A filter which calls smfi_chgheader must have set the SMFIF_CHGHDRS flag in the smfiDesc_str passed to <A href="smfi_register.html">smfi_register</A>.
- <LI>For smfi_chgheader, filter order is important. <B>Later filters will see the header changes made by earlier ones.</B>
- <LI>Neither the name nor the value of the header is checked for
- standards compliance. However, each line of the header must be under
- 2048 characters and should be under 998 characters. If longer headers
- are needed, make them multi-line. To make a multi-line header, insert
- a line feed (ASCII 0x0a, or <TT>\n</TT> in C) followed by at least
- one whitespace character such as a space (ASCII 0x20) or tab (ASCII 0x09,
- or <TT>\t</TT> in C). The line feed should NOT be preceded by a
- carriage return (ASCII 0x0d); the MTA will add this automatically.
- <B>It is the filter writer's responsibility to ensure that no standards
- are violated.</B>
-</UL>
-</TD>
-</TR>
-
-<!----------- Example code ---------->
-<TR>
-<TH valign="top" align=left>EXAMPLE</TH>
-
-<TD>
- <PRE>
- int ret;
- SMFICTX *ctx;
-
- ...
-
- ret = smfi_chgheader(ctx, "Content-Type", 1,
- "multipart/mixed;\n\tboundary=\"foobar\"");
- </PRE>
-</TD>
-</TR>
-
-</TABLE>
-
-<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>
diff --git a/contrib/sendmail/libmilter/docs/smfi_delrcpt.html b/contrib/sendmail/libmilter/docs/smfi_delrcpt.html
deleted file mode 100644
index c43dcd6..0000000
--- a/contrib/sendmail/libmilter/docs/smfi_delrcpt.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<HTML>
-<HEAD><TITLE>smfi_delrcpt</TITLE></HEAD>
-<BODY>
-<!--
-$Id: smfi_delrcpt.html,v 1.11 2006/12/21 18:30:35 ca Exp $
--->
-<H1>smfi_delrcpt</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-int smfi_delrcpt(
- SMFICTX *ctx;
- char *rcpt;
-);
-</PRE>
-Remove a recipient from the current message's envelope.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>Called only from <A href="xxfi_eom.html">xxfi_eom</A>.</TD>
-</TR>
-<TR align="left" valign=top>
-<TH width="80">Effects</TH>
-<TD>smfi_delrcpt removes the named recipient from the current message's envelope.</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>ctx</TD>
- <TD>Opaque context structure.
- </TD></TR>
- <TR valign="top"><TD>rcpt</TD>
- <TD>The recipient address to be removed, a non-NULL, null-terminated string.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Return values ---------->
-<TR>
-<TH valign="top" align=left>RETURN VALUES</TH>
-
-<TD>smfi_delrcpt will fail and return MI_FAILURE if:
-<UL>
- <LI>rcpt is NULL.
- <LI>Deleting recipients in the current connection state is invalid.
- <LI>A network error occurs.
- <LI>SMFIF_DELRCPT was not set when <A href="smfi_register.html">smfi_register</A> was called.
-</UL>
-Otherwise, it will return MI_SUCCESS
-</TD>
-</TR>
-
-<!----------- Notes ---------->
-<TR align="left" valign=top>
-<TH>NOTES</TH>
-<TD>
-The addresses to be removed must match exactly. For example, an address and its expanded form do not match.
-</TD>
-</TR>
-
-</TABLE>
-
-<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>
diff --git a/contrib/sendmail/libmilter/docs/smfi_getpriv.html b/contrib/sendmail/libmilter/docs/smfi_getpriv.html
deleted file mode 100644
index 9584b9e..0000000
--- a/contrib/sendmail/libmilter/docs/smfi_getpriv.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<HTML>
-<HEAD><TITLE>smfi_getpriv</TITLE></HEAD>
-<BODY>
-<!--
-$Id: smfi_getpriv.html,v 1.9 2006/12/21 18:30:35 ca Exp $
--->
-<H1>smfi_getpriv</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-void* smfi_getpriv(
- SMFICTX *ctx
-);
-</PRE>
-Get the connection-specific data pointer for this connection.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>smfi_getpriv may be called in any of the xxfi_* callbacks.</TD>
-</TR>
-<TR align="left" valign=top>
-<TH width="80">Effects</TH>
-<TD>None.</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>ctx</TD>
- <TD>Opaque context structure.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Return values ---------->
-<TR>
-<TH valign="top" align=left>RETURN VALUES</TH>
-
-<TD>smfi_getpriv returns the private data pointer stored by a prior call to <A href="smfi_setpriv.html">smfi_setpriv</A>, or NULL if none has been set.</TD>
-</TR>
-
-</TABLE>
-
-<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>
diff --git a/contrib/sendmail/libmilter/docs/smfi_getsymval.html b/contrib/sendmail/libmilter/docs/smfi_getsymval.html
deleted file mode 100644
index 671dbfa..0000000
--- a/contrib/sendmail/libmilter/docs/smfi_getsymval.html
+++ /dev/null
@@ -1,105 +0,0 @@
-<HTML>
-<HEAD><TITLE>smfi_getsymval</TITLE></HEAD>
-<BODY>
-<!--
-$Id: smfi_getsymval.html,v 1.15 2007/03/19 16:49:11 ca Exp $
--->
-<H1>smfi_getsymval</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-char* smfi_getsymval(
- SMFICTX *ctx,
- char *symname
-);
-</PRE>
-Get the value of a sendmail macro.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>smfi_getsymval may be called from within any of the xxfi_* callbacks. Which macros are defined will depend on when it is called.</TD>
-</TR>
-<TR align="left" valign=top>
-<TH width="80">Effects</TH>
-<TD>None.</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>ctx</TD>
- <TD>The opaque context structure.
- </TD></TR>
- <TR valign="top"><TD>symname</TD>
- <TD>The name of a sendmail macro.
- Single letter macros can optionally be enclosed in braces ("{" and "}"),
- longer macro names must be enclosed in braces, just as in a
- <TT>sendmail.cf</TT> file.
- <A href="#notes">See below</A> for default macros.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Return values ---------->
-<TR>
-<TH valign="top" align=left>RETURN VALUES</TH>
-
-<TD>smfi_getsymval returns the value of the given macro as a null-terminated string, or NULL if the macro is not defined.</TD>
-</TR>
-
-<!----------- Notes ---------->
-<TR align="left" valign=top>
-<TH><A name="notes">NOTES</A></TH>
-<TD>
-By default, the following macros are valid in the given contexts:
-
-<TABLE border="1" cellspacing=0>
-<TR bgcolor="#dddddd"><TH>Sent With</TH><TH>Macros</TH></TR>
-<TR><TD>xxfi_connect</TD> <TD>daemon_name, if_name, if_addr, j, _</TD></TR>
-<TR><TD>xxfi_helo</TD> <TD>tls_version, cipher, cipher_bits, cert_subject, cert_issuer</TD></TR>
-<TR><TD>xxfi_envfrom</TD> <TD>i, auth_type, auth_authen, auth_ssf, auth_author,
- mail_mailer, mail_host, mail_addr</TD></TR>
-<TR><TD>xxfi_envrcpt</TD> <TD>rcpt_mailer, rcpt_host, rcpt_addr</TD></TR>
-
-<TR><TD>xxfi_data</TD> <TD>(none)</TD></TR>
-<TR><TD>xxfi_eoh</TD> <TD>(none)</TD></TR>
-<TR><TD>xxfi_eom</TD> <TD>msg_id</TD></TR>
-</TABLE>
-<P>
-All macros stay in effect from the point they are received
-until the end of the connection for the first two sets,
-the end of the message for the third (xxfi_envfrom) and last (xxfi_eom),
-and just for each recipient for xxfi_envrcpt.
-<P>
-The macro list can be changed using the confMILTER_MACROS_* options in
-sendmail.mc.
-The scopes of such macros will be determined by when they are set by sendmail.
-For descriptions of macros' values,
-please see the
-"Sendmail Installation and Operation Guide"
-provided with your sendmail distribution.
-
-</TD>
-</TR>
-
-</TABLE>
-
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 2000, 2002-2003, 2007 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>
diff --git a/contrib/sendmail/libmilter/docs/smfi_insheader.html b/contrib/sendmail/libmilter/docs/smfi_insheader.html
deleted file mode 100644
index a4ba77f..0000000
--- a/contrib/sendmail/libmilter/docs/smfi_insheader.html
+++ /dev/null
@@ -1,145 +0,0 @@
-<HTML>
-<HEAD><TITLE>smfi_insheader</TITLE></HEAD>
-<BODY>
-<!--
-$Id: smfi_insheader.html,v 1.9 2006/12/21 18:30:35 ca Exp $
--->
-<H1>smfi_insheader</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-int smfi_insheader(
- SMFICTX *ctx,
- int hdridx,
- char *headerf,
- char *headerv
-);
-</PRE>
-Prepend a header to the current message.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>Called only from <A href="xxfi_eom.html">xxfi_eom</A>.</TD>
-</TR>
-<TR align="left" valign=top>
-<TH width="80">Effects</TH>
-<TD>Prepends a header to the current message.</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>ctx</TD>
- <TD>Opaque context structure.
- </TD></TR>
- <TR valign="top"><TD>hdridx</TD>
- <TD>The location in the internal header list where this header should
- be inserted; 0 makes it the topmost header, etc.
- </TD></TR>
- <TR valign="top"><TD>headerf</TD>
- <TD>The header name, a non-NULL, null-terminated string.
- </TD></TR>
- <TR valign="top"><TD>headerv</TD>
- <TD>The header value to be added, a non-NULL, null-terminated string. This may be the empty string.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Return values ---------->
-<TR>
-<TH valign="top" align=left>RETURN VALUES</TH>
-
-<TD>smfi_insheader returns MI_FAILURE if:
-<UL><LI>headerf or headerv is NULL.
- <LI>Adding headers in the current connection state is invalid.
- <LI>Memory allocation fails.
- <LI>A network error occurs.
- <LI>SMFIF_ADDHDRS was not set when <A href="smfi_register.html">smfi_register</A> was called.
-</UL>
-Otherwise, it returns MI_SUCCESS.
-</TD>
-</TR>
-
-<!----------- Notes ---------->
-<TR align="left" valign=top>
-<TH>NOTES</TH>
-<TD>
-<UL>
- <LI>smfi_insheader does not change a message's existing headers.
- To change a header's current value, use
- <A HREF="smfi_chgheader.html">smfi_chgheader</A>.
- <LI>A filter which calls smfi_insheader must have set the SMFIF_ADDHDRS
- flag in the smfiDesc_str passed to
- <A href="smfi_register.html">smfi_register</A>.
- <LI>For smfi_insheader, filter order is important.
- <B>Later filters will see the header changes made by earlier ones.</B>
- <LI>A filter will receive <EM>only</EM> headers that have been sent
- by the SMTP client and those header modifications by earlier filters.
- It will <EM>not</EM> receive the headers that are inserted by sendmail
- itself.
- This makes the header insertion position highly dependent on
- the headers that exist in the incoming message
- and those that are configured to be added by sendmail.
- For example, sendmail will always add a
- <CODE>Received:</CODE> header to the beginning of the headers.
- Setting <CODE>hdridx</CODE> to 0 will actually insert the header
- before this <CODE>Received:</CODE> header.
- However, later filters can be easily confused as they receive
- the added header, but not the <CODE>Received:</CODE> header,
- thus making it hard to insert a header at a fixed position.
- <LI>If hdridx is a number larger than the number of headers in the message,
- the header will simply be appended.
- <LI>Neither the name nor the value of the header is checked for
- standards compliance.
- However, each line of the header must be under 2048 characters
- and should be under 998 characters.
- If longer headers are needed, make them multi-line.
- To make a multi-line header,
- insert a line feed (ASCII 0x0a, or <TT>\n</TT> in C)
- followed by at least one whitespace character
- such as a space (ASCII 0x20) or tab (ASCII 0x09, or <TT>\t</TT> in C).
- The line feed should NOT be preceded by a carriage return (ASCII 0x0d);
- the MTA will add this automatically.
- <B>It is the filter writer's responsibility to ensure that no standards
- are violated.</B>
-</UL>
-</TD>
-</TR>
-
-<!----------- Example code ---------->
-<TR>
-<TH valign="top" align=left>EXAMPLE</TH>
-
-<TD>
- <PRE>
- int ret;
- SMFICTX *ctx;
-
- ...
-
- ret = smfi_insheader(ctx, 0, "First", "See me?");
- </PRE>
-</TD>
-</TR>
-
-</TABLE>
-
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 2004, 2006 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>
diff --git a/contrib/sendmail/libmilter/docs/smfi_main.html b/contrib/sendmail/libmilter/docs/smfi_main.html
deleted file mode 100644
index a749386..0000000
--- a/contrib/sendmail/libmilter/docs/smfi_main.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<HTML>
-<HEAD><TITLE>smfi_main</TITLE></HEAD>
-<BODY>
-<!--
-$Id: smfi_main.html,v 1.9 2006/12/21 18:30:35 ca Exp $
--->
-<H1>smfi_main</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-int smfi_main(
-);
-</PRE>
-Hand control to libmilter event loop.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>smfi_main is called after a filter's initialization is complete.</TD>
-</TR>
-<TR align="left" valign=top>
-<TH width="80">Effects</TH>
-<TD>smfi_main hands control to the Milter event loop.</TD>
-</TR>
-</TABLE>
-
-<!----------- Return values ---------->
-<TR>
-<TH valign="top" align=left>RETURN VALUES</TH>
-
-<TD>smfi_main will return MI_FAILURE if it fails to establish a connection. This may occur for any of a variety of reasons (e.g. invalid address passed to <A href="smfi_setconn.html">smfi_setconn</A>). The reason for the failure will be logged. Otherwise, smfi_main will return MI_SUCCESS.</TD>
-</TR>
-
-</TABLE>
-
-<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>
diff --git a/contrib/sendmail/libmilter/docs/smfi_opensocket.html b/contrib/sendmail/libmilter/docs/smfi_opensocket.html
deleted file mode 100644
index 151af07..0000000
--- a/contrib/sendmail/libmilter/docs/smfi_opensocket.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<HTML>
-<HEAD><TITLE>smfi_opensocket</TITLE></HEAD>
-<BODY>
-<!--
-$Id: smfi_opensocket.html,v 1.6 2006/12/21 18:30:35 ca Exp $
--->
-<H1>smfi_opensocket</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-int smfi_opensocket(
- bool rmsocket
-);
-</PRE>
-Attempt to create the interface socket MTAs will use to connect to the
-filter.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>Called only from program mainline, before calling
-<TT>smfi_main()</TT>.</TD>
-</TR>
-<TR align="left" valign=top>
-<TH width="80">Effects</TH>
-<TD>smfi_opensocket attempts to create the socket specified previously by
-a call to <TT>smfi_setconn()</TT> which will be the interface between MTAs
-and the filter. This allows the calling application to ensure that the
-socket can be created. If this is not called, <TT>smfi_main()</TT> will
-do so implicitly. </TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>rmsocket</TD>
- <TD>A flag indicating whether or not the library should try to
- remove any existing UNIX domain socket before trying to create
- a new one.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Return values ---------->
-<TR>
-<TH valign="top" align=left>RETURN VALUES</TH>
-
-<TD>smfi_opensocket will fail and return MI_FAILURE if:
-<UL>
- <LI>The interface socket could not be created for any reason.
- <LI><TT>rmsocket</TT> was <TT>true</TT>, and either the socket could
- not be examined, or exists and could not be removed.
- <LI><TT>smfi_setconn()</TT> has not been called.
-</UL>
-Otherwise, it will return MI_SUCCESS
-</TD>
-</TR>
-
-</TABLE>
-
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 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>
diff --git a/contrib/sendmail/libmilter/docs/smfi_progress.html b/contrib/sendmail/libmilter/docs/smfi_progress.html
deleted file mode 100644
index 801bdf3..0000000
--- a/contrib/sendmail/libmilter/docs/smfi_progress.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<HTML>
-<HEAD><TITLE>smfi_progress</TITLE></HEAD>
-<BODY>
-<!--
-$Id: smfi_progress.html,v 1.5 2006/12/21 18:30:35 ca Exp $
--->
-<H1>smfi_progress</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-int smfi_progress(
- SMFICTX *ctx;
-);
-</PRE>
-Notify the MTA that an operation is still in progress.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>Called only from <A href="xxfi_eom.html">xxfi_eom</A>.</TD>
-</TR>
-<TR align="left" valign=top>
-<TH width="80">Effects</TH>
-<TD>smfi_progress notifies the MTA that the filter is still working
-on a message, causing the MTA to re-start its timeouts.</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>ctx</TD>
- <TD>Opaque context structure.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Return values ---------->
-<TR>
-<TH valign="top" align=left>RETURN VALUES</TH>
-
-<TD>smfi_progress will fail and return MI_FAILURE if:
-<UL>
- <LI>A network error occurs.
-</UL>
-Otherwise, it will return MI_SUCCESS
-</TD>
-</TR>
-
-</TABLE>
-
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 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>
diff --git a/contrib/sendmail/libmilter/docs/smfi_quarantine.html b/contrib/sendmail/libmilter/docs/smfi_quarantine.html
deleted file mode 100644
index 656a480..0000000
--- a/contrib/sendmail/libmilter/docs/smfi_quarantine.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<HTML>
-<HEAD><TITLE>smfi_quarantine</TITLE></HEAD>
-<BODY>
-<!--
-$Id: smfi_quarantine.html,v 1.5 2006/12/21 18:30:35 ca Exp $
--->
-<H1>smfi_quarantine</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-int smfi_quarantine(
- SMFICTX *ctx;
- char *reason;
-);
-</PRE>
-Quarantine the message using the given reason.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>Called only from <A href="xxfi_eom.html">xxfi_eom</A>.</TD>
-</TR>
-<TR align="left" valign=top>
-<TH width="80">Effects</TH>
-<TD>smfi_quarantine quarantines the message using the given reason.</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>ctx</TD>
- <TD>Opaque context structure.
- </TD></TR>
- <TR valign="top"><TD>reason</TD>
- <TD>The quarantine reason, a non-NULL and non-empty null-terminated string.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Return values ---------->
-<TR>
-<TH valign="top" align=left>RETURN VALUES</TH>
-
-<TD>smfi_quarantine will fail and return MI_FAILURE if:
-<UL>
- <LI>reason is NULL or empty.
- <LI>A network error occurs.
- <LI>SMFIF_QUARANTINE was not set when <A href="smfi_register.html">smfi_register</A> was called.
-</UL>
-Otherwise, it will return MI_SUCCESS
-</TD>
-</TR>
-
-</TABLE>
-
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 2002-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>
diff --git a/contrib/sendmail/libmilter/docs/smfi_register.html b/contrib/sendmail/libmilter/docs/smfi_register.html
deleted file mode 100644
index 1a35918..0000000
--- a/contrib/sendmail/libmilter/docs/smfi_register.html
+++ /dev/null
@@ -1,224 +0,0 @@
-<HTML>
-<HEAD><TITLE>smfi_register</TITLE></HEAD>
-<BODY>
-<!--
-$Id: smfi_register.html,v 1.18 2006/12/20 18:37:11 ca Exp $
--->
-<H1>smfi_register</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-int smfi_register(
- smfiDesc descr
-);
-</PRE>
-Register a set of filter callbacks.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=1>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>smfi_register must be called before smfi_main</TD>
-</TR>
-<TR align="left" valign=top>
-<TH width="80">Effects</TH>
-<TD>smfi_register creates a filter using the information given in the
-smfiDesc argument.
-Multiple (successful) calls to smfi_register within a
-single process are not allowed,
-i.e., only one filter can be successfully registered.
-Note, however, that the library may not check whether this restriction
-is obeyed.
-</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>descr</TD>
- <TD>
-A filter descriptor of type smfiDesc describing the filter's functions.
-<A NAME="smfiDesc">The structure</A> has the following members:
-<PRE>
-struct smfiDesc
-{
- char *xxfi_name; /* filter name */
- int xxfi_version; /* version code -- do not change */
- unsigned long xxfi_flags; /* <A href="#flags">flags</A> */
-
- /* connection info filter */
- sfsistat (*<A href="xxfi_connect.html">xxfi_connect</A>)(SMFICTX *, char *, _SOCK_ADDR *);
- /* SMTP HELO command filter */
- sfsistat (*<A href="xxfi_helo.html">xxfi_helo</A>)(SMFICTX *, char *);
- /* envelope sender filter */
- sfsistat (*<A href="xxfi_envfrom.html">xxfi_envfrom</A>)(SMFICTX *, char **);
- /* envelope recipient filter */
- sfsistat (*<A href="xxfi_envrcpt.html">xxfi_envrcpt</A>)(SMFICTX *, char **);
- /* header filter */
- sfsistat (*<A href="xxfi_header.html">xxfi_header</A>)(SMFICTX *, char *, char *);
- /* end of header */
- sfsistat (*<A href="xxfi_eoh.html">xxfi_eoh</A>)(SMFICTX *);
- /* body block */
- sfsistat (*<A href="xxfi_body.html">xxfi_body</A>)(SMFICTX *, unsigned char *, size_t);
- /* end of message */
- sfsistat (*<A href="xxfi_eom.html">xxfi_eom</A>)(SMFICTX *);
- /* message aborted */
- sfsistat (*<A href="xxfi_abort.html">xxfi_abort</A>)(SMFICTX *);
- /* connection cleanup */
- sfsistat (*<A href="xxfi_close.html">xxfi_close</A>)(SMFICTX *);
-
- /* any unrecognized or unimplemented command filter */
- sfsistat (*xxfi_unknown)(SMFICTX *, const char *);
-
- /* SMTP DATA command filter */
- sfsistat (*xxfi_data)(SMFICTX *);
-
- /* negotiation callback */
- sfsistat (*<A HREF="xxfi_negotiate.html">xxfi_negotiate</A>)(SMFICTX *,
- unsigned long, unsigned long, unsigned long, unsigned long,
- unsigned long *, unsigned long *, unsigned long *, unsigned long *);
-};
-</PRE>
-
-A NULL value for any callback function indicates that the filter
-does not wish to process the given type of information,
-simply returning SMFIS_CONTINUE.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Return values ---------->
-<TR>
-<TH valign="top" align=left>RETURN VALUES</TH>
-
-<TD>
-smfi_register may return MI_FAILURE for any of the following reasons:
-<UL>
-<LI>memory allocation failed.
-<LI>incompatible version or illegal flags value.
-</UL>
-
-</TD>
-</TR>
-
-<!----------- Notes ---------->
-<TR align="left" valign=top>
-<TH>NOTES</TH>
-<TD>
-
-<A NAME="flags">The xxfi_flags</A>
-field should contain the bitwise OR of zero or more of
-the following values, describing the actions the filter may take:
-<TABLE BORDER CELLPADDING="1" cellspacing=1>
-<TR valign="top" bgcolor="#dddddd"><TH align="left">Flag</TH><TH align="center">Description</TH></TR>
- <TR align="left" valign=top>
- <TD>
- SMFIF_ADDHDRS
- </TD>
- <TD>
- This filter may <A HREF="smfi_addheader.html">add headers</A>.
- </TD>
- </TR>
- <TR align="left" valign=top>
- <TD>
- SMFIF_CHGHDRS
- </TD>
- <TD>
- This filter may
- <A HREF="smfi_chgheader.html">change and/or delete headers</A>.
- </TD>
- </TR>
- <TR align="left" valign=top>
- <TD VALIGN="TOP">
- SMFIF_CHGBODY
- </TD>
- <TD>
- This filter may
- <A HREF="smfi_replacebody.html">replace the body</A> during filtering.
- This may have significant performance impact
- if other filters do body filtering after this filter.
- </TD>
- </TR>
- <TR>
- <TD VALIGN="TOP">
- SMFIF_ADDRCPT
- </TD>
- <TD>
- This filter may
- <A HREF="smfi_addrcpt.html">add recipients</A>
- to the message.
- </TD>
- </TR>
- <TR>
- <TD VALIGN="TOP">
- SMFIF_ADDRCPT_PAR
- </TD>
- <TD>
- This filter may
- <A HREF="smfi_addrcpt_par.html">add recipients including ESMTP args</A>.
- </TD>
- </TR>
- <TR>
- <TD VALIGN="TOP">
- SMFIF_DELRCPT
- </TD>
- <TD>
- This filter may
- <A HREF="smfi_delrcpt.html">remove recipients</A> from the message.
- </TD>
- </TR>
- <TR>
- <TD VALIGN="TOP">
- SMFIF_QUARANTINE
- </TD>
- <TD>
- This filter may
- <A HREF="smfi_quarantine.html">quarantine</A> a message.
- </TD>
- </TR>
-
- <TR>
- <TD VALIGN="TOP">
- SMFIF_CHGFROM
- </TD>
- <TD>
- This filter may
- <A HREF="smfi_chgfrom.html">change the envelope sender</A> (MAIL).
- </TD>
- </TR>
-
- <TR>
- <TD VALIGN="TOP">
- SMFIF_SETSYMLIST
- </TD>
- <TD>
- This filter can
- <A HREF="smfi_setsymlist.html">send a set of symbols (macros)</A>
- that it wants.
- </TD>
- </TR>
-
-</TABLE>
-
-</TD>
-</TR>
-
-</TABLE>
-
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 2000-2001, 2003, 2006 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>
diff --git a/contrib/sendmail/libmilter/docs/smfi_replacebody.html b/contrib/sendmail/libmilter/docs/smfi_replacebody.html
deleted file mode 100644
index bc8d5ac..0000000
--- a/contrib/sendmail/libmilter/docs/smfi_replacebody.html
+++ /dev/null
@@ -1,93 +0,0 @@
-<HTML>
-<HEAD><TITLE>smfi_replacebody</TITLE></HEAD>
-<BODY>
-<!--
-$Id: smfi_replacebody.html,v 1.15 2006/12/21 18:30:35 ca Exp $
--->
-<H1>smfi_replacebody</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-int smfi_replacebody(
- SMFICTX *ctx,
- unsigned char *bodyp,
- int bodylen
-);
-</PRE>
-Replace message-body data.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>Called only from <A href="xxfi_eom.html">xxfi_eom</A>. smfi_replacebody may be called more than once.</TD>
-</TR>
-<TR align="left" valign=top>
-<TH width="80">Effects</TH>
-<TD>smfi_replacebody replaces the body of the current message. If called
-more than once, subsequent calls result in data being appended to the new
-body.
-</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>ctx</TD>
- <TD>Opaque context structure.
- </TD></TR>
- <TR valign="top"><TD>bodyp</TD>
- <TD>A pointer to the start of the new body data, which does not have to be null-terminated. If bodyp is NULL, it is treated as having length == 0. Body data should be in CR/LF form.
- </TD></TR>
- <TR valign="top"><TD>bodylen</TD>
- <TD>The number of data bytes pointed to by bodyp.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Return values ---------->
-<TR>
-<TH valign="top" align=left>RETURN VALUES</TH>
-
-<TD>smfi_replacebody fails and returns MI_FAILURE if:
-<UL>
- <LI>bodyp == NULL and bodylen &gt; 0.
- <LI>Changing the body in the current connection state is invalid.
- <LI>A network error occurs.
- <LI>SMFIF_CHGBODY was not set when <A href="smfi_register.html">smfi_register</A> was called.
-</UL>
-Otherwise, it will return MI_SUCCESS.
-</TD>
-</TR>
-
-<!----------- Notes ---------->
-<TR align="left" valign=top>
-<TH>NOTES</TH>
-<TD>
-<UL>
- <LI>Since the message body may be very large, setting SMFIF_CHGBODY may significantly affect filter performance.
- <LI>If a filter sets SMFIF_CHGBODY but does not call smfi_replacebody, the original body remains unchanged.
- <LI>For smfi_replacebody, filter order is important. <B>Later filters will see the new body contents created by earlier ones.</B>
-</UL>
-</TD>
-</TR>
-
-</TABLE>
-
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 2000-2001, 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>
diff --git a/contrib/sendmail/libmilter/docs/smfi_setbacklog.html b/contrib/sendmail/libmilter/docs/smfi_setbacklog.html
deleted file mode 100644
index 8353cac..0000000
--- a/contrib/sendmail/libmilter/docs/smfi_setbacklog.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<HTML>
-<HEAD><TITLE>smfi_setbacklog</TITLE></HEAD>
-<BODY>
-<!--
-$Id: smfi_setbacklog.html,v 1.6 2006/12/21 18:30:35 ca Exp $
--->
-<H1>smfi_setbacklog</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-int smfi_setbacklog(
- int obacklog
-);
-</PRE>
-Set the filter's <CODE>listen(2)</CODE> backlog value.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>smfi_setbacklog should only be called before <A href="smfi_main.html">smfi_main</A>.</TD>
-</TR>
-<TR align="left" valign=top>
-<TH width="80">Effects</TH>
-<TD>Sets the incoming socket backlog used by <CODE>listen(2)</CODE>.
-If smfi_setbacklog is not called, the operating system default is used.</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>obacklog</TD>
- <TD>The number of incoming connections to allow in the listen queue.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Return values ---------->
-<TR>
-<TH valign="top" align=left>RETURN VALUES</TH>
-
-<TD>smfi_setbacklog returns MI_FAILURE if obacklog is less than or equal
-to zero.</TD>
-</TR>
-
-</TABLE>
-
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 2002-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>
diff --git a/contrib/sendmail/libmilter/docs/smfi_setconn.html b/contrib/sendmail/libmilter/docs/smfi_setconn.html
deleted file mode 100644
index 70a510e..0000000
--- a/contrib/sendmail/libmilter/docs/smfi_setconn.html
+++ /dev/null
@@ -1,93 +0,0 @@
-<HTML>
-<HEAD><TITLE>smfi_setconn</TITLE></HEAD>
-<BODY>
-<!--
-$Id: smfi_setconn.html,v 1.17 2006/12/21 18:30:35 ca Exp $
--->
-<H1>smfi_setconn</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-int smfi_setconn(
- char *oconn;
-);
-</PRE>
-Set the socket through which this filter should communicate with sendmail.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>smfi_setconn must be called once before <A href="smfi_main.html">smfi_main</A>.</TD>
-</TR>
-<TR align="left" valign=top>
-<TH width="80">Effects</TH>
-<TD>Sets the socket through which the filter communicates with sendmail.</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>oconn</TD>
- <TD>The address of the desired communication socket.
- The address should be a NULL-terminated string in "proto:address"
- format:
- <UL>
- <LI><CODE>{unix|local}:/path/to/file</CODE> -- A named pipe.
- <LI><CODE>inet:port@{hostname|ip-address}</CODE> -- An IPV4 socket.
- <LI><CODE>inet6:port@{hostname|ip-address}</CODE> -- An IPV6 socket.
- </UL>
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Return values ---------->
-<TR>
-<TH valign="top" align=left>RETURN VALUES</TH>
-
-<TD>smfi_setconn will not fail on an invalid address.
-The failure will only be detected in <A href="smfi_main.html">smfi_main</A>.
-Nevertheless, smfi_setconn may fail for other reasons, e.g.,
-due to a lack of memory.
-</TD>
-</TR>
-
-<TR>
-<TH valign="top" align=left>NOTES</TH>
-
-<TD>
-<UL>
- <LI>If possible, filters should not run as root when communicating
- over unix/local domain sockets.
- <LI>Unix/local sockets should have their permissions set to
- 0600 (read/write permission only for the socket's owner) or
- 0660 (read/write permission for the socket's owner and group)
- which is useful if the sendmail RunAsUser option is used.
- The permissions for a unix/local domain socket are determined as
- usual by <CODE>umask</CODE>, which should be set to 007 or 077.
- Note some operating systems (e.g, Solaris) don't use the
- permissions of the socket. On those systems, place the socket in a
- protected directory.
-</UL>
-</TD>
-</TR>
-
-</TABLE>
-
-<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>
diff --git a/contrib/sendmail/libmilter/docs/smfi_setdbg.html b/contrib/sendmail/libmilter/docs/smfi_setdbg.html
deleted file mode 100644
index e001d3f..0000000
--- a/contrib/sendmail/libmilter/docs/smfi_setdbg.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<HTML>
-<HEAD><TITLE>smfi_setdbg</TITLE></HEAD>
-<BODY>
-<!--
-$Id: smfi_setdbg.html,v 1.3 2006/12/21 18:30:35 ca Exp $
--->
-<H1>smfi_setdbg</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-int smfi_setdbg(
- int level;
-);
-</PRE>
-Set the debugging (tracing) level for the milter library.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>Called from any any routine at any time.</TD>
-</TR>
-<TR align="left" valign=top>
-<TH width="80">Effects</TH>
-<TD>smfi_setdbg sets the milter library's internal debugging level
-to a new level so that code details may be traced.
-A level of zero turns off debugging. The greater
-(more positive) the level the more detailed the debugging. Six is
-the current, highest, useful value.</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>level</TD>
- <TD>The new debugging level
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Return values ---------->
-<TR>
-<TH valign="top" align=left>RETURN VALUES</TH>
-
-<TD>smfi_setdbg returns MI_SUCCESS by default.
-</TD>
-</TR>
-
-</TABLE>
-
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 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>
diff --git a/contrib/sendmail/libmilter/docs/smfi_setmlreply.html b/contrib/sendmail/libmilter/docs/smfi_setmlreply.html
deleted file mode 100644
index b01bacf..0000000
--- a/contrib/sendmail/libmilter/docs/smfi_setmlreply.html
+++ /dev/null
@@ -1,145 +0,0 @@
-<HTML>
-<HEAD><TITLE>smfi_setmlreply</TITLE></HEAD>
-<BODY>
-<!--
-$Id: smfi_setmlreply.html,v 1.4 2006/12/21 18:30:35 ca Exp $
--->
-<H1>smfi_setmlreply</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-int smfi_setmlreply(
- SMFICTX *ctx,
- char *rcode,
- char *xcode,
- ...
-);
-</PRE>
-Set the default SMTP error reply code to a multi-line response. Only 4XX
-and 5XX replies are accepted.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>smfi_setmlreply may be called from any of the xxfi_ callbacks
-other than xxfi_connect.</TD>
-</TR>
-<TR align="left" valign=top>
-<TH width="80">Effects</TH>
-<TD>Directly set the SMTP error reply code for this connection to the given
-lines after the xcode. The list of arguments must be NULL terminated.
-This code will be used on subsequent error replies resulting from actions
-taken by this filter.</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>ctx</TD>
- <TD>Opaque context structure.
- </TD></TR>
- <TR valign="top"><TD>rcode</TD>
- <TD>The three-digit (RFC 821/2821) SMTP reply code, as a
- null-terminated string. rcode cannot be NULL, and must be a valid
- 4XX or 5XX reply code.
- </TD></TR>
- <TR valign="top"><TD>xcode</TD>
- <TD>The extended (RFC 1893/2034) reply code. If xcode is NULL, no
- extended code is used. Otherwise, xcode must conform to RFC 1893/2034.
- </TD></TR>
- <TR valign="top"><TD>...</TD>
- <TD>The remainder of the arguments are single lines of text, up to
- 32 arguments, which will be used as the text part of the SMTP
- reply. The list must be NULL terminated.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Example ---------->
-<TR>
-<TH valign="top" align=left>RETURN VALUES</TH>
-<TD>
-For example, the code:<BR>
-<PRE>
- ret = smfi_setmlreply(ctx, "550", "5.7.0",
- "Spammer access rejected",
- "Please see our policy at:",
- "http://www.example.com/spampolicy.html",
- NULL);
-</PRE>
-<BR>would give the SMTP response:<BR>
-<PRE>
-550-5.7.0 Spammer access rejected
-550-5.7.0 Please see our policy at:
-550 5.7.0 http://www.example.com/spampolicy.html
-</PRE>
-</TD>
-</TR>
-
-<!----------- Return values ---------->
-<TR>
-<TH valign="top" align=left>RETURN VALUES</TH>
-
-<TD>smfi_setmlreply will fail and return MI_FAILURE if:
-<UL>
- <LI>The rcode or xcode argument is invalid.
- <LI>A memory-allocation failure occurs.
- <LI>If any text line contains a carraige return or line feed.
- <LI>The length of any text line is more than MAXREPLYLEN (980).
- <LI>More than 32 lines of text replies are given.
-</UL>
-Otherwise, it return MI_SUCCESS.
-</TD>
-</TR>
-
-<!----------- Notes ---------->
-<TR align="left" valign=top>
-<TH>NOTES</TH>
-<TD>
-<UL>
-<LI>Values passed to smfi_setmlreply are not checked for standards compliance.
-<LI>The message parameter should contain only printable characters,
-other characters may lead to undefined behavior.
-For example, CR or LF will cause the call to fail,
-single '%' characters will cause the text to be ignored
-(if there really should be a '%' in the string,
-use '%%' just like for <TT>printf(3)</TT>).
-<LI>For details about reply codes and their meanings, please see RFC's
-<A href="http://www.rfc-editor.org/rfc/rfc821.txt">821</A>/
-<A href="http://www.rfc-editor.org/rfc/rfc2821.txt">2821</A>
-and
-<A href="http://www.rfc-editor.org/rfc/rfc1893.txt">1893</A>/
-<A href="http://www.rfc-editor.org/rfc/rfc2034.txt">2034</A>.
-<LI>If the reply code (rcode) given is a '4XX' code but SMFI_REJECT is used
-for the message, the custom reply is not used.
-<LI>Similarly, if the reply code (rcode) given is a '5XX' code but
-SMFI_TEMPFAIL is used for the message, the custom reply is not used.
-<BR>
-Note: in neither of the last two cases an error is returned to the milter,
-libmilter silently ignores the reply code.
-<LI>If the milter returns SMFI_TEMPFAIL and sets the reply code to '421',
-then the SMTP server will terminate the SMTP session with a 421 error code.
-</UL>
-</TD>
-</TR>
-
-</TABLE>
-
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 2000, 2002-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>
diff --git a/contrib/sendmail/libmilter/docs/smfi_setpriv.html b/contrib/sendmail/libmilter/docs/smfi_setpriv.html
deleted file mode 100644
index 1c287eb..0000000
--- a/contrib/sendmail/libmilter/docs/smfi_setpriv.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<HTML>
-<HEAD><TITLE>smfi_setpriv</TITLE></HEAD>
-<BODY>
-<!--
-$Id: smfi_setpriv.html,v 1.11 2006/12/21 18:30:35 ca Exp $
--->
-<H1>smfi_setpriv</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-int smfi_setpriv(
- SMFICTX *ctx,
- void *privatedata
-);
-</PRE>
-Set the private data pointer for this connection.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>smfi_setpriv may be called in any of the xxfi_* callbacks.</TD>
-</TR>
-<TR align="left" valign=top>
-<TH width="80">Effects</TH>
-<TD>Sets the private data pointer for the context ctx.</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>ctx</TD>
- <TD>Opaque context structure.
- </TD></TR>
- <TR valign="top"><TD>privatedata</TD>
- <TD>Pointer to private data. This value will be returned by subsequent calls to <A href="smfi_getpriv.html">smfi_getpriv</A> using ctx.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Return values ---------->
-<TR>
-<TH valign="top" align=left>RETURN VALUES</TH>
-
-<TD>smfi_setpriv returns MI_FAILURE if ctx is an invalid context.
-Otherwise, it returns MI_SUCCESS.</TD>
-</TR>
-
-<TR>
-<TH valign="top" align=left>NOTES</TH>
-
-<TD>There is only one private data pointer per connection; multiple
-calls to smfi_setpriv with different values will cause previous values
-to be lost.
-<P>
-Before a filter terminates it should release the private data
-and set the pointer to NULL.
-</TD>
-
-</TR>
-
-</TABLE>
-
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 2000-2001, 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>
diff --git a/contrib/sendmail/libmilter/docs/smfi_setreply.html b/contrib/sendmail/libmilter/docs/smfi_setreply.html
deleted file mode 100644
index d857815..0000000
--- a/contrib/sendmail/libmilter/docs/smfi_setreply.html
+++ /dev/null
@@ -1,117 +0,0 @@
-<HTML>
-<HEAD><TITLE>smfi_setreply</TITLE></HEAD>
-<BODY>
-<!--
-$Id: smfi_setreply.html,v 1.17 2006/12/21 18:30:35 ca Exp $
--->
-<H1>smfi_setreply</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-int smfi_setreply(
- SMFICTX *ctx,
- char *rcode,
- char *xcode,
- char *message
-);
-</PRE>
-Set the default SMTP error reply code. Only 4XX and 5XX replies are accepted.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>smfi_setreply may be called from any of the xxfi_ callbacks
-other than xxfi_connect.</TD>
-</TR>
-<TR align="left" valign=top>
-<TH width="80">Effects</TH>
-<TD>Directly set the SMTP error reply code for this connection. This code
-will be used on subsequent error replies resulting from actions taken by
-this filter.</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>ctx</TD>
- <TD>Opaque context structure.
- </TD></TR>
- <TR valign="top"><TD>rcode</TD>
- <TD>The three-digit (RFC 821/2821) SMTP reply code, as a
- null-terminated string. rcode cannot be NULL, and must be a valid
- 4XX or 5XX reply code.
- </TD></TR>
- <TR valign="top"><TD>xcode</TD>
- <TD>The extended (RFC 1893/2034) reply code. If xcode is NULL, no
- extended code is used. Otherwise, xcode must conform to RFC 1893/2034.
- </TD></TR>
- <TR valign="top"><TD>message</TD>
- <TD>The text part of the SMTP reply. If message is NULL, an empty message is used.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Return values ---------->
-<TR>
-<TH valign="top" align=left>RETURN VALUES</TH>
-
-<TD>smfi_setreply will fail and return MI_FAILURE if:
-<UL>
- <LI>The rcode or xcode argument is invalid.
- <LI>A memory-allocation failure occurs.
-</UL>
-Otherwise, it return MI_SUCCESS.
-</TD>
-</TR>
-
-<!----------- Notes ---------->
-<TR align="left" valign=top>
-<TH>NOTES</TH>
-<TD>
-<UL>
-<LI>Values passed to smfi_setreply are not checked for standards compliance.
-<LI>The message parameter should contain only printable characters,
-other characters may lead to undefined behavior.
-For example, CR or LF will cause the call to fail,
-single '%' characters will cause the text to be ignored
-(if there really should be a '%' in the string,
-use '%%' just like for <TT>printf(3)</TT>).
-<LI>For details about reply codes and their meanings, please see RFC's
-<A href="http://www.rfc-editor.org/rfc/rfc821.txt">821</A>/
-<A href="http://www.rfc-editor.org/rfc/rfc2821.txt">2821</A>
-and
-<A href="http://www.rfc-editor.org/rfc/rfc1893.txt">1893</A>/
-<A href="http://www.rfc-editor.org/rfc/rfc2034.txt">2034</A>.
-<LI>If the reply code (rcode) given is a '4XX' code but SMFI_REJECT is used
-for the message, the custom reply is not used.
-<LI>Similarly, if the reply code (rcode) given is a '5XX' code but
-SMFI_TEMPFAIL is used for the message, the custom reply is not used.
-<BR>
-Note: in neither of the last two cases an error is returned to the milter,
-libmilter silently ignores the reply code.
-<LI>If the milter returns SMFI_TEMPFAIL and sets the reply code to '421',
-then the SMTP server will terminate the SMTP session with a 421 error code.
-</UL>
-</TD>
-</TR>
-
-</TABLE>
-
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 2000, 2002-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>
diff --git a/contrib/sendmail/libmilter/docs/smfi_setsymlist.html b/contrib/sendmail/libmilter/docs/smfi_setsymlist.html
deleted file mode 100644
index 7e8edff..0000000
--- a/contrib/sendmail/libmilter/docs/smfi_setsymlist.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<HTML>
-<HEAD><TITLE>smfi_setsymlist</TITLE></HEAD>
-<BODY>
-<!--
-$Id: smfi_setsymlist.html,v 1.5 2006/12/21 18:30:35 ca Exp $
--->
-<H1>smfi_setsymlist</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-int smfi_setsymlist(
- SMFICTX *ctx,
- int stage,
- char *macros
-);
-</PRE>
-Set the list of macros that the milter wants to receive from the MTA
-for a protocol stage.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>This function must only be called during
-<A HREF="xxfi_negotiate.html">xxfi_negotiate()</A>.
-</TD>
-</TR>
-<TR align="left" valign=top>
-<TH width="80">Effects</TH>
-<TD>This function can be used to override the list of macros that the
-milter wants to receive from the MTA.
-</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
-
- <TR><TD>ctx</TD>
- <TD>the opaque context structure.
- </TD></TR>
-
- <TR><TD>stage</TD>
- <TD>the protocol stage during which the macro list should be used.
- See the file
- <CODE>include/libmilter/mfapi.h</CODE> for legal values,
- look for the C macros with the prefix
- <CODE>SMFIM_</CODE>.
- Available protocol stages are at least
- the initial connection, HELO/EHLO, MAIL, RCPT, DATA,
- end of header, and
- the end of a message.
- </TD></TR>
-
- <TR><TD>macros</TD>
- <TD>list of macros (separated by space).
- Example: "{rcpt_mailer} {rcpt_host}"
- </TD></TR>
-
- </TABLE>
-</TD></TR>
-
-<!----------- Return values ---------->
-<TR>
-<TH valign="top" align=left>RETURN VALUES</TH>
-
-<TD>MI_FAILURE is returned if
-<UL>
-<LI>there is not enough free memory to make a copy of the macro list,
-<LI><CODE>macros</CODE> is <CODE>NULL</CODE> or empty,
-<LI><CODE>stage</CODE> is not a valid protocol stage,
-<LI>the macro list for
-<CODE>stage</CODE> has been set before.
-</UL>
-Otherwise MI_SUCCESS is returned.
-</TD>
-</TR>
-
-<!----------- Notes ---------->
-<TR align="left" valign=top>
-<TH>NOTES</TH>
-<TD>There is an internal limit on the number of macros that can be
-set (currently 5),
-however, this limit is not enforced by libmilter, only by the MTA,
-but a possible violation of this restriction is not communicated back to
-the milter.</TD>
-</TR>
-
-</TABLE>
-
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 2006 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>
diff --git a/contrib/sendmail/libmilter/docs/smfi_settimeout.html b/contrib/sendmail/libmilter/docs/smfi_settimeout.html
deleted file mode 100644
index 97d41cb..0000000
--- a/contrib/sendmail/libmilter/docs/smfi_settimeout.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<HTML>
-<HEAD><TITLE>smfi_settimeout</TITLE></HEAD>
-<BODY>
-<!--
-$Id: smfi_settimeout.html,v 1.14 2006/12/21 18:30:35 ca Exp $
--->
-<H1>smfi_settimeout</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-int smfi_settimeout(
- int otimeout
-);
-</PRE>
-Set the filter's I/O timeout value.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>smfi_settimeout should only be called before <A href="smfi_main.html">smfi_main</A>.</TD>
-</TR>
-<TR align="left" valign=top>
-<TH width="80">Effects</TH>
-<TD>Sets the number of seconds libmilter will wait
-for an MTA communication (read or write) before timing out.
-If smfi_settimeout is not called, a default timeout of 7210 seconds is used.
-</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>otimeout</TD>
- <TD>The number of seconds to wait before timing out (&gt; 0).
- Zero means no wait, <B>not</B> "wait forever".
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Return values ---------->
-<TR>
-<TH valign="top" align=left>RETURN VALUES</TH>
-
-<TD>smfi_settimeout always returns MI_SUCCESS.</TD>
-</TR>
-
-</TABLE>
-
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 2000, 2002-2003, 2006 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>
diff --git a/contrib/sendmail/libmilter/docs/smfi_stop.html b/contrib/sendmail/libmilter/docs/smfi_stop.html
deleted file mode 100644
index 87ecdb2..0000000
--- a/contrib/sendmail/libmilter/docs/smfi_stop.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<HTML>
-<HEAD><TITLE>smfi_stop</TITLE></HEAD>
-<BODY>
-<!--
-$Id: smfi_stop.html,v 1.6 2006/12/21 18:30:35 ca Exp $
--->
-<H1>smfi_stop</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-int smfi_stop(void);
-</PRE>
-Shutdown the milter.
-No connections will be accepted after this call.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>Called from any of the <A href="api.html#Callbacks">Callback</A> routines
-or any error-handling routines at any time.</TD>
-</TR>
-<TR align="left" valign=top>
-<TH width="80">Effects</TH>
-<TD>The smfi_stop routine prevents that new connections
-will be accepted,
-however, it does not wait for existing connections (threads) to terminate.
-It will cause
-<A href="smfi_main.html">smfi_main</A> to return to the calling program,
-which may then exit or warm-restart.
-</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>void</TD>
- <TD>Takes no arguement.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Return values ---------->
-<TR>
-<TH valign="top" align=left>RETURN VALUES</TH>
-
-<TD>smfi_stop always returns SMFI_CONTINUE. But note:
-<UL>
- <LI>Another internal routine may already have asked the milter to abort.
- <LI>Another routine may already have asked the milter to stop.
- <LI>There is no way to cancel the stop process once it has begun.
-</UL>
-</TD>
-</TR>
-
-</TABLE>
-
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 2003, 2005 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>
diff --git a/contrib/sendmail/libmilter/docs/smfi_version.html b/contrib/sendmail/libmilter/docs/smfi_version.html
deleted file mode 100644
index 3c1fc05..0000000
--- a/contrib/sendmail/libmilter/docs/smfi_version.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<HTML>
-<HEAD><TITLE>smfi_version()</TITLE></HEAD>
-<BODY>
-<!--
-$Id: smfi_version.html,v 1.5 2007/03/22 17:30:57 ca Exp $
--->
-<H1>smfi_version()</H1>
-
-<TABLE BORDER="0" CELLSPACING=4 CELLPADDING=4>
-<!---------- Synopsis ----------->
-<TR><TH VALIGN="TOP" ALIGN=LEFT WIDTH=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-int smfi_version(
- unsigned int *pmajor,
- unsigned int *pminor,
- unsigned int *ppl
-);
-</PRE>
-Get the (runtime) version of libmilter.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH VALIGN="TOP" ALIGN=LEFT>DESCRIPTION</TH><TD>
-<TABLE BORDER="1" CELLSPACING=1 CELLPADDING=4>
-<TR ALIGN="LEFT" VALIGN=TOP>
-<TH WIDTH="80">Called When</TH>
-<TD>smfi_version may be called at any time.</TD>
-</TR>
-<TR ALIGN="LEFT" VALIGN=TOP>
-<TH WIDTH="80">Effects</TH>
-<TD>None.</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH VALIGN="TOP" ALIGN=LEFT>ARGUMENTS</TH><TD>
- <TABLE BORDER="1" CELLSPACING=0>
- <TR BGCOLOR="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR VALIGN="TOP"><TD>pmajor</TD>
- <TD>Pointer to an unsigned int variable to store major version number.
- </TD></TR>
- <TR VALIGN="TOP"><TD>pminor</TD>
- <TD>Pointer to an unsigned int variable to store minor version number.
- </TD></TR>
- <TR VALIGN="TOP"><TD>ppl</TD>
- <TD>Pointer to an unsigned int variable to store patch level number.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Return values ---------->
-<TR>
-<TH VALIGN="TOP" ALIGN=LEFT>RETURN VALUES</TH>
-<TD>smfi_version returns MI_SUCCESS.</TD>
-</TR>
-
-</TABLE>
-
-Note: the compile time version of libmilter is available in the macro
-<CODE>SMFI_VERSION</CODE>.
-A milter can check this macro to determine which functions to use
-(at compile time via C preprocessor statements).
-Using this macro and the
-<CODE>smfi_version()</CODE>
-function,
-a milter can determine at runtime whether it has been (dynamically)
-linked against the expected libmilter version.
-To extract the major and minor version as well as the current patch level
-from this macro, the macros
-<CODE>SM_LM_VRS_MAJOR(v)</CODE>,
-<CODE>SM_LM_VRS_MINOR(v)</CODE>, and
-<CODE>SM_LM_VRS_PLVL(v)</CODE>
-can be used, respectively.
-
-
-<HR SIZE="1">
-<FONT SIZE="-1">
-Copyright (c) 2006, 2007 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>
diff --git a/contrib/sendmail/libmilter/docs/xxfi_abort.html b/contrib/sendmail/libmilter/docs/xxfi_abort.html
deleted file mode 100644
index 0664dc1..0000000
--- a/contrib/sendmail/libmilter/docs/xxfi_abort.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<HTML>
-<HEAD><TITLE>xxfi_abort</TITLE></HEAD>
-<BODY>
-<!--
-$Id: xxfi_abort.html,v 1.12 2006/12/21 18:30:35 ca Exp $
--->
-<H1>xxfi_abort</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-sfsistat (*xxfi_abort)(
- SMFICTX *ctx
-);
-</PRE>
-Handle the current message's being aborted.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>xxfi_abort may be called at any time during message processing (i.e. between some message-oriented routine and <A href="xxfi_eom.html">xxfi_eom</A>).</TD>
-</TR>
-<TR align="left" valign=top>
-<TH>Default Behavior</TH>
-<TD>Do nothing; return SMFIS_CONTINUE.</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>ctx</TD>
- <TD>Opaque context structure.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Notes ---------->
-<TR>
-<TH valign="top" align=left>NOTES</TH>
-<TD>
-<UL>
-<LI>xxfi_abort must reclaim any resources allocated on a per-message
-basis, and must be tolerant of being called between any two
-message-oriented callbacks.
-
-<LI>Calls to xxfi_abort and <A href="xxfi_eom.html">xxfi_eom</A> are
-mutually exclusive.
-
-<LI>xxfi_abort is not responsible for reclaiming connection-specific
-data, since <A href="xxfi_close.html">xxfi_close</A> is always called
-when a connection is closed.
-
-<LI>Since the current message is already being aborted, the return
-value is currently ignored.
-
-<LI>xxfi_abort is only called if the message is aborted outside the
-filter's control <B>and</B> the filter has not completed its
-message-oriented processing. For example, if a filter has already
-returned SMFIS_ACCEPT, SMFIS_REJECT, or SMFIS_DISCARD from a
-message-oriented routine, xxfi_abort will not be called even if the
-message is later aborted outside its control.
-</UL>
-</TD>
-</TR>
-</TABLE>
-
-<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>
diff --git a/contrib/sendmail/libmilter/docs/xxfi_body.html b/contrib/sendmail/libmilter/docs/xxfi_body.html
deleted file mode 100644
index 0a5f0f3..0000000
--- a/contrib/sendmail/libmilter/docs/xxfi_body.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<HTML>
-<HEAD><TITLE>xxfi_body</TITLE></HEAD>
-<BODY>
-<!--
-$Id: xxfi_body.html,v 1.17 2007/03/26 20:12:46 ca Exp $
--->
-<H1>xxfi_body</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-sfsistat (*xxfi_body)(
- SMFICTX *ctx,
- unsigned char *bodyp,
- size_t len
-);
-</PRE>
-Handle a piece of a message's body.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>xxfi_body is called zero or more times between xxfi_eoh and xxfi_eom.</TD>
-</TR>
-<TR align="left" valign=top>
-<TH>Default Behavior</TH>
-<TD>Do nothing; return SMFIS_CONTINUE.</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>ctx</TD>
- <TD>Opaque context structure.
- </TD></TR>
- <TR valign="top"><TD>bodyp</TD>
- <TD>Pointer to the start of this block of body data. bodyp is not valid outside this call to xxfi_body.
- </TD></TR>
- <TR valign="top"><TD>len</TD>
- <TD>The amount of data pointed to by bodyp.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Notes ---------->
-<TR>
-<TH valign="top" align=left>NOTES</TH>
-<TD>
-<UL>
-<LI>bodyp points to a sequence of bytes.
-It is <EM>not</EM> a C string (a sequence of characters that is terminated by '\0').
-Therefore, do not use the usual C string functions like <CODE>strlen(3)</CODE>
-on this byte block.
-Moreover, the byte sequence may contain '\0' characters inside the block.
-Hence even if a trailing '\0' is added, C string functions may still fail
-to work as expected.
-<LI>Since message bodies can be very large, defining xxfi_body can
-significantly impact filter performance.
-<LI>End-of-lines are represented as received from SMTP (normally CR/LF).
-<LI>Later filters will see body changes made by earlier ones.
-<LI>Message bodies may be sent in multiple chunks, with one call to
- xxfi_body per chunk.
-<LI>Return
-<A HREF="api.html#SMFIS_SKIP">SMFIS_SKIP</A>
-if a milter has received sufficiently many
-body chunks to make a decision,
-but still wants to invoke
-message modification functions that are only allowed to be called from
-<A HREF="xxfi_eom.html">xxfi_eom()</A>.
-Note: the milter <EM>must</EM>
-<A HREF="xxfi_negotiate.html">negotiate</A>
-this behavior with the MTA, i.e., it must check whether
-the protocol action
-<A HREF="xxfi_negotiate.html#SMFIP_SKIP"><CODE>SMFIP_SKIP</CODE></A>
-is available and if so, the milter must request it.
-</UL>
-</TD>
-</TR>
-</TABLE>
-
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 2000-2003, 2007 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>
diff --git a/contrib/sendmail/libmilter/docs/xxfi_close.html b/contrib/sendmail/libmilter/docs/xxfi_close.html
deleted file mode 100644
index 2c2ae77..0000000
--- a/contrib/sendmail/libmilter/docs/xxfi_close.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<HTML>
-<HEAD><TITLE>xxfi_close</TITLE></HEAD>
-<BODY>
-<!--
-$Id: xxfi_close.html,v 1.13 2006/12/21 18:30:35 ca Exp $
--->
-<H1>xxfi_close</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-sfsistat (*xxfi_close)(
- SMFICTX *ctx
-);
-</PRE>
-The current connection is being closed.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>xxfi_close is always called once at the end of each connection.</TD>
-</TR>
-<TR align="left" valign=top>
-<TH>Default Behavior</TH>
-<TD>Do nothing; return SMFIS_CONTINUE.</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>ctx</TD>
- <TD>Opaque context structure.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Notes ---------->
-<TR>
-<TH valign="top" align=left>NOTES</TH>
-<TD>
-<UL>
-<LI>xxfi_close may be called "out-of-order", i.e. before even the
-xxfi_connect is called.
-After a connection is established by the MTA to the filter,
-if the MTA decides this connection's traffic will be discarded
-(e.g. via an access_db result), no data will be passed to the
-filter from the MTA until the client closes down.
-At that time, xxfi_close is called.
-It can therefore be the only callback ever used for a given connection,
-and developers should anticipate this possibility when crafting their
-xxfi_close code.
-In particular, it is incorrect to assume the private context pointer
-will be something other than NULL in this callback.
-<LI>xxfi_close is called on close even if the previous mail
-transaction was aborted.
-<LI>xxfi_close is responsible for freeing any resources allocated on a
-per-connection basis.
-<LI>Since the connection is already closing, the return value is
-currently ignored.
-</UL>
-</TD>
-</TR>
-</TABLE>
-
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 2000, 2003, 2004 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>
diff --git a/contrib/sendmail/libmilter/docs/xxfi_connect.html b/contrib/sendmail/libmilter/docs/xxfi_connect.html
deleted file mode 100644
index 87d5eeb..0000000
--- a/contrib/sendmail/libmilter/docs/xxfi_connect.html
+++ /dev/null
@@ -1,121 +0,0 @@
-<HTML>
-<HEAD><TITLE>xxfi_connect</TITLE></HEAD>
-<BODY>
-<!--
-$Id: xxfi_connect.html,v 1.19 2007/01/15 22:24:45 ca Exp $
--->
-<H1>xxfi_connect</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-sfsistat (*xxfi_connect)(
- SMFICTX *ctx,
- char *hostname,
- _SOCK_ADDR *hostaddr);
-</PRE>
-</TD></TR>
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR>
-<TH valign="top" align=left width=80>Called When</TH>
-<TD>Once, at the start of each SMTP connection.</TD>
-</TR>
-<TR>
-<TH valign="top" align=left width=80>Default Behavior</TH>
-<TD>Do nothing; return SMFIS_CONTINUE.</TD>
-</TR>
-</TABLE>
-<!--
-This callback function is invoked on each connection to the mail
-filter program.
-The callback is to be implemented by the Milter application developers.
-The name of the callback can be any valid function name.
-The function pointer is to be assigned to the
-smfiDesc.xxfi_connect and the pointer to the smfiDesc structure
-is passed to smfi_register().
-</TD></TR>
--->
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR><TD>ctx</TD>
- <TD>the opaque context structure.
- </TD></TR>
- <TR><TD>hostname</TD>
- <TD>the host name of the message sender, as determined by a
- reverse lookup on the host address.
- If the reverse lookup fails
- or if none of the IP addresses of the resolved host name
- matches the original IP address,
- hostname will contain the message sender's IP
- address enclosed in square brackets (e.g. `[a.b.c.d]').
- If the SMTP connection is made via stdin the value is
- <CODE>localhost</CODE>.
- </TD></TR>
- <TR><TD>hostaddr</TD>
- <TD>the host address,
- as determined by a <CODE>getpeername(2)</CODE> call on the SMTP socket.
- NULL if the type is not supported in the current version or if
- the SMTP connection is made via stdin.
- </TD></TR>
- </TABLE>
-</TD></TR>
-<!----------- Return values ---------->
-<!--
-<TR>
-<TH valign="top" align=left>SPECIAL RETURN VALUES</TH>
-<TD><TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Return value</TH><TH>Description</TH></TR>
- <TR valign="top">
- <TD>SMFIS_ACCEPT</TD>
- <TD>Accept all commands and messages from this client without any
- further contact with the filter. </TD>
- </TD>
- </TR>
- <TR valign="top">
- <TD>SMFIS_CONTINUE</TD>
- <TD>Continue normal processing. </TD>
- </TR>
- <TR valign="top">
- <TD>SMFIS_DISCARD</TD>
- <TD>Undefined behaviour; do not use. </TD>
- </TR>
- <TR valign="top">
- <TD>SMFIS_TEMPFAIL</TD>
- <TD>Reject all commands and messages from this client with a
- temporary failure reply code.
- If also used in conjunction with <CODE>smfi_setreply()</CODE>
- to set a reply whose SMTP code is 421,
- the MTA will drop the connection immediately. </TD>
- </TR>
- <TR valign="top">
- <TD>SMFIS_REJECT</TD>
- <TD>Reject all commands and messages from this client with a
- permanent failure reply code. </TD>
- </TR>
-</TABLE>
-</TR>
--->
-<!----------- Notes ---------->
-<TR>
-<TH valign="top" align=left>NOTES</TH>
-<TD>If an earlier filter rejects the connection in its xxfi_connect()
-routine, this filter's xxfi_connect() will not be called.</TD>
-</TR>
-</TABLE>
-
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 2000-2001, 2003, 2007 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>
diff --git a/contrib/sendmail/libmilter/docs/xxfi_data.html b/contrib/sendmail/libmilter/docs/xxfi_data.html
deleted file mode 100644
index 2633ee5..0000000
--- a/contrib/sendmail/libmilter/docs/xxfi_data.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<HTML>
-<HEAD><TITLE>xxfi_data</TITLE></HEAD>
-<BODY>
-<!--
-$Id: xxfi_data.html,v 1.4 2007/01/25 01:00:20 ca Exp $
--->
-<H1>xxfi_data</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-sfsistat (*xxfi_data)(
- SMFICTX *ctx
-);
-</PRE>
-Handle the DATA command.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>xxfi_data is called when the client uses the DATA command.
-</TR>
-<TR align="left" valign=top>
-<TH>Default Behavior</TH>
-<TD>Do nothing; return SMFIS_CONTINUE.</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>ctx</TD>
- <TD>Opaque context structure.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Return values ---------->
-<TR>
-<TH valign="top" align=left>SPECIAL RETURN VALUES</TH>
-<TD><TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Return value</TH><TH>Description</TH></TR>
- <TR valign="top">
- <TD>SMFIS_TEMPFAIL</TD>
- <TD>Reject this message with a temporary error.
- </TD>
- </TR>
- <TR valign="top">
- <TD>SMFIS_REJECT</TD>
- <TD>Reject this message.
- </TD>
- </TR>
- <TR valign="top">
- <TD>SMFIS_DISCARD</TD>
- <TD>Accept and silently discard this message.
- </TD>
- </TR>
- <TR valign="top">
- <TD>SMFIS_ACCEPT</TD>
- <TD>Accept this message.
- </TD>
- </TR>
-</TABLE>
-</TR>
-
-<!----------- Notes ---------->
-<TR>
-<TH valign="top" align=left>NOTES</TH>
-<TD>For more details on ESMTP responses, please see RFC
-<A href="http://www.rfc-editor.org/rfc/rfc1869.txt">1869</A>.</TD>
-</TR>
-</TABLE>
-
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 2006 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>
diff --git a/contrib/sendmail/libmilter/docs/xxfi_envfrom.html b/contrib/sendmail/libmilter/docs/xxfi_envfrom.html
deleted file mode 100644
index 6ae88cf..0000000
--- a/contrib/sendmail/libmilter/docs/xxfi_envfrom.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<HTML>
-<HEAD><TITLE>xxfi_envfrom</TITLE></HEAD>
-<BODY>
-<!--
-$Id: xxfi_envfrom.html,v 1.14 2007/01/25 01:00:20 ca Exp $
--->
-<H1>xxfi_envfrom</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-sfsistat (*xxfi_envfrom)(
- SMFICTX *ctx,
- char **argv
-);
-</PRE>
-Handle the MAIL (envelope sender) command.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>xxfi_envfrom is called once at the beginning of each message
-(MAIL command),
-before xxfi_envrcpt.</TD>
-</TR>
-<TR align="left" valign=top>
-<TH>Default Behavior</TH>
-<TD>Do nothing; return SMFIS_CONTINUE.</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>ctx</TD>
- <TD>Opaque context structure.
- </TD></TR>
- <TR valign="top"><TD>argv</TD>
- <TD>Null-terminated SMTP command arguments;
- argv[0] is guaranteed to be the sender address.
- Later arguments are the ESMTP arguments.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Return values ---------->
-<TR>
-<TH valign="top" align=left>SPECIAL RETURN VALUES</TH>
-<TD><TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Return value</TH><TH>Description</TH></TR>
- <TR valign="top">
- <TD>SMFIS_TEMPFAIL</TD>
- <TD>Reject this sender and message with a temporary error; a new sender (and hence a new message) may subsequently be specified. <A href="xxfi_abort.html">xxfi_abort</A> is not called.
- </TD>
- </TR>
- <TR valign="top">
- <TD>SMFIS_REJECT</TD>
- <TD>Reject this sender and message; a new sender/message may be specified. <A href="xxfi_abort.html">xxfi_abort</A> is not called.
- </TD>
- </TR>
- <TR valign="top">
- <TD>SMFIS_DISCARD</TD>
- <TD>Accept and silently discard this message. <A href="xxfi_abort.html">xxfi_abort</A> is not called.
- </TD>
- </TR>
- <TR valign="top">
- <TD>SMFIS_ACCEPT</TD>
- <TD>Accept this message. <A href="xxfi_abort.html">xxfi_abort</A> is not called.
- </TD>
- </TR>
-</TABLE>
-</TR>
-
-<!----------- Notes ---------->
-<TR>
-<TH valign="top" align=left>NOTES</TH>
-<TD>For more details on ESMTP responses, please see RFC
-<A href="http://www.rfc-editor.org/rfc/rfc1869.txt">1869</A>.</TD>
-</TR>
-</TABLE>
-
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 2000, 2003, 2006 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>
diff --git a/contrib/sendmail/libmilter/docs/xxfi_envrcpt.html b/contrib/sendmail/libmilter/docs/xxfi_envrcpt.html
deleted file mode 100644
index 9fb4ce8..0000000
--- a/contrib/sendmail/libmilter/docs/xxfi_envrcpt.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<HTML>
-<HEAD><TITLE>xxfi_envrcpt</TITLE></HEAD>
-<BODY>
-<!--
-$Id: xxfi_envrcpt.html,v 1.15 2007/01/25 01:00:20 ca Exp $
--->
-<H1>xxfi_envrcpt</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-sfsistat (*xxfi_envrcpt)(
- SMFICTX *ctx,
- char **argv
-);
-</PRE>
-Handle the envelope RCPT command.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>xxfi_envrcpt is called once per recipient, hence one or more times per message, immediately after xxfi_envfrom.</TD>
-</TR>
-<TR align="left" valign=top>
-<TH>Default Behavior</TH>
-<TD>Do nothing; return SMFIS_CONTINUE.</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>ctx</TD>
- <TD>Opaque context structure.
- </TD></TR>
- <TR valign="top"><TD>argv</TD>
- <TD>Null-terminated SMTP command arguments;
- argv[0] is guaranteed to be the recipient address.
- Later arguments are the ESMTP arguments.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Return values ---------->
-<TR>
-<TH valign="top" align=left>SPECIAL RETURN VALUES</TH>
-<TD><TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Return value</TH><TH>Description</TH></TR>
- <TR valign="top">
- <TD>SMFIS_TEMPFAIL</TD>
- <TD>Temporarily fail for this particular recipient; further recipients
- may still be sent. <A href="xxfi_abort.html">xxfi_abort</A> is not called.
- </TD>
- </TR>
- <TR valign="top">
- <TD>SMFIS_REJECT</TD>
- <TD>Reject this particular recipient; further recipients may still be sent.
- <A href="xxfi_abort.html">xxfi_abort</A> is not called.
- </TD>
- </TR>
- <TR valign="top">
- <TD>SMFIS_DISCARD</TD>
- <TD>Accept and discard the message. <A href="xxfi_abort.html">xxfi_abort</A> will be called.
- </TD>
- </TR>
- <TR valign="top">
- <TD>SMFIS_ACCEPT</TD>
- <TD>Accept recipient. <A href="xxfi_abort.html">xxfi_abort</A> will not be called.
- </TD>
- </TR>
-</TABLE>
-</TR>
-
-<!----------- Notes ---------->
-<TR>
-<TH valign="top" align=left>NOTES</TH>
-<TD>For more details on ESMTP responses, please see RFC
-<A href="http://www.rfc-editor.org/rfc/rfc1869.txt">1869</A>.</TD>
-</TR>
-</TABLE>
-
-<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>
diff --git a/contrib/sendmail/libmilter/docs/xxfi_eoh.html b/contrib/sendmail/libmilter/docs/xxfi_eoh.html
deleted file mode 100644
index 2a74e7a..0000000
--- a/contrib/sendmail/libmilter/docs/xxfi_eoh.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<HTML>
-<HEAD><TITLE>xxfi_eoh</TITLE></HEAD>
-<BODY>
-<!--
-$Id: xxfi_eoh.html,v 1.11 2006/12/21 18:30:35 ca Exp $
--->
-<H1>xxfi_eoh</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-sfsistat (*xxfi_eoh)(
- SMFICTX *ctx
-);
-</PRE>
-Handle the end of message headers.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>xxfi_eoh is called once after all headers have been sent and processed.
-</TD>
-</TR>
-<TR align="left" valign=top>
-<TH>Default Behavior</TH>
-<TD>Do nothing; return SMFIS_CONTINUE.</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>ctx</TD>
- <TD>Opaque context structure.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-</TABLE>
-
-<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>
diff --git a/contrib/sendmail/libmilter/docs/xxfi_eom.html b/contrib/sendmail/libmilter/docs/xxfi_eom.html
deleted file mode 100644
index b5aee8b..0000000
--- a/contrib/sendmail/libmilter/docs/xxfi_eom.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<HTML>
-<HEAD><TITLE>xxfi_eom</TITLE></HEAD>
-<BODY>
-<!--
-$Id: xxfi_eom.html,v 1.12 2006/12/21 18:30:36 ca Exp $
--->
-<H1>xxfi_eom</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-sfsistat (*xxfi_eom)(
- SMFICTX *ctx
-);
-</PRE>
-End of a message.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>xxfi_eom is called once after all calls to <A href="xxfi_body.html">xxfi_body</A> for a given message.</TD>
-</TR>
-<TR align="left" valign=top>
-<TH>Default Behavior</TH>
-<TD>Do nothing; return SMFIS_CONTINUE.</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>ctx</TD>
- <TD>Opaque context structure.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Notes ---------->
-<TR>
-<TH valign="top" align=left>NOTES</TH>
-<TD>A filter is required to make all its modifications to the message headers, body, and envelope in xxfi_eom.
-Modifications are made via the smfi_* routines.
-</TD>
-</TR>
-</TABLE>
-
-<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>
diff --git a/contrib/sendmail/libmilter/docs/xxfi_header.html b/contrib/sendmail/libmilter/docs/xxfi_header.html
deleted file mode 100644
index 8a5462f..0000000
--- a/contrib/sendmail/libmilter/docs/xxfi_header.html
+++ /dev/null
@@ -1,111 +0,0 @@
-<HTML>
-<HEAD><TITLE>xxfi_header</TITLE></HEAD>
-<BODY>
-<!--
-$Id: xxfi_header.html,v 1.17 2006/12/21 18:30:36 ca Exp $
--->
-<H1>xxfi_header</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-sfsistat (*xxfi_header)(
- SMFICTX *ctx,
- char *headerf,
- char *headerv
-);
-</PRE>
-Handle a message header.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>xxfi_header is called once for each message header.</TD>
-</TR>
-<TR align="left" valign=top>
-<TH>Default Behavior</TH>
-<TD>Do nothing; return SMFIS_CONTINUE.</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>ctx</TD>
- <TD>Opaque context structure.
- </TD></TR>
- <TR valign="top"><TD>headerf</TD>
- <TD> Header field name.
- </TD></TR>
- <TR valign="top"><TD>headerv</TD>
- <TD>Header field value.
- The content of the header may include folded white space,
- i.e., multiple lines with following white space
- where lines are separated by LF (not CR/LF).
- The trailing line terminator (CR/LF) is removed.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Notes ---------->
-<TR>
-<TH valign="top" align=left>NOTES</TH>
-<TD>
-<UL>
-<LI>Starting with sendmail 8.14, spaces after the colon in a header
-field are preserved if requested using the flag
-<A HREF="xxfi_negotiate.html#SMFIP_HDR_LEADSPC"><CODE>SMFIP_HDR_LEADSPC</CODE></A>.
-That is, the header
-
-<PRE>
-From: sender &lt;f@example.com&gt;
-To: user &lt;t@example.com&gt;
-Subject:no
-</PRE>
-
-will be sent to a milter as
-
-<PRE>
-"From", " sender &lt;f@example.com&gt;"
-"To", " user &lt;t@example.com&gt;"
-"Subject", "no"
-</PRE>
-
-while previously
-(or without the flag
-<A HREF="xxfi_negotiate.html#SMFIP_HDR_LEADSPC"><CODE>SMFIP_HDR_LEADSPC</CODE></A>)
-it was:
-
-<PRE>
-"From", "sender &lt;f@example.com&gt;"
-"To", "user &lt;t@example.com&gt;"
-"Subject", "no"
-</PRE>
-
-
-<LI>Later filters will see header changes/additions made by earlier ones.
-<LI>For much more detail about header format, please see
-RFC <A href="http://www.rfc-editor.org/rfc/rfc822.html">822</A>
-and
-RFC <A href="http://www.rfc-editor.org/rfc/rfc2822.html">2822</A>
-</UL>
-</TD>
-</TR>
-</TABLE>
-
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 2000, 2003, 2006 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>
diff --git a/contrib/sendmail/libmilter/docs/xxfi_helo.html b/contrib/sendmail/libmilter/docs/xxfi_helo.html
deleted file mode 100644
index 613cb19..0000000
--- a/contrib/sendmail/libmilter/docs/xxfi_helo.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<HTML>
-<HEAD><TITLE>xxfi_helo</TITLE></HEAD>
-<BODY>
-<!--
-$Id: xxfi_helo.html,v 1.12 2006/12/21 18:30:36 ca Exp $
--->
-<H1>xxfi_helo</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-sfsistat (*xxfi_helo)(
- SMFICTX *ctx,
- char *helohost
-);
-</PRE>
-Handle the HELO/EHLO command.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH> <TD>xxfi_helo is called whenever the client
-sends a HELO/EHLO command.
-It may therefore be called several times or even not at all;
-some restrictions can be imposed by the MTA configuration.
-</TD>
-</TR>
-<TR align="left" valign=top>
-<TH>Default Behavior</TH>
-<TD>Do nothing; return SMFIS_CONTINUE.</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>ctx</TD>
- <TD>Opaque context structure.
- </TD></TR>
- <TR valign="top"><TD>helohost</TD>
- <TD>Value passed to HELO/EHLO command, which should be
- the domain name of the sending host (but is, in practice,
- anything the sending host wants to send).
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-</TABLE>
-
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 2000, 2003, 2005 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>
diff --git a/contrib/sendmail/libmilter/docs/xxfi_negotiate.html b/contrib/sendmail/libmilter/docs/xxfi_negotiate.html
deleted file mode 100644
index 0f69f70..0000000
--- a/contrib/sendmail/libmilter/docs/xxfi_negotiate.html
+++ /dev/null
@@ -1,277 +0,0 @@
-<HTML>
-<HEAD><TITLE>xxfi_negotiate</TITLE></HEAD>
-<BODY>
-<!--
-$Id: xxfi_negotiate.html,v 1.23 2006/12/20 18:57:08 ca Exp $
--->
-<H1>xxfi_negotiate</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-#include &lt;libmilter/mfdef.h&gt;
-sfsistat (*xxfi_negotiate)(
- SMFICTX *ctx,
- unsigned long f0,
- unsigned long f1,
- unsigned long f2,
- unsigned long f3,
- unsigned long *pf0,
- unsigned long *pf1,
- unsigned long *pf2,
- unsigned long *pf3);
-</PRE>
-</TD></TR>
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR>
-<TH valign="top" align=left width=80>Called When</TH>
-<TD>Once, at the start of each SMTP connection.</TD>
-</TR>
-<TR>
-<TH valign="top" align=left width=80>Default Behavior</TH>
-<TD>Return SMFIS_ALL_OPTS to change nothing.</TD>
-</TR>
-</TABLE>
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR><TD>ctx</TD>
- <TD>the opaque context structure.
- </TD></TR>
- <TR><TD>f0</TD>
- <TD>the actions offered by the MTA.
- </TD></TR>
- <TR><TD>f1</TD>
- <TD>the protocol steps offered by the MTA.
- <TR><TD>f2</TD>
- <TD>for future extensions.
- </TD></TR>
- <TR><TD>f3</TD>
- <TD>for future extensions.
- </TD></TR>
- <TR><TD>pf0</TD>
- <TD>the actions requested by the milter.
- </TD></TR>
- <TR><TD>pf1</TD>
- <TD>the protocol steps requested by the milter.
- <TR><TD>pf2</TD>
- <TD>for future extensions.
- </TD></TR>
- <TR><TD>pf3</TD>
- <TD>for future extensions.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Return values ---------->
-<TR>
-<TH valign="top" align=left>SPECIAL RETURN VALUES</TH>
-<TD><TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Return value</TH><TH>Description</TH></TR>
- <TR valign="top">
- <TD>SMFIS_ALL_OPTS</TD>
- <TD>
-If a milter just wants to inspect the available protocol steps
-and actions, then it can return
-SMFIS_ALL_OPTS
-and the MTA will make all protocol steps and actions available
-to the milter.
-In this case, no values should be assigned to the output parameters
-<CODE>pf0</CODE> - <CODE>pf3</CODE>
-as they will be ignored.
- </TD>
- </TR>
- <TR valign="top">
- <TD>SMFIS_REJECT</TD>
- <TD>Milter startup fails and it will not be contacted again
-(for the current connection).
- </TD>
- </TR>
- <TR valign="top">
- <TD>SMFIS_CONTINUE</TD>
- <TD>Continue processing.
- In this case the milter <EM>must</EM> set all output parameters
- <CODE>pf0</CODE> - <CODE>pf3</CODE>.
- See below for an explanation how to set those output parameters.
- </TD>
- </TR>
-</TABLE>
-</TR>
-
-<!----------- Notes ---------->
-<TR>
-<TH valign="top" align=left>NOTES</TH>
-<TD>This function allows a milter to dynamically determine and
-request operations and actions during startup.
-In previous versions, the actions (f0) were fixed in the
-<A HREF="smfi_register.html#flags">flags</A> field of the
-<A HREF="smfi_register.html#smfiDesc">smfiDesc</A>
-structure
-and the protocol steps (f1) were implicitly derived by checking whether
-a callback was defined.
-Due to the extensions in the new milter version,
-such a static selection will not work if a milter requires
-new actions that are not available when talking to an older MTA.
-Hence in the negotiation callback a milter can determine
-which operations are available and dynamically select
-those which it needs and which are offered.
-If some operations are not available, the milter may either fall back
-to an older mode or abort the session and ask the user to upgrade.
-
-<!--
-<P>
-The protocol steps are defined in
-<CODE>include/libmilter/mfdef.h</CODE>:
-the macros start with
-<CODE>SMFIP_</CODE>.
--->
-
-<P>
-Protocol steps
-(<CODE>f1</CODE>, <CODE>*pf1</CODE>):
-<UL>
-<LI><A NAME="SMFIP_RCPT_REJ"><CODE>SMFIP_RCPT_REJ</CODE></A>:
-By setting this bit, a milter can request that the
-MTA should also send <CODE>RCPT</CODE> commands that have been rejected
-because the user is unknown (or similar reasons), but not those
-which have been rejected because of syntax errors etc.
-If a milter requests this protocol step,
-then it should check the macro
-<CODE>{rcpt_mailer}</CODE>:
-if that is set to
-<CODE>error</CODE>,
-then the recipient will be rejected by the MTA.
-Usually the macros
-<CODE>{rcpt_host}</CODE> and <CODE>{rcpt_addr}</CODE>
-will contain an enhanced status code and an error text
-in that case, respectively.
-
-<LI><A NAME="SMFIP_SKIP"><CODE>SMFIP_SKIP</CODE></A>
-indicates that the MTA understand the
-<A HREF="api.html#SMFIS_SKIP">SMFIS_SKIP</A>
-return code.
-
-<LI><A NAME="SMFIP_NR_"><CODE>SMFIP_NR_*</CODE></A>
-indicates that the MTA understand the
-<A HREF="api.html#SMFIS_NOREPLY">SMFIS_NOREPLY</A>
-return code.
-There are flags for various protocol stages:
-
-<UL>
-
-<LI><A NAME="SMFIP_NR_CONN"><CODE>SMFIP_NR_CONN</CODE></A>:
-<A HREF="xxfi_connect.html">xxfi_connect()</A>
-
-<LI><A NAME="SMFIP_NR_HELO"><CODE>SMFIP_NR_HELO</CODE></A>:
-<A HREF="xxfi_helo.html">xxfi_helo()</A>
-
-<LI><A NAME="SMFIP_NR_MAIL"><CODE>SMFIP_NR_MAIL</CODE></A>:
-<A HREF="xxfi_envfrom.html">xxfi_envfrom()</A>
-
-<LI><A NAME="SMFIP_NR_RCPT"><CODE>SMFIP_NR_RCPT</CODE></A>:
-<A HREF="xxfi_envrcpt.html">xxfi_envrcpt()</A>
-
-<LI><A NAME="SMFIP_NR_DATA"><CODE>SMFIP_NR_DATA</CODE></A>:
-<A HREF="xxfi_data.html">xxfi_data()</A>
-
-<LI><A NAME="SMFIP_NR_UNKN"><CODE>SMFIP_NR_UNKN</CODE></A>:
-<A HREF="xxfi_unknown.html">xxfi_unknown()</A>
-
-<LI><A NAME="SMFIP_NR_EOH"><CODE>SMFIP_NR_EOH</CODE></A>:
-<A HREF="xxfi_eoh.html">xxfi_eoh()</A>
-
-<LI><A NAME="SMFIP_NR_BODY"><CODE>SMFIP_NR_BODY</CODE></A>:
-<A HREF="xxfi_body.html">xxfi_body()</A>
-
-<LI><A NAME="SMFIP_NR_HDR"><CODE>SMFIP_NR_HDR</CODE></A>:
-<A HREF="xxfi_header.html">xxfi_header()</A>
-
-</UL>
-
-<LI><A NAME="SMFIP_HDR_LEADSPC"><CODE>SMFIP_HDR_LEADSPC</CODE></A>
-indicates that the MTA can send header values with leading space intact.
-If this protocol step is requested, then the MTA will also not add a leading
-space to headers when they are added, inserted, or changed.
-
-<!--
-:'a,.s;^#define \(SMFIP_NO[A-Z]*\)[ ].*;<LI><A NAME="\1"><CODE>\1</CODE></A>:;
--->
-<LI>The MTA can be instructed not to send information about
-various SMTP stages, these flags start with:
-<A NAME="SMFIP_NO"><CODE>SMFIP_NO*</CODE></A>.
-<UL>
-<LI><A NAME="SMFIP_NOCONNECT"><CODE>SMFIP_NOCONNECT</CODE></A>:
-<A HREF="xxfi_connect.html">xxfi_connect()</A>
-<LI><A NAME="SMFIP_NOHELO"><CODE>SMFIP_NOHELO</CODE></A>:
-<A HREF="xxfi_header.html">xxfi_header()</A>
-<LI><A NAME="SMFIP_NOMAIL"><CODE>SMFIP_NOMAIL</CODE></A>:
-<A HREF="xxfi_envfrom.html">xxfi_envfrom()</A>
-<LI><A NAME="SMFIP_NORCPT"><CODE>SMFIP_NORCPT</CODE></A>:
-<A HREF="xxfi_envrcpt.html">xxfi_envrcpt()</A>
-<LI><A NAME="SMFIP_NOBODY"><CODE>SMFIP_NOBODY</CODE></A>:
-<A HREF="xxfi_body.html">xxfi_body()</A>
-<LI><A NAME="SMFIP_NOHDRS"><CODE>SMFIP_NOHDRS</CODE></A>:
-<A HREF="xxfi_header.html">xxfi_header()</A>
-<LI><A NAME="SMFIP_NOEOH"><CODE>SMFIP_NOEOH</CODE></A>:
-<A HREF="xxfi_eoh.html">xxfi_eoh()</A>
-<LI><A NAME="SMFIP_NOUNKNOWN"><CODE>SMFIP_NOUNKNOWN</CODE></A>:
-<A HREF="xxfi_unknown.html">xxfi_unknown()</A>
-<LI><A NAME="SMFIP_NODATA"><CODE>SMFIP_NODATA</CODE></A>:
-<A HREF="xxfi_data.html">xxfi_data()</A>
-</UL>
-
-For each of these xxfi_* callbacks that a milter does not use
-the corresponding flag <EM>should</EM> be set in
-<CODE>*pf1</CODE>.
-
-</UL>
-
-<P>
-The available actions
-(<CODE>f0</CODE>, <CODE>*pf0</CODE>)
-are
-<!--
-defined in
-<CODE>include/libmilter/mfapi.h</CODE>:
-the macros start with
-<CODE>SMFIF_</CODE>;
-these are
--->
-described
-<A HREF="smfi_register.html#flags">elsewhere (xxfi_flags)</A>.
-
-<P>
-If a milter returns SMFIS_CONTINUE, then it <EM>must</EM>
-set the desired actions and protocol steps
-via the (output) parameters
-<CODE>pf0</CODE>
-and
-<CODE>pf1</CODE>
-(which correspond to
-<CODE>f0</CODE>
-and
-<CODE>f1</CODE>, respectively).
-The (output) parameters
-<CODE>pf2</CODE> and
-<CODE>pf3</CODE>
-should be set to 0 for compatibility with future versions.
-
-</TD>
-</TR>
-</TABLE>
-
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 2006 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>
diff --git a/contrib/sendmail/libmilter/docs/xxfi_unknown.html b/contrib/sendmail/libmilter/docs/xxfi_unknown.html
deleted file mode 100644
index 0455dfd..0000000
--- a/contrib/sendmail/libmilter/docs/xxfi_unknown.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<HTML>
-<HEAD><TITLE>xxfi_unknown</TITLE></HEAD>
-<BODY>
-<!--
-$Id: xxfi_unknown.html,v 1.4 2007/04/23 16:30:42 ca Exp $
--->
-<H1>xxfi_unknown</H1>
-
-<TABLE border="0" cellspacing=4 cellpadding=4>
-<!---------- Synopsis ----------->
-<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
-<PRE>
-#include &lt;libmilter/mfapi.h&gt;
-sfsistat (*xxfi_unknown)(
- SMFICTX *ctx,
- const char *arg
-);
-</PRE>
-Handle unknown and unimplemented SMTP commands.
-</TD></TR>
-
-<!----------- Description ---------->
-<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
-<TABLE border="1" cellspacing=1 cellpadding=4>
-<TR align="left" valign=top>
-<TH width="80">Called When</TH>
-<TD>xxfi_unknown is called when the client uses an SMTP command
-that is either unknown or not implemented by the MTA.
-</TR>
-<TR align="left" valign=top>
-<TH>Default Behavior</TH>
-<TD>Do nothing; return SMFIS_CONTINUE.</TD>
-</TR>
-</TABLE>
-
-<!----------- Arguments ---------->
-<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
- <TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
- <TR valign="top"><TD>ctx</TD>
- <TD>Opaque context structure.
- </TD></TR>
- <TR valign="top"><TD>arg</TD>
- <TD>SMTP command including all arguments.
- </TD></TR>
- </TABLE>
-</TD></TR>
-
-<!----------- Return values ---------->
-<TR>
-<TH valign="top" align=left>SPECIAL RETURN VALUES</TH>
-<TD><TABLE border="1" cellspacing=0>
- <TR bgcolor="#dddddd"><TH>Return value</TH><TH>Description</TH></TR>
- <TR valign="top">
- <TD>SMFIS_TEMPFAIL</TD>
- <TD>Reject this command with a temporary error.
- </TD>
- </TR>
- <TR valign="top">
- <TD>SMFIS_REJECT</TD>
- <TD>Reject this command.
- </TD>
- </TR>
-</TABLE>
-</TR>
-
-<!----------- Notes ---------->
-<TR>
-<TH valign="top" align=left>NOTES</TH>
-<TD>The SMTP command will always be rejected by the server,
-it is only possible to return a different error code.
-</TR>
-</TABLE>
-
-<HR size="1">
-<FONT size="-1">
-Copyright (c) 2006 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>
OpenPOWER on IntegriCloud