summaryrefslogtreecommitdiffstats
path: root/contrib/sendmail/libmilter/docs
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/sendmail/libmilter/docs')
-rw-r--r--contrib/sendmail/libmilter/docs/api.html369
-rw-r--r--contrib/sendmail/libmilter/docs/design.html90
-rw-r--r--contrib/sendmail/libmilter/docs/index.html108
-rw-r--r--contrib/sendmail/libmilter/docs/installation.html170
-rw-r--r--contrib/sendmail/libmilter/docs/other.html22
-rw-r--r--contrib/sendmail/libmilter/docs/overview.html299
-rw-r--r--contrib/sendmail/libmilter/docs/sample.html153
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_addheader.html172
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_addrcpt.html110
-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.html152
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_delrcpt.html110
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_getpriv.html80
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_getsymval.html144
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_insheader.html194
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_main.html64
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_opensocket.html100
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_progress.html90
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_quarantine.html98
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_register.html219
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_replacebody.html128
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_setbacklog.html85
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_setconn.html113
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_setdbg.html84
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_setmlreply.html176
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_setpriv.html98
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_setreply.html153
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_setsymlist.html107
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_settimeout.html90
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_stop.html98
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_version.html86
-rw-r--r--contrib/sendmail/libmilter/docs/xxfi_abort.html102
-rw-r--r--contrib/sendmail/libmilter/docs/xxfi_body.html132
-rw-r--r--contrib/sendmail/libmilter/docs/xxfi_close.html96
-rw-r--r--contrib/sendmail/libmilter/docs/xxfi_connect.html184
-rw-r--r--contrib/sendmail/libmilter/docs/xxfi_data.html89
-rw-r--r--contrib/sendmail/libmilter/docs/xxfi_envfrom.html150
-rw-r--r--contrib/sendmail/libmilter/docs/xxfi_envrcpt.html148
-rw-r--r--contrib/sendmail/libmilter/docs/xxfi_eoh.html76
-rw-r--r--contrib/sendmail/libmilter/docs/xxfi_eom.html85
-rw-r--r--contrib/sendmail/libmilter/docs/xxfi_header.html143
-rw-r--r--contrib/sendmail/libmilter/docs/xxfi_helo.html82
-rw-r--r--contrib/sendmail/libmilter/docs/xxfi_negotiate.html277
-rw-r--r--contrib/sendmail/libmilter/docs/xxfi_unknown.html84
45 files changed, 3453 insertions, 2339 deletions
diff --git a/contrib/sendmail/libmilter/docs/api.html b/contrib/sendmail/libmilter/docs/api.html
index 23c4de4..4214df4 100644
--- a/contrib/sendmail/libmilter/docs/api.html
+++ b/contrib/sendmail/libmilter/docs/api.html
@@ -1,233 +1,320 @@
-<html>
-<head><title>Milter API</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>Milter API</TITLE></HEAD>
+<BODY>
<!--
-$Id: api.html,v 1.18 2004/04/28 23:26:51 msk Exp $
+$Id: api.html,v 1.35 2006/11/30 23:09:23 ca Exp $
-->
-<h1>Milter API</h1>
-
-<h2>Contents</h2>
-<ul>
- <li>Library Control Functions
- <li>Data Access Functions
- <li>Message Modification Functions
- <li>Callbacks
-</ul>
-
-<h2>Library Control Functions</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
+<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>
+
+<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>
+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_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_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_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_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 <i>listen</i>(2) queue size.</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_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_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>
+<TR><TD><A HREF="smfi_main.html">smfi_main</A></TD><TD>Hand control to libmilter.</TD></TR>
-</table>
+</TABLE>
-<h2>Data Access Functions</h2>
+<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>
+<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_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_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_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>
+<TR><TD><A HREF="smfi_setmlreply.html">smfi_setmlreply</A></TD><TD>Set the
+specific multi-line reply to be used.</TD></TR>
-</table>
+</TABLE>
-<h2>Message Modification Functions</h2>
+<H2><A NAME="MessageModificationFunctions">Message Modification Functions</A></H2>
The following functions change a message's contents and attributes.
-<b>They may only be called in <a href="xxfi_eom.html">xxfi_eom</a></b>.
+<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>
+<P>
A filter must have set the appropriate flag (listed below) in the
-description passed to <a href="smfi_register.html">smfi_register</a>
+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>
+<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
+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>
+<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_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_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.html">smfi_addrcpt</A></TD><TD>Add a recipient to
+the envelope.</TD><TD>SMFIF_ADDRCPT</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_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_replacebody.html">smfi_replacebody</a></td><td>Replace the
-body of the message.</td><td>SMFIF_CHGBODY</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>
-</table>
+<TR><TD><A HREF="smfi_replacebody.html">smfi_replacebody</A></TD><TD>Replace the
+body of the message.</TD><TD>SMFIF_CHGBODY</TD></TR>
-<h2>Other Message Handling Functions</h2>
+</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.
-<b>They too may only be called in <a href="xxfi_eom.html">xxfi_eom</a></b>.
+<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>
+<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>
+<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>
+<TR><TD><A HREF="smfi_quarantine.html">smfi_quarantine</A></TD><TD>Quarantine a message.</TD></TR>
-</table>
+</TABLE>
-<h2><a name="callbacks">Callbacks</a></h2>
+<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>
+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_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_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_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_envrcpt.html">xxfi_envrcpt</A></TD><TD>envelope recipient</TD></TR>
-<tr><td><a href="xxfi_header.html">xxfi_header</a></td><td>header</td></tr>
+<TR><TD><A HREF="xxfi_data.html">xxfi_data</A></TD><TD>DATA command</TD></TR>
-<tr><td><a href="xxfi_eoh.html">xxfi_eoh</a></td><td>end of header</td></tr>
+<TR><TD><A HREF="xxfi_unknown.html">xxfi_unknown</A></TD><TD>Unknown SMTP command</TD></TR>
-<tr><td><a href="xxfi_body.html">xxfi_body</a></td><td>body block</td></tr>
+<TR><TD><A HREF="xxfi_header.html">xxfi_header</A></TD><TD>header</TD></TR>
-<tr><td><a href="xxfi_eom.html">xxfi_eom</a></td><td>end of message</td></tr>
+<TR><TD><A HREF="xxfi_eoh.html">xxfi_eoh</A></TD><TD>end of header</TD></TR>
-<tr><td><a href="xxfi_abort.html">xxfi_abort</a></td><td>message aborted</td></tr>
+<TR><TD><A HREF="xxfi_body.html">xxfi_body</A></TD><TD>body block</TD></TR>
-<tr><td><a href="xxfi_close.html">xxfi_close</a></td><td>connection cleanup</td></tr>
+<TR><TD><A HREF="xxfi_eom.html">xxfi_eom</A></TD><TD>end of message</TD></TR>
-</table>
+<TR><TD><A HREF="xxfi_abort.html">xxfi_abort</A></TD><TD>message aborted</TD></TR>
-<p>
+<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-,
+<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
+<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>
+<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>
+ <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>
+ </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>
+ </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>
-</table>
-
-<hr size="1">
-<font size="-1">
-Copyright (c) 2000, 2003 Sendmail, Inc. and its suppliers.
+ </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>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/design.html b/contrib/sendmail/libmilter/docs/design.html
index 3cf2898..f2e5f11 100644
--- a/contrib/sendmail/libmilter/docs/design.html
+++ b/contrib/sendmail/libmilter/docs/design.html
@@ -1,23 +1,23 @@
-<html>
-<head>
-<title>Architecture</title>
-</head>
-<body>
+<HTML>
+<HEAD>
+<TITLE>Architecture</TITLE>
+</HEAD>
+<BODY>
<!--
-$Id: design.html,v 1.11 2003/03/05 19:57:54 ca Exp $
+$Id: design.html,v 1.12 2006/08/08 20:55:57 ca Exp $
-->
-<h1>Architecture</h1>
+<H1>Architecture</H1>
-<h2>Contents</h2>
+<H2>Contents</H2>
-<ul>
- <li>Design Goals
- <li>Implementing Filtering Policies
- <li>MTA - Filter Communication
-</ul>
+<UL>
+ <LI>Design Goals
+ <LI>Implementing Filtering Policies
+ <LI>MTA - Filter Communication
+</UL>
-<h2>Goals</h2>
+<H2>Goals</H2>
The Sendmail Content Management API (Milter) provides an interface for
third-party software to validate and modify messages as they pass
@@ -28,7 +28,7 @@ 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>
+<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
@@ -37,7 +37,7 @@ 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>
+<P>
Given these expectations, the API is designed to achieve the following
goals:
@@ -47,7 +47,7 @@ goals:
(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>
+<P>
<LI>Reliability.
Coding failures in a Milter process that cause that process
to hang or core-dump
@@ -59,7 +59,7 @@ goals:
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>
+<P>
<LI>Simplicity.
The API should make implementation of a new filter
no more difficult than absolutely necessary.
@@ -70,12 +70,12 @@ goals:
<LI>Provide all interfaces required
while avoiding unnecessary pedanticism.
</UL>
-<p>
+<P>
<LI>Performance.
Simple filters should not seriously impact overall MTA performance.
</OL>
-<h2>Implementing Filtering Policies</h2>
+<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
@@ -87,16 +87,16 @@ 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>
+<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.
+during MTA configuration. <A href="installation.html">Further
+details</A> are available later in this document.
-<h2>MTA - Filter communication</h2>
+<H2>MTA - Filter communication</H2>
Filters run as separate processes, outside of the sendmail address
space. The benefits of this are threefold:
@@ -112,36 +112,36 @@ space. The benefits of this are threefold:
the parallelism inherent in multiple processes.</LI>
</OL>
-<p>
+<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
+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>
+</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
+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">
+</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>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/index.html b/contrib/sendmail/libmilter/docs/index.html
index 3c39abf..517d2f6 100644
--- a/contrib/sendmail/libmilter/docs/index.html
+++ b/contrib/sendmail/libmilter/docs/index.html
@@ -1,22 +1,22 @@
-<html>
-<head>
-<title>Filtering Mail with Sendmail</title>
-</head>
-<body>
+<HTML>
+<HEAD>
+<TITLE>Filtering Mail with Sendmail</TITLE>
+</HEAD>
+<BODY>
<!--
-$Id: index.html,v 1.12 2003/03/05 19:57:54 ca Exp $
+$Id: index.html,v 1.13 2006/08/08 20:55:57 ca Exp $
-->
-<h1>Filtering Mail with Sendmail</h1>
+<H1>Filtering Mail with Sendmail</H1>
<!--
-<P><b>Disclaimer</b>:
+<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>
+<H2>Introduction</H2>
<P>
Sendmail's Content Management API (milter) provides third-party
@@ -26,67 +26,67 @@ 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>
+<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>.
+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.
+<UL>
+<LI>A description of Milter's design goals.
-<li>An explanation of Milter application architecture, including
+<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>
+<LI>A specification of the C application programming interface.
+<LI>An example of a simple Milter filter.
+</UL>
-<h2>Contents</h2>
+<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>
+<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">
+<HR size="1">
+<FONT size="-1">
Copyright (c) 2000, 2001, 2003 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/installation.html b/contrib/sendmail/libmilter/docs/installation.html
index 5353ea7..07142e9 100644
--- a/contrib/sendmail/libmilter/docs/installation.html
+++ b/contrib/sendmail/libmilter/docs/installation.html
@@ -1,96 +1,90 @@
-<html>
-<head><title>Installation and Configuration</title>
-</head>
-<body>
+<HTML>
+<HEAD><TITLE>Installation and Configuration</TITLE>
+</HEAD>
+<BODY>
<!--
-$Id: installation.html,v 1.20 2003/03/05 19:57:54 ca Exp $
+$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>
+<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>
+<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
+<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
+ <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
+ <LI>Compile with pthreads, either by using -pthread for gcc, or
linking with a pthreads support library (-lpthread).
-</ul>
+</UL>
Your compile command line will look like
-<pre>
+<PRE>
cc -I/path/to/include -I/path/to/sendmail -c myfile.c
-</pre>
+</PRE>
and your linking command line will look something like
-<pre>
+<PRE>
cc -o myfilter [object-files] -L[library-location] -lmilter -pthread
-</pre>
+</PRE>
-<H2><a name="config">Configuring Sendmail</A></H2>
+<H2><A name="config">Configuring Sendmail</A></H2>
-First, you must compile sendmail with MILTER defined.
-If you use a sendmail version older than 8.12 please see
+If you use a sendmail version older than 8.13 please see
the instructions for your version.
-To do this, add the following lines to your build
-configuration file (devtools/Site/config.site.m4)
-<pre>
-APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER')
-</pre>
-
-then type <code>./Build -c</code> in your sendmail directory.
+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.
+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>
+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>
+<TR align="left" valign=top>
<TD>R</TD> <TD>Reject connection if filter unavailable</TD>
</TR>
-<tr align="left" valign=top>
+<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.
+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>
+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()</CODE> timeout will be used.
+ system's <CODE>connect(2)</CODE> timeout will be used.
Default: 5m</TD>
</TR>
<TR align="left" valign=top>
@@ -106,27 +100,28 @@ meanings:
</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>
+<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%">
+<HR width="30%">
m4 ../m4/cf.m4 myconfig.mc &gt; myconfig.cf
-</pre>
+</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
+<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>
+<P>
The above macros will result in the following lines being added to
your .cf file:
<PRE>
@@ -136,34 +131,35 @@ your .cf file:
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
+<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>
+<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 Sendmail, Inc. and its suppliers.
+<HR size="1">
+<FONT size="-1">
+Copyright (c) 2000-2003, 2006 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body> </html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/other.html b/contrib/sendmail/libmilter/docs/other.html
index 22ef822..c33b536 100644
--- a/contrib/sendmail/libmilter/docs/other.html
+++ b/contrib/sendmail/libmilter/docs/other.html
@@ -1,18 +1,18 @@
-<html>
-<head><title>Other Resources</title>
-</head>
-<body>
+<HTML>
+<HEAD><TITLE>Other Resources</TITLE>
+</HEAD>
+<BODY>
<!--
-$Id: other.html,v 1.5 2003/03/05 19:57:54 ca Exp $
+$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">
+<HR size="1">
+<FONT size="-1">
Copyright (c) 2000, 2003 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/overview.html b/contrib/sendmail/libmilter/docs/overview.html
index f06fbdf..b7e80df 100644
--- a/contrib/sendmail/libmilter/docs/overview.html
+++ b/contrib/sendmail/libmilter/docs/overview.html
@@ -1,194 +1,215 @@
-<html>
-<head>
-<title>Technical Overview</title>
-</head>
-<body>
+<HTML>
+<HEAD>
+<TITLE>Technical Overview</TITLE>
+</HEAD>
+<BODY>
<!--
-$Id: overview.html,v 1.14 2003/03/05 19:57:54 ca Exp $
+$Id: overview.html,v 1.19 2006/12/21 18:23:47 ca Exp $
-->
-<h1>Technical Overview</h1>
+<H1>Technical Overview</H1>
-<h2>Contents</h2>
+<H2>Contents</H2>
-<ul>
- <li>Initialization
- <li>Control flow
- <li>Multithreading
- <li>Resource Management
- <li>Signal Handling
-</ul>
+<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>Initialization</h2>
+<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>).
+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 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.
+ <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>Control flow</h2>
+<H2><A NAME="ControlFlow">Control Flow</A></H2>
-<p>
+<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>
+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>)
+ 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>)
+ 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>)
+ 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>)
+ 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>)
+ 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>)
+ process end of connection (<A HREF="xxfi_close.html">xxfi_close</A>)
}
-</pre>
+</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
+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>&nbsp;</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>
+</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
-and/or connection may be aborted by either the remote host or the MTA
-at any point during the SMTP transaction. If 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
+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>Multithreading</h2>
+<H2><A NAME="Multithreading">Multithreading</A></H2>
-<p>
+<P>
A single filter process may handle any number of connections
-simultaneously. All filtering callbacks must therefore be reentrant,
+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. pthread_getspecific()) 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>Resource management</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,
+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>.
+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>Signal Handling</h2>
+<H2><A NAME="SignalHandling">Signal Handling</A></H2>
-libmilter takes care of signal handling, the filters are
-not influenced directly by signals.
+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,
+<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
+<LI><TT>Abort</TT>: all filters will be stopped as soon as the next
communication with the MTA happens.
-</ol>
+</OL>
-Filters are not terminated asynchronously (except by
-signals that can't be caught).
+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.
+<A HREF="xxfi_abort.html">xxfi_abort</A> callback is invoked.
-<hr size="1">
-<font size="-1">
-Copyright (c) 2000, 2001, 2003 Sendmail, Inc. and its suppliers.
+<HR size="1">
+<FONT size="-1">
+Copyright (c) 2000, 2001, 2003, 2006 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/sample.html b/contrib/sendmail/libmilter/docs/sample.html
index 29ee67a..48e25c5 100644
--- a/contrib/sendmail/libmilter/docs/sample.html
+++ b/contrib/sendmail/libmilter/docs/sample.html
@@ -1,26 +1,26 @@
-<html>
-<head><title>A Sample Filter</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>A Sample Filter</TITLE></HEAD>
+<BODY>
<!--
-$Id: sample.html,v 1.18 2004/02/27 00:49:28 msk Exp $
+$Id: sample.html,v 1.22 2006/10/09 23:14:51 ca Exp $
-->
-<h1>A Sample Filter</h1>
+<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>
+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;
@@ -47,7 +47,7 @@ struct mlfiPriv
FILE *mlfi_fp;
};
-#define MLFIPRIV ((struct mlfiPriv *) <a href="smfi_getpriv.html">smfi_getpriv</a>(ctx))
+#define MLFIPRIV ((struct mlfiPriv *) <A href="smfi_getpriv.html">smfi_getpriv</A>(ctx))
extern sfsistat mlfi_cleanup(SMFICTX *, bool);
@@ -56,7 +56,7 @@ char *add = NULL;
char *reject = NULL;
sfsistat
-<a href="xxfi_connect.html">mlfi_connect</a>(ctx, hostname, hostaddr)
+<A href="xxfi_connect.html">mlfi_connect</A>(ctx, hostname, hostaddr)
SMFICTX *ctx;
char *hostname;
_SOCK_ADDR *hostaddr;
@@ -74,9 +74,9 @@ sfsistat
memset(priv, '\0', sizeof *priv);
/* save the private data */
- <a href="smfi_setpriv.html">smfi_setpriv</a>(ctx, priv);
+ <A href="smfi_setpriv.html">smfi_setpriv</A>(ctx, priv);
- ident = <a href="smfi_getsymval.html">smfi_getsymval</a>(ctx, "_");
+ ident = <A href="smfi_getsymval.html">smfi_getsymval</A>(ctx, "_");
if (ident == NULL)
ident = "???";
if ((priv-&gt;mlfi_connectfrom = strdup(ident)) == NULL)
@@ -90,7 +90,7 @@ sfsistat
}
sfsistat
-<a href="xxfi_helo.html">mlfi_helo</a>(ctx, helohost)
+<A href="xxfi_helo.html">mlfi_helo</A>(ctx, helohost)
SMFICTX *ctx;
char *helohost;
{
@@ -99,7 +99,7 @@ sfsistat
char *buf;
struct mlfiPriv *priv = MLFIPRIV;
- tls = <a href="smfi_getsymval.html">smfi_getsymval</a>(ctx, "{tls_version}");
+ tls = <A href="smfi_getsymval.html">smfi_getsymval</A>(ctx, "{tls_version}");
if (tls == NULL)
tls = "No TLS";
if (helohost == NULL)
@@ -120,14 +120,14 @@ sfsistat
}
sfsistat
-<a href="xxfi_envfrom.html">mlfi_envfrom</a>(ctx, argv)
+<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}");
+ 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)
@@ -174,12 +174,12 @@ sfsistat
}
sfsistat
-<a href="xxfi_envrcpt.html">mlfi_envrcpt</a>(ctx, argv)
+<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}");
+ char *rcptaddr = <A href="smfi_getsymval.html">smfi_getsymval</A>(ctx, "{rcpt_addr}");
int argc = 0;
/* count the arguments */
@@ -211,7 +211,7 @@ sfsistat
}
sfsistat
-<a href="xxfi_header.html">mlfi_header</a>(ctx, headerf, headerv)
+<A href="xxfi_header.html">mlfi_header</A>(ctx, headerf, headerv)
SMFICTX *ctx;
char *headerf;
unsigned char *headerv;
@@ -228,7 +228,7 @@ sfsistat
}
sfsistat
-<a href="xxfi_eoh.html">mlfi_eoh</a>(ctx)
+<A href="xxfi_eoh.html">mlfi_eoh</A>(ctx)
SMFICTX *ctx;
{
/* output the blank line between the header and the body */
@@ -243,7 +243,7 @@ sfsistat
}
sfsistat
-<a href="xxfi_body.html">mlfi_body</a>(ctx, bodyp, bodylen)
+<A href="xxfi_body.html">mlfi_body</A>(ctx, bodyp, bodylen)
SMFICTX *ctx;
unsigned char *bodyp;
size_t bodylen;
@@ -265,19 +265,19 @@ sfsistat
}
sfsistat
-<a href="xxfi_eom.html">mlfi_eom</a>(ctx)
+<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);
+ 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)
+<A href="xxfi_abort.html">mlfi_abort</A>(ctx)
SMFICTX *ctx;
{
return mlfi_cleanup(ctx, FALSE);
@@ -317,7 +317,7 @@ mlfi_cleanup(ctx, ok)
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)
+ if (<A href="smfi_addheader.html">smfi_addheader</A>(ctx, "X-Archived", hbuf) != MI_SUCCESS)
{
/* failed; we have to wait until later */
fprintf(stderr,
@@ -346,7 +346,7 @@ mlfi_cleanup(ctx, ok)
}
sfsistat
-<a href="xxfi_close.html">mlfi_close</a>(ctx)
+<A href="xxfi_close.html">mlfi_close</A>(ctx)
SMFICTX *ctx;
{
struct mlfiPriv *priv = MLFIPRIV;
@@ -358,26 +358,59 @@ sfsistat
if (priv-&gt;mlfi_helofrom != NULL)
free(priv-&gt;mlfi_helofrom);
free(priv);
- <a href="smfi_setpriv.html">smfi_setpriv</a>(ctx, NULL);
+ <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_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
@@ -411,7 +444,7 @@ main(argc, argv)
optarg);
exit(EX_USAGE);
}
- if (<a href="smfi_setconn.html">smfi_setconn</a>(optarg) == MI_FAILURE)
+ if (<A href="smfi_setconn.html">smfi_setconn</A>(optarg) == MI_FAILURE)
{
(void) fprintf(stderr,
"smfi_setconn failed\n");
@@ -438,7 +471,7 @@ main(argc, argv)
optarg);
exit(EX_USAGE);
}
- if (<a href="smfi_settimeout.html">smfi_settimeout</a>(atoi(optarg)) == MI_FAILURE)
+ if (<A href="smfi_settimeout.html">smfi_settimeout</A>(atoi(optarg)) == MI_FAILURE)
{
(void) fprintf(stderr,
"smfi_settimeout failed\n");
@@ -481,24 +514,24 @@ main(argc, argv)
usage(argv[0]);
exit(EX_USAGE);
}
- if (<a href="smfi_register.html">smfi_register</a>(smfilter) == MI_FAILURE)
+ 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>();
+ return <A href="smfi_main.html">smfi_main</A>();
}
/* eof */
-</pre>
-<hr size="1">
-<font size="-1">
-Copyright (c) 2000-2004 Sendmail, Inc. and its suppliers.
+</PRE>
+<HR size="1">
+<FONT size="-1">
+Copyright (c) 2000-2004, 2006 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/smfi_addheader.html b/contrib/sendmail/libmilter/docs/smfi_addheader.html
index e1fe69d..d068f9f 100644
--- a/contrib/sendmail/libmilter/docs/smfi_addheader.html
+++ b/contrib/sendmail/libmilter/docs/smfi_addheader.html
@@ -1,98 +1,106 @@
-<html>
-<head><title>smfi_addheader</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>smfi_addheader</TITLE></HEAD>
+<BODY>
<!--
-$Id: smfi_addheader.html,v 1.15 2004/05/04 17:55:50 ca Exp $
+$Id: smfi_addheader.html,v 1.19 2006/12/21 18:30:35 ca Exp $
-->
-<h1>smfi_addheader</h1>
+<H1>smfi_addheader</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<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>
+</PRE>
Add a header to the current message.
-</td></tr>
+</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>
+<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>
+<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>
+<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>
+<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>
+</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>
-</ul>
-</td>
-</tr>
+<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>
+<TR>
+<TH valign="top" align=left>EXAMPLE</TH>
-<td>
- <pre>
+<TD>
+ <PRE>
int ret;
SMFICTX *ctx;
@@ -100,19 +108,19 @@ href="smfi_chgheader.html">smfi_chgheader</a>.
ret = smfi_addheader(ctx, "Content-Type",
"multipart/mixed;\n\tboundary=\"foobar\"");
- </pre>
-</td>
-</tr>
+ </PRE>
+</TD>
+</TR>
-</table>
+</TABLE>
-<hr size="1">
-<font size="-1">
-Copyright (c) 2000-2003 Sendmail, Inc. and its suppliers.
+<HR size="1">
+<FONT size="-1">
+Copyright (c) 2000-2003, 2006 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/smfi_addrcpt.html b/contrib/sendmail/libmilter/docs/smfi_addrcpt.html
index 05770bf..cf997e5 100644
--- a/contrib/sendmail/libmilter/docs/smfi_addrcpt.html
+++ b/contrib/sendmail/libmilter/docs/smfi_addrcpt.html
@@ -1,83 +1,83 @@
-<html>
-<head><title>smfi_addrcpt</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>smfi_addrcpt</TITLE></HEAD>
+<BODY>
<!--
-$Id: smfi_addrcpt.html,v 1.9 2003/10/08 17:55:00 gshapiro Exp $
+$Id: smfi_addrcpt.html,v 1.11 2006/12/21 18:30:35 ca Exp $
-->
-<h1>smfi_addrcpt</h1>
+<H1>smfi_addrcpt</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<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>
+</PRE>
Add a recipient for the current message.
-</td></tr>
+</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>
+<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>
+<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>
+<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>
+<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>
+</TD>
+</TR>
<!----------- Notes ---------->
-<tr align="left" valign=top>
-<th>NOTES</th>
-<td>
+<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>
+<A href="smfi_register.html">smfi_register</A>.
+</TD>
+</TR>
-</table>
+</TABLE>
-<hr size="1">
-<font size="-1">
+<HR size="1">
+<FONT size="-1">
Copyright (c) 2000, 2003 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/smfi_addrcpt_par.html b/contrib/sendmail/libmilter/docs/smfi_addrcpt_par.html
new file mode 100644
index 0000000..776b02c
--- /dev/null
+++ b/contrib/sendmail/libmilter/docs/smfi_addrcpt_par.html
@@ -0,0 +1,88 @@
+<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
new file mode 100644
index 0000000..e8249e0
--- /dev/null
+++ b/contrib/sendmail/libmilter/docs/smfi_chgfrom.html
@@ -0,0 +1,94 @@
+<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
index 5c7e507..0701a36 100644
--- a/contrib/sendmail/libmilter/docs/smfi_chgheader.html
+++ b/contrib/sendmail/libmilter/docs/smfi_chgheader.html
@@ -1,15 +1,15 @@
-<html>
-<head><title>smfi_chgheader</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>smfi_chgheader</TITLE></HEAD>
+<BODY>
<!--
-$Id: smfi_chgheader.html,v 1.15 2003/04/30 22:10:53 ca Exp $
+$Id: smfi_chgheader.html,v 1.17 2006/12/21 18:30:35 ca Exp $
-->
-<h1>smfi_chgheader</h1>
+<H1>smfi_chgheader</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
+<PRE>
#include &lt;libmilter/mfapi.h&gt;
int smfi_chgheader(
SMFICTX *ctx,
@@ -17,84 +17,84 @@ int smfi_chgheader(
mi_int32 hdridx,
char *headerv
);
-</pre>
+</PRE>
Change or delete a message header.
-</td></tr>
+</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>
+<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>
+<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>
+<TR>
+<TH valign="top" align=left>RETURN VALUES</TH>
-<td>
+<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>
+<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>
+</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
+<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
+ 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
+ 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>
+ <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>
+<TR>
+<TH valign="top" align=left>EXAMPLE</TH>
-<td>
- <pre>
+<TD>
+ <PRE>
int ret;
SMFICTX *ctx;
@@ -102,19 +102,19 @@ Otherwise, it returns MI_SUCCESS.
ret = smfi_chgheader(ctx, "Content-Type", 1,
"multipart/mixed;\n\tboundary=\"foobar\"");
- </pre>
-</td>
-</tr>
+ </PRE>
+</TD>
+</TR>
-</table>
+</TABLE>
-<hr size="1">
-<font size="-1">
+<HR size="1">
+<FONT size="-1">
Copyright (c) 2000-2003 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/smfi_delrcpt.html b/contrib/sendmail/libmilter/docs/smfi_delrcpt.html
index 7776a43..c43dcd6 100644
--- a/contrib/sendmail/libmilter/docs/smfi_delrcpt.html
+++ b/contrib/sendmail/libmilter/docs/smfi_delrcpt.html
@@ -1,82 +1,82 @@
-<html>
-<head><title>smfi_delrcpt</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>smfi_delrcpt</TITLE></HEAD>
+<BODY>
<!--
-$Id: smfi_delrcpt.html,v 1.9 2003/10/27 15:51:12 ca Exp $
+$Id: smfi_delrcpt.html,v 1.11 2006/12/21 18:30:35 ca Exp $
-->
-<h1>smfi_delrcpt</h1>
+<H1>smfi_delrcpt</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<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>
+</PRE>
Remove a recipient from the current message's envelope.
-</td></tr>
+</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>
+<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>
+<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>
+<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>
+<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>
+</TD>
+</TR>
<!----------- Notes ---------->
-<tr align="left" valign=top>
-<th>NOTES</th>
-<td>
+<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>
+</TD>
+</TR>
-</table>
+</TABLE>
-<hr size="1">
-<font size="-1">
+<HR size="1">
+<FONT size="-1">
Copyright (c) 2000, 2003 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/smfi_getpriv.html b/contrib/sendmail/libmilter/docs/smfi_getpriv.html
index 3d9f985..9584b9e 100644
--- a/contrib/sendmail/libmilter/docs/smfi_getpriv.html
+++ b/contrib/sendmail/libmilter/docs/smfi_getpriv.html
@@ -1,62 +1,62 @@
-<html>
-<head><title>smfi_getpriv</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>smfi_getpriv</TITLE></HEAD>
+<BODY>
<!--
-$Id: smfi_getpriv.html,v 1.7 2003/03/05 19:57:54 ca Exp $
+$Id: smfi_getpriv.html,v 1.9 2006/12/21 18:30:35 ca Exp $
-->
-<h1>smfi_getpriv</h1>
+<H1>smfi_getpriv</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
+<PRE>
#include &lt;libmilter/mfapi.h&gt;
void* smfi_getpriv(
SMFICTX *ctx
);
-</pre>
+</PRE>
Get the connection-specific data pointer for this connection.
-</td></tr>
+</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>
+<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>
+<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>
+<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>
+<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>
+</TABLE>
-<hr size="1">
-<font size="-1">
+<HR size="1">
+<FONT size="-1">
Copyright (c) 2000, 2003 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/smfi_getsymval.html b/contrib/sendmail/libmilter/docs/smfi_getsymval.html
index 0e9bc58..671dbfa 100644
--- a/contrib/sendmail/libmilter/docs/smfi_getsymval.html
+++ b/contrib/sendmail/libmilter/docs/smfi_getsymval.html
@@ -1,99 +1,105 @@
-<html>
-<head><title>smfi_getsymval</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>smfi_getsymval</TITLE></HEAD>
+<BODY>
<!--
-$Id: smfi_getsymval.html,v 1.10 2003/03/05 19:57:54 ca Exp $
+$Id: smfi_getsymval.html,v 1.15 2007/03/19 16:49:11 ca Exp $
-->
-<h1>smfi_getsymval</h1>
+<H1>smfi_getsymval</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<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>
+</PRE>
Get the value of a sendmail macro.
-</td></tr>
+</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>
+<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.
+<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>
+ <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>
+<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>
+<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>
+<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>
-</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 just for each recipient for the
-final set (xxfi_envrcpt).
-<p>
+<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.
+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>
+</TD>
+</TR>
-</table>
+</TABLE>
-<hr size="1">
-<font size="-1">
-Copyright (c) 2000, 2002-2003 Sendmail, Inc. and its suppliers.
+<HR size="1">
+<FONT size="-1">
+Copyright (c) 2000, 2002-2003, 2007 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/smfi_insheader.html b/contrib/sendmail/libmilter/docs/smfi_insheader.html
index 837a1fd..a4ba77f 100644
--- a/contrib/sendmail/libmilter/docs/smfi_insheader.html
+++ b/contrib/sendmail/libmilter/docs/smfi_insheader.html
@@ -1,15 +1,15 @@
-<html>
-<head><title>smfi_insheader</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>smfi_insheader</TITLE></HEAD>
+<BODY>
<!--
-$Id: smfi_insheader.html,v 1.3 2004/05/04 16:20:34 gshapiro Exp $
+$Id: smfi_insheader.html,v 1.9 2006/12/21 18:30:35 ca Exp $
-->
-<h1>smfi_insheader</h1>
+<H1>smfi_insheader</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
+<PRE>
#include &lt;libmilter/mfapi.h&gt;
int smfi_insheader(
SMFICTX *ctx,
@@ -17,107 +17,129 @@ int smfi_insheader(
char *headerf,
char *headerv
);
-</pre>
+</PRE>
Prepend a header to the current message.
-</td></tr>
+</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>
+<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
+<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>
+ </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>
+<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>
+<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>
+</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>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>
+<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>
+<TR>
+<TH valign="top" align=left>EXAMPLE</TH>
-<td>
- <pre>
+<TD>
+ <PRE>
int ret;
SMFICTX *ctx;
...
ret = smfi_insheader(ctx, 0, "First", "See me?");
- </pre>
-</td>
-</tr>
+ </PRE>
+</TD>
+</TR>
-</table>
+</TABLE>
-<hr size="1">
-<font size="-1">
-Copyright (c) 2004 Sendmail, Inc. and its suppliers.
+<HR size="1">
+<FONT size="-1">
+Copyright (c) 2004, 2006 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/smfi_main.html b/contrib/sendmail/libmilter/docs/smfi_main.html
index 4e772a1..a749386 100644
--- a/contrib/sendmail/libmilter/docs/smfi_main.html
+++ b/contrib/sendmail/libmilter/docs/smfi_main.html
@@ -1,51 +1,51 @@
-<html>
-<head><title>smfi_main</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>smfi_main</TITLE></HEAD>
+<BODY>
<!--
-$Id: smfi_main.html,v 1.7 2003/03/05 19:57:54 ca Exp $
+$Id: smfi_main.html,v 1.9 2006/12/21 18:30:35 ca Exp $
-->
-<h1>smfi_main</h1>
+<H1>smfi_main</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
+<PRE>
#include &lt;libmilter/mfapi.h&gt;
int smfi_main(
);
-</pre>
+</PRE>
Hand control to libmilter event loop.
-</td></tr>
+</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>
+<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>
+<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>
+<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>
+</TABLE>
-<hr size="1">
-<font size="-1">
+<HR size="1">
+<FONT size="-1">
Copyright (c) 2000, 2003 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/smfi_opensocket.html b/contrib/sendmail/libmilter/docs/smfi_opensocket.html
index 914ae50..151af07 100644
--- a/contrib/sendmail/libmilter/docs/smfi_opensocket.html
+++ b/contrib/sendmail/libmilter/docs/smfi_opensocket.html
@@ -1,78 +1,78 @@
-<html>
-<head><title>smfi_opensocket</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>smfi_opensocket</TITLE></HEAD>
+<BODY>
<!--
-$Id: smfi_opensocket.html,v 1.4 2003/10/20 22:28:57 msk Exp $
+$Id: smfi_opensocket.html,v 1.6 2006/12/21 18:30:35 ca Exp $
-->
-<h1>smfi_opensocket</h1>
+<H1>smfi_opensocket</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
+<PRE>
#include &lt;libmilter/mfapi.h&gt;
int smfi_opensocket(
bool rmsocket
);
-</pre>
+</PRE>
Attempt to create the interface socket MTAs will use to connect to the
filter.
-</td></tr>
+</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
+<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>
+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
+<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>
+ </TD></TR>
+ </TABLE>
+</TD></TR>
<!----------- Return values ---------->
-<tr>
-<th valign="top" align=left>RETURN VALUES</th>
+<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
+<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>
+ <LI><TT>smfi_setconn()</TT> has not been called.
+</UL>
Otherwise, it will return MI_SUCCESS
-</td>
-</tr>
+</TD>
+</TR>
-</table>
+</TABLE>
-<hr size="1">
-<font size="-1">
+<HR size="1">
+<FONT size="-1">
Copyright (c) 2003 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/smfi_progress.html b/contrib/sendmail/libmilter/docs/smfi_progress.html
index 85f1219..801bdf3 100644
--- a/contrib/sendmail/libmilter/docs/smfi_progress.html
+++ b/contrib/sendmail/libmilter/docs/smfi_progress.html
@@ -1,68 +1,68 @@
-<html>
-<head><title>smfi_progress</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>smfi_progress</TITLE></HEAD>
+<BODY>
<!--
-$Id: smfi_progress.html,v 1.3 2003/03/05 19:57:54 ca Exp $
+$Id: smfi_progress.html,v 1.5 2006/12/21 18:30:35 ca Exp $
-->
-<h1>smfi_progress</h1>
+<H1>smfi_progress</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
+<PRE>
#include &lt;libmilter/mfapi.h&gt;
int smfi_progress(
SMFICTX *ctx;
);
-</pre>
+</PRE>
Notify the MTA that an operation is still in progress.
-</td></tr>
+</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>
+<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>
+<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>
+<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>
+<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>
+</TD>
+</TR>
-</table>
+</TABLE>
-<hr size="1">
-<font size="-1">
+<HR size="1">
+<FONT size="-1">
Copyright (c) 2003 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/smfi_quarantine.html b/contrib/sendmail/libmilter/docs/smfi_quarantine.html
index 066cce8..656a480 100644
--- a/contrib/sendmail/libmilter/docs/smfi_quarantine.html
+++ b/contrib/sendmail/libmilter/docs/smfi_quarantine.html
@@ -1,73 +1,73 @@
-<html>
-<head><title>smfi_quarantine</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>smfi_quarantine</TITLE></HEAD>
+<BODY>
<!--
-$Id: smfi_quarantine.html,v 1.3 2003/03/05 19:57:54 ca Exp $
+$Id: smfi_quarantine.html,v 1.5 2006/12/21 18:30:35 ca Exp $
-->
-<h1>smfi_quarantine</h1>
+<H1>smfi_quarantine</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<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>
+</PRE>
Quarantine the message using the given reason.
-</td></tr>
+</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>
+<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>
+<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>
+<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>
+<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>
+</TD>
+</TR>
-</table>
+</TABLE>
-<hr size="1">
-<font size="-1">
+<HR size="1">
+<FONT size="-1">
Copyright (c) 2002-2003 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/smfi_register.html b/contrib/sendmail/libmilter/docs/smfi_register.html
index 3f6ed83..1a35918 100644
--- a/contrib/sendmail/libmilter/docs/smfi_register.html
+++ b/contrib/sendmail/libmilter/docs/smfi_register.html
@@ -1,113 +1,129 @@
-<html>
-<head><title>smfi_register</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>smfi_register</TITLE></HEAD>
+<BODY>
<!--
-$Id: smfi_register.html,v 1.11 2003/05/26 04:10:52 gshapiro Exp $
+$Id: smfi_register.html,v 1.18 2006/12/20 18:37:11 ca Exp $
-->
-<h1>smfi_register</h1>
+<H1>smfi_register</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
+<PRE>
#include &lt;libmilter/mfapi.h&gt;
int smfi_register(
smfiDesc descr
);
-</pre>
+</PRE>
Register a set of filter callbacks.
-</td></tr>
+</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 calls to smfi_register within a
-single process are not allowed.</td>
-</tr>
-</table>
+<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. The structure has the following members:
-<pre>
+<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> */
+ 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 *);
+ 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 *);
+ 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 **);
+ 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 **);
+ 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 *);
+ 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 *);
+ 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);
+ 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 *);
+ sfsistat (*<A href="xxfi_eom.html">xxfi_eom</A>)(SMFICTX *);
/* message aborted */
- sfsistat (*<a href="xxfi_abort.html">xxfi_abort</a>)(SMFICTX *);
+ sfsistat (*<A href="xxfi_abort.html">xxfi_abort</A>)(SMFICTX *);
/* connection cleanup */
- sfsistat (*<a href="xxfi_close.html">xxfi_close</a>)(SMFICTX *);
+ 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>
+</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>
+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>
+<TR>
+<TH valign="top" align=left>RETURN VALUES</TH>
-<td>
+<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>
+<UL>
+<LI>memory allocation failed.
+<LI>incompatible version or illegal flags value.
+</UL>
-</td>
-</tr>
+</TD>
+</TR>
<!----------- Notes ---------->
-<tr align="left" valign=top>
-<th>NOTES</th>
-<td>
+<TR align="left" valign=top>
+<TH>NOTES</TH>
+<TD>
-<a name="flags"></A>
-The xxfi_flags field should contain the bitwise OR of zero or more of
+<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 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 add headers.
+ This filter may <A HREF="smfi_addheader.html">add headers</A>.
</TD>
</TR>
<TR align="left" valign=top>
@@ -115,7 +131,8 @@ the following values, describing the actions the filter may take:
SMFIF_CHGHDRS
</TD>
<TD>
- This filter may change and/or delete headers.
+ This filter may
+ <A HREF="smfi_chgheader.html">change and/or delete headers</A>.
</TD>
</TR>
<TR align="left" valign=top>
@@ -123,7 +140,8 @@ the following values, describing the actions the filter may take:
SMFIF_CHGBODY
</TD>
<TD>
- This filter may replace the body during filtering.
+ 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>
@@ -133,7 +151,18 @@ the following values, describing the actions the filter may take:
SMFIF_ADDRCPT
</TD>
<TD>
- This filter may add recipients to the message.
+ 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>
@@ -141,23 +170,55 @@ the following values, describing the actions the filter may take:
SMFIF_DELRCPT
</TD>
<TD>
- This filter may remove recipients from the message.
+ 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>
+</TD>
+</TR>
-</table>
+</TABLE>
-<hr size="1">
-<font size="-1">
-Copyright (c) 2000-2001, 2003 Sendmail, Inc. and its suppliers.
+<HR size="1">
+<FONT size="-1">
+Copyright (c) 2000-2001, 2003, 2006 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/smfi_replacebody.html b/contrib/sendmail/libmilter/docs/smfi_replacebody.html
index 91ac882..bc8d5ac 100644
--- a/contrib/sendmail/libmilter/docs/smfi_replacebody.html
+++ b/contrib/sendmail/libmilter/docs/smfi_replacebody.html
@@ -1,93 +1,93 @@
-<html>
-<head><title>smfi_replacebody</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>smfi_replacebody</TITLE></HEAD>
+<BODY>
<!--
-$Id: smfi_replacebody.html,v 1.13 2003/03/05 19:57:54 ca Exp $
+$Id: smfi_replacebody.html,v 1.15 2006/12/21 18:30:35 ca Exp $
-->
-<h1>smfi_replacebody</h1>
+<H1>smfi_replacebody</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<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>
+</PRE>
Replace message-body data.
-</td></tr>
+</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
+<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>
+</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>
+<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>
+<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>
+<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>
+</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>
+<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>
+</TABLE>
-<hr size="1">
-<font size="-1">
+<HR size="1">
+<FONT size="-1">
Copyright (c) 2000-2001, 2003 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/smfi_setbacklog.html b/contrib/sendmail/libmilter/docs/smfi_setbacklog.html
index 79d8d52..8353cac 100644
--- a/contrib/sendmail/libmilter/docs/smfi_setbacklog.html
+++ b/contrib/sendmail/libmilter/docs/smfi_setbacklog.html
@@ -1,63 +1,64 @@
-<html>
-<head><title>smfi_setbacklog</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>smfi_setbacklog</TITLE></HEAD>
+<BODY>
<!--
-$Id: smfi_setbacklog.html,v 1.3 2003/03/05 19:57:54 ca Exp $
+$Id: smfi_setbacklog.html,v 1.6 2006/12/21 18:30:35 ca Exp $
-->
-<h1>smfi_setbacklog</h1>
+<H1>smfi_setbacklog</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<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 listen backlog value.
-</td></tr>
+</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 listen(). If smfi_setbacklog is not called, the operating system default is used.</td>
-</tr>
-</table>
+<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>
+<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>
+<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>
+<TD>smfi_setbacklog returns MI_FAILURE if obacklog is less than or equal
+to zero.</TD>
+</TR>
-</table>
+</TABLE>
-<hr size="1">
-<font size="-1">
+<HR size="1">
+<FONT size="-1">
Copyright (c) 2002-2003 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/smfi_setconn.html b/contrib/sendmail/libmilter/docs/smfi_setconn.html
index 07461ccc..70a510e 100644
--- a/contrib/sendmail/libmilter/docs/smfi_setconn.html
+++ b/contrib/sendmail/libmilter/docs/smfi_setconn.html
@@ -1,92 +1,93 @@
-<html>
-<head><title>smfi_setconn</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>smfi_setconn</TITLE></HEAD>
+<BODY>
<!--
-$Id: smfi_setconn.html,v 1.14 2003/05/26 05:09:16 gshapiro Exp $
+$Id: smfi_setconn.html,v 1.17 2006/12/21 18:30:35 ca Exp $
-->
-<h1>smfi_setconn</h1>
+<H1>smfi_setconn</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
+<PRE>
#include &lt;libmilter/mfapi.h&gt;
int smfi_setconn(
char *oconn;
);
-</pre>
+</PRE>
Set the socket through which this filter should communicate with sendmail.
-</td></tr>
+</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>
+<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.
+<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>
+ <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>
+<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></td>.
+<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.
-</tr>
+</TD>
+</TR>
-<tr>
-<th valign="top" align=left>NOTES</th>
+<TR>
+<TH valign="top" align=left>NOTES</TH>
-<td>
-<ul>
- <li>If possible, filters should not run as root when communicating
+<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
+ <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.
+ 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>
+</UL>
+</TD>
+</TR>
-</table>
+</TABLE>
-<hr size="1">
-<font size="-1">
+<HR size="1">
+<FONT size="-1">
Copyright (c) 2000, 2003 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/smfi_setdbg.html b/contrib/sendmail/libmilter/docs/smfi_setdbg.html
index 3203f0f..e001d3f 100644
--- a/contrib/sendmail/libmilter/docs/smfi_setdbg.html
+++ b/contrib/sendmail/libmilter/docs/smfi_setdbg.html
@@ -1,67 +1,67 @@
-<html>
-<head><title>smfi_setdbg</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>smfi_setdbg</TITLE></HEAD>
+<BODY>
<!--
-$Id: smfi_setdbg.html,v 1.1 2003/12/03 17:28:49 ca Exp $
+$Id: smfi_setdbg.html,v 1.3 2006/12/21 18:30:35 ca Exp $
-->
-<h1>smfi_setdbg</h1>
+<H1>smfi_setdbg</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
+<PRE>
#include &lt;libmilter/mfapi.h&gt;
int smfi_setdbg(
int level;
);
-</pre>
+</PRE>
Set the debugging (tracing) level for the milter library.
-</td></tr>
+</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
+<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>
+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>
+<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>
+<TR>
+<TH valign="top" align=left>RETURN VALUES</TH>
-<td>smfi_setdbg returns MI_SUCCESS by default.
-</td>
-</tr>
+<TD>smfi_setdbg returns MI_SUCCESS by default.
+</TD>
+</TR>
-</table>
+</TABLE>
-<hr size="1">
-<font size="-1">
+<HR size="1">
+<FONT size="-1">
Copyright (c) 2003 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/smfi_setmlreply.html b/contrib/sendmail/libmilter/docs/smfi_setmlreply.html
index 060c81d..b01bacf 100644
--- a/contrib/sendmail/libmilter/docs/smfi_setmlreply.html
+++ b/contrib/sendmail/libmilter/docs/smfi_setmlreply.html
@@ -1,15 +1,15 @@
-<html>
-<head><title>smfi_setmlreply</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>smfi_setmlreply</TITLE></HEAD>
+<BODY>
<!--
-$Id: smfi_setmlreply.html,v 1.1 2004/01/01 00:32:45 gshapiro Exp $
+$Id: smfi_setmlreply.html,v 1.4 2006/12/21 18:30:35 ca Exp $
-->
-<h1>smfi_setmlreply</h1>
+<H1>smfi_setmlreply</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
+<PRE>
#include &lt;libmilter/mfapi.h&gt;
int smfi_setmlreply(
SMFICTX *ctx,
@@ -17,131 +17,129 @@ int smfi_setmlreply(
char *xcode,
...
);
-</pre>
+</PRE>
Set the default SMTP error reply code to a multi-line response. Only 4XX
and 5XX replies are accepted.
-</td></tr>
+</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
+<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>
+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
+<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
+ </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
+ </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>
+ </TD></TR>
+ </TABLE>
+</TD></TR>
<!----------- Example ---------->
-<tr>
-<th valign="top" align=left>RETURN VALUES</th>
-<td>
+<TR>
+<TH valign="top" align=left>RETURN VALUES</TH>
+<TD>
For example, the code:<BR>
-<pre>
+<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>
+</PRE>
<BR>would give the SMTP response:<BR>
-<pre>
+<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
-</td>
-</tr>
+</PRE>
+</TD>
+</TR>
<!----------- Return values ---------->
-<tr>
-<th valign="top" align=left>RETURN VALUES</th>
+<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>
+<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>
+</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,
+<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>
+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
+<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
+<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>
+<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>
+</TABLE>
-<hr size="1">
-<font size="-1">
+<HR size="1">
+<FONT size="-1">
Copyright (c) 2000, 2002-2003 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/smfi_setpriv.html b/contrib/sendmail/libmilter/docs/smfi_setpriv.html
index 61e30a9..1c287eb 100644
--- a/contrib/sendmail/libmilter/docs/smfi_setpriv.html
+++ b/contrib/sendmail/libmilter/docs/smfi_setpriv.html
@@ -1,80 +1,80 @@
-<html>
-<head><title>smfi_setpriv</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>smfi_setpriv</TITLE></HEAD>
+<BODY>
<!--
-$Id: smfi_setpriv.html,v 1.9 2003/03/05 19:57:54 ca Exp $
+$Id: smfi_setpriv.html,v 1.11 2006/12/21 18:30:35 ca Exp $
-->
-<h1>smfi_setpriv</h1>
+<H1>smfi_setpriv</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<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>
+</PRE>
Set the private data pointer for this connection.
-</td></tr>
+</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>
+<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>
+<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>
+<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>
+<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>
+<TR>
+<TH valign="top" align=left>NOTES</TH>
-<td>There is only one private data pointer per connection; multiple
+<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>
+</TD>
-</tr>
+</TR>
-</table>
+</TABLE>
-<hr size="1">
-<font size="-1">
+<HR size="1">
+<FONT size="-1">
Copyright (c) 2000-2001, 2003 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/smfi_setreply.html b/contrib/sendmail/libmilter/docs/smfi_setreply.html
index f62196b..d857815 100644
--- a/contrib/sendmail/libmilter/docs/smfi_setreply.html
+++ b/contrib/sendmail/libmilter/docs/smfi_setreply.html
@@ -1,15 +1,15 @@
-<html>
-<head><title>smfi_setreply</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>smfi_setreply</TITLE></HEAD>
+<BODY>
<!--
-$Id: smfi_setreply.html,v 1.14 2003/11/16 05:04:01 ca Exp $
+$Id: smfi_setreply.html,v 1.17 2006/12/21 18:30:35 ca Exp $
-->
-<h1>smfi_setreply</h1>
+<H1>smfi_setreply</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
+<PRE>
#include &lt;libmilter/mfapi.h&gt;
int smfi_setreply(
SMFICTX *ctx,
@@ -17,104 +17,101 @@ int smfi_setreply(
char *xcode,
char *message
);
-</pre>
+</PRE>
Set the default SMTP error reply code. Only 4XX and 5XX replies are accepted.
-</td></tr>
+</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
+<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>
+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
+<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
+ </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>
+ </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>
+<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>
+<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>
+</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,
+<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>
+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
+<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
+<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>
+<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>
+</TABLE>
-<hr size="1">
-<font size="-1">
+<HR size="1">
+<FONT size="-1">
Copyright (c) 2000, 2002-2003 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/smfi_setsymlist.html b/contrib/sendmail/libmilter/docs/smfi_setsymlist.html
new file mode 100644
index 0000000..7e8edff
--- /dev/null
+++ b/contrib/sendmail/libmilter/docs/smfi_setsymlist.html
@@ -0,0 +1,107 @@
+<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
index 08f01ed..97d41cb 100644
--- a/contrib/sendmail/libmilter/docs/smfi_settimeout.html
+++ b/contrib/sendmail/libmilter/docs/smfi_settimeout.html
@@ -1,66 +1,66 @@
-<html>
-<head><title>smfi_settimeout</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>smfi_settimeout</TITLE></HEAD>
+<BODY>
<!--
-$Id: smfi_settimeout.html,v 1.11 2003/03/05 19:57:54 ca Exp $
+$Id: smfi_settimeout.html,v 1.14 2006/12/21 18:30:35 ca Exp $
-->
-<h1>smfi_settimeout</h1>
+<H1>smfi_settimeout</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<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 connection timeout value.
-</td></tr>
+</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 connection before
-timing out a socket.
+<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>
+</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>
+<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>
+<TR>
+<TH valign="top" align=left>RETURN VALUES</TH>
-<td>smfi_settimeout always returns MI_SUCCESS.</td>
-</tr>
+<TD>smfi_settimeout always returns MI_SUCCESS.</TD>
+</TR>
-</table>
+</TABLE>
-<hr size="1">
-<font size="-1">
-Copyright (c) 2000, 2002-2003 Sendmail, Inc. and its suppliers.
+<HR size="1">
+<FONT size="-1">
+Copyright (c) 2000, 2002-2003, 2006 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/smfi_stop.html b/contrib/sendmail/libmilter/docs/smfi_stop.html
index 05e17be..87ecdb2 100644
--- a/contrib/sendmail/libmilter/docs/smfi_stop.html
+++ b/contrib/sendmail/libmilter/docs/smfi_stop.html
@@ -1,74 +1,74 @@
-<html>
-<head><title>smfi_stop</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>smfi_stop</TITLE></HEAD>
+<BODY>
<!--
-$Id: smfi_stop.html,v 1.3 2005/10/27 06:08:57 ca Exp $
+$Id: smfi_stop.html,v 1.6 2006/12/21 18:30:35 ca Exp $
-->
-<h1>smfi_stop</h1>
+<H1>smfi_stop</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
+<PRE>
#include &lt;libmilter/mfapi.h&gt;
int smfi_stop(void);
-</pre>
+</PRE>
Shutdown the milter.
No connections will be accepted after this call.
-</td></tr>
+</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
+<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,
+<A href="smfi_main.html">smfi_main</A> to return to the calling program,
which may then exit or warm-restart.
-</td>
-</tr>
-</table>
+</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>
+<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>
+<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>
+<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>
+</TABLE>
-<hr size="1">
-<font size="-1">
+<HR size="1">
+<FONT size="-1">
Copyright (c) 2003, 2005 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/smfi_version.html b/contrib/sendmail/libmilter/docs/smfi_version.html
new file mode 100644
index 0000000..3c1fc05
--- /dev/null
+++ b/contrib/sendmail/libmilter/docs/smfi_version.html
@@ -0,0 +1,86 @@
+<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
index 3db1117..0664dc1 100644
--- a/contrib/sendmail/libmilter/docs/xxfi_abort.html
+++ b/contrib/sendmail/libmilter/docs/xxfi_abort.html
@@ -1,83 +1,83 @@
-<html>
-<head><title>xxfi_abort</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>xxfi_abort</TITLE></HEAD>
+<BODY>
<!--
-$Id: xxfi_abort.html,v 1.9 2003/03/05 19:57:55 ca Exp $
+$Id: xxfi_abort.html,v 1.12 2006/12/21 18:30:35 ca Exp $
-->
-<h1>xxfi_abort</h1>
+<H1>xxfi_abort</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
+<PRE>
#include &lt;libmilter/mfapi.h&gt;
sfsistat (*xxfi_abort)(
- SMFICTX * ctx
+ SMFICTX *ctx
);
-</pre>
+</PRE>
Handle the current message's being aborted.
-</td></tr>
+</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>
+<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>
+<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
+<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
+<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
+<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
+<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
+<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>
+</UL>
+</TD>
+</TR>
+</TABLE>
-<hr size="1">
-<font size="-1">
+<HR size="1">
+<FONT size="-1">
Copyright (c) 2000, 2003 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/xxfi_body.html b/contrib/sendmail/libmilter/docs/xxfi_body.html
index 044e9ce..0a5f0f3 100644
--- a/contrib/sendmail/libmilter/docs/xxfi_body.html
+++ b/contrib/sendmail/libmilter/docs/xxfi_body.html
@@ -1,83 +1,97 @@
-<html>
-<head><title>xxfi_body</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>xxfi_body</TITLE></HEAD>
+<BODY>
<!--
-$Id: xxfi_body.html,v 1.12 2003/03/05 19:57:55 ca Exp $
+$Id: xxfi_body.html,v 1.17 2007/03/26 20:12:46 ca Exp $
-->
-<h1>xxfi_body</h1>
+<H1>xxfi_body</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<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,
+ SMFICTX *ctx,
+ unsigned char *bodyp,
size_t len
);
-</pre>
+</PRE>
Handle a piece of a message's body.
-</td></tr>
+</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>
+<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>
+<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 strlen() on this byte block.
+<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
+<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
+<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.
-</ul>
-</td>
-</tr>
-</table>
+<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 Sendmail, Inc. and its suppliers.
+<HR size="1">
+<FONT size="-1">
+Copyright (c) 2000-2003, 2007 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/xxfi_close.html b/contrib/sendmail/libmilter/docs/xxfi_close.html
index 99b36e6..2c2ae77 100644
--- a/contrib/sendmail/libmilter/docs/xxfi_close.html
+++ b/contrib/sendmail/libmilter/docs/xxfi_close.html
@@ -1,52 +1,52 @@
-<html>
-<head><title>xxfi_close</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>xxfi_close</TITLE></HEAD>
+<BODY>
<!--
-$Id: xxfi_close.html,v 1.10 2004/06/16 22:41:36 ca Exp $
+$Id: xxfi_close.html,v 1.13 2006/12/21 18:30:35 ca Exp $
-->
-<h1>xxfi_close</h1>
+<H1>xxfi_close</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
+<PRE>
#include &lt;libmilter/mfapi.h&gt;
sfsistat (*xxfi_close)(
- SMFICTX * ctx
+ SMFICTX *ctx
);
-</pre>
+</PRE>
The current connection is being closed.
-</td></tr>
+</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>
+<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>
+<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
+<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
@@ -58,24 +58,24 @@ 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
+<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
+<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
+<LI>Since the connection is already closing, the return value is
currently ignored.
-</ul>
-</td>
-</tr>
-</table>
+</UL>
+</TD>
+</TR>
+</TABLE>
-<hr size="1">
-<font size="-1">
+<HR size="1">
+<FONT size="-1">
Copyright (c) 2000, 2003, 2004 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/xxfi_connect.html b/contrib/sendmail/libmilter/docs/xxfi_connect.html
index b39bc94..87d5eeb 100644
--- a/contrib/sendmail/libmilter/docs/xxfi_connect.html
+++ b/contrib/sendmail/libmilter/docs/xxfi_connect.html
@@ -1,113 +1,121 @@
-<html>
-<head><title>xxfi_connect</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>xxfi_connect</TITLE></HEAD>
+<BODY>
<!--
-$Id: xxfi_connect.html,v 1.13 2003/10/29 22:54:16 msk Exp $
+$Id: xxfi_connect.html,v 1.19 2007/01/15 22:24:45 ca Exp $
-->
-<h1>xxfi_connect</h1>
+<H1>xxfi_connect</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<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>
+</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>
+<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
+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>
+</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, hostname will contain the message sender's IP
- address enclosed in square brackets (e.g. `[a.b.c.d]').
- </td></tr>
- <tr><td>hostaddr</td>
- <td>the host address, as determined by a getpeername() call on the SMTP socket.
- NULL if the type is not supported in the current version or if
+<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>
+ </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 <tt>smfi_setreply()</tt> 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>
+<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>
+<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 Sendmail, Inc. and its suppliers.
+<HR size="1">
+<FONT size="-1">
+Copyright (c) 2000-2001, 2003, 2007 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/xxfi_data.html b/contrib/sendmail/libmilter/docs/xxfi_data.html
new file mode 100644
index 0000000..2633ee5
--- /dev/null
+++ b/contrib/sendmail/libmilter/docs/xxfi_data.html
@@ -0,0 +1,89 @@
+<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
index df9e0fc..6ae88cf 100644
--- a/contrib/sendmail/libmilter/docs/xxfi_envfrom.html
+++ b/contrib/sendmail/libmilter/docs/xxfi_envfrom.html
@@ -1,95 +1,97 @@
-<html>
-<head><title>xxfi_envfrom</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>xxfi_envfrom</TITLE></HEAD>
+<BODY>
<!--
-$Id: xxfi_envfrom.html,v 1.9 2003/03/05 19:57:55 ca Exp $
+$Id: xxfi_envfrom.html,v 1.14 2007/01/25 01:00:20 ca Exp $
-->
-<h1>xxfi_envfrom</h1>
+<H1>xxfi_envfrom</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<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
+ SMFICTX *ctx,
+ char **argv
);
-</pre>
-Handle the envelope FROM command.
-</td></tr>
+</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, before xxfi_envrcpt.</td>
-</tr>
-<tr align="left" valign=top>
-<th>Default Behavior</th>
-<td>Do nothing; return SMFIS_CONTINUE.</td>
-</tr>
-</table>
+<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;
+<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>
+ </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>
+<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 ESTMP responses, please see RFC
-<a href="http://www.rfc-editor.org/rfc/rfc1869.txt">1869</a>.</td>
-</tr>
-</table>
+<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.
+<HR size="1">
+<FONT size="-1">
+Copyright (c) 2000, 2003, 2006 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/xxfi_envrcpt.html b/contrib/sendmail/libmilter/docs/xxfi_envrcpt.html
index e0c6094..9fb4ce8 100644
--- a/contrib/sendmail/libmilter/docs/xxfi_envrcpt.html
+++ b/contrib/sendmail/libmilter/docs/xxfi_envrcpt.html
@@ -1,97 +1,97 @@
-<html>
-<head><title>xxfi_envrcpt</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>xxfi_envrcpt</TITLE></HEAD>
+<BODY>
<!--
-$Id: xxfi_envrcpt.html,v 1.11 2003/12/30 00:19:42 gshapiro Exp $
+$Id: xxfi_envrcpt.html,v 1.15 2007/01/25 01:00:20 ca Exp $
-->
-<h1>xxfi_envrcpt</h1>
+<H1>xxfi_envrcpt</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<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
+ SMFICTX *ctx,
+ char **argv
);
-</pre>
+</PRE>
Handle the envelope RCPT command.
-</td></tr>
+</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>
+<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;
+<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>
+ </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>
+<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 ESTMP responses, please see RFC
-<a href="http://www.rfc-editor.org/rfc/rfc1869.txt">1869</a>.</td>
-</tr>
-</table>
+<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">
+<HR size="1">
+<FONT size="-1">
Copyright (c) 2000, 2003 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/xxfi_eoh.html b/contrib/sendmail/libmilter/docs/xxfi_eoh.html
index 350ca96..2a74e7a 100644
--- a/contrib/sendmail/libmilter/docs/xxfi_eoh.html
+++ b/contrib/sendmail/libmilter/docs/xxfi_eoh.html
@@ -1,56 +1,56 @@
-<html>
-<head><title>xxfi_eoh</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>xxfi_eoh</TITLE></HEAD>
+<BODY>
<!--
-$Id: xxfi_eoh.html,v 1.8 2003/03/05 19:57:55 ca Exp $
+$Id: xxfi_eoh.html,v 1.11 2006/12/21 18:30:35 ca Exp $
-->
-<h1>xxfi_eoh</h1>
+<H1>xxfi_eoh</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
+<PRE>
#include &lt;libmilter/mfapi.h&gt;
sfsistat (*xxfi_eoh)(
- SMFICTX * ctx
+ SMFICTX *ctx
);
-</pre>
+</PRE>
Handle the end of message headers.
-</td></tr>
+</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>
+<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>
+<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>
+</TABLE>
-<hr size="1">
-<font size="-1">
+<HR size="1">
+<FONT size="-1">
Copyright (c) 2000, 2003 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/xxfi_eom.html b/contrib/sendmail/libmilter/docs/xxfi_eom.html
index 78c6943..b5aee8b 100644
--- a/contrib/sendmail/libmilter/docs/xxfi_eom.html
+++ b/contrib/sendmail/libmilter/docs/xxfi_eom.html
@@ -1,61 +1,62 @@
-<html>
-<head><title>xxfi_eom</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>xxfi_eom</TITLE></HEAD>
+<BODY>
<!--
-$Id: xxfi_eom.html,v 1.9 2003/03/05 19:57:55 ca Exp $
+$Id: xxfi_eom.html,v 1.12 2006/12/21 18:30:36 ca Exp $
-->
-<h1>xxfi_eom</h1>
+<H1>xxfi_eom</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
+<PRE>
#include &lt;libmilter/mfapi.h&gt;
sfsistat (*xxfi_eom)(
- SMFICTX * ctx
+ SMFICTX *ctx
);
-</pre>
+</PRE>
End of a message.
-</td></tr>
+</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>
+<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>
+<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>
+<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">
+<HR size="1">
+<FONT size="-1">
Copyright (c) 2000, 2003 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/xxfi_header.html b/contrib/sendmail/libmilter/docs/xxfi_header.html
index 2111a73..8a5462f 100644
--- a/contrib/sendmail/libmilter/docs/xxfi_header.html
+++ b/contrib/sendmail/libmilter/docs/xxfi_header.html
@@ -1,78 +1,111 @@
-<html>
-<head><title>xxfi_header</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>xxfi_header</TITLE></HEAD>
+<BODY>
<!--
-$Id: xxfi_header.html,v 1.11 2006/04/05 17:10:43 ca Exp $
+$Id: xxfi_header.html,v 1.17 2006/12/21 18:30:36 ca Exp $
-->
-<h1>xxfi_header</h1>
+<H1>xxfi_header</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<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
+ SMFICTX *ctx,
+ char *headerf,
+ char *headerv
);
-</pre>
+</PRE>
Handle a message header.
-</td></tr>
+</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 zero or more times between xxfi_envrcpt and xxfi_eoh, once per message header.</td>
-</tr>
-<tr align="left" valign=top>
-<th>Default Behavior</th>
-<td>Do nothing; return SMFIS_CONTINUE.</td>
-</tr>
-</table>
+<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.
+<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>
+ </TD></TR>
+ </TABLE>
+</TD></TR>
<!----------- Notes ---------->
-<tr>
-<th valign="top" align=left>NOTES</th>
-<td>
-<ul>
-<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>
-</ul>
-</td>
-</tr>
-</table>
+<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
-<hr size="1">
-<font size="-1">
+<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>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/xxfi_helo.html b/contrib/sendmail/libmilter/docs/xxfi_helo.html
index e31585a..613cb19 100644
--- a/contrib/sendmail/libmilter/docs/xxfi_helo.html
+++ b/contrib/sendmail/libmilter/docs/xxfi_helo.html
@@ -1,64 +1,64 @@
-<html>
-<head><title>xxfi_helo</title></head>
-<body>
+<HTML>
+<HEAD><TITLE>xxfi_helo</TITLE></HEAD>
+<BODY>
<!--
-$Id: xxfi_helo.html,v 1.9 2005/08/30 23:41:45 ca Exp $
+$Id: xxfi_helo.html,v 1.12 2006/12/21 18:30:36 ca Exp $
-->
-<h1>xxfi_helo</h1>
+<H1>xxfi_helo</H1>
-<table border="0" cellspacing=4 cellpadding=4>
+<TABLE border="0" cellspacing=4 cellpadding=4>
<!---------- Synopsis ----------->
-<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
-<pre>
+<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
+ SMFICTX *ctx,
+ char *helohost
);
-</pre>
+</PRE>
Handle the HELO/EHLO command.
-</td></tr>
+</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
+<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>
+</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
+<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>
+ </TD></TR>
+ </TABLE>
+</TD></TR>
-</table>
+</TABLE>
-<hr size="1">
-<font size="-1">
+<HR size="1">
+<FONT size="-1">
Copyright (c) 2000, 2003, 2005 Sendmail, Inc. and its suppliers.
All rights reserved.
-<br>
+<BR>
By using this file, you agree to the terms and conditions set
forth in the LICENSE.
-</font>
-</body>
-</html>
+</FONT>
+</BODY>
+</HTML>
diff --git a/contrib/sendmail/libmilter/docs/xxfi_negotiate.html b/contrib/sendmail/libmilter/docs/xxfi_negotiate.html
new file mode 100644
index 0000000..0f69f70
--- /dev/null
+++ b/contrib/sendmail/libmilter/docs/xxfi_negotiate.html
@@ -0,0 +1,277 @@
+<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
new file mode 100644
index 0000000..b1cd38a
--- /dev/null
+++ b/contrib/sendmail/libmilter/docs/xxfi_unknown.html
@@ -0,0 +1,84 @@
+<HTML>
+<HEAD><TITLE>xxfi_unknown</TITLE></HEAD>
+<BODY>
+<!--
+$Id: xxfi_unknown.html,v 1.3 2006/12/21 18:30:36 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 message with a temporary error.
+ </TD>
+ </TR>
+ <TR valign="top">
+ <TD>SMFIS_REJECT</TD>
+ <TD>Reject this message.
+ </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