xref: /freebsd/contrib/sendmail/libmilter/docs/api.html (revision 5dd76dd0cc19450133aa379ce0ce4a68ae07fb39)
1d0cef73dSGregory Neil Shapiro<HTML>
2d0cef73dSGregory Neil Shapiro<HEAD><TITLE>Milter API</TITLE></HEAD>
3d0cef73dSGregory Neil Shapiro<BODY>
4e92d3f3fSGregory Neil Shapiro<!--
5*5dd76dd0SGregory Neil Shapiro$Id: api.html,v 1.39 2013/11/22 20:51:39 ca Exp $
6e92d3f3fSGregory Neil Shapiro-->
7d0cef73dSGregory Neil Shapiro<H1>Milter API</H1>
840266059SGregory Neil Shapiro
9d0cef73dSGregory Neil Shapiro<H2>Contents</H2>
10d0cef73dSGregory Neil Shapiro<UL>
11d0cef73dSGregory Neil Shapiro    <LI><A HREF="#LibraryControlFunctions">Library Control Functions</A>
12d0cef73dSGregory Neil Shapiro    <LI><A HREF="#DataAccessFunctions">Data Access Functions</A>
13d0cef73dSGregory Neil Shapiro    <LI><A HREF="#MessageModificationFunctions">Message Modification Functions</A>
14d0cef73dSGregory Neil Shapiro    <LI><A HREF="#Callbacks">Callbacks</A>
15d0cef73dSGregory Neil Shapiro    <LI><A HREF="#Miscellaneous">Miscellaneous</A>
16d0cef73dSGregory Neil Shapiro</UL>
1740266059SGregory Neil Shapiro
18d0cef73dSGregory Neil Shapiro<H2><A NAME="LibraryControlFunctions">Library Control Functions</A></H2>
1940266059SGregory Neil Shapiro
20d0cef73dSGregory Neil ShapiroBefore handing control to libmilter (by calling
21d0cef73dSGregory Neil Shapiro<A HREF="smfi_main.html">smfi_main</A>), a filter may call the following
22d0cef73dSGregory Neil Shapirofunctions to set libmilter parameters.
23d0cef73dSGregory Neil ShapiroIn particular, the filter must call
24d0cef73dSGregory Neil Shapiro<A HREF="smfi_register.html">smfi_register</A> to register its callbacks.
25d0cef73dSGregory Neil ShapiroEach function will return either MI_SUCCESS or MI_FAILURE to
2640266059SGregory Neil Shapiroindicate the status of the operation.
27d0cef73dSGregory Neil Shapiro
28d0cef73dSGregory Neil Shapiro<P>
2940266059SGregory Neil ShapiroNone of these functions communicate with the MTA.  All alter the
30d0cef73dSGregory Neil Shapirolibrary's state, some of which is communicated to the MTA inside
31d0cef73dSGregory Neil Shapiro<A HREF="smfi_main.html">smfi_main</A>.
3240266059SGregory Neil Shapiro
33d0cef73dSGregory Neil Shapiro<P>
34d0cef73dSGregory Neil Shapiro<TABLE BORDER="1" CELLSPACING=0 CELLPADDING=2><TR BGCOLOR="#dddddd"><TH>Function</TH><TH>Description</TH></TR>
35e92d3f3fSGregory Neil Shapiro
36d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="smfi_opensocket.html">smfi_opensocket</A></TD><TD>Try to create the interface socket.</TD></TR>
3740266059SGregory Neil Shapiro
38d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="smfi_register.html">smfi_register</A></TD><TD>Register a filter.</TD></TR>
3940266059SGregory Neil Shapiro
40d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="smfi_setconn.html">smfi_setconn</A></TD><TD>Specify socket to use.</TD></TR>
4140266059SGregory Neil Shapiro
42d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="smfi_settimeout.html">smfi_settimeout</A></TD><TD>Set timeout.</TD></TR>
43e92d3f3fSGregory Neil Shapiro
44d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="smfi_setbacklog.html">smfi_setbacklog</A></TD><TD>Define the incoming <CODE>listen(2)</CODE> queue size.</TD></TR>
45e92d3f3fSGregory Neil Shapiro
46d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="smfi_setdbg.html">smfi_setdbg</A></TD><TD>Set the milter library debugging (tracing) level.</TD></TR>
47e92d3f3fSGregory Neil Shapiro
48d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="smfi_stop.html">smfi_stop</A></TD><TD>Cause an orderly shutdown.</TD></TR>
4940266059SGregory Neil Shapiro
50d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="smfi_main.html">smfi_main</A></TD><TD>Hand control to libmilter.</TD></TR>
5140266059SGregory Neil Shapiro
52d0cef73dSGregory Neil Shapiro</TABLE>
53d0cef73dSGregory Neil Shapiro
54d0cef73dSGregory Neil Shapiro<H2><A NAME="DataAccessFunctions">Data Access Functions</A></H2>
5540266059SGregory Neil Shapiro
5640266059SGregory Neil ShapiroThe following functions may be called from within the filter-defined callbacks
5740266059SGregory Neil Shapiroto access information about the current connection or message.
58d0cef73dSGregory Neil Shapiro<P>
59d0cef73dSGregory Neil Shapiro<TABLE BORDER="1" CELLSPACING=0 CELLPADDING=2><TR bgcolor="#dddddd"><TH>Function</TH><TH>Description</TH></TR>
60d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="smfi_getsymval.html">smfi_getsymval</A></TD><TD>Return the value
61d0cef73dSGregory Neil Shapiroof a symbol.</TD></TR>
6240266059SGregory Neil Shapiro
63d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="smfi_getpriv.html">smfi_getpriv</A></TD><TD>Get the private data
64d0cef73dSGregory Neil Shapiropointer.</TD></TR>
6540266059SGregory Neil Shapiro
66d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="smfi_setpriv.html">smfi_setpriv</A></TD><TD>Set the private data
67d0cef73dSGregory Neil Shapiropointer.</TD></TR>
6840266059SGregory Neil Shapiro
69d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="smfi_setreply.html">smfi_setreply</A></TD><TD>Set the specific
70d0cef73dSGregory Neil Shapiroreply code to be used.</TD></TR>
7140266059SGregory Neil Shapiro
72d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="smfi_setmlreply.html">smfi_setmlreply</A></TD><TD>Set the
73d0cef73dSGregory Neil Shapirospecific multi-line reply to be used.</TD></TR>
74e92d3f3fSGregory Neil Shapiro
75d0cef73dSGregory Neil Shapiro</TABLE>
7640266059SGregory Neil Shapiro
77d0cef73dSGregory Neil Shapiro<H2><A NAME="MessageModificationFunctions">Message Modification Functions</A></H2>
7840266059SGregory Neil Shapiro
7940266059SGregory Neil ShapiroThe following functions change a message's contents and attributes.
80d0cef73dSGregory Neil Shapiro<EM>They may only be called in <A HREF="xxfi_eom.html">xxfi_eom</A></EM>.
8140266059SGregory Neil ShapiroAll of these functions may invoke additional communication with the MTA.
8240266059SGregory Neil ShapiroThey will return either MI_SUCCESS or MI_FAILURE to indicate the status of
839bd497b8SGregory Neil Shapirothe operation.  Message data (senders, recipients, headers, body chunks)
849bd497b8SGregory Neil Shapiropassed to these functions via parameters is copied and does not need to be
859bd497b8SGregory Neil Shapiropreserved (i.e., allocated memory can be freed).
8640266059SGregory Neil Shapiro
87d0cef73dSGregory Neil Shapiro<P>
8840266059SGregory Neil ShapiroA filter must have set the appropriate flag (listed below) in the
89d0cef73dSGregory Neil Shapirodescription passed to <A HREF="smfi_register.html">smfi_register</A>
9040266059SGregory Neil Shapiroto call any message modification function.  Failure to do so will
9140266059SGregory Neil Shapirocause the MTA to treat a call to the function as a failure of the
9240266059SGregory Neil Shapirofilter, terminating its connection.
9340266059SGregory Neil Shapiro
94d0cef73dSGregory Neil Shapiro<P>
9540266059SGregory Neil ShapiroNote that the status returned indicates only whether or not the
9640266059SGregory Neil Shapirofilter's message was successfully sent to the MTA, not whether or not
97d0cef73dSGregory Neil Shapirothe MTA performed the requested operation.  For example,
98d0cef73dSGregory Neil Shapiro<A HREF="smfi_addheader.html">smfi_addheader</A>, when called with an
9940266059SGregory Neil Shapiroillegal header name, will return MI_SUCCESS even though the MTA may
10040266059SGregory Neil Shapirolater refuse to add the illegal header.
101d0cef73dSGregory Neil Shapiro<P>
102d0cef73dSGregory Neil Shapiro<TABLE BORDER="1" CELLSPACING=0 CELLPADDING=2><TR BGCOLOR="#dddddd"><TH>Function</TH><TH>Description</TH><TH>SMFIF_* flag</TR>
103d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="smfi_addheader.html">smfi_addheader</A></TD><TD>Add a header to
104d0cef73dSGregory Neil Shapirothe message.</TD><TD>SMFIF_ADDHDRS</TD></TR>
10540266059SGregory Neil Shapiro
106d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="smfi_chgheader.html">smfi_chgheader</A></TD><TD>Change or delete a header.</TD><TD>SMFIF_CHGHDRS</TD></TR>
10740266059SGregory Neil Shapiro
108d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="smfi_insheader.html">smfi_insheader</A></TD><TD>Insert a
109d0cef73dSGregory Neil Shapiroheader into the message.</TD><TD>SMFIF_ADDHDRS</TD></TR>
110e92d3f3fSGregory Neil Shapiro
111d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="smfi_chgfrom.html">smfi_chgfrom</A></TD><TD>Change the
112d0cef73dSGregory Neil Shapiroenvelope sender address.</TD><TD>SMFIF_CHGFROM</TD></TR>
11340266059SGregory Neil Shapiro
114d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="smfi_addrcpt.html">smfi_addrcpt</A></TD><TD>Add a recipient to
115d0cef73dSGregory Neil Shapirothe envelope.</TD><TD>SMFIF_ADDRCPT</TD></TR>
11640266059SGregory Neil Shapiro
117d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="smfi_addrcpt_par.html">smfi_addrcpt_par</A></TD><TD>Add
118d0cef73dSGregory Neil Shapiroa recipient including ESMTP parameter to the envelope.
119d0cef73dSGregory Neil Shapiro</TD><TD>SMFIF_ADDRCPT_PAR</TD></TR>
12040266059SGregory Neil Shapiro
121d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="smfi_delrcpt.html">smfi_delrcpt</A></TD><TD>Delete a recipient
122d0cef73dSGregory Neil Shapirofrom the envelope.</TD><TD>SMFIF_DELRCPT</TD></TR>
12340266059SGregory Neil Shapiro
124d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="smfi_replacebody.html">smfi_replacebody</A></TD><TD>Replace the
125d0cef73dSGregory Neil Shapirobody of the message.</TD><TD>SMFIF_CHGBODY</TD></TR>
126d0cef73dSGregory Neil Shapiro
127d0cef73dSGregory Neil Shapiro</TABLE>
128d0cef73dSGregory Neil Shapiro
129d0cef73dSGregory Neil Shapiro<H2>Other Message Handling Functions</H2>
130e92d3f3fSGregory Neil Shapiro
131e92d3f3fSGregory Neil ShapiroThe following functions provide special case handling instructions for
132e92d3f3fSGregory Neil Shapiromilter or the MTA, without altering the content or status of the message.
133d0cef73dSGregory Neil Shapiro<EM>They too may only be called in <A HREF="xxfi_eom.html">xxfi_eom</A></EM>.
134e92d3f3fSGregory Neil ShapiroAll of these functions may invoke additional communication with the MTA.
135e92d3f3fSGregory Neil ShapiroThey will return either MI_SUCCESS or MI_FAILURE to indicate the status of
136e92d3f3fSGregory Neil Shapirothe operation.
137e92d3f3fSGregory Neil Shapiro
138d0cef73dSGregory Neil Shapiro<P>
139e92d3f3fSGregory Neil ShapiroNote that the status returned indicates only whether or not the
140e92d3f3fSGregory Neil Shapirofilter's message was successfully sent to the MTA, not whether or not
141e92d3f3fSGregory Neil Shapirothe MTA performed the requested operation.
142e92d3f3fSGregory Neil Shapiro
143d0cef73dSGregory Neil Shapiro<P>
144d0cef73dSGregory Neil Shapiro<TABLE BORDER="1" CELLSPACING=0 CELLPADDING=2><TR BGCOLOR="#dddddd"><TH>Function</TH><TH>Description</TH></TR>
145d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="smfi_progress.html">smfi_progress</A></TD><TD>Report operation in progress.</TD></TR>
146e92d3f3fSGregory Neil Shapiro
147d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="smfi_quarantine.html">smfi_quarantine</A></TD><TD>Quarantine a message.</TD></TR>
148e92d3f3fSGregory Neil Shapiro
149d0cef73dSGregory Neil Shapiro</TABLE>
150e92d3f3fSGregory Neil Shapiro
151d0cef73dSGregory Neil Shapiro<H2><A NAME="Callbacks">Callbacks</A></H2>
15240266059SGregory Neil Shapiro
15340266059SGregory Neil ShapiroThe filter should implement one or more of the following callbacks,
154d0cef73dSGregory Neil Shapirowhich are registered via <A HREF="smfi_register.html">smfi_register</A>:
15540266059SGregory Neil Shapiro
156d0cef73dSGregory Neil Shapiro<P>
157d0cef73dSGregory Neil Shapiro<TABLE BORDER="1" CELLSPACING=0 CELLPADDING=2><TR BGCOLOR="#dddddd"><TH>Function</TH><TH>Description</TH></TR>
15840266059SGregory Neil Shapiro
159d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="xxfi_connect.html">xxfi_connect</A></TD><TD>connection info</TD></TR>
16040266059SGregory Neil Shapiro
161d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="xxfi_helo.html">xxfi_helo</A></TD><TD>SMTP HELO/EHLO command</TD></TR>
16240266059SGregory Neil Shapiro
163d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="xxfi_envfrom.html">xxfi_envfrom</A></TD><TD>envelope sender</TD></TR>
16440266059SGregory Neil Shapiro
165d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="xxfi_envrcpt.html">xxfi_envrcpt</A></TD><TD>envelope recipient</TD></TR>
16640266059SGregory Neil Shapiro
167d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="xxfi_data.html">xxfi_data</A></TD><TD>DATA command</TD></TR>
16840266059SGregory Neil Shapiro
169d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="xxfi_unknown.html">xxfi_unknown</A></TD><TD>Unknown SMTP command</TD></TR>
17040266059SGregory Neil Shapiro
171d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="xxfi_header.html">xxfi_header</A></TD><TD>header</TD></TR>
17240266059SGregory Neil Shapiro
173d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="xxfi_eoh.html">xxfi_eoh</A></TD><TD>end of header</TD></TR>
17440266059SGregory Neil Shapiro
175d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="xxfi_body.html">xxfi_body</A></TD><TD>body block</TD></TR>
17640266059SGregory Neil Shapiro
177d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="xxfi_eom.html">xxfi_eom</A></TD><TD>end of message</TD></TR>
17840266059SGregory Neil Shapiro
179d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="xxfi_abort.html">xxfi_abort</A></TD><TD>message aborted</TD></TR>
180d0cef73dSGregory Neil Shapiro
181d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="xxfi_close.html">xxfi_close</A></TD><TD>connection cleanup</TD></TR>
182d0cef73dSGregory Neil Shapiro
183d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="xxfi_negotiate.html">xxfi_negotiate</A></TD><TD>option negotiattion</TD></TR>
184d0cef73dSGregory Neil Shapiro
185d0cef73dSGregory Neil Shapiro</TABLE>
186d0cef73dSGregory Neil Shapiro
187d0cef73dSGregory Neil Shapiro<P>
18840266059SGregory Neil ShapiroThe above callbacks should all return one of the following return values,
18940266059SGregory Neil Shapirohaving the indicated meanings.  Any return other than one of the below
19040266059SGregory Neil Shapirovalues constitutes an error, and will cause sendmail to terminate its
19140266059SGregory Neil Shapiroconnection to the offending filter.
19240266059SGregory Neil Shapiro
193d0cef73dSGregory Neil Shapiro<P><A NAME="conn-spec">Milter</A> distinguishes between recipient-,
19440266059SGregory Neil Shapiromessage-, and connection-oriented routines.  Recipient-oriented
19540266059SGregory Neil Shapirocallbacks may affect the processing of a single message recipient;
19640266059SGregory Neil Shapiromessage-oriented callbacks, a single message; connection-oriented
19740266059SGregory Neil Shapirocallbacks, an entire connection (during which multiple messages may be
19840266059SGregory Neil Shapirodelivered to multiple sets of recipients).
199d0cef73dSGregory Neil Shapiro<A HREF="xxfi_envrcpt.html">xxfi_envrcpt</A> is recipient-oriented.
200d0cef73dSGregory Neil Shapiro<A HREF="xxfi_connect.html">xxfi_connect</A>,
201d0cef73dSGregory Neil Shapiro<A HREF="xxfi_helo.html">xxfi_helo</A> and
202d0cef73dSGregory Neil Shapiro<A HREF="xxfi_close.html">xxfi_close</A> are connection-oriented.  All
20340266059SGregory Neil Shapiroother callbacks are message-oriented.
20440266059SGregory Neil Shapiro
205d0cef73dSGregory Neil Shapiro<P>
206d0cef73dSGregory Neil Shapiro<TABLE BORDER="1" CELLSPACING=0 CELLPADDING=2>
207d0cef73dSGregory Neil Shapiro  <TR BGCOLOR="#dddddd"><TH>Return value</TH><TH>Description</TH></TR>
208d0cef73dSGregory Neil Shapiro  <TR VALIGN="TOP">
209d0cef73dSGregory Neil Shapiro     <TD>SMFIS_CONTINUE</TD>
210d0cef73dSGregory Neil Shapiro     <TD>Continue processing the current connection, message, or recipient.
211d0cef73dSGregory Neil Shapiro     </TD>
212d0cef73dSGregory Neil Shapiro  </TR>
213d0cef73dSGregory Neil Shapiro  <TR VALIGN="TOP">
214d0cef73dSGregory Neil Shapiro     <TD>SMFIS_REJECT</TD>
215d0cef73dSGregory Neil Shapiro     <TD>For a connection-oriented routine, reject this connection; call <A HREF="xxfi_close.html">xxfi_close</A>.<BR>
21640266059SGregory Neil Shapiro        For a message-oriented routine (except
217d0cef73dSGregory Neil Shapiro        <A HREF="xxfi_abort.html">xxfi_abort</A>), reject this message.<BR>
21840266059SGregory Neil Shapiro	For a recipient-oriented routine, reject the current recipient (but continue processing the current message).
219d0cef73dSGregory Neil Shapiro     </TD>
220d0cef73dSGregory Neil Shapiro  </TR>
221d0cef73dSGregory Neil Shapiro  <TR valign="top">
222d0cef73dSGregory Neil Shapiro     <TD>SMFIS_DISCARD</TD>
223d0cef73dSGregory Neil Shapiro     <TD>For a message- or recipient-oriented routine, accept this message, but silently discard it.<BR>
22440266059SGregory Neil Shapiro     SMFIS_DISCARD should not be returned by a connection-oriented routine.
225d0cef73dSGregory Neil Shapiro     </TD>
226d0cef73dSGregory Neil Shapiro  </TR>
227d0cef73dSGregory Neil Shapiro  <TR valign="top">
228d0cef73dSGregory Neil Shapiro     <TD>SMFIS_ACCEPT</TD>
229d0cef73dSGregory Neil Shapiro     <TD>For a connection-oriented routine, accept this connection without further filter processing; call <A HREF="xxfi_close.html">xxfi_close</A>.<BR>
230d0cef73dSGregory Neil Shapiro         For a message- or recipient-oriented routine, accept this message without further filtering.<BR>
231d0cef73dSGregory Neil Shapiro     </TD>
232d0cef73dSGregory Neil Shapiro  </TR>
233d0cef73dSGregory Neil Shapiro  <TR valign="top">
234d0cef73dSGregory Neil Shapiro     <TD>SMFIS_TEMPFAIL</TD>
235d0cef73dSGregory Neil Shapiro     <TD>Return a temporary failure, i.e., the corresponding SMTP command will return an appropriate 4xx status code.
236d0cef73dSGregory Neil Shapiro	 For a message-oriented routine (except <A HREF="xxfi_envfrom.html">xxfi_envfrom</A>), fail for this message. <BR>
237d0cef73dSGregory Neil Shapiro	 For a connection-oriented routine, fail for this connection; call <A HREF="xxfi_close.html">xxfi_close</A>. <BR>
23840266059SGregory Neil Shapiro	 For a recipient-oriented routine, only fail for the current recipient; continue message processing.
239d0cef73dSGregory Neil Shapiro     </TD>
240d0cef73dSGregory Neil Shapiro  </TR>
24140266059SGregory Neil Shapiro
242d0cef73dSGregory Neil Shapiro  <TR valign="top">
243d0cef73dSGregory Neil Shapiro     <TD><A NAME="SMFIS_SKIP">SMFIS_SKIP</A></TD>
244d0cef73dSGregory Neil Shapiro     <TD>Skip further callbacks of the same type in this transaction.
245d0cef73dSGregory Neil Shapiro	Currently this return value is only allowed in
246d0cef73dSGregory Neil Shapiro	<A HREF="xxfi_body.html">xxfi_body()</A>.
247d0cef73dSGregory Neil Shapiro	It can be used if a milter has received sufficiently many
248d0cef73dSGregory Neil Shapiro	body chunks to make a decision, but still wants to invoke
249d0cef73dSGregory Neil Shapiro 	message modification functions that are only allowed to be called from
250d0cef73dSGregory Neil Shapiro	<A HREF="xxfi_eom.html">xxfi_eom()</A>.
251d0cef73dSGregory Neil Shapiro	Note: the milter <EM>must</EM>
252d0cef73dSGregory Neil Shapiro	<A HREF="xxfi_negotiate.html">negotiate</A>
253d0cef73dSGregory Neil Shapiro	this behavior with the MTA, i.e., it must check whether
254d0cef73dSGregory Neil Shapiro	the protocol action
255d0cef73dSGregory Neil Shapiro	<A HREF="xxfi_negotiate.html#SMFIP_SKIP"><CODE>SMFIP_SKIP</CODE></A>
256d0cef73dSGregory Neil Shapiro	is available and if so, the milter must request it.
257d0cef73dSGregory Neil Shapiro     </TD>
258d0cef73dSGregory Neil Shapiro  </TR>
259d0cef73dSGregory Neil Shapiro
260d0cef73dSGregory Neil Shapiro  <TR valign="top">
261d0cef73dSGregory Neil Shapiro     <TD><A NAME="SMFIS_NOREPLY">SMFIS_NOREPLY</A></TD>
262d0cef73dSGregory Neil Shapiro     <TD>Do not send a reply back to the MTA.
263d0cef73dSGregory Neil Shapiro	The milter <EM>must</EM>
264d0cef73dSGregory Neil Shapiro	<A HREF="xxfi_negotiate.html">negotiate</A>
265d0cef73dSGregory Neil Shapiro	this behavior with the MTA, i.e., it must check whether
266d0cef73dSGregory Neil Shapiro	the appropriate protocol action
267d0cef73dSGregory Neil Shapiro	<A HREF="xxfi_negotiate.html#SMFIP_NR_"><CODE>SMFIP_NR_*</CODE></A>
268d0cef73dSGregory Neil Shapiro	is available and if so, the milter must request it.
269d0cef73dSGregory Neil Shapiro	If you set the
270d0cef73dSGregory Neil Shapiro	<A HREF="xxfi_negotiate.html#SMFIP_NR_"><CODE>SMFIP_NR_*</CODE></A>
271d0cef73dSGregory Neil Shapiro	protocol action for a callback, that callback <EM>must</EM>
272d0cef73dSGregory Neil Shapiro	always reply with
273d0cef73dSGregory Neil Shapiro	SMFIS_NOREPLY.
274d0cef73dSGregory Neil Shapiro	Using any other reply code is a violation of the API.
275d0cef73dSGregory Neil Shapiro	If in some cases your callback may return another value
276d0cef73dSGregory Neil Shapiro	(e.g., due to some resource shortages), then you
277d0cef73dSGregory Neil Shapiro	<EM>must not</EM> set
278d0cef73dSGregory Neil Shapiro	<A HREF="xxfi_negotiate.html#SMFIP_NR_"><CODE>SMFIP_NR_*</CODE></A>
279d0cef73dSGregory Neil Shapiro	and you must use
280d0cef73dSGregory Neil Shapiro	SMFIS_CONTINUE as the default return code.
281d0cef73dSGregory Neil Shapiro	(Alternatively you can try to delay reporting the problem to
282d0cef73dSGregory Neil Shapiro	a later callback for which
283d0cef73dSGregory Neil Shapiro	<A HREF="xxfi_negotiate.html#SMFIP_NR_"><CODE>SMFIP_NR_*</CODE></A>
284d0cef73dSGregory Neil Shapiro	is not set.)
285d0cef73dSGregory Neil Shapiro     </TD>
286d0cef73dSGregory Neil Shapiro  </TR>
287d0cef73dSGregory Neil Shapiro
288d0cef73dSGregory Neil Shapiro</TABLE>
289d0cef73dSGregory Neil Shapiro
290d0cef73dSGregory Neil Shapiro<H2><A NAME="Miscellaneous">Miscellaneous</A></H2>
291d0cef73dSGregory Neil Shapiro
292d0cef73dSGregory Neil Shapiro<P>
293d0cef73dSGregory Neil Shapiro<TABLE BORDER="1" CELLSPACING=0 CELLPADDING=2><TR BGCOLOR="#dddddd"><TH>Function</TH><TH>Description</TH></TR>
294d0cef73dSGregory Neil Shapiro
295d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="smfi_version.html">smfi_version</A></TD><TD>libmilter (runtime) version info</TD></TR>
296d0cef73dSGregory Neil Shapiro
297d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="smfi_setsymlist.html">smfi_setsymlist</A></TD><TD>
298d0cef73dSGregory Neil ShapiroSet the list of macros that the milter wants to receive from the MTA
299d0cef73dSGregory Neil Shapirofor a protocol stage.
300d0cef73dSGregory Neil Shapiro</TD></TR>
301d0cef73dSGregory Neil Shapiro
302d0cef73dSGregory Neil Shapiro</TABLE>
303d0cef73dSGregory Neil Shapiro
304d0cef73dSGregory Neil Shapiro<P>
305d0cef73dSGregory Neil Shapiro<TABLE BORDER="1" CELLSPACING=0 CELLPADDING=2><TR BGCOLOR="#dddddd"><TH>Constant</TH><TH>Description</TH></TR>
306d0cef73dSGregory Neil Shapiro
307d0cef73dSGregory Neil Shapiro<TR><TD><A HREF="smfi_version.html">SMFI_VERSION</A></TD><TD>libmilter (compile time) version info</TD></TR>
308d0cef73dSGregory Neil Shapiro
309d0cef73dSGregory Neil Shapiro</TABLE>
310d0cef73dSGregory Neil Shapiro
311d0cef73dSGregory Neil Shapiro
312d0cef73dSGregory Neil Shapiro<HR SIZE="1">
313d0cef73dSGregory Neil Shapiro<FONT SIZE="-1">
314*5dd76dd0SGregory Neil ShapiroCopyright (c) 2000, 2003, 2006, 2009 Proofpoint, Inc. and its suppliers.
31540266059SGregory Neil ShapiroAll rights reserved.
316d0cef73dSGregory Neil Shapiro<BR>
31740266059SGregory Neil ShapiroBy using this file, you agree to the terms and conditions set
3185ef517c0SGregory Neil Shapiroforth in the LICENSE.
319d0cef73dSGregory Neil Shapiro</FONT>
320d0cef73dSGregory Neil Shapiro</BODY>
321d0cef73dSGregory Neil Shapiro</HTML>
322