xref: /freebsd/contrib/sendmail/libmilter/docs/smfi_register.html (revision e2c0e292e8a7ca00ba99bcfccc9e637f45c3e8b1)
1d0cef73dSGregory Neil Shapiro<HTML>
2d0cef73dSGregory Neil Shapiro<HEAD><TITLE>smfi_register</TITLE></HEAD>
3d0cef73dSGregory Neil Shapiro<BODY>
4e92d3f3fSGregory Neil Shapiro<!--
54313cc83SGregory Neil Shapiro$Id: smfi_register.html,v 1.19 2013-11-22 20:51:39 ca Exp $
6e92d3f3fSGregory Neil Shapiro-->
7d0cef73dSGregory Neil Shapiro<H1>smfi_register</H1>
840266059SGregory Neil Shapiro
9d0cef73dSGregory Neil Shapiro<TABLE border="0" cellspacing=4 cellpadding=4>
1040266059SGregory Neil Shapiro<!---------- Synopsis ----------->
11d0cef73dSGregory Neil Shapiro<TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD>
12d0cef73dSGregory Neil Shapiro<PRE>
1340266059SGregory Neil Shapiro#include &lt;libmilter/mfapi.h&gt;
1440266059SGregory Neil Shapiroint smfi_register(
15a7ec597cSGregory Neil Shapiro	smfiDesc descr
1640266059SGregory Neil Shapiro);
17d0cef73dSGregory Neil Shapiro</PRE>
1840266059SGregory Neil ShapiroRegister a set of filter callbacks.
19d0cef73dSGregory Neil Shapiro</TD></TR>
2040266059SGregory Neil Shapiro
2140266059SGregory Neil Shapiro<!----------- Description ---------->
22d0cef73dSGregory Neil Shapiro<TR><TH valign="top" align=left>DESCRIPTION</TH><TD>
23d0cef73dSGregory Neil Shapiro<TABLE border="1" cellspacing=1 cellpadding=1>
24d0cef73dSGregory Neil Shapiro<TR align="left" valign=top>
25d0cef73dSGregory Neil Shapiro<TH width="80">Called When</TH>
26d0cef73dSGregory Neil Shapiro<TD>smfi_register must be called before smfi_main</TD>
27d0cef73dSGregory Neil Shapiro</TR>
28d0cef73dSGregory Neil Shapiro<TR align="left" valign=top>
29d0cef73dSGregory Neil Shapiro<TH width="80">Effects</TH>
30d0cef73dSGregory Neil Shapiro<TD>smfi_register creates a filter using the information given in the
31d0cef73dSGregory Neil ShapirosmfiDesc argument.
32d0cef73dSGregory Neil ShapiroMultiple (successful) calls to smfi_register within a
33d0cef73dSGregory Neil Shapirosingle process are not allowed,
34d0cef73dSGregory Neil Shapiroi.e., only one filter can be successfully registered.
35d0cef73dSGregory Neil ShapiroNote, however, that the library may not check whether this restriction
36d0cef73dSGregory Neil Shapirois obeyed.
37d0cef73dSGregory Neil Shapiro</TD>
38d0cef73dSGregory Neil Shapiro</TR>
39d0cef73dSGregory Neil Shapiro</TABLE>
40*5b0945b5SGregory Neil Shapiro</TD></TR>
4140266059SGregory Neil Shapiro
4240266059SGregory Neil Shapiro<!----------- Arguments ---------->
43d0cef73dSGregory Neil Shapiro<TR><TH valign="top" align=left>ARGUMENTS</TH><TD>
44d0cef73dSGregory Neil Shapiro    <TABLE border="1" cellspacing=0>
45d0cef73dSGregory Neil Shapiro    <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR>
46d0cef73dSGregory Neil Shapiro    <TR valign="top"><TD>descr</TD>
47d0cef73dSGregory Neil Shapiro	<TD>
48d0cef73dSGregory Neil ShapiroA filter descriptor of type smfiDesc describing the filter's functions.
49d0cef73dSGregory Neil Shapiro<A NAME="smfiDesc">The structure</A> has the following members:
50d0cef73dSGregory Neil Shapiro<PRE>
5140266059SGregory Neil Shapirostruct smfiDesc
5240266059SGregory Neil Shapiro{
5340266059SGregory Neil Shapiro	char		*xxfi_name;	/* filter name */
5440266059SGregory Neil Shapiro	int		xxfi_version;	/* version code -- do not change */
55d0cef73dSGregory Neil Shapiro	unsigned long	xxfi_flags;	/* <A href="#flags">flags</A> */
5640266059SGregory Neil Shapiro
5740266059SGregory Neil Shapiro	/* connection info filter */
58d0cef73dSGregory Neil Shapiro	sfsistat	(*<A href="xxfi_connect.html">xxfi_connect</A>)(SMFICTX *, char *, _SOCK_ADDR *);
5940266059SGregory Neil Shapiro	/* SMTP HELO command filter */
60d0cef73dSGregory Neil Shapiro	sfsistat	(*<A href="xxfi_helo.html">xxfi_helo</A>)(SMFICTX *, char *);
6140266059SGregory Neil Shapiro	/* envelope sender filter */
62d0cef73dSGregory Neil Shapiro	sfsistat	(*<A href="xxfi_envfrom.html">xxfi_envfrom</A>)(SMFICTX *, char **);
6340266059SGregory Neil Shapiro	/* envelope recipient filter */
64d0cef73dSGregory Neil Shapiro	sfsistat	(*<A href="xxfi_envrcpt.html">xxfi_envrcpt</A>)(SMFICTX *, char **);
6540266059SGregory Neil Shapiro	/* header filter */
66d0cef73dSGregory Neil Shapiro	sfsistat	(*<A href="xxfi_header.html">xxfi_header</A>)(SMFICTX *, char *, char *);
6740266059SGregory Neil Shapiro	/* end of header */
68d0cef73dSGregory Neil Shapiro	sfsistat	(*<A href="xxfi_eoh.html">xxfi_eoh</A>)(SMFICTX *);
6940266059SGregory Neil Shapiro	/* body block */
70d0cef73dSGregory Neil Shapiro	sfsistat	(*<A href="xxfi_body.html">xxfi_body</A>)(SMFICTX *, unsigned char *, size_t);
7140266059SGregory Neil Shapiro	/* end of message */
72d0cef73dSGregory Neil Shapiro	sfsistat	(*<A href="xxfi_eom.html">xxfi_eom</A>)(SMFICTX *);
7340266059SGregory Neil Shapiro	/* message aborted */
74d0cef73dSGregory Neil Shapiro	sfsistat	(*<A href="xxfi_abort.html">xxfi_abort</A>)(SMFICTX *);
7540266059SGregory Neil Shapiro	/* connection cleanup */
76d0cef73dSGregory Neil Shapiro	sfsistat	(*<A href="xxfi_close.html">xxfi_close</A>)(SMFICTX *);
7740266059SGregory Neil Shapiro
78d0cef73dSGregory Neil Shapiro	/* any unrecognized or unimplemented command filter */
79d0cef73dSGregory Neil Shapiro	sfsistat	(*xxfi_unknown)(SMFICTX *, const char *);
80d0cef73dSGregory Neil Shapiro
81d0cef73dSGregory Neil Shapiro	/* SMTP DATA command filter */
82d0cef73dSGregory Neil Shapiro	sfsistat	(*xxfi_data)(SMFICTX *);
83d0cef73dSGregory Neil Shapiro
84d0cef73dSGregory Neil Shapiro	/* negotiation callback */
85d0cef73dSGregory Neil Shapiro	sfsistat (*<A HREF="xxfi_negotiate.html">xxfi_negotiate</A>)(SMFICTX *,
86d0cef73dSGregory Neil Shapiro		unsigned long, unsigned long, unsigned long, unsigned long,
87d0cef73dSGregory Neil Shapiro		unsigned long *, unsigned long *, unsigned long *, unsigned long *);
88d0cef73dSGregory Neil Shapiro};
89d0cef73dSGregory Neil Shapiro</PRE>
90d0cef73dSGregory Neil Shapiro
91d0cef73dSGregory Neil ShapiroA NULL value for any callback function indicates that the filter
92d0cef73dSGregory Neil Shapirodoes not wish to process the given type of information,
93d0cef73dSGregory Neil Shapirosimply returning SMFIS_CONTINUE.
94d0cef73dSGregory Neil Shapiro	</TD></TR>
95d0cef73dSGregory Neil Shapiro    </TABLE>
96d0cef73dSGregory Neil Shapiro</TD></TR>
9740266059SGregory Neil Shapiro
9840266059SGregory Neil Shapiro<!----------- Return values ---------->
99d0cef73dSGregory Neil Shapiro<TR>
100d0cef73dSGregory Neil Shapiro<TH valign="top" align=left>RETURN VALUES</TH>
10140266059SGregory Neil Shapiro
102d0cef73dSGregory Neil Shapiro<TD>
10340266059SGregory Neil Shapirosmfi_register may return MI_FAILURE for any of the following reasons:
104d0cef73dSGregory Neil Shapiro<UL>
105d0cef73dSGregory Neil Shapiro<LI>memory allocation failed.
106d0cef73dSGregory Neil Shapiro<LI>incompatible version or illegal flags value.
107d0cef73dSGregory Neil Shapiro</UL>
10840266059SGregory Neil Shapiro
109d0cef73dSGregory Neil Shapiro</TD>
110d0cef73dSGregory Neil Shapiro</TR>
11140266059SGregory Neil Shapiro
11240266059SGregory Neil Shapiro<!----------- Notes ---------->
113d0cef73dSGregory Neil Shapiro<TR align="left" valign=top>
114*5b0945b5SGregory Neil Shapiro<TH><A NAME=Notes>NOTES</A></TH>
115d0cef73dSGregory Neil Shapiro<TD>
11640266059SGregory Neil Shapiro
117d0cef73dSGregory Neil Shapiro<A NAME="flags">The xxfi_flags</A>
118d0cef73dSGregory Neil Shapirofield should contain the bitwise OR of zero or more of
11940266059SGregory Neil Shapirothe following values, describing the actions the filter may take:
12040266059SGregory Neil Shapiro<TABLE BORDER CELLPADDING="1" cellspacing=1>
121d0cef73dSGregory Neil Shapiro<TR valign="top" bgcolor="#dddddd"><TH align="left">Flag</TH><TH align="center">Description</TH></TR>
12240266059SGregory Neil Shapiro  <TR align="left" valign=top>
12340266059SGregory Neil Shapiro    <TD>
124*5b0945b5SGregory Neil Shapiro        <A NAME="SMFIF_ADDHDRS">SMFIF_ADDHDRS</A>
12540266059SGregory Neil Shapiro    </TD>
12640266059SGregory Neil Shapiro    <TD>
127d0cef73dSGregory Neil Shapiro        This filter may <A HREF="smfi_addheader.html">add headers</A>.
12840266059SGregory Neil Shapiro    </TD>
12940266059SGregory Neil Shapiro  </TR>
13040266059SGregory Neil Shapiro  <TR align="left" valign=top>
13140266059SGregory Neil Shapiro    <TD>
132*5b0945b5SGregory Neil Shapiro        <A NAME="SMFIF_CHGHDRS">SMFIF_CHGHDRS</A>
13340266059SGregory Neil Shapiro    </TD>
13440266059SGregory Neil Shapiro    <TD>
135d0cef73dSGregory Neil Shapiro        This filter may
136d0cef73dSGregory Neil Shapiro	<A HREF="smfi_chgheader.html">change and/or delete headers</A>.
13740266059SGregory Neil Shapiro    </TD>
13840266059SGregory Neil Shapiro  </TR>
13940266059SGregory Neil Shapiro  <TR align="left" valign=top>
14040266059SGregory Neil Shapiro    <TD VALIGN="TOP">
141*5b0945b5SGregory Neil Shapiro        <A NAME="SMFIF_CHGBODY">SMFIF_CHGBODY</A>
14240266059SGregory Neil Shapiro    </TD>
14340266059SGregory Neil Shapiro    <TD>
144d0cef73dSGregory Neil Shapiro        This filter may
145d0cef73dSGregory Neil Shapiro	<A HREF="smfi_replacebody.html">replace the body</A> during filtering.
14640266059SGregory Neil Shapiro        This may have significant performance impact
14740266059SGregory Neil Shapiro        if other filters do body filtering after this filter.
14840266059SGregory Neil Shapiro    </TD>
14940266059SGregory Neil Shapiro  </TR>
15040266059SGregory Neil Shapiro  <TR>
15140266059SGregory Neil Shapiro    <TD VALIGN="TOP">
152*5b0945b5SGregory Neil Shapiro        <A NAME="SMFIF_ADDRCPT">SMFIF_ADDRCPT</A>
15340266059SGregory Neil Shapiro    </TD>
15440266059SGregory Neil Shapiro    <TD>
155d0cef73dSGregory Neil Shapiro        This filter may
156d0cef73dSGregory Neil Shapiro	<A HREF="smfi_addrcpt.html">add recipients</A>
157d0cef73dSGregory Neil Shapiro	to the message.
158d0cef73dSGregory Neil Shapiro    </TD>
159d0cef73dSGregory Neil Shapiro  </TR>
160d0cef73dSGregory Neil Shapiro  <TR>
161d0cef73dSGregory Neil Shapiro    <TD VALIGN="TOP">
162*5b0945b5SGregory Neil Shapiro	<A NAME="SMFIF_ADDRCPT_PAR">SMFIF_ADDRCPT_PAR</A>
163d0cef73dSGregory Neil Shapiro    </TD>
164d0cef73dSGregory Neil Shapiro    <TD>
165d0cef73dSGregory Neil Shapiro	This filter may
166d0cef73dSGregory Neil Shapiro	<A HREF="smfi_addrcpt_par.html">add recipients including ESMTP args</A>.
16740266059SGregory Neil Shapiro    </TD>
16840266059SGregory Neil Shapiro  </TR>
16940266059SGregory Neil Shapiro  <TR>
17040266059SGregory Neil Shapiro    <TD VALIGN="TOP">
171*5b0945b5SGregory Neil Shapiro        <A NAME="SMFIF_DELRCPT">SMFIF_DELRCPT</A>
17240266059SGregory Neil Shapiro    </TD>
17340266059SGregory Neil Shapiro    <TD>
174d0cef73dSGregory Neil Shapiro        This filter may
175d0cef73dSGregory Neil Shapiro	<A HREF="smfi_delrcpt.html">remove recipients</A> from the message.
17640266059SGregory Neil Shapiro    </TD>
17740266059SGregory Neil Shapiro  </TR>
178d0cef73dSGregory Neil Shapiro  <TR>
179d0cef73dSGregory Neil Shapiro    <TD VALIGN="TOP">
180*5b0945b5SGregory Neil Shapiro	<A NAME="SMFIF_QUARANTINE">SMFIF_QUARANTINE</A>
181d0cef73dSGregory Neil Shapiro    </TD>
182d0cef73dSGregory Neil Shapiro    <TD>
183d0cef73dSGregory Neil Shapiro	This filter may
184d0cef73dSGregory Neil Shapiro	<A HREF="smfi_quarantine.html">quarantine</A> a message.
185d0cef73dSGregory Neil Shapiro    </TD>
186d0cef73dSGregory Neil Shapiro  </TR>
187d0cef73dSGregory Neil Shapiro
188d0cef73dSGregory Neil Shapiro  <TR>
189d0cef73dSGregory Neil Shapiro    <TD VALIGN="TOP">
190*5b0945b5SGregory Neil Shapiro	<A NAME="SMFIF_CHGFROM">SMFIF_CHGFROM</A>
191d0cef73dSGregory Neil Shapiro    </TD>
192d0cef73dSGregory Neil Shapiro    <TD>
193d0cef73dSGregory Neil Shapiro	This filter may
194d0cef73dSGregory Neil Shapiro	<A HREF="smfi_chgfrom.html">change the envelope sender</A> (MAIL).
195d0cef73dSGregory Neil Shapiro    </TD>
196d0cef73dSGregory Neil Shapiro  </TR>
197d0cef73dSGregory Neil Shapiro
198d0cef73dSGregory Neil Shapiro  <TR>
199d0cef73dSGregory Neil Shapiro    <TD VALIGN="TOP">
200*5b0945b5SGregory Neil Shapiro	<A NAME="SMFIF_SETSYMLIST">SMFIF_SETSYMLIST</A>
201d0cef73dSGregory Neil Shapiro    </TD>
202d0cef73dSGregory Neil Shapiro    <TD>
203d0cef73dSGregory Neil Shapiro	This filter can
204d0cef73dSGregory Neil Shapiro	<A HREF="smfi_setsymlist.html">send a set of symbols (macros)</A>
205d0cef73dSGregory Neil Shapiro	that it wants.
206d0cef73dSGregory Neil Shapiro    </TD>
207d0cef73dSGregory Neil Shapiro  </TR>
208d0cef73dSGregory Neil Shapiro
20940266059SGregory Neil Shapiro</TABLE>
21040266059SGregory Neil Shapiro
211d0cef73dSGregory Neil Shapiro</TD>
212d0cef73dSGregory Neil Shapiro</TR>
21340266059SGregory Neil Shapiro
214d0cef73dSGregory Neil Shapiro</TABLE>
21540266059SGregory Neil Shapiro
216d0cef73dSGregory Neil Shapiro<HR size="1">
217d0cef73dSGregory Neil Shapiro<FONT size="-1">
2185dd76dd0SGregory Neil ShapiroCopyright (c) 2000-2001, 2003, 2006 Proofpoint, Inc. and its suppliers.
21940266059SGregory Neil ShapiroAll rights reserved.
220d0cef73dSGregory Neil Shapiro<BR>
22140266059SGregory Neil ShapiroBy using this file, you agree to the terms and conditions set
2225ef517c0SGregory Neil Shapiroforth in the LICENSE.
223d0cef73dSGregory Neil Shapiro</FONT>
224d0cef73dSGregory Neil Shapiro</BODY>
225d0cef73dSGregory Neil Shapiro</HTML>
226