<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
<!ENTITY version SYSTEM "version.xml">
]>
<refentry id="milter-manager-libmilter/mfapi.h">
<refmeta>
<refentrytitle role="top_of_page" id="milter-manager-libmilter/mfapi.h.top_of_page">libmilter/mfapi.h</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>milter managerライブラリ</refmiscinfo>
</refmeta>
<refnamediv>
<refname>libmilter/mfapi.h</refname>
<refpurpose>libmilter互換API</refpurpose>
</refnamediv>

<refsect1 id="milter-manager-libmilter/mfapi.h.functions" role="functions_proto">
<title role="functions_proto.title">Functions</title>
<informaltable pgwide="1" frame="none">
<tgroup cols="2">
<colspec colname="functions_return" colwidth="150px"/>
<colspec colname="functions_name"/>
<tbody>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SM-LM-VRS-MAJOR:CAPS">SM_LM_VRS_MAJOR</link><phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SM-LM-VRS-MINOR:CAPS">SM_LM_VRS_MINOR</link><phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SM-LM-VRS-PLVL:CAPS">SM_LM_VRS_PLVL</link><phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="sfsistat"><returnvalue>sfsistat</returnvalue></link>
</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="xxfi-connect">*xxfi_connect</link><phrase role="c_punctuation">)</phrase> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="sfsistat"><returnvalue>sfsistat</returnvalue></link>
</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="xxfi-helo">*xxfi_helo</link><phrase role="c_punctuation">)</phrase> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="sfsistat"><returnvalue>sfsistat</returnvalue></link>
</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="xxfi-envfrom">*xxfi_envfrom</link><phrase role="c_punctuation">)</phrase> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="sfsistat"><returnvalue>sfsistat</returnvalue></link>
</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="xxfi-envrcpt">*xxfi_envrcpt</link><phrase role="c_punctuation">)</phrase> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="sfsistat"><returnvalue>sfsistat</returnvalue></link>
</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="xxfi-header">*xxfi_header</link><phrase role="c_punctuation">)</phrase> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="sfsistat"><returnvalue>sfsistat</returnvalue></link>
</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="xxfi-eoh">*xxfi_eoh</link><phrase role="c_punctuation">)</phrase> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="sfsistat"><returnvalue>sfsistat</returnvalue></link>
</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="xxfi-body">*xxfi_body</link><phrase role="c_punctuation">)</phrase> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="sfsistat"><returnvalue>sfsistat</returnvalue></link>
</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="xxfi-eom">*xxfi_eom</link><phrase role="c_punctuation">)</phrase> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="sfsistat"><returnvalue>sfsistat</returnvalue></link>
</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="xxfi-abort">*xxfi_abort</link><phrase role="c_punctuation">)</phrase> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="sfsistat"><returnvalue>sfsistat</returnvalue></link>
</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="xxfi-close">*xxfi_close</link><phrase role="c_punctuation">)</phrase> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="sfsistat"><returnvalue>sfsistat</returnvalue></link>
</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="xxfi-unknown">*xxfi_unknown</link><phrase role="c_punctuation">)</phrase> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="sfsistat"><returnvalue>sfsistat</returnvalue></link>
</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="xxfi-data">*xxfi_data</link><phrase role="c_punctuation">)</phrase> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="sfsistat"><returnvalue>sfsistat</returnvalue></link>
</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="xxfi-negotiate">*xxfi_negotiate</link><phrase role="c_punctuation">)</phrase> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
</entry><entry role="function_name"><link linkend="smfi-opensocket">smfi_opensocket</link> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
</entry><entry role="function_name"><link linkend="smfi-register">smfi_register</link> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
</entry><entry role="function_name"><link linkend="smfi-main">smfi_main</link> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
</entry><entry role="function_name"><link linkend="smfi-setbacklog">smfi_setbacklog</link> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
</entry><entry role="function_name"><link linkend="smfi-setdbg">smfi_setdbg</link> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
</entry><entry role="function_name"><link linkend="smfi-settimeout">smfi_settimeout</link> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
</entry><entry role="function_name"><link linkend="smfi-setconn">smfi_setconn</link> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
</entry><entry role="function_name"><link linkend="smfi-stop">smfi_stop</link> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
</entry><entry role="function_name"><link linkend="smfi-version">smfi_version</link> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="char"><returnvalue>char</returnvalue></link> *
</entry><entry role="function_name"><link linkend="smfi-getsymval">smfi_getsymval</link> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
</entry><entry role="function_name"><link linkend="smfi-setreply">smfi_setreply</link> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
</entry><entry role="function_name"><link linkend="smfi-setmlreply">smfi_setmlreply</link> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
</entry><entry role="function_name"><link linkend="smfi-addheader">smfi_addheader</link> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
</entry><entry role="function_name"><link linkend="smfi-chgheader">smfi_chgheader</link> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
</entry><entry role="function_name"><link linkend="smfi-insheader">smfi_insheader</link> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
</entry><entry role="function_name"><link linkend="smfi-chgfrom">smfi_chgfrom</link> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
</entry><entry role="function_name"><link linkend="smfi-addrcpt">smfi_addrcpt</link> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
</entry><entry role="function_name"><link linkend="smfi-addrcpt-par">smfi_addrcpt_par</link> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
</entry><entry role="function_name"><link linkend="smfi-delrcpt">smfi_delrcpt</link> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
</entry><entry role="function_name"><link linkend="smfi-progress">smfi_progress</link> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
</entry><entry role="function_name"><link linkend="smfi-replacebody">smfi_replacebody</link> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
</entry><entry role="function_name"><link linkend="smfi-quarantine">smfi_quarantine</link> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
</entry><entry role="function_name"><link linkend="smfi-setpriv">smfi_setpriv</link> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link> *
</entry><entry role="function_name"><link linkend="smfi-getpriv">smfi_getpriv</link> <phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
</entry><entry role="function_name"><link linkend="smfi-setsymlist">smfi_setsymlist</link> <phrase role="c_punctuation">()</phrase></entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 id="milter-manager-libmilter/mfapi.h.other" role="other_proto">
<title role="other_proto.title">Types and Values</title>
<informaltable role="enum_members_table" pgwide="1" frame="none">
<tgroup cols="2">
<colspec colname="name" colwidth="150px"/>
<colspec colname="description"/>
<tbody>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFI-VERSION:CAPS">SMFI_VERSION</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="MI-SUCCESS:CAPS">MI_SUCCESS</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="MI-FAILURE:CAPS">MI_FAILURE</link></entry></row>
<row><entry role="typedef_keyword">typedef</entry><entry role="function_name"><link linkend="SMFICTX:CAPS">SMFICTX</link></entry></row>
<row><entry role="typedef_keyword">typedef</entry><entry role="function_name"><link linkend="SMFICTX-PTR:CAPS">SMFICTX_PTR</link></entry></row>
<row><entry role="typedef_keyword">typedef</entry><entry role="function_name"><link linkend="smfiDesc-str">smfiDesc_str</link></entry></row>
<row><entry role="typedef_keyword">typedef</entry><entry role="function_name"><link linkend="smfiDesc-ptr">smfiDesc_ptr</link></entry></row>
<row><entry role="typedef_keyword">typedef</entry><entry role="function_name"><link linkend="sfsistat">sfsistat</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="bool">bool</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="true">true</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="false">false</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIF-ADDHDRS:CAPS">SMFIF_ADDHDRS</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIF-CHGBODY:CAPS">SMFIF_CHGBODY</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIF-MODBODY:CAPS">SMFIF_MODBODY</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIF-ADDRCPT:CAPS">SMFIF_ADDRCPT</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIF-DELRCPT:CAPS">SMFIF_DELRCPT</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIF-CHGHDRS:CAPS">SMFIF_CHGHDRS</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIF-QUARANTINE:CAPS">SMFIF_QUARANTINE</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIF-CHGFROM:CAPS">SMFIF_CHGFROM</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIF-ADDRCPT-PAR:CAPS">SMFIF_ADDRCPT_PAR</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIF-SETSYMLIST:CAPS">SMFIF_SETSYMLIST</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIS-CONTINUE:CAPS">SMFIS_CONTINUE</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIS-REJECT:CAPS">SMFIS_REJECT</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIS-DISCARD:CAPS">SMFIS_DISCARD</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIS-ACCEPT:CAPS">SMFIS_ACCEPT</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIS-TEMPFAIL:CAPS">SMFIS_TEMPFAIL</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIS-NOREPLY:CAPS">SMFIS_NOREPLY</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIS-SKIP:CAPS">SMFIS_SKIP</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIS-ALL-OPTS:CAPS">SMFIS_ALL_OPTS</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIM-CONNECT:CAPS">SMFIM_CONNECT</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIM-HELO:CAPS">SMFIM_HELO</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIM-ENVFROM:CAPS">SMFIM_ENVFROM</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIM-ENVRCPT:CAPS">SMFIM_ENVRCPT</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIM-DATA:CAPS">SMFIM_DATA</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIM-EOM:CAPS">SMFIM_EOM</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIM-EOH:CAPS">SMFIM_EOH</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIP-NOCONNECT:CAPS">SMFIP_NOCONNECT</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIP-NOHELO:CAPS">SMFIP_NOHELO</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIP-NOMAIL:CAPS">SMFIP_NOMAIL</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIP-NORCPT:CAPS">SMFIP_NORCPT</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIP-NOBODY:CAPS">SMFIP_NOBODY</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIP-NOHDRS:CAPS">SMFIP_NOHDRS</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIP-NOEOH:CAPS">SMFIP_NOEOH</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIP-NR-HDR:CAPS">SMFIP_NR_HDR</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIP-NOHREPL:CAPS">SMFIP_NOHREPL</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIP-NOUNKNOWN:CAPS">SMFIP_NOUNKNOWN</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIP-NODATA:CAPS">SMFIP_NODATA</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIP-SKIP:CAPS">SMFIP_SKIP</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIP-RCPT-REJ:CAPS">SMFIP_RCPT_REJ</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIP-NR-CONN:CAPS">SMFIP_NR_CONN</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIP-NR-HELO:CAPS">SMFIP_NR_HELO</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIP-NR-MAIL:CAPS">SMFIP_NR_MAIL</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIP-NR-RCPT:CAPS">SMFIP_NR_RCPT</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIP-NR-DATA:CAPS">SMFIP_NR_DATA</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIP-NR-UNKN:CAPS">SMFIP_NR_UNKN</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIP-NR-EOH:CAPS">SMFIP_NR_EOH</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIP-NR-BODY:CAPS">SMFIP_NR_BODY</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="SMFIP-HDR-LEADSPC:CAPS">SMFIP_HDR_LEADSPC</link></entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 id="milter-manager-libmilter/mfapi.h.object-hierarchy" role="object_hierarchy">
<title role="object_hierarchy.title">オブジェクト階層</title>
<screen>
</screen>
</refsect1>


<refsect1 id="milter-manager-libmilter/mfapi.h.description" role="desc">
<title role="desc.title">説明</title>
<para>libmilter/mfapi.hはSendmailのlibmilter互換APIを提供します。Sendmailのlibmilterの代わりにこのライブラリを使用することができます。<ulink url="https://www.milter.org/developers/api/">milter.orgのAPIドキュメント</ulink>もみてください。</para>

</refsect1>
<refsect1 id="milter-manager-libmilter/mfapi.h.functions_details" role="details">
<title role="details.title">Functions</title>
<refsect2 id="SM-LM-VRS-MAJOR:CAPS" role="macro">
<title>SM_LM_VRS_MAJOR()</title>
<indexterm zone="SM-LM-VRS-MAJOR:CAPS"><primary>SM_LM_VRS_MAJOR</primary></indexterm>
<programlisting language="C">#define SM_LM_VRS_MAJOR(version) (((version) &amp; 0x7f000000) &gt;&gt; 24)
</programlisting>
<para>Extracts major version number from <parameter>version</parameter>
.</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>version</para></entry>
<entry role="parameter_description"><para>バージョン番号。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>メジャーバージョン番号。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="SM-LM-VRS-MINOR:CAPS" role="macro">
<title>SM_LM_VRS_MINOR()</title>
<indexterm zone="SM-LM-VRS-MINOR:CAPS"><primary>SM_LM_VRS_MINOR</primary></indexterm>
<programlisting language="C">#define SM_LM_VRS_MINOR(version) (((version) &amp; 0x007fff00) &gt;&gt; 8)
</programlisting>
<para>Extracts minor version number from <parameter>version</parameter>
.</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>version</para></entry>
<entry role="parameter_description"><para>バージョン番号。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>マイナーバージョン番号。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="SM-LM-VRS-PLVL:CAPS" role="macro">
<title>SM_LM_VRS_PLVL()</title>
<indexterm zone="SM-LM-VRS-PLVL:CAPS"><primary>SM_LM_VRS_PLVL</primary></indexterm>
<programlisting language="C">#define SM_LM_VRS_PLVL(version)		((version) &amp; 0x0000007f)
</programlisting>
<para>Extracts patch level from <parameter>version</parameter>
.</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>version</para></entry>
<entry role="parameter_description"><para>バージョン番号。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>パッチレベル。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="xxfi-connect" role="function">
<title>xxfi_connect ()</title>
<indexterm zone="xxfi-connect"><primary>xxfi_connect</primary></indexterm>
<programlisting language="C"><link linkend="sfsistat"><returnvalue>sfsistat</returnvalue></link>
<phrase role="c_punctuation">(</phrase>*xxfi_connect<phrase role="c_punctuation">)</phrase> (<parameter><link linkend="SMFICTX:CAPS"><type>SMFICTX</type></link> *context</parameter>,
                 <parameter><link linkend="char"><type>char</type></link> *host_name</parameter>,
                 <parameter><link linkend="SOCK-ADDR:CAPS"><type>_SOCK_ADDR</type></link> *address</parameter>);</programlisting>
<para>各milterセッションの最初に呼ばれるコールバック。</para>
<para>すべての利用可能な応答ステータスは以下の通りです。</para>
<rd>
: <link linkend="SMFIS-CONTINUE:CAPS"><literal>SMFIS_CONTINUE</literal></link>
   Continues processing the current connection.

: <link linkend="SMFIS-REJECT:CAPS"><literal>SMFIS_REJECT</literal></link>
   Rejects the current connection.

: <link linkend="SMFIS-ACCEPT:CAPS"><literal>SMFIS_ACCEPT</literal></link>
   Accepts the current connection without further
   more processing.

: <link linkend="SMFIS-TEMPFAIL:CAPS"><literal>SMFIS_TEMPFAIL</literal></link>
   Rejects the current connection with a temporary
   failure. (i.e. 4xx status code in SMTP)

: <link linkend="SMFIS-NOREPLY:CAPS"><literal>SMFIS_NOREPLY</literal></link>
   Doesn't send a reply back to MTA.

   The milter must set <link linkend="SMFIP-NR-CONN:CAPS"><literal>SMFIP_NR_CONN</literal></link> flag to
   <link linkend="smfiDesc"><literal>smfiDesc</literal></link>::xxfi_flags.
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/xxfi_connect">xxfi_connect</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>現在のmilterセッションのコンテキスト。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>host_name</para></entry>
<entry role="parameter_description"><para>SMTPクライアントのホスト名。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>address</para></entry>
<entry role="parameter_description"><para>SMTPクライアントのアドレス。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>応答ステータス。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="xxfi-helo" role="function">
<title>xxfi_helo ()</title>
<indexterm zone="xxfi-helo"><primary>xxfi_helo</primary></indexterm>
<programlisting language="C"><link linkend="sfsistat"><returnvalue>sfsistat</returnvalue></link>
<phrase role="c_punctuation">(</phrase>*xxfi_helo<phrase role="c_punctuation">)</phrase> (<parameter><link linkend="SMFICTX:CAPS"><type>SMFICTX</type></link> *context</parameter>,
              <parameter><link linkend="char"><type>char</type></link> *fqdn</parameter>);</programlisting>
<para>このコールバックはSMTPの"HELO"/"EHLO"コマンドのときに呼ばれます。</para>
<para>すべての利用可能な応答ステータスは以下の通りです。</para>
<rd>
: <link linkend="SMFIS-CONTINUE:CAPS"><literal>SMFIS_CONTINUE</literal></link>
   Continues processing the current connection.

: <link linkend="SMFIS-REJECT:CAPS"><literal>SMFIS_REJECT</literal></link>
   Rejects the current connection.

: <link linkend="SMFIS-ACCEPT:CAPS"><literal>SMFIS_ACCEPT</literal></link>
   Accepts the current connection without further
   more processing.

: <link linkend="SMFIS-TEMPFAIL:CAPS"><literal>SMFIS_TEMPFAIL</literal></link>
   Rejects the current connection with a temporary
   failure. (i.e. 4xx status code in SMTP)

: <link linkend="SMFIS-NOREPLY:CAPS"><literal>SMFIS_NOREPLY</literal></link>
   Doesn't send a reply back to MTA.

   The milter must set <link linkend="SMFIP-NR-HELO:CAPS"><literal>SMFIP_NR_HELO</literal></link> flag to
   <link linkend="smfiDesc"><literal>smfiDesc</literal></link>::xxfi_flags.
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/xxfi_helo"> xxfi_helo</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>現在のmilterセッションのコンテキスト。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>fqdn</para></entry>
<entry role="parameter_description"><para>SMTPの"HELO"/"EHLO"コマンドでのFQDN。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>応答ステータス。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="xxfi-envfrom" role="function">
<title>xxfi_envfrom ()</title>
<indexterm zone="xxfi-envfrom"><primary>xxfi_envfrom</primary></indexterm>
<programlisting language="C"><link linkend="sfsistat"><returnvalue>sfsistat</returnvalue></link>
<phrase role="c_punctuation">(</phrase>*xxfi_envfrom<phrase role="c_punctuation">)</phrase> (<parameter><link linkend="SMFICTX:CAPS"><type>SMFICTX</type></link> *context</parameter>,
                 <parameter><link linkend="char"><type>char</type></link> **arguments</parameter>);</programlisting>
<para>このコールバックはSMTPの"MAIL FROM"コマンドのときに呼ばれます。</para>
<para>すべての利用可能な応答ステータスは以下の通りです。</para>
<rd>
: <link linkend="SMFIS-CONTINUE:CAPS"><literal>SMFIS_CONTINUE</literal></link>
   Continues processing the current message.

: <link linkend="SMFIS-REJECT:CAPS"><literal>SMFIS_REJECT</literal></link>
   Rejects the current envelope from address and
   message. A new envelope from may be specified.

: <link linkend="SMFIS-DISCARD:CAPS"><literal>SMFIS_DISCARD</literal></link>
   Accepts the current message and discards it silently.

: <link linkend="SMFIS-ACCEPT:CAPS"><literal>SMFIS_ACCEPT</literal></link>
   Accepts the current message without further
   more processing.

: <link linkend="SMFIS-TEMPFAIL:CAPS"><literal>SMFIS_TEMPFAIL</literal></link>
   Rejects the current envelope from address and
   message with temporary failure. (i.e. 4xx
   status code in SMTP) A new envelope from address
   may be specified.

: <link linkend="SMFIS-NOREPLY:CAPS"><literal>SMFIS_NOREPLY</literal></link>
   Doesn't send a reply back to MTA.

   The milter must set <link linkend="SMFIP-NR-MAIL:CAPS"><literal>SMFIP_NR_MAIL</literal></link> flag to
   <link linkend="smfiDesc"><literal>smfiDesc</literal></link>::xxfi_flags.
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/xxfi_envfrom"> xxfi_envfrom</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>現在のmilterセッションのコンテキスト。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>arguments</para></entry>
<entry role="parameter_description"><para>SMTPの"MAIL FROM"コマンドの引数。最初の要素は差出人のアドレスです。<link linkend="NULL:CAPS"><literal>NULL</literal></link>終端しています。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>応答ステータス。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="xxfi-envrcpt" role="function">
<title>xxfi_envrcpt ()</title>
<indexterm zone="xxfi-envrcpt"><primary>xxfi_envrcpt</primary></indexterm>
<programlisting language="C"><link linkend="sfsistat"><returnvalue>sfsistat</returnvalue></link>
<phrase role="c_punctuation">(</phrase>*xxfi_envrcpt<phrase role="c_punctuation">)</phrase> (<parameter><link linkend="SMFICTX:CAPS"><type>SMFICTX</type></link> *context</parameter>,
                 <parameter><link linkend="char"><type>char</type></link> **arguments</parameter>);</programlisting>
<para>このコールバックはSMTPの"RCPT TO"コマンドのときに呼ばれます。</para>
<para>すべての利用可能な応答ステータスは以下の通りです。</para>
<rd>
: <link linkend="SMFIS-CONTINUE:CAPS"><literal>SMFIS_CONTINUE</literal></link>
   Continues processing the current message.

: <link linkend="SMFIS-REJECT:CAPS"><literal>SMFIS_REJECT</literal></link>
   Rejects the current envelope recipient
   address. Processing the current messages is
   continued.

: <link linkend="SMFIS-DISCARD:CAPS"><literal>SMFIS_DISCARD</literal></link>
   Accepts the current message and discards it silently.

: <link linkend="SMFIS-ACCEPT:CAPS"><literal>SMFIS_ACCEPT</literal></link>
   Accepts the current envelope recipient.

: <link linkend="SMFIS-TEMPFAIL:CAPS"><literal>SMFIS_TEMPFAIL</literal></link>
   Rejects the current envelope recipient address
   with temporary failure. (i.e. 4xx status code in
   SMTP) Processing the current message is continued.

: <link linkend="SMFIS-NOREPLY:CAPS"><literal>SMFIS_NOREPLY</literal></link>
   Doesn't send a reply back to MTA.

   The milter must set <link linkend="SMFIP-NR-RCPT:CAPS"><literal>SMFIP_NR_RCPT</literal></link> flag to
   <link linkend="smfiDesc"><literal>smfiDesc</literal></link>::xxfi_flags.
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/xxfi_envrcpt"> xxfi_envrcpt</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>現在のmilterセッションのコンテキスト。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>arguments</para></entry>
<entry role="parameter_description"><para>SMTPの"RCPT TO"コマンドの引数。最初の要素は宛先です。<link linkend="NULL:CAPS"><literal>NULL</literal></link>終端しています。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>応答ステータス。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="xxfi-header" role="function">
<title>xxfi_header ()</title>
<indexterm zone="xxfi-header"><primary>xxfi_header</primary></indexterm>
<programlisting language="C"><link linkend="sfsistat"><returnvalue>sfsistat</returnvalue></link>
<phrase role="c_punctuation">(</phrase>*xxfi_header<phrase role="c_punctuation">)</phrase> (<parameter><link linkend="SMFICTX:CAPS"><type>SMFICTX</type></link> *context</parameter>,
                <parameter><link linkend="char"><type>char</type></link> *name</parameter>,
                <parameter><link linkend="char"><type>char</type></link> *value</parameter>);</programlisting>
<para>このコールバックは各ヘッダに対して呼ばれます。もし、<link linkend="smfiDesc"><literal>smfiDesc</literal></link>::xxfi_flagsに<link linkend="SMFIP-HDR-LEADSPC:CAPS"><literal>SMFIP_HDR_LEADSPC</literal></link>フラグが設定されていれば、<parameter>value</parameter>はヘッダ名と値を区切る":"の後ろにあるスペースも含みます。</para>
<para>例:</para>
<informalexample><programlisting><![CDATA[
From: from <from@example.com>
To: recipient <recipient@example.com>
Subject:a subject
]]></programlisting></informalexample>
<para/>
<para><link linkend="SMFIP-HDR-LEADSPC:CAPS"><literal>SMFIP_HDR_LEADSPC</literal></link>あり:</para>
<informalexample><programlisting><![CDATA[
"From", " from <from@example.com>"
"To", " recipient <recipient@example.com>"
"Subject", "a subject"
]]></programlisting></informalexample>
<para/>
<para><link linkend="SMFIP-HDR-LEADSPC:CAPS"><literal>SMFIP_HDR_LEADSPC</literal></link>なし:</para>
<informalexample><programlisting><![CDATA[
"From", "from <from@example.com>"
"To", "recipient <recipient@example.com>"
"Subject", "a subject"
]]></programlisting></informalexample>
<para/>
<para>すべての利用可能な応答ステータスは以下の通りです。</para>
<rd>
: <link linkend="SMFIS-CONTINUE:CAPS"><literal>SMFIS_CONTINUE</literal></link>
   Continues processing the current message.

: <link linkend="SMFIS-REJECT:CAPS"><literal>SMFIS_REJECT</literal></link>
   Rejects the current message.

: <link linkend="SMFIS-DISCARD:CAPS"><literal>SMFIS_DISCARD</literal></link>
   Accepts the current message and discards it silently.

: <link linkend="SMFIS-ACCEPT:CAPS"><literal>SMFIS_ACCEPT</literal></link>
   Accepts the current message without further
   more processing.

: <link linkend="SMFIS-TEMPFAIL:CAPS"><literal>SMFIS_TEMPFAIL</literal></link>
   Rejects the current message with temporary
   failure. (i.e. 4xx status code in SMTP)

: <link linkend="SMFIS-NOREPLY:CAPS"><literal>SMFIS_NOREPLY</literal></link>
   Doesn't send a reply back to MTA.

   The milter must set <link linkend="SMFIP-NR-HDR:CAPS"><literal>SMFIP_NR_HDR</literal></link> flag to
   <link linkend="smfiDesc"><literal>smfiDesc</literal></link>::xxfi_flags.
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/xxfi_header"> xxfi_header</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>現在のmilterセッションのコンテキスト。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>name</para></entry>
<entry role="parameter_description"><para>ヘッダ名。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>value</para></entry>
<entry role="parameter_description"><para>ヘッダ値。<parameter>value</parameter>は折り返し時に挿入された空白を含むかもしれません。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>応答ステータス。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="xxfi-eoh" role="function">
<title>xxfi_eoh ()</title>
<indexterm zone="xxfi-eoh"><primary>xxfi_eoh</primary></indexterm>
<programlisting language="C"><link linkend="sfsistat"><returnvalue>sfsistat</returnvalue></link>
<phrase role="c_punctuation">(</phrase>*xxfi_eoh<phrase role="c_punctuation">)</phrase> (<parameter><link linkend="SMFICTX:CAPS"><type>SMFICTX</type></link> *context</parameter>);</programlisting>
<para>このコールバックはすべてのヘッダが処理されたときに呼ばれます。</para>
<para>すべての利用可能な応答ステータスは以下の通りです。</para>
<rd>
: <link linkend="SMFIS-CONTINUE:CAPS"><literal>SMFIS_CONTINUE</literal></link>
   Continues processing the current message.

: <link linkend="SMFIS-REJECT:CAPS"><literal>SMFIS_REJECT</literal></link>
   Rejects the current message.

: <link linkend="SMFIS-DISCARD:CAPS"><literal>SMFIS_DISCARD</literal></link>
   Accepts the current message and discards it silently.

: <link linkend="SMFIS-ACCEPT:CAPS"><literal>SMFIS_ACCEPT</literal></link>
   Accepts the current message without further
   more processing.

: <link linkend="SMFIS-TEMPFAIL:CAPS"><literal>SMFIS_TEMPFAIL</literal></link>
   Rejects the current message with temporary
   failure. (i.e. 4xx status code in SMTP)

: <link linkend="SMFIS-NOREPLY:CAPS"><literal>SMFIS_NOREPLY</literal></link>
   Doesn't send a reply back to MTA.

   The milter must set <link linkend="SMFIP-NR-EOH:CAPS"><literal>SMFIP_NR_EOH</literal></link> flag to
   <link linkend="smfiDesc"><literal>smfiDesc</literal></link>::xxfi_flags.
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/xxfi_eof"> xxfi_eof</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>現在のmilterセッションのコンテキスト。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>応答ステータス。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="xxfi-body" role="function">
<title>xxfi_body ()</title>
<indexterm zone="xxfi-body"><primary>xxfi_body</primary></indexterm>
<programlisting language="C"><link linkend="sfsistat"><returnvalue>sfsistat</returnvalue></link>
<phrase role="c_punctuation">(</phrase>*xxfi_body<phrase role="c_punctuation">)</phrase> (<parameter><link linkend="SMFICTX:CAPS"><type>SMFICTX</type></link> *context</parameter>,
              <parameter>unsigned <link linkend="char"><type>char</type></link> *data</parameter>,
              <parameter><link linkend="size-t"><type>size_t</type></link> data_size</parameter>);</programlisting>
<para>このコールバックは本文のデータを受け取ったときに呼ばれます。このコールバックは<link linkend="xxfi-eoh"><function>xxfi_eoh()</function></link>と<link linkend="xxfi-eom"><function>xxfi_eom()</function></link>の間に0回以上呼ばれます。</para>
<para>すべての利用可能な応答ステータスは以下の通りです。</para>
<rd>
: <link linkend="SMFIS-CONTINUE:CAPS"><literal>SMFIS_CONTINUE</literal></link>
   Continues processing the current message.

: <link linkend="SMFIS-REJECT:CAPS"><literal>SMFIS_REJECT</literal></link>
   Rejects the current message.

: <link linkend="SMFIS-DISCARD:CAPS"><literal>SMFIS_DISCARD</literal></link>
   Accepts the current message and discards it silently.

: <link linkend="SMFIS-ACCEPT:CAPS"><literal>SMFIS_ACCEPT</literal></link>
   Accepts the current message without further
   more processing.

: <link linkend="SMFIS-TEMPFAIL:CAPS"><literal>SMFIS_TEMPFAIL</literal></link>
   Rejects the current message with temporary
   failure. (i.e. 4xx status code in SMTP)

: <link linkend="SMFIS-SKIP:CAPS"><literal>SMFIS_SKIP</literal></link>
   Skips further body
   processing. <link linkend="xxfi-eom"><function>xxfi_eom()</function></link> is called.

: <link linkend="SMFIS-NOREPLY:CAPS"><literal>SMFIS_NOREPLY</literal></link>
   Doesn't send a reply back to MTA.

   The milter must set <link linkend="SMFIP-NR-BODY:CAPS"><literal>SMFIP_NR_BODY</literal></link> flag to
   <link linkend="smfiDesc"><literal>smfiDesc</literal></link>::xxfi_flags.
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/xxfi_body"> xxfi_body</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>現在のmilterセッションのコンテキスト。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>data</para></entry>
<entry role="parameter_description"><para>本文の1かたまり。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>data_size</para></entry>
<entry role="parameter_description"><para>the size of <parameter>data</parameter>
.</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>応答ステータス。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="xxfi-eom" role="function">
<title>xxfi_eom ()</title>
<indexterm zone="xxfi-eom"><primary>xxfi_eom</primary></indexterm>
<programlisting language="C"><link linkend="sfsistat"><returnvalue>sfsistat</returnvalue></link>
<phrase role="c_punctuation">(</phrase>*xxfi_eom<phrase role="c_punctuation">)</phrase> (<parameter><link linkend="SMFICTX:CAPS"><type>SMFICTX</type></link> *context</parameter>);</programlisting>
<para>このコールバックはすべての<link linkend="xxfi-body"><function>xxfi_body()</function></link>呼び出しが終わった後に呼ばれます。すべてのメッセージ変更はこのコールバックの中でだけ行えます。変更は<link linkend="smfi-addheader"><function>smfi_addheader()</function></link>、<link linkend="smfi-chgfrom"><function>smfi_chgfrom()</function></link>などです。</para>
<para>すべての利用可能な応答ステータスは以下の通りです。</para>
<rd>
: <link linkend="SMFIS-CONTINUE:CAPS"><literal>SMFIS_CONTINUE</literal></link>
   Continues processing the current message.

: <link linkend="SMFIS-DISCARD:CAPS"><literal>SMFIS_DISCARD</literal></link>
   Accepts the current message and discards it silently.

: <link linkend="SMFIS-ACCEPT:CAPS"><literal>SMFIS_ACCEPT</literal></link>
   Accepts the current message without further
   more processing.

: <link linkend="SMFIS-TEMPFAIL:CAPS"><literal>SMFIS_TEMPFAIL</literal></link>
   Rejects the current message with temporary
   failure. (i.e. 4xx status code in SMTP)
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/xxfi_eom"> xxfi_eom</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>現在のmilterセッションのコンテキスト。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>応答ステータス。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="xxfi-abort" role="function">
<title>xxfi_abort ()</title>
<indexterm zone="xxfi-abort"><primary>xxfi_abort</primary></indexterm>
<programlisting language="C"><link linkend="sfsistat"><returnvalue>sfsistat</returnvalue></link>
<phrase role="c_punctuation">(</phrase>*xxfi_abort<phrase role="c_punctuation">)</phrase> (<parameter><link linkend="SMFICTX:CAPS"><type>SMFICTX</type></link> *context</parameter>);</programlisting>
<para>このコールバックは <link linkend="xxfi-envfrom"><function>xxfi_envfrom()</function></link>から<link linkend="xxfi-eom"><function>xxfi_eom()</function></link>の間のどこかのタイミングで呼び出される可能性があります。このコールバックはmilter内部でエラーが発生し、かつ、メッセージ処理が完了していないときだけ実行されます。例えば、milterが<link linkend="SMFIS-ACCEPT:CAPS"><literal>SMFIS_ACCEPT</literal></link>、<link linkend="SMFIS-REJECT:CAPS"><literal>SMFIS_REJECT</literal></link>、<link linkend="SMFIS-DISCARD:CAPS"><literal>SMFIS_DISCARD</literal></link>、<link linkend="SMFIS-TEMPFAIL:CAPS"><literal>SMFIS_TEMPFAIL</literal></link>を返しているときはこのコールバックは呼ばれません。</para>
<para>milterが<link linkend="xxfi-envfrom"><function>xxfi_envfrom()</function></link>から<link linkend="xxfi-eom"><function>xxfi_eom()</function></link>の間にメッセージのために割り当てたリソースがある場合は、このコールバックの中で解放してください。しかし、接続用に割り当てられたリソースは解放しないで下さい。そのリソースは<link linkend="xxfi-close"><function>xxfi_close()</function></link>で解放してください。</para>
<para>すべての利用可能な応答ステータスは以下の通りです。</para>
<rd>
: <link linkend="SMFIS-CONTINUE:CAPS"><literal>SMFIS_CONTINUE</literal></link>
   Continues processing the current message.

: <link linkend="SMFIS-DISCARD:CAPS"><literal>SMFIS_DISCARD</literal></link>
   Accepts the current message and discards it silently.

: <link linkend="SMFIS-ACCEPT:CAPS"><literal>SMFIS_ACCEPT</literal></link>
   Accepts the current message without further
   more processing.

: <link linkend="SMFIS-TEMPFAIL:CAPS"><literal>SMFIS_TEMPFAIL</literal></link>
   Rejects the current message with temporary
   failure. (i.e. 4xx status code in SMTP)
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/xxfi_abort"> xxfi_abort</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>現在のmilterセッションのコンテキスト。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>応答ステータス。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="xxfi-close" role="function">
<title>xxfi_close ()</title>
<indexterm zone="xxfi-close"><primary>xxfi_close</primary></indexterm>
<programlisting language="C"><link linkend="sfsistat"><returnvalue>sfsistat</returnvalue></link>
<phrase role="c_punctuation">(</phrase>*xxfi_close<phrase role="c_punctuation">)</phrase> (<parameter><link linkend="SMFICTX:CAPS"><type>SMFICTX</type></link> *context</parameter>);</programlisting>
<para>このコールバックは各milterセッションの最後に呼ばれます。milterがセッション中で割り当てたリソースはこのコールバックの中で解放してください。</para>
<para>すべての応答ステータスは無視されます。<link linkend="SMFIS-CONTINUE:CAPS"><literal>SMFIS_CONTINUE</literal></link>を使って下さい。</para>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/xxfi_close"> xxfi_close</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>現在のmilterセッションのコンテキスト。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>応答ステータス。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="xxfi-unknown" role="function">
<title>xxfi_unknown ()</title>
<indexterm zone="xxfi-unknown"><primary>xxfi_unknown</primary></indexterm>
<programlisting language="C"><link linkend="sfsistat"><returnvalue>sfsistat</returnvalue></link>
<phrase role="c_punctuation">(</phrase>*xxfi_unknown<phrase role="c_punctuation">)</phrase> (<parameter><link linkend="SMFICTX:CAPS"><type>SMFICTX</type></link> *context</parameter>,
                 <parameter>const <link linkend="char"><type>char</type></link> *command</parameter>);</programlisting>
<para>このコールバックは未知のSMTPコマンドまたは未実装のSMTPコマンドが送られてきた場合に呼ばれます。</para>
<para>すべての利用可能な応答ステータスは以下の通りです。</para>
<rd>
: <link linkend="SMFIS-REJECT:CAPS"><literal>SMFIS_REJECT</literal></link>
   Rejects the current message.

: <link linkend="SMFIS-TEMPFAIL:CAPS"><literal>SMFIS_TEMPFAIL</literal></link>
   Rejects the current message with temporary
   failure. (i.e. 4xx status code in SMTP)

: <link linkend="SMFIS-NOREPLY:CAPS"><literal>SMFIS_NOREPLY</literal></link>
   Doesn't send a reply back to MTA.

   The milter must set <link linkend="SMFIP-NR-UNKN:CAPS"><literal>SMFIP_NR_UNKN</literal></link> flag to
   <link linkend="smfiDesc"><literal>smfiDesc</literal></link>::xxfi_flags.
</rd>
<para>MTAは、未知のSMTPコマンドまたは未実装のSMTPコマンドは常に拒否することに中してください。</para>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/xxfi_unknown"> xxfi_unknown</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>現在のmilterセッションのコンテキスト。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>command</para></entry>
<entry role="parameter_description"><para>未知のSMTPコマンド。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>応答ステータス。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="xxfi-data" role="function">
<title>xxfi_data ()</title>
<indexterm zone="xxfi-data"><primary>xxfi_data</primary></indexterm>
<programlisting language="C"><link linkend="sfsistat"><returnvalue>sfsistat</returnvalue></link>
<phrase role="c_punctuation">(</phrase>*xxfi_data<phrase role="c_punctuation">)</phrase> (<parameter><link linkend="SMFICTX:CAPS"><type>SMFICTX</type></link> *context</parameter>);</programlisting>
<para>このコールバックはSMTPの"DATA"コマンドのときに呼ばれます。</para>
<para>すべての利用可能な応答ステータスは以下の通りです。</para>
<rd>
: <link linkend="SMFIS-CONTINUE:CAPS"><literal>SMFIS_CONTINUE</literal></link>
   Continues processing the current message.

: <link linkend="SMFIS-REJECT:CAPS"><literal>SMFIS_REJECT</literal></link>
   Rejects the current message.

: <link linkend="SMFIS-DISCARD:CAPS"><literal>SMFIS_DISCARD</literal></link>
   Accepts the current message and discards it silently.

: <link linkend="SMFIS-ACCEPT:CAPS"><literal>SMFIS_ACCEPT</literal></link>
   Accepts the current envelope recipient.

: <link linkend="SMFIS-TEMPFAIL:CAPS"><literal>SMFIS_TEMPFAIL</literal></link>
   Rejects the current message with temporary
   failure. (i.e. 4xx status code in SMTP)

: <link linkend="SMFIS-NOREPLY:CAPS"><literal>SMFIS_NOREPLY</literal></link>
   Doesn't send a reply back to MTA.

   The milter must set <link linkend="SMFIP-NR-DATA:CAPS"><literal>SMFIP_NR_DATA</literal></link> flag to
   <link linkend="smfiDesc"><literal>smfiDesc</literal></link>::xxfi_flags.
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/xxfi_data"> xxfi_data</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>現在のmilterセッションのコンテキスト。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>応答ステータス。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="xxfi-negotiate" role="function">
<title>xxfi_negotiate ()</title>
<indexterm zone="xxfi-negotiate"><primary>xxfi_negotiate</primary></indexterm>
<programlisting language="C"><link linkend="sfsistat"><returnvalue>sfsistat</returnvalue></link>
<phrase role="c_punctuation">(</phrase>*xxfi_negotiate<phrase role="c_punctuation">)</phrase> (<parameter><link linkend="SMFICTX:CAPS"><type>SMFICTX</type></link> *context</parameter>,
                   <parameter><type>unsigned long </type> actions</parameter>,
                   <parameter><type>unsigned long </type> steps</parameter>,
                   <parameter><type>unsigned long </type> unused0</parameter>,
                   <parameter><type>unsigned long </type> unused1</parameter>,
                   <parameter>unsigned <link linkend="long"><type>long</type></link> *actions_output</parameter>,
                   <parameter>unsigned <link linkend="long"><type>long</type></link> *steps_output</parameter>,
                   <parameter>unsigned <link linkend="long"><type>long</type></link> *unused0_output</parameter>,
                   <parameter>unsigned <link linkend="long"><type>long</type></link> *unused1_output</parameter>);</programlisting>
<para>This callback is called on negotiate request from
MTA.  If you want to change received <parameter>actions</parameter>
 and
<parameter>steps</parameter>
 from MTA, you set <parameter>actions_output</parameter>
 and
<parameter>steps_output</parameter>
 and returns <link linkend="SMFIS-CONTINUE:CAPS"><literal>SMFIS_CONTINUE</literal></link>. If you
don't need to change <parameter>actions</parameter>
 and <parameter>steps</parameter>
, you can
just return <link linkend="SMFIS-ALL-OPTS:CAPS"><literal>SMFIS_ALL_OPTS</literal></link>.</para>
<para>すべての利用可能な応答ステータスは以下の通りです。</para>
<rd>
: <link linkend="SMFIS-ALL-OPTS:CAPS"><literal>SMFIS_ALL_OPTS</literal></link>
   Enables all available actions and steps.

: <link linkend="SMFIS-REJECT:CAPS"><literal>SMFIS_REJECT</literal></link>
   Rejects the current session.

: <link linkend="SMFIS-CONTINUE:CAPS"><literal>SMFIS_CONTINUE</literal></link>
   Continues processing the current session with
   <parameter>actions_output</parameter> and <parameter>steps_output</parameter>.
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/xxfi_negotiate"> xxfi_negotiate</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>現在のmilterセッションのコンテキスト。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>actions</para></entry>
<entry role="parameter_description"><para>MTAから受け取ったアクション。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>steps</para></entry>
<entry role="parameter_description"><para>MTAから提案されたmilterプロトコルの実行ステップ。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>unused0</para></entry>
<entry role="parameter_description"><para>使われません。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>unused1</para></entry>
<entry role="parameter_description"><para>使われません。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>actions_output</para></entry>
<entry role="parameter_description"><para>MTAに要求するアクション。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>steps_output</para></entry>
<entry role="parameter_description"><para>MTAに要求するmilterプロトコルの実行ステップ。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>unused0_output</para></entry>
<entry role="parameter_description"><para>使われません。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>unused1_output</para></entry>
<entry role="parameter_description"><para>使われません。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>応答ステータス。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="smfi-opensocket" role="function">
<title>smfi_opensocket ()</title>
<indexterm zone="smfi-opensocket"><primary>smfi_opensocket</primary></indexterm>
<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
smfi_opensocket (<parameter><link linkend="bool"><type>bool</type></link> remove_socket</parameter>);</programlisting>
<para>MTAからの接続されるソケットを作成します。</para>
<para>通常は、<link linkend="smfi-opensocket"><function>smfi_opensocket()</function></link>を明示的に呼ぶ必要はありません。ソケットは<link linkend="smfi-main"><function>smfi_main()</function></link>の中で暗黙的に作られます。</para>
<rd>
Here are the fail conditions:
  * <link linkend="smfi-register"><function>smfi_register()</function></link> hasn't called successfully.
  * <link linkend="smfi-setconn"><function>smfi_setconn()</function></link> hasn't called successfully.
  * <link linkend="smfi-opensocket"><function>smfi_opensocket()</function></link> fails to remove existing UNIX
    domain socket if connection spec is for UNIX domain
    socket and <parameter>remove_socket</parameter> is true.
  * <link linkend="smfi-opensocket"><function>smfi_opensocket()</function></link> fails to create the new socket.
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/smfi_opensocket"> smfi_opensocket</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>remove_socket</para></entry>
<entry role="parameter_description"><para>新しいソケットを作る前に、既存のUNIXドメインソケットを削除しようとするかどうか。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>成功した場合は<link linkend="MI-SUCCESS:CAPS"><literal>MI_SUCCESS</literal></link>、そうでない場合は<link linkend="MI-FAILURE:CAPS"><literal>MI_FAILURE</literal></link>。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="smfi-register" role="function">
<title>smfi_register ()</title>
<indexterm zone="smfi-register"><primary>smfi_register</primary></indexterm>
<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
smfi_register (<parameter><type>struct smfiDesc</type> description</parameter>);</programlisting>
<para>milterの実装をコールバックとして登録します。</para>
<rd>
Here are the fail conditions:
  * incompatible xxfi_version.
  * illegal xxfi_flags value.
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/smfi_register"> smfi_register</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>description</para></entry>
<entry role="parameter_description"><para>milterの説明。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>成功した場合は<link linkend="MI-SUCCESS:CAPS"><literal>MI_SUCCESS</literal></link>、そうでない場合は<link linkend="MI-FAILURE:CAPS"><literal>MI_FAILURE</literal></link>。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="smfi-main" role="function">
<title>smfi_main ()</title>
<indexterm zone="smfi-main"><primary>smfi_main</primary></indexterm>
<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
smfi_main (<parameter><type>void</type></parameter>);</programlisting>
<para>イベントループに入ります。milterは<link linkend="smfi-main"><function>smfi_main()</function></link>を呼ぶ前に、<link linkend="smfi-register"><function>smfi_register()</function></link>、<link linkend="smfi-setconn"><function>smfi_setconn()</function></link>などで初期化していなければいけません。</para>
<rd>
Here are the fail conditions:
  * failed to create the socket.
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/smfi_main"> smfi_main</ulink>も見てください。</para>
<refsect3 role="returns">
<title>Returns</title>
<para>成功した場合は<link linkend="MI-SUCCESS:CAPS"><literal>MI_SUCCESS</literal></link>、そうでない場合は<link linkend="MI-FAILURE:CAPS"><literal>MI_FAILURE</literal></link>。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="smfi-setbacklog" role="function">
<title>smfi_setbacklog ()</title>
<indexterm zone="smfi-setbacklog"><primary>smfi_setbacklog</primary></indexterm>
<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
smfi_setbacklog (<parameter><link linkend="int"><type>int</type></link> backlog</parameter>);</programlisting>
<para>listen(2)で使われるmilterの接続キューの最大長を設定します。</para>
<rd>
Here are the fail conditions:
  * <parameter>backlog</parameter> &lt;= 0.
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/smfi_setbacklog"> smfi_setbacklog</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>backlog</para></entry>
<entry role="parameter_description"><para>処理待ちの接続キューの最大長。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>成功した場合は<link linkend="MI-SUCCESS:CAPS"><literal>MI_SUCCESS</literal></link>、そうでない場合は<link linkend="MI-FAILURE:CAPS"><literal>MI_FAILURE</literal></link>。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="smfi-setdbg" role="function">
<title>smfi_setdbg ()</title>
<indexterm zone="smfi-setdbg"><primary>smfi_setdbg</primary></indexterm>
<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
smfi_setdbg (<parameter><link linkend="int"><type>int</type></link> level</parameter>);</programlisting>
<para>ログレベルを設定します。<parameter>level</parameter>が0ならすべてのログメッセージが抑制されます。大きい値を指定すればするほど多くのログメッセージが出力されます。</para>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/smfi_setdbg"> smfi_setdbg</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>level</para></entry>
<entry role="parameter_description"><para>ログレベル。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>常に<link linkend="MI-SUCCESS:CAPS"><literal>MI_SUCCESS</literal></link>。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="smfi-settimeout" role="function">
<title>smfi_settimeout ()</title>
<indexterm zone="smfi-settimeout"><primary>smfi_settimeout</primary></indexterm>
<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
smfi_settimeout (<parameter><link linkend="int"><type>int</type></link> timeout</parameter>);</programlisting>
<para>入出力のタイムアウト時間を秒で設定します。既定値は7210秒です。<parameter>timeout</parameter> == 0は待たないことを意味します。"永遠に待つ"ではありません。</para>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/smfi_settimeout"> smfi_settimeout</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>timeout</para></entry>
<entry role="parameter_description"><para>タイムアウト値を秒で指定します。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>常に<link linkend="MI-SUCCESS:CAPS"><literal>MI_SUCCESS</literal></link>。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="smfi-setconn" role="function">
<title>smfi_setconn ()</title>
<indexterm zone="smfi-setconn"><primary>smfi_setconn</primary></indexterm>
<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
smfi_setconn (<parameter><link linkend="char"><type>char</type></link> *connection_spec</parameter>);</programlisting>
<para>接続指定を設定します。</para>
<rd>
<parameter>connection_spec</parameter> format is one of them:
  * "unix:/PATH/TO/SOCKET": UNIX domain socket.
  * "inet:PORT", "inet:PORT&commat;HOST_NAME" or
    "inet:PORT&commat;IP_ADDRESS": IPv4.
  * "inet6:PORT", "inet6:PORT&commat;HOST_NAME" or
    "inet6:PORT&commat;IP_ADDRESS": IPv6.
</rd>
<rd>
Here are the fail conditions:
  * invalid format.
  * <parameter>connection_spec</parameter> is <link linkend="NULL:CAPS"><literal>NULL</literal></link>.
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/smfi_setconn"> smfi_setconn</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>connection_spec</para></entry>
<entry role="parameter_description"><para>MTAと通信するための接続指定。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>成功した場合は<link linkend="MI-SUCCESS:CAPS"><literal>MI_SUCCESS</literal></link>、そうでない場合は<link linkend="MI-FAILURE:CAPS"><literal>MI_FAILURE</literal></link>。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="smfi-stop" role="function">
<title>smfi_stop ()</title>
<indexterm zone="smfi-stop"><primary>smfi_stop</primary></indexterm>
<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
smfi_stop (<parameter><type>void</type></parameter>);</programlisting>
<para>milterを中止します。これ以上の接続を受け付けませんが、処理中の接続は最後まで続けます。</para>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/smfi_stop"> smfi_stop</ulink>も見てください。</para>
<refsect3 role="returns">
<title>Returns</title>
<para>常に<link linkend="MI-SUCCESS:CAPS"><literal>MI_SUCCESS</literal></link>。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="smfi-version" role="function">
<title>smfi_version ()</title>
<indexterm zone="smfi-version"><primary>smfi_version</primary></indexterm>
<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
smfi_version (<parameter>unsigned <link linkend="int"><type>int</type></link> *major</parameter>,
              <parameter>unsigned <link linkend="int"><type>int</type></link> *minor</parameter>,
              <parameter>unsigned <link linkend="int"><type>int</type></link> *patch_level</parameter>);</programlisting>
<para>libmilterのバージョンを取得します。バージョンはビルド時のlibmilterのバージョンではなくて、実行時に使用しているバージョンです。</para>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/smfi_version"> smfi_version</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>major</para></entry>
<entry role="parameter_description"><para>メジャーバージョンを返すアドレス。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>minor</para></entry>
<entry role="parameter_description"><para>マイナーバージョンを返すアドレス。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>patch_level</para></entry>
<entry role="parameter_description"><para>パッチレベルを返すアドレス。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>常に<link linkend="MI-SUCCESS:CAPS"><literal>MI_SUCCESS</literal></link>。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="smfi-getsymval" role="function">
<title>smfi_getsymval ()</title>
<indexterm zone="smfi-getsymval"><primary>smfi_getsymval</primary></indexterm>
<programlisting language="C"><link linkend="char"><returnvalue>char</returnvalue></link> *
smfi_getsymval (<parameter><link linkend="SMFICTX:CAPS"><type>SMFICTX</type></link> *context</parameter>,
                <parameter><link linkend="char"><type>char</type></link> *name</parameter>);</programlisting>
<para>現在のmilterセッションコンテキスト中での<parameter>name</parameter>というマクロ名の値を返します。<link linkend="smfi-getsymval"><function>smfi_getsymval()</function></link>はxxfi_XXXコールバックの中で使えます。（例えば、<link linkend="xxfi-connect"><function>xxfi_connect()</function></link>、<link linkend="xxfi-helo"><function>xxfi_helo()</function></link>など）</para>
<para><parameter>name</parameter>が"i"のように1文字でない場合は、"{if_name}"のようにかっこ（"{"と"}"）で囲みます。</para>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/smfi_getsymval"> smfi_getsymval</ulink>も見てください。Sendmailの既定のマクロもそのページに載っています。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>現在のmilterセッションのコンテキスト。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>name</para></entry>
<entry role="parameter_description"><para>マクロ名。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>もしあれば<parameter>name</parameter>というマクロ名の値、なければ<link linkend="NULL:CAPS"><literal>NULL</literal></link>。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="smfi-setreply" role="function">
<title>smfi_setreply ()</title>
<indexterm zone="smfi-setreply"><primary>smfi_setreply</primary></indexterm>
<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
smfi_setreply (<parameter><link linkend="SMFICTX:CAPS"><type>SMFICTX</type></link> *context</parameter>,
               <parameter><link linkend="char"><type>char</type></link> *return_code</parameter>,
               <parameter><link linkend="char"><type>char</type></link> *extended_code</parameter>,
               <parameter><link linkend="char"><type>char</type></link> *message</parameter>);</programlisting>
<para>エラー応答コードを設定します。4xx <parameter>return_code</parameter>は<link linkend="SMFIS-TEMPFAIL:CAPS"><literal>SMFIS_TEMPFAIL</literal></link>のときに使います。5xx <parameter>return_code</parameter>は<link linkend="SMFIS-REJECT:CAPS"><literal>SMFIS_REJECT</literal></link>のときに使います。</para>
<rd>
Here are the fail conditions:
  * <parameter>return_code</parameter> is neither 4xx nor 5xx.
  * <parameter>extended_code</parameter> is neither 4.x.x nor 5.x.x.
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/smfi_setreply"> smfi_setreply</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>現在のmilterセッションのコンテキスト。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>return_code</para></entry>
<entry role="parameter_description"><para>3桁のSMTPエラー応答コード。（RFC 2821）4xxと5xxだけが使えます。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>extended_code</para></entry>
<entry role="parameter_description"><para>拡張応答コード（RFC 1893/2034）または<link linkend="NULL:CAPS"><literal>NULL</literal></link>。4.x.xと5.x.xだけが使えます。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>message</para></entry>
<entry role="parameter_description"><para>SMTP応答のテキスト部分または<link linkend="NULL:CAPS"><literal>NULL</literal></link>。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>成功した場合は<link linkend="MI-SUCCESS:CAPS"><literal>MI_SUCCESS</literal></link>、そうでない場合は<link linkend="MI-FAILURE:CAPS"><literal>MI_FAILURE</literal></link>。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="smfi-setmlreply" role="function">
<title>smfi_setmlreply ()</title>
<indexterm zone="smfi-setmlreply"><primary>smfi_setmlreply</primary></indexterm>
<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
smfi_setmlreply (<parameter><link linkend="SMFICTX:CAPS"><type>SMFICTX</type></link> *context</parameter>,
                 <parameter>const <link linkend="char"><type>char</type></link> *return_code</parameter>,
                 <parameter>const <link linkend="char"><type>char</type></link> *extended_code</parameter>,
                 <parameter>...</parameter>);</programlisting>
<para>エラー応答コードを設定します。4xx <parameter>return_code</parameter>は<link linkend="SMFIS-TEMPFAIL:CAPS"><literal>SMFIS_TEMPFAIL</literal></link>のときに使います。5xx <parameter>return_code</parameter>は<link linkend="SMFIS-REJECT:CAPS"><literal>SMFIS_REJECT</literal></link>のときに使います。</para>
<rd>
Here are the fail conditions:
  * <parameter>return_code</parameter> is neither 4xx nor 5xx.
  * <parameter>extended_code</parameter> is neither 4.x.x nor 5.x.x.
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/smfi_setmlreply"> smfi_setmlreply</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>現在のmilterセッションのコンテキスト。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>return_code</para></entry>
<entry role="parameter_description"><para>3桁のSMTPエラー応答コード。（RFC 2821）4xxと5xxだけが使えます。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>extended_code</para></entry>
<entry role="parameter_description"><para>拡張応答コード（RFC 1893/2034）または<link linkend="NULL:CAPS"><literal>NULL</literal></link>。4.x.xと5.x.xだけが使えます。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>...</para></entry>
<entry role="parameter_description"><para>SMTP応答のテキスト部分の一行。最後に<link linkend="NULL:CAPS"><literal>NULL</literal></link>を指定すること。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>成功した場合は<link linkend="MI-SUCCESS:CAPS"><literal>MI_SUCCESS</literal></link>、そうでない場合は<link linkend="MI-FAILURE:CAPS"><literal>MI_FAILURE</literal></link>。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="smfi-addheader" role="function">
<title>smfi_addheader ()</title>
<indexterm zone="smfi-addheader"><primary>smfi_addheader</primary></indexterm>
<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
smfi_addheader (<parameter><link linkend="SMFICTX:CAPS"><type>SMFICTX</type></link> *context</parameter>,
                <parameter><link linkend="char"><type>char</type></link> *name</parameter>,
                <parameter><link linkend="char"><type>char</type></link> *value</parameter>);</programlisting>
<para>現在のメッセージのヘッダリストにヘッダを追加します。<link linkend="smfi-addheader"><function>smfi_addheader()</function></link>は<link linkend="xxfi-eom"><function>xxfi_eom()</function></link>の中で呼ぶことができます。</para>
<rd>
Here are the fail conditions:
  * <parameter>name</parameter> is <link linkend="NULL:CAPS"><literal>NULL</literal></link>.
  * <parameter>value</parameter> is <link linkend="NULL:CAPS"><literal>NULL</literal></link>.
  * called in except <link linkend="xxfi-eom"><function>xxfi_eom()</function></link>.
  * <link linkend="SMFIF-ADDHDRS:CAPS"><literal>SMFIF_ADDHDRS</literal></link> flag isn't set in <link linkend="smfi-register"><function>smfi_register()</function></link> or
    <link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>.
  * network error is occurred.
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/smfi_addheader"> smfi_addheader</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>現在のmilterセッションのコンテキスト。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>name</para></entry>
<entry role="parameter_description"><para>ヘッダ名。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>value</para></entry>
<entry role="parameter_description"><para>ヘッダ値。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>成功した場合は<link linkend="MI-SUCCESS:CAPS"><literal>MI_SUCCESS</literal></link>、そうでない場合は<link linkend="MI-FAILURE:CAPS"><literal>MI_FAILURE</literal></link>。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="smfi-chgheader" role="function">
<title>smfi_chgheader ()</title>
<indexterm zone="smfi-chgheader"><primary>smfi_chgheader</primary></indexterm>
<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
smfi_chgheader (<parameter><link linkend="SMFICTX:CAPS"><type>SMFICTX</type></link> *context</parameter>,
                <parameter><link linkend="char"><type>char</type></link> *name</parameter>,
                <parameter><link linkend="int"><type>int</type></link> index</parameter>,
                <parameter><link linkend="char"><type>char</type></link> *value</parameter>);</programlisting>
<para>Changes a header that is located at <parameter>index</parameter>
 in headers
that all of them are named <parameter>name</parameter>
. If <parameter>value</parameter>
 is <link linkend="NULL:CAPS"><literal>NULL</literal></link>, the
header is deleted. <link linkend="smfi-chgheader"><function>smfi_chgheader()</function></link> can be called in
<link linkend="xxfi-eom"><function>xxfi_eom()</function></link>.</para>
<rd>
Here are the fail conditions:
  * <parameter>name</parameter> is <link linkend="NULL:CAPS"><literal>NULL</literal></link>.
  * called in except <link linkend="xxfi-eom"><function>xxfi_eom()</function></link>. FIXME: not-implemented yet.
  * <link linkend="SMFIF-CHGHDRS:CAPS"><literal>SMFIF_CHGHDRS</literal></link> flag isn't set in <link linkend="smfi-register"><function>smfi_register()</function></link> or
    <link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>. FIXME: not-implemented yet.
  * network error is occurred.
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/smfi_chgheader"> smfi_chgheader</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>現在のmilterセッションのコンテキスト。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>name</para></entry>
<entry role="parameter_description"><para>ヘッダ名。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>index</para></entry>
<entry role="parameter_description"><para>the index of headers that all of them are named
<parameter>name</parameter>
. (1-based)</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>value</para></entry>
<entry role="parameter_description"><para>ヘッダ値。ターゲットのヘッダを削除する場合は<link linkend="NULL:CAPS"><literal>NULL</literal></link>を指定してください。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>成功した場合は<link linkend="MI-SUCCESS:CAPS"><literal>MI_SUCCESS</literal></link>、そうでない場合は<link linkend="MI-FAILURE:CAPS"><literal>MI_FAILURE</literal></link>。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="smfi-insheader" role="function">
<title>smfi_insheader ()</title>
<indexterm zone="smfi-insheader"><primary>smfi_insheader</primary></indexterm>
<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
smfi_insheader (<parameter><link linkend="SMFICTX:CAPS"><type>SMFICTX</type></link> *context</parameter>,
                <parameter><link linkend="int"><type>int</type></link> index</parameter>,
                <parameter><link linkend="char"><type>char</type></link> *name</parameter>,
                <parameter><link linkend="char"><type>char</type></link> *value</parameter>);</programlisting>
<para>ヘッダの<parameter>index</parameter>番目にヘッダを挿入します。<link linkend="smfi-insheader"><function>smfi_insheader()</function></link>は<link linkend="xxfi-eom"><function>xxfi_eom()</function></link>の中で呼ぶことができます。</para>
<rd>
Here are the fail conditions:
  * <parameter>name</parameter> is <link linkend="NULL:CAPS"><literal>NULL</literal></link>.
  * <parameter>value</parameter> is <link linkend="NULL:CAPS"><literal>NULL</literal></link>. FIXME: not-implemented yet.
  * called in except <link linkend="xxfi-eom"><function>xxfi_eom()</function></link>. FIXME: not-implemented yet.
  * <link linkend="SMFIF-ADDHDRS:CAPS"><literal>SMFIF_ADDHDRS</literal></link> flag isn't set in <link linkend="smfi-register"><function>smfi_register()</function></link> or
    <link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>. FIXME: not-implemented yet.
  * network error is occurred.
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/smfi_insheader"> smfi_insheader</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>現在のmilterセッションのコンテキスト。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>index</para></entry>
<entry role="parameter_description"><para>挿入されるヘッダの位置。0は先頭に追加するという意味になります。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>name</para></entry>
<entry role="parameter_description"><para>ヘッダ名。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>value</para></entry>
<entry role="parameter_description"><para>ヘッダ値。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>成功した場合は<link linkend="MI-SUCCESS:CAPS"><literal>MI_SUCCESS</literal></link>、そうでない場合は<link linkend="MI-FAILURE:CAPS"><literal>MI_FAILURE</literal></link>。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="smfi-chgfrom" role="function">
<title>smfi_chgfrom ()</title>
<indexterm zone="smfi-chgfrom"><primary>smfi_chgfrom</primary></indexterm>
<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
smfi_chgfrom (<parameter><link linkend="SMFICTX:CAPS"><type>SMFICTX</type></link> *context</parameter>,
              <parameter><link linkend="char"><type>char</type></link> *mail</parameter>,
              <parameter><link linkend="char"><type>char</type></link> *arguments</parameter>);</programlisting>
<para>送信者のアドレスを変更します。<link linkend="smfi-chgfrom"><function>smfi_chgfrom()</function></link>は<link linkend="xxfi-eom"><function>xxfi_eom()</function></link>の中で呼ぶことができます。</para>
<rd>
Here are the fail conditions:
  * <parameter>mail</parameter> is <link linkend="NULL:CAPS"><literal>NULL</literal></link>. FIXME: not-implemented yet.
  * called in except <link linkend="xxfi-eom"><function>xxfi_eom()</function></link>. FIXME: not-implemented yet.
  * <link linkend="SMFIF-CHGFROM:CAPS"><literal>SMFIF_CHGFROM</literal></link> flag isn't set in <link linkend="smfi-register"><function>smfi_register()</function></link> or
    <link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>. FIXME: not-implemented yet.
  * network error is occurred.
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/smfi_chgfrom"> smfi_chgfrom</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>現在のmilterセッションのコンテキスト。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>mail</para></entry>
<entry role="parameter_description"><para>新しい送信者のアドレス。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>arguments</para></entry>
<entry role="parameter_description"><para>ESMTPの追加の引数。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>成功した場合は<link linkend="MI-SUCCESS:CAPS"><literal>MI_SUCCESS</literal></link>、そうでない場合は<link linkend="MI-FAILURE:CAPS"><literal>MI_FAILURE</literal></link>。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="smfi-addrcpt" role="function">
<title>smfi_addrcpt ()</title>
<indexterm zone="smfi-addrcpt"><primary>smfi_addrcpt</primary></indexterm>
<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
smfi_addrcpt (<parameter><link linkend="SMFICTX:CAPS"><type>SMFICTX</type></link> *context</parameter>,
              <parameter><link linkend="char"><type>char</type></link> *recipient</parameter>);</programlisting>
<para>宛先アドレスを追加します。<link linkend="smfi-addrcpt"><function>smfi_addrcpt()</function></link>は<link linkend="xxfi-eom"><function>xxfi_eom()</function></link>の中で呼ぶことができます。</para>
<rd>
Here are the fail conditions:
  * <parameter>recipient</parameter> is <link linkend="NULL:CAPS"><literal>NULL</literal></link>. FIXME: not-implemented yet.
  * called in except <link linkend="xxfi-eom"><function>xxfi_eom()</function></link>. FIXME: not-implemented yet.
  * <link linkend="SMFIF-ADDRCPT:CAPS"><literal>SMFIF_ADDRCPT</literal></link> flag isn't set in <link linkend="smfi-register"><function>smfi_register()</function></link> or
    <link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>. FIXME: not-implemented yet.
  * network error is occurred.
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/smfi_addrcpt"> smfi_addrcpt</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>現在のmilterセッションのコンテキスト。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>recipient</para></entry>
<entry role="parameter_description"><para>新しい宛先アドレス。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>成功した場合は<link linkend="MI-SUCCESS:CAPS"><literal>MI_SUCCESS</literal></link>、そうでない場合は<link linkend="MI-FAILURE:CAPS"><literal>MI_FAILURE</literal></link>。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="smfi-addrcpt-par" role="function">
<title>smfi_addrcpt_par ()</title>
<indexterm zone="smfi-addrcpt-par"><primary>smfi_addrcpt_par</primary></indexterm>
<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
smfi_addrcpt_par (<parameter><link linkend="SMFICTX:CAPS"><type>SMFICTX</type></link> *context</parameter>,
                  <parameter><link linkend="char"><type>char</type></link> *recipient</parameter>,
                  <parameter><link linkend="char"><type>char</type></link> *arguments</parameter>);</programlisting>
<para>追加のESMTP引数付きで宛先アドレスを追加します。<link linkend="smfi-addrcpt-par"><function>smfi_addrcpt_par()</function></link>は<link linkend="xxfi-eom"><function>xxfi_eom()</function></link>の中で呼ぶことができます。</para>
<rd>
Here are the fail conditions:
  * <parameter>recipient</parameter> is <link linkend="NULL:CAPS"><literal>NULL</literal></link>. FIXME: not-implemented yet.
  * called in except <link linkend="xxfi-eom"><function>xxfi_eom()</function></link>. FIXME: not-implemented yet.
  * <link linkend="SMFIF-ADDRCPT-PAR:CAPS"><literal>SMFIF_ADDRCPT_PAR</literal></link> flag isn't set in <link linkend="smfi-register"><function>smfi_register()</function></link> or
    <link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>. FIXME: not-implemented yet.
  * network error is occurred.
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/smfi_addrcpt_par"> smfi_addrcpt_par</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>現在のmilterセッションのコンテキスト。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>recipient</para></entry>
<entry role="parameter_description"><para>宛先アドレス。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>arguments</para></entry>
<entry role="parameter_description"><para>ESMTPの追加の引数。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>成功した場合は<link linkend="MI-SUCCESS:CAPS"><literal>MI_SUCCESS</literal></link>、そうでない場合は<link linkend="MI-FAILURE:CAPS"><literal>MI_FAILURE</literal></link>。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="smfi-delrcpt" role="function">
<title>smfi_delrcpt ()</title>
<indexterm zone="smfi-delrcpt"><primary>smfi_delrcpt</primary></indexterm>
<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
smfi_delrcpt (<parameter><link linkend="SMFICTX:CAPS"><type>SMFICTX</type></link> *context</parameter>,
              <parameter><link linkend="char"><type>char</type></link> *recipient</parameter>);</programlisting>
<para>宛先のアドレスを削除します。<link linkend="smfi-delrcpt"><function>smfi_delrcpt()</function></link>は<link linkend="xxfi-eom"><function>xxfi_eom()</function></link>の中で呼ぶことができます。</para>
<rd>
Here are the fail conditions:
  * <parameter>recipient</parameter> is <link linkend="NULL:CAPS"><literal>NULL</literal></link>. FIXME: not-implemented yet.
  * called in except <link linkend="xxfi-eom"><function>xxfi_eom()</function></link>. FIXME: not-implemented yet.
  * <link linkend="SMFIF-DELRCPT:CAPS"><literal>SMFIF_DELRCPT</literal></link> flag isn't set in <link linkend="smfi-register"><function>smfi_register()</function></link> or
    <link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>. FIXME: not-implemented yet.
  * network error is occurred.
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/smfi_delrcpt"> smfi_delrcpt</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>現在のmilterセッションのコンテキスト。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>recipient</para></entry>
<entry role="parameter_description"><para>宛先アドレス。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>成功した場合は<link linkend="MI-SUCCESS:CAPS"><literal>MI_SUCCESS</literal></link>、そうでない場合は<link linkend="MI-FAILURE:CAPS"><literal>MI_FAILURE</literal></link>。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="smfi-progress" role="function">
<title>smfi_progress ()</title>
<indexterm zone="smfi-progress"><primary>smfi_progress</primary></indexterm>
<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
smfi_progress (<parameter><link linkend="SMFICTX:CAPS"><type>SMFICTX</type></link> *context</parameter>);</programlisting>
<para>現在の接続を維持します。<link linkend="smfi-progress"><function>smfi_progress()</function></link>は<link linkend="xxfi-eom"><function>xxfi_eom()</function></link>の中で呼ぶことができます。</para>
<rd>
Here are the fail conditions:
  * called in except <link linkend="xxfi-eom"><function>xxfi_eom()</function></link>. FIXME: not-implemented yet.
  * network error is occurred.
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/smfi_progress"> smfi_progress</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>現在のmilterセッションのコンテキスト。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>成功した場合は<link linkend="MI-SUCCESS:CAPS"><literal>MI_SUCCESS</literal></link>、そうでない場合は<link linkend="MI-FAILURE:CAPS"><literal>MI_FAILURE</literal></link>。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="smfi-replacebody" role="function">
<title>smfi_replacebody ()</title>
<indexterm zone="smfi-replacebody"><primary>smfi_replacebody</primary></indexterm>
<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
smfi_replacebody (<parameter><link linkend="SMFICTX:CAPS"><type>SMFICTX</type></link> *context</parameter>,
                  <parameter>unsigned <link linkend="char"><type>char</type></link> *new_body</parameter>,
                  <parameter><link linkend="int"><type>int</type></link> new_body_size</parameter>);</programlisting>
<para>Replaces the current body data with
<parameter>new_body</parameter>
. <link linkend="smfi-replacebody"><function>smfi_replacebody()</function></link> can be called in
<link linkend="xxfi-eom"><function>xxfi_eom()</function></link>.</para>
<rd>
Here are the fail conditions:
  * <parameter>new_body</parameter> == <link linkend="NULL:CAPS"><literal>NULL</literal></link> and <parameter>new_body_size</parameter> &gt; 0. FIXME:
    not-implemented yet.
  * called in except <link linkend="xxfi-eom"><function>xxfi_eom()</function></link>. FIXME: not-implemented yet.
  * <link linkend="SMFIF-CHGBODY:CAPS"><literal>SMFIF_CHGBODY</literal></link> flag isn't set in <link linkend="smfi-register"><function>smfi_register()</function></link> or
    <link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>. FIXME: not-implemented yet.
  * network error is occurred.
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/smfi_replacebody"> smfi_replacebody</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>現在のmilterセッションのコンテキスト。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>new_body</para></entry>
<entry role="parameter_description"><para>新しい本文のデータ。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>new_body_size</para></entry>
<entry role="parameter_description"><para>the size of <parameter>new_body</parameter>
.</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>成功した場合は<link linkend="MI-SUCCESS:CAPS"><literal>MI_SUCCESS</literal></link>、そうでない場合は<link linkend="MI-FAILURE:CAPS"><literal>MI_FAILURE</literal></link>。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="smfi-quarantine" role="function">
<title>smfi_quarantine ()</title>
<indexterm zone="smfi-quarantine"><primary>smfi_quarantine</primary></indexterm>
<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
smfi_quarantine (<parameter><link linkend="SMFICTX:CAPS"><type>SMFICTX</type></link> *context</parameter>,
                 <parameter><link linkend="char"><type>char</type></link> *reason</parameter>);</programlisting>
<para>Quarantines the current message with
<parameter>reason</parameter>
. <link linkend="smfi-quarantine"><function>smfi_quarantine()</function></link> can be called in <link linkend="xxfi-eom"><function>xxfi_eom()</function></link>.</para>
<rd>
Here are the fail conditions:
  * <parameter>reason</parameter> is <link linkend="NULL:CAPS"><literal>NULL</literal></link> or empty. FIXME: not-implemented yet.
  * called in except <link linkend="xxfi-eom"><function>xxfi_eom()</function></link>. FIXME: not-implemented yet.
  * <link linkend="SMFIF-QUARANTINE:CAPS"><literal>SMFIF_QUARANTINE</literal></link> flag isn't set in <link linkend="smfi-register"><function>smfi_register()</function></link> or
    <link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>. FIXME: not-implemented yet.
  * network error is occurred.
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/smfi_quarantine"> smfi_quarantine</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>現在のmilterセッションのコンテキスト。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>reason</para></entry>
<entry role="parameter_description"><para>隔離理由。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>成功した場合は<link linkend="MI-SUCCESS:CAPS"><literal>MI_SUCCESS</literal></link>、そうでない場合は<link linkend="MI-FAILURE:CAPS"><literal>MI_FAILURE</literal></link>。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="smfi-setpriv" role="function">
<title>smfi_setpriv ()</title>
<indexterm zone="smfi-setpriv"><primary>smfi_setpriv</primary></indexterm>
<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
smfi_setpriv (<parameter><link linkend="SMFICTX:CAPS"><type>SMFICTX</type></link> *context</parameter>,
              <parameter><link linkend="void"><type>void</type></link> *data</parameter>);</programlisting>
<para>プライベートなデータを設定します。</para>
<rd>
Here are the fail conditions:
  * <parameter>context</parameter> is invalid. FIXME: not-implemented yet.
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/smfi_setpriv"> smfi_setpriv</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>現在のmilterセッションのコンテキスト。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>data</para></entry>
<entry role="parameter_description"><para>プライベートなデータ。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>成功した場合は<link linkend="MI-SUCCESS:CAPS"><literal>MI_SUCCESS</literal></link>、そうでない場合は<link linkend="MI-FAILURE:CAPS"><literal>MI_FAILURE</literal></link>。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="smfi-getpriv" role="function">
<title>smfi_getpriv ()</title>
<indexterm zone="smfi-getpriv"><primary>smfi_getpriv</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link> *
smfi_getpriv (<parameter><link linkend="SMFICTX:CAPS"><type>SMFICTX</type></link> *context</parameter>);</programlisting>
<para>プライベートなデータを取得します。</para>
<rd>
Here are the fail conditions:
  * <parameter>context</parameter> is invalid. FIXME: not-implemented yet.
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/smfi_getpriv"> smfi_getpriv</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>現在のmilterセッションのコンテキスト。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para><link linkend="smfi-setpriv"><function>smfi_setpriv()</function></link>で設定したプライベートなデータか<link linkend="NULL:CAPS"><literal>NULL</literal></link>。</para>
<para/>
</refsect3></refsect2>
<refsect2 id="smfi-setsymlist" role="function">
<title>smfi_setsymlist ()</title>
<indexterm zone="smfi-setsymlist"><primary>smfi_setsymlist</primary></indexterm>
<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
smfi_setsymlist (<parameter><link linkend="SMFICTX:CAPS"><type>SMFICTX</type></link> *context</parameter>,
                 <parameter><link linkend="int"><type>int</type></link> state</parameter>,
                 <parameter><link linkend="char"><type>char</type></link> *macros</parameter>);</programlisting>
<para>要求するマクロのリストを設定します。<link linkend="smfi-setsymlist"><function>smfi_setsymlist()</function></link>は<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>の中で呼ぶことができます。</para>
<rd>
Here are the fail conditions:
  * <parameter>state</parameter> is not a valid value. FIXME: not-implemented yet.
  * <parameter>macros</parameter> is <link linkend="NULL:CAPS"><literal>NULL</literal></link> or empty. FIXME: not-implemented yet.
  * the macro list for <parameter>state</parameter> has been set before. FIXME:
    not-implemented yet.
  * called in except <link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>. FIXME: not-implemented yet.
  * network error is occurred.
</rd>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/smfi_setsymlist"> smfi_setsymlist</ulink>も見てください。</para>
<refsect3 role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>context</para></entry>
<entry role="parameter_description"><para>現在のmilterセッションのコンテキスト。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>state</para></entry>
<entry role="parameter_description"><para><link linkend="SMFIM-CONNECT:CAPS"><literal>SMFIM_CONNECT</literal></link>のようなSMFIM_XXXとして定義された状態。</para></entry>
<entry role="parameter_annotations"/></row>
<row><entry role="parameter_name"><para>macros</para></entry>
<entry role="parameter_description"><para>"{rcpt_mailer} {rcpt_host}"のような空白で区切られたマクロ名のリスト。</para></entry>
<entry role="parameter_annotations"/></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 role="returns">
<title>Returns</title>
<para>成功した場合は<link linkend="MI-SUCCESS:CAPS"><literal>MI_SUCCESS</literal></link>、そうでない場合は<link linkend="MI-FAILURE:CAPS"><literal>MI_FAILURE</literal></link>。</para>
<para/>
</refsect3></refsect2>

</refsect1>
<refsect1 id="milter-manager-libmilter/mfapi.h.other_details" role="details">
<title role="details.title">Types and Values</title>
<refsect2 id="SMFI-VERSION:CAPS" role="macro">
<title>SMFI_VERSION</title>
<indexterm zone="SMFI-VERSION:CAPS"><primary>SMFI_VERSION</primary></indexterm>
<programlisting language="C">#  define SMFI_VERSION 0x01000001
</programlisting>
<para>libmilterのバージョン番号。</para>
</refsect2>
<refsect2 id="MI-SUCCESS:CAPS" role="macro">
<title>MI_SUCCESS</title>
<indexterm zone="MI-SUCCESS:CAPS"><primary>MI_SUCCESS</primary></indexterm>
<programlisting language="C">#define MI_SUCCESS 0
</programlisting>
<para>操作が成功したことを示します。</para>
</refsect2>
<refsect2 id="MI-FAILURE:CAPS" role="macro">
<title>MI_FAILURE</title>
<indexterm zone="MI-FAILURE:CAPS"><primary>MI_FAILURE</primary></indexterm>
<programlisting language="C">#define MI_FAILURE (-1)
</programlisting>
<para>操作が失敗したことを示します。</para>
</refsect2>
<refsect2 id="SMFICTX:CAPS" role="typedef">
<title>SMFICTX</title>
<indexterm zone="SMFICTX:CAPS"><primary>SMFICTX</primary></indexterm>
<programlisting language="C">typedef struct smfi_str  SMFICTX;
</programlisting>
<para>milterセッションの情報を持っています。<link linkend="SMFICTX:CAPS"><literal>SMFICTX</literal></link>は各milterセッション毎に作成されます。<link linkend="SMFICTX:CAPS"><literal>SMFICTX</literal></link>はlibmilter APIの中でもっとも重要なオブジェクトです。</para>
</refsect2>
<refsect2 id="SMFICTX-PTR:CAPS" role="typedef">
<title>SMFICTX_PTR</title>
<indexterm zone="SMFICTX-PTR:CAPS"><primary>SMFICTX_PTR</primary></indexterm>
<programlisting language="C">typedef struct smfi_str *SMFICTX_PTR;
</programlisting>
<para><link linkend="SMFICTX:CAPS"><literal>SMFICTX</literal></link>のポインタ型。</para>
</refsect2>
<refsect2 id="smfiDesc-str" role="typedef">
<title>smfiDesc_str</title>
<indexterm zone="smfiDesc-str"><primary>smfiDesc_str</primary></indexterm>
<programlisting language="C">typedef struct smfiDesc smfiDesc_str;
</programlisting>
<para>milterの情報を持っています。<link linkend="smfi-register"><function>smfi_register()</function></link>で<link linkend="smfiDesc-str"><literal>smfiDesc_str</literal></link>使います。</para>
</refsect2>
<refsect2 id="smfiDesc-ptr" role="typedef">
<title>smfiDesc_ptr</title>
<indexterm zone="smfiDesc-ptr"><primary>smfiDesc_ptr</primary></indexterm>
<programlisting language="C">typedef struct smfiDesc *smfiDesc_ptr;
</programlisting>
<para><link linkend="smfiDesc-str"><literal>smfiDesc_str</literal></link>のポインタ型です。</para>
</refsect2>
<refsect2 id="sfsistat" role="typedef">
<title>sfsistat</title>
<indexterm zone="sfsistat"><primary>sfsistat</primary></indexterm>
<programlisting language="C">typedef int sfsistat;
</programlisting>
<para>コールバックが返す応答ステータスを示します。</para>
<rd>
Available response status is one of the followings:

  * <link linkend="SMFIS-CONTINUE:CAPS"><literal>SMFIS_CONTINUE</literal></link>
  * <link linkend="SMFIS-REJECT:CAPS"><literal>SMFIS_REJECT</literal></link>
  * <link linkend="SMFIS-DISCARD:CAPS"><literal>SMFIS_DISCARD</literal></link>
  * <link linkend="SMFIS-ACCEPT:CAPS"><literal>SMFIS_ACCEPT</literal></link>
  * <link linkend="SMFIS-TEMPFAIL:CAPS"><literal>SMFIS_TEMPFAIL</literal></link>
  * <link linkend="SMFIS-NOREPLY:CAPS"><literal>SMFIS_NOREPLY</literal></link>
  * <link linkend="SMFIS-SKIP:CAPS"><literal>SMFIS_SKIP</literal></link>
  * <link linkend="SMFIS-ALL-OPTS:CAPS"><literal>SMFIS_ALL_OPTS</literal></link>
</rd>
</refsect2>
<refsect2 id="bool" role="macro">
<title>bool</title>
<indexterm zone="bool"><primary>bool</primary></indexterm>
<programlisting language="C">#      define bool int
</programlisting>
<para>真偽値型。</para>
</refsect2>
<refsect2 id="true" role="macro">
<title>true</title>
<indexterm zone="true"><primary>true</primary></indexterm>
<programlisting language="C">#      define true 1
</programlisting>
<para>真の値。</para>
</refsect2>
<refsect2 id="false" role="macro">
<title>false</title>
<indexterm zone="false"><primary>false</primary></indexterm>
<programlisting language="C">#      define false 0
</programlisting>
<para>偽の値。</para>
</refsect2>
<refsect2 id="SMFIF-ADDHDRS:CAPS" role="macro">
<title>SMFIF_ADDHDRS</title>
<indexterm zone="SMFIF-ADDHDRS:CAPS"><primary>SMFIF_ADDHDRS</primary></indexterm>
<programlisting language="C">#define SMFIF_ADDHDRS     0x00000001L
</programlisting>
<para>milterは<link linkend="smfi-addheader"><function>smfi_addheader()</function></link>を呼ぶかもしれません。</para>
<para><link linkend="smfiDesc"><literal>smfiDesc</literal></link>と<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>と<ulink url="https://www.milter.org/developers/api/smfi_register">milter.orgのsmfi_register</ulink>も見てください。</para>
</refsect2>
<refsect2 id="SMFIF-CHGBODY:CAPS" role="macro">
<title>SMFIF_CHGBODY</title>
<indexterm zone="SMFIF-CHGBODY:CAPS"><primary>SMFIF_CHGBODY</primary></indexterm>
<programlisting language="C">#define SMFIF_CHGBODY     0x00000002L
</programlisting>
<para>milterは<link linkend="smfi-chgbody"><function>smfi_chgbody()</function></link>を呼ぶかもしれません。</para>
<para><link linkend="smfiDesc"><literal>smfiDesc</literal></link>と<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>と<ulink url="https://www.milter.org/developers/api/smfi_register">milter.orgのsmfi_register</ulink>も見てください。</para>
</refsect2>
<refsect2 id="SMFIF-MODBODY:CAPS" role="macro">
<title>SMFIF_MODBODY</title>
<indexterm zone="SMFIF-MODBODY:CAPS"><primary>SMFIF_MODBODY</primary></indexterm>
<programlisting language="C">#define SMFIF_MODBODY     SMFIF_CHGBODY
</programlisting>
<para><link linkend="SMFIF-CHGBODY:CAPS"><literal>SMFIF_CHGBODY</literal></link>と同じ。</para>
</refsect2>
<refsect2 id="SMFIF-ADDRCPT:CAPS" role="macro">
<title>SMFIF_ADDRCPT</title>
<indexterm zone="SMFIF-ADDRCPT:CAPS"><primary>SMFIF_ADDRCPT</primary></indexterm>
<programlisting language="C">#define SMFIF_ADDRCPT     0x00000004L
</programlisting>
<para>milterは<link linkend="smfi-addrcpt"><function>smfi_addrcpt()</function></link>を呼ぶかもしれません。</para>
<para><link linkend="smfiDesc"><literal>smfiDesc</literal></link>と<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>と<ulink url="https://www.milter.org/developers/api/smfi_register">milter.orgのsmfi_register</ulink>も見てください。</para>
</refsect2>
<refsect2 id="SMFIF-DELRCPT:CAPS" role="macro">
<title>SMFIF_DELRCPT</title>
<indexterm zone="SMFIF-DELRCPT:CAPS"><primary>SMFIF_DELRCPT</primary></indexterm>
<programlisting language="C">#define SMFIF_DELRCPT     0x00000008L
</programlisting>
<para>milterは<link linkend="smfi-delrcpt"><function>smfi_delrcpt()</function></link>を呼ぶかもしれません。</para>
<para><link linkend="smfiDesc"><literal>smfiDesc</literal></link>と<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>と<ulink url="https://www.milter.org/developers/api/smfi_register">milter.orgのsmfi_register</ulink>も見てください。</para>
</refsect2>
<refsect2 id="SMFIF-CHGHDRS:CAPS" role="macro">
<title>SMFIF_CHGHDRS</title>
<indexterm zone="SMFIF-CHGHDRS:CAPS"><primary>SMFIF_CHGHDRS</primary></indexterm>
<programlisting language="C">#define SMFIF_CHGHDRS     0x00000010L
</programlisting>
<para>milterは<link linkend="smfi-chgheader"><function>smfi_chgheader()</function></link>を呼ぶかもしれません。</para>
<para><link linkend="smfiDesc"><literal>smfiDesc</literal></link>と<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>と<ulink url="https://www.milter.org/developers/api/smfi_register">milter.orgのsmfi_register</ulink>も見てください。</para>
</refsect2>
<refsect2 id="SMFIF-QUARANTINE:CAPS" role="macro">
<title>SMFIF_QUARANTINE</title>
<indexterm zone="SMFIF-QUARANTINE:CAPS"><primary>SMFIF_QUARANTINE</primary></indexterm>
<programlisting language="C">#define SMFIF_QUARANTINE  0x00000020L
</programlisting>
<para>milterは<link linkend="smfi-quarantine"><function>smfi_quarantine()</function></link>を呼ぶかもしれません。</para>
<para><link linkend="smfiDesc"><literal>smfiDesc</literal></link>と<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>と<ulink url="https://www.milter.org/developers/api/smfi_register">milter.orgのsmfi_register</ulink>も見てください。</para>
</refsect2>
<refsect2 id="SMFIF-CHGFROM:CAPS" role="macro">
<title>SMFIF_CHGFROM</title>
<indexterm zone="SMFIF-CHGFROM:CAPS"><primary>SMFIF_CHGFROM</primary></indexterm>
<programlisting language="C">#define SMFIF_CHGFROM     0x00000040L
</programlisting>
<para>milterは<link linkend="smfi-chgfrom"><function>smfi_chgfrom()</function></link>を呼ぶかもしれません。</para>
<para><link linkend="smfiDesc"><literal>smfiDesc</literal></link>と<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>と<ulink url="https://www.milter.org/developers/api/smfi_register">milter.orgのsmfi_register</ulink>も見てください。</para>
</refsect2>
<refsect2 id="SMFIF-ADDRCPT-PAR:CAPS" role="macro">
<title>SMFIF_ADDRCPT_PAR</title>
<indexterm zone="SMFIF-ADDRCPT-PAR:CAPS"><primary>SMFIF_ADDRCPT_PAR</primary></indexterm>
<programlisting language="C">#define SMFIF_ADDRCPT_PAR 0x00000080L
</programlisting>
<para>milterは<link linkend="smfi-addrcpt-par"><function>smfi_addrcpt_par()</function></link>を呼ぶかもしれません。</para>
<para><link linkend="smfiDesc"><literal>smfiDesc</literal></link>と<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>と<ulink url="https://www.milter.org/developers/api/smfi_register">milter.orgのsmfi_register</ulink>も見てください。</para>
</refsect2>
<refsect2 id="SMFIF-SETSYMLIST:CAPS" role="macro">
<title>SMFIF_SETSYMLIST</title>
<indexterm zone="SMFIF-SETSYMLIST:CAPS"><primary>SMFIF_SETSYMLIST</primary></indexterm>
<programlisting language="C">#define SMFIF_SETSYMLIST  0x00000100L
</programlisting>
<para>milterは<link linkend="smfi-setsymlist"><function>smfi_setsymlist()</function></link>を呼ぶかもしれません。</para>
<para><link linkend="smfiDesc"><literal>smfiDesc</literal></link>と<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>と<ulink url="https://www.milter.org/developers/api/smfi_register">milter.orgのsmfi_register</ulink>も見てください。</para>
</refsect2>
<refsect2 id="SMFIS-CONTINUE:CAPS" role="macro">
<title>SMFIS_CONTINUE</title>
<indexterm zone="SMFIS-CONTINUE:CAPS"><primary>SMFIS_CONTINUE</primary></indexterm>
<programlisting language="C">#define SMFIS_CONTINUE    0
</programlisting>
<para>現在の処理を継続します。</para>
<para>各コールバック（<link linkend="xxfi-connect"><function>xxfi_connect()</function></link>、<link linkend="xxfi-helo"><function>xxfi_helo()</function></link>など）とmilter.orgの<ulink url="https://www.milter.org/developers/api/#conn-spec">コールバックの返値の説明</ulink>も見てください。</para>
</refsect2>
<refsect2 id="SMFIS-REJECT:CAPS" role="macro">
<title>SMFIS_REJECT</title>
<indexterm zone="SMFIS-REJECT:CAPS"><primary>SMFIS_REJECT</primary></indexterm>
<programlisting language="C">#define SMFIS_REJECT      1
</programlisting>
<para>現在処理中のターゲットを拒否します。</para>
<para>各コールバック（<link linkend="xxfi-connect"><function>xxfi_connect()</function></link>、<link linkend="xxfi-helo"><function>xxfi_helo()</function></link>など）とmilter.orgの<ulink url="https://www.milter.org/developers/api/#conn-spec">コールバックの返値の説明</ulink>も見てください。</para>
</refsect2>
<refsect2 id="SMFIS-DISCARD:CAPS" role="macro">
<title>SMFIS_DISCARD</title>
<indexterm zone="SMFIS-DISCARD:CAPS"><primary>SMFIS_DISCARD</primary></indexterm>
<programlisting language="C">#define SMFIS_DISCARD     2
</programlisting>
<para>現在処理中のターゲットを受け入れて、だまって破棄します。</para>
<para>各コールバック（<link linkend="xxfi-envfrom"><function>xxfi_envfrom()</function></link>、<link linkend="xxfi-envrcpt"><function>xxfi_envrcpt()</function></link>など）とmiler.orgの<ulink url="https://www.milter.org/developers/api/#conn-spec">コールバックの返値の説明</ulink>も見てください。</para>
</refsect2>
<refsect2 id="SMFIS-ACCEPT:CAPS" role="macro">
<title>SMFIS_ACCEPT</title>
<indexterm zone="SMFIS-ACCEPT:CAPS"><primary>SMFIS_ACCEPT</primary></indexterm>
<programlisting language="C">#define SMFIS_ACCEPT      3
</programlisting>
<para>現在処理中のターゲットを受け入れます。</para>
<para>各コールバック（<link linkend="xxfi-connect"><function>xxfi_connect()</function></link>、<link linkend="xxfi-helo"><function>xxfi_helo()</function></link>など）とmilter.orgの<ulink url="https://www.milter.org/developers/api/#conn-spec">コールバックの返値の説明</ulink>も見てください。</para>
</refsect2>
<refsect2 id="SMFIS-TEMPFAIL:CAPS" role="macro">
<title>SMFIS_TEMPFAIL</title>
<indexterm zone="SMFIS-TEMPFAIL:CAPS"><primary>SMFIS_TEMPFAIL</primary></indexterm>
<programlisting language="C">#define SMFIS_TEMPFAIL    4
</programlisting>
<para>現在のターゲットに対して、一時的な障害ステータスを返します。</para>
<para>各コールバック（<link linkend="xxfi-connect"><function>xxfi_connect()</function></link>、<link linkend="xxfi-helo"><function>xxfi_helo()</function></link>など）とmilter.orgの<ulink url="https://www.milter.org/developers/api/#conn-spec">コールバックの返値の説明</ulink>も見てください。</para>
</refsect2>
<refsect2 id="SMFIS-NOREPLY:CAPS" role="macro">
<title>SMFIS_NOREPLY</title>
<indexterm zone="SMFIS-NOREPLY:CAPS"><primary>SMFIS_NOREPLY</primary></indexterm>
<programlisting language="C">#define SMFIS_NOREPLY     7
</programlisting>
<para>MTAに返答しません。</para>
<para>各コールバック（<link linkend="xxfi-connect"><function>xxfi_connect()</function></link>、<link linkend="xxfi-helo"><function>xxfi_helo()</function></link>など）とmilter.orgの<ulink url="https://www.milter.org/developers/api/#conn-spec">コールバックの返値の説明</ulink>も見てください。</para>
</refsect2>
<refsect2 id="SMFIS-SKIP:CAPS" role="macro">
<title>SMFIS_SKIP</title>
<indexterm zone="SMFIS-SKIP:CAPS"><primary>SMFIS_SKIP</primary></indexterm>
<programlisting language="C">#define SMFIS_SKIP        8
</programlisting>
<para>残りの本文を省略します。<link linkend="xxfi-body"><function>xxfi_body()</function></link>の中でだけ使えます。</para>
<para>milter.orgの<ulink url="https://www.milter.org/developers/api/#conn-spec">コールバックの返値の説明</ulink>も見てください。</para>
</refsect2>
<refsect2 id="SMFIS-ALL-OPTS:CAPS" role="macro">
<title>SMFIS_ALL_OPTS</title>
<indexterm zone="SMFIS-ALL-OPTS:CAPS"><primary>SMFIS_ALL_OPTS</primary></indexterm>
<programlisting language="C">#define SMFIS_ALL_OPTS    10
</programlisting>
<para>MTAから受け取ったすべてのネゴシエーションオプションを使います。これは<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>の中でだけ使えます。</para>
</refsect2>
<refsect2 id="SMFIM-CONNECT:CAPS" role="macro">
<title>SMFIM_CONNECT</title>
<indexterm zone="SMFIM-CONNECT:CAPS"><primary>SMFIM_CONNECT</primary></indexterm>
<programlisting language="C">#define SMFIM_CONNECT	  0
</programlisting>
<para><link linkend="xxfi-connect"><function>xxfi_connect()</function></link>のプロトコル段階であることを示します。</para>
<para><link linkend="smfi-setsymlist"><function>smfi_setsymlist()</function></link>も見てください。</para>
</refsect2>
<refsect2 id="SMFIM-HELO:CAPS" role="macro">
<title>SMFIM_HELO</title>
<indexterm zone="SMFIM-HELO:CAPS"><primary>SMFIM_HELO</primary></indexterm>
<programlisting language="C">#define SMFIM_HELO	  1
</programlisting>
<para><link linkend="xxfi-helo"><function>xxfi_helo()</function></link>のプロトコル段階であることを示します。</para>
<para><link linkend="smfi-setsymlist"><function>smfi_setsymlist()</function></link>も見てください。</para>
</refsect2>
<refsect2 id="SMFIM-ENVFROM:CAPS" role="macro">
<title>SMFIM_ENVFROM</title>
<indexterm zone="SMFIM-ENVFROM:CAPS"><primary>SMFIM_ENVFROM</primary></indexterm>
<programlisting language="C">#define SMFIM_ENVFROM	  2
</programlisting>
<para><link linkend="xxfi-envfrom"><function>xxfi_envfrom()</function></link>のプロトコル段階であることを示します。</para>
<para><link linkend="smfi-setsymlist"><function>smfi_setsymlist()</function></link>も見てください。</para>
</refsect2>
<refsect2 id="SMFIM-ENVRCPT:CAPS" role="macro">
<title>SMFIM_ENVRCPT</title>
<indexterm zone="SMFIM-ENVRCPT:CAPS"><primary>SMFIM_ENVRCPT</primary></indexterm>
<programlisting language="C">#define SMFIM_ENVRCPT	  3
</programlisting>
<para><link linkend="xxfi-envrcpt"><function>xxfi_envrcpt()</function></link>のプロトコル段階であることを示します。</para>
<para><link linkend="smfi-setsymlist"><function>smfi_setsymlist()</function></link>も見てください。</para>
</refsect2>
<refsect2 id="SMFIM-DATA:CAPS" role="macro">
<title>SMFIM_DATA</title>
<indexterm zone="SMFIM-DATA:CAPS"><primary>SMFIM_DATA</primary></indexterm>
<programlisting language="C">#define SMFIM_DATA	  4
</programlisting>
<para><link linkend="xxfi-data"><function>xxfi_data()</function></link>のプロトコル段階であることを示します。</para>
<para><link linkend="smfi-setsymlist"><function>smfi_setsymlist()</function></link>も見てください。</para>
</refsect2>
<refsect2 id="SMFIM-EOM:CAPS" role="macro">
<title>SMFIM_EOM</title>
<indexterm zone="SMFIM-EOM:CAPS"><primary>SMFIM_EOM</primary></indexterm>
<programlisting language="C">#define SMFIM_EOM	  5
</programlisting>
<para><link linkend="xxfi-eom"><function>xxfi_eom()</function></link>のプロトコル段階であることを示します。</para>
<para><link linkend="smfi-setsymlist"><function>smfi_setsymlist()</function></link>も見てください。</para>
</refsect2>
<refsect2 id="SMFIM-EOH:CAPS" role="macro">
<title>SMFIM_EOH</title>
<indexterm zone="SMFIM-EOH:CAPS"><primary>SMFIM_EOH</primary></indexterm>
<programlisting language="C">#define SMFIM_EOH	  6
</programlisting>
<para><link linkend="xxfi-eoh"><function>xxfi_eoh()</function></link>のプロトコル段階であることを示します。</para>
<para><link linkend="smfi-setsymlist"><function>smfi_setsymlist()</function></link>も見てください。</para>
</refsect2>
<refsect2 id="SMFIP-NOCONNECT:CAPS" role="macro">
<title>SMFIP_NOCONNECT</title>
<indexterm zone="SMFIP-NOCONNECT:CAPS"><primary>SMFIP_NOCONNECT</primary></indexterm>
<programlisting language="C">#define SMFIP_NOCONNECT       0x00000001L
</programlisting>
<para>MTAは<link linkend="xxfi-connect"><function>xxfi_connect()</function></link>の情報を送信しないことを示します。</para>
<para>このフラグは<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>の<parameter>steps_output</parameter>で取得・設定できます。</para>
</refsect2>
<refsect2 id="SMFIP-NOHELO:CAPS" role="macro">
<title>SMFIP_NOHELO</title>
<indexterm zone="SMFIP-NOHELO:CAPS"><primary>SMFIP_NOHELO</primary></indexterm>
<programlisting language="C">#define SMFIP_NOHELO          0x00000002L
</programlisting>
<para>MTAが<link linkend="xxfi-helo"><function>xxfi_helo()</function></link>の情報を送信しないことを示します。</para>
<para>このフラグは<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>の<parameter>steps_output</parameter>で取得・設定できます。</para>
</refsect2>
<refsect2 id="SMFIP-NOMAIL:CAPS" role="macro">
<title>SMFIP_NOMAIL</title>
<indexterm zone="SMFIP-NOMAIL:CAPS"><primary>SMFIP_NOMAIL</primary></indexterm>
<programlisting language="C">#define SMFIP_NOMAIL          0x00000004L
</programlisting>
<para>MTAが<link linkend="xxfi-mail"><function>xxfi_mail()</function></link>の情報を送信しないことを示します。</para>
<para>このフラグは<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>の<parameter>steps_output</parameter>で取得・設定できます。</para>
</refsect2>
<refsect2 id="SMFIP-NORCPT:CAPS" role="macro">
<title>SMFIP_NORCPT</title>
<indexterm zone="SMFIP-NORCPT:CAPS"><primary>SMFIP_NORCPT</primary></indexterm>
<programlisting language="C">#define SMFIP_NORCPT          0x00000008L
</programlisting>
<para>MTAが<link linkend="xxfi-rcpt"><function>xxfi_rcpt()</function></link>の情報を送信しないことを示します。</para>
<para>このフラグは<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>の<parameter>steps_output</parameter>で取得・設定できます。</para>
</refsect2>
<refsect2 id="SMFIP-NOBODY:CAPS" role="macro">
<title>SMFIP_NOBODY</title>
<indexterm zone="SMFIP-NOBODY:CAPS"><primary>SMFIP_NOBODY</primary></indexterm>
<programlisting language="C">#define SMFIP_NOBODY          0x00000010L
</programlisting>
<para>
</para>
</refsect2>
<refsect2 id="SMFIP-NOHDRS:CAPS" role="macro">
<title>SMFIP_NOHDRS</title>
<indexterm zone="SMFIP-NOHDRS:CAPS"><primary>SMFIP_NOHDRS</primary></indexterm>
<programlisting language="C">#define SMFIP_NOHDRS          0x00000020L
</programlisting>
<para>MTAが<link linkend="xxfi-header"><function>xxfi_header()</function></link>の情報を送信しないことを示します。</para>
<para>このフラグは<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>の<parameter>steps_output</parameter>で取得・設定できます。</para>
</refsect2>
<refsect2 id="SMFIP-NOEOH:CAPS" role="macro">
<title>SMFIP_NOEOH</title>
<indexterm zone="SMFIP-NOEOH:CAPS"><primary>SMFIP_NOEOH</primary></indexterm>
<programlisting language="C">#define SMFIP_NOEOH           0x00000040L
</programlisting>
<para>MTAが<link linkend="xxfi-eoh"><function>xxfi_eoh()</function></link>の情報を送信しないことを示します。</para>
<para>このフラグは<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>の<parameter>steps_output</parameter>で取得・設定できます。</para>
</refsect2>
<refsect2 id="SMFIP-NR-HDR:CAPS" role="macro">
<title>SMFIP_NR_HDR</title>
<indexterm zone="SMFIP-NR-HDR:CAPS"><primary>SMFIP_NR_HDR</primary></indexterm>
<programlisting language="C">#define SMFIP_NR_HDR          0x00000080L
</programlisting>
<para>milterが<link linkend="xxfi-header"><function>xxfi_header()</function></link>に返答しないことを示します。</para>
<para>このフラグは<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>の<parameter>steps_output</parameter>で取得・設定できます。</para>
</refsect2>
<refsect2 id="SMFIP-NOHREPL:CAPS" role="macro">
<title>SMFIP_NOHREPL</title>
<indexterm zone="SMFIP-NOHREPL:CAPS"><primary>SMFIP_NOHREPL</primary></indexterm>
<programlisting language="C">#define SMFIP_NOHREPL         SMFIP_NR_HDR
</programlisting>
<para><link linkend="SMFIP-NR-HDR:CAPS"><literal>SMFIP_NR_HDR</literal></link>と同じ。</para>
</refsect2>
<refsect2 id="SMFIP-NOUNKNOWN:CAPS" role="macro">
<title>SMFIP_NOUNKNOWN</title>
<indexterm zone="SMFIP-NOUNKNOWN:CAPS"><primary>SMFIP_NOUNKNOWN</primary></indexterm>
<programlisting language="C">#define SMFIP_NOUNKNOWN       0x00000100L
</programlisting>
<para>MTAが<link linkend="xxfi-unknown"><function>xxfi_unknown()</function></link>の情報を送信しないことを示します。</para>
<para>このフラグは<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>の<parameter>steps_output</parameter>で取得・設定できます。</para>
</refsect2>
<refsect2 id="SMFIP-NODATA:CAPS" role="macro">
<title>SMFIP_NODATA</title>
<indexterm zone="SMFIP-NODATA:CAPS"><primary>SMFIP_NODATA</primary></indexterm>
<programlisting language="C">#define SMFIP_NODATA          0x00000200L
</programlisting>
<para>MTAが<link linkend="xxfi-data"><function>xxfi_data()</function></link>の情報を送信しないことを示します。</para>
<para>このフラグは<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>の<parameter>steps_output</parameter>で取得・設定できます。</para>
</refsect2>
<refsect2 id="SMFIP-SKIP:CAPS" role="macro">
<title>SMFIP_SKIP</title>
<indexterm zone="SMFIP-SKIP:CAPS"><primary>SMFIP_SKIP</primary></indexterm>
<programlisting language="C">#define SMFIP_SKIP            0x00000400L
</programlisting>
<para>MTAが<link linkend="xxfi-body"><function>xxfi_body()</function></link>での<link linkend="SMFIS-SKIP:CAPS"><literal>SMFIS_SKIP</literal></link>をサポートしていることを示します。</para>
<para>このフラグは<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>の<parameter>steps_output</parameter>で取得・設定できます。</para>
</refsect2>
<refsect2 id="SMFIP-RCPT-REJ:CAPS" role="macro">
<title>SMFIP_RCPT_REJ</title>
<indexterm zone="SMFIP-RCPT-REJ:CAPS"><primary>SMFIP_RCPT_REJ</primary></indexterm>
<programlisting language="C">#define SMFIP_RCPT_REJ        0x00000800L
</programlisting>
<para>MTAは拒否した宛先も送信し、<link linkend="xxfi-envrcpt"><function>xxfi_envrcpt()</function></link>が呼び出されることを示します。</para>
<para>このフラグは<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>の<parameter>steps_output</parameter>で取得・設定できます。</para>
</refsect2>
<refsect2 id="SMFIP-NR-CONN:CAPS" role="macro">
<title>SMFIP_NR_CONN</title>
<indexterm zone="SMFIP-NR-CONN:CAPS"><primary>SMFIP_NR_CONN</primary></indexterm>
<programlisting language="C">#define SMFIP_NR_CONN         0x00001000L
</programlisting>
<para>milterが<link linkend="xxfi-connect"><function>xxfi_connect()</function></link>に返答しないことを示します。</para>
<para>このフラグは<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>の<parameter>steps_output</parameter>で取得・設定できます。</para>
</refsect2>
<refsect2 id="SMFIP-NR-HELO:CAPS" role="macro">
<title>SMFIP_NR_HELO</title>
<indexterm zone="SMFIP-NR-HELO:CAPS"><primary>SMFIP_NR_HELO</primary></indexterm>
<programlisting language="C">#define SMFIP_NR_HELO         0x00002000L
</programlisting>
<para>milterが<link linkend="xxfi-helo"><function>xxfi_helo()</function></link>に返答しないことを示します。</para>
<para>このフラグは<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>の<parameter>steps_output</parameter>で取得・設定できます。</para>
</refsect2>
<refsect2 id="SMFIP-NR-MAIL:CAPS" role="macro">
<title>SMFIP_NR_MAIL</title>
<indexterm zone="SMFIP-NR-MAIL:CAPS"><primary>SMFIP_NR_MAIL</primary></indexterm>
<programlisting language="C">#define SMFIP_NR_MAIL         0x00004000L
</programlisting>
<para>milterが<link linkend="xxfi-envfrom"><function>xxfi_envfrom()</function></link>に返答しないことを示します。</para>
<para>このフラグは<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>の<parameter>steps_output</parameter>で取得・設定できます。</para>
</refsect2>
<refsect2 id="SMFIP-NR-RCPT:CAPS" role="macro">
<title>SMFIP_NR_RCPT</title>
<indexterm zone="SMFIP-NR-RCPT:CAPS"><primary>SMFIP_NR_RCPT</primary></indexterm>
<programlisting language="C">#define SMFIP_NR_RCPT         0x00008000L
</programlisting>
<para>milterが<link linkend="xxfi-envrcpt"><function>xxfi_envrcpt()</function></link>に返答しないことを示します。</para>
<para>このフラグは<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>の<parameter>steps_output</parameter>で取得・設定できます。</para>
</refsect2>
<refsect2 id="SMFIP-NR-DATA:CAPS" role="macro">
<title>SMFIP_NR_DATA</title>
<indexterm zone="SMFIP-NR-DATA:CAPS"><primary>SMFIP_NR_DATA</primary></indexterm>
<programlisting language="C">#define SMFIP_NR_DATA         0x00010000L
</programlisting>
<para>milterが<link linkend="xxfi-data"><function>xxfi_data()</function></link>に返答しないことを示します。</para>
<para>このフラグは<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>の<parameter>steps_output</parameter>で取得・設定できます。</para>
</refsect2>
<refsect2 id="SMFIP-NR-UNKN:CAPS" role="macro">
<title>SMFIP_NR_UNKN</title>
<indexterm zone="SMFIP-NR-UNKN:CAPS"><primary>SMFIP_NR_UNKN</primary></indexterm>
<programlisting language="C">#define SMFIP_NR_UNKN         0x00020000L
</programlisting>
<para>milterが<link linkend="xxfi-unknown"><function>xxfi_unknown()</function></link>に返答しないことを示します。</para>
<para>このフラグは<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>の<parameter>steps_output</parameter>で取得・設定できます。</para>
</refsect2>
<refsect2 id="SMFIP-NR-EOH:CAPS" role="macro">
<title>SMFIP_NR_EOH</title>
<indexterm zone="SMFIP-NR-EOH:CAPS"><primary>SMFIP_NR_EOH</primary></indexterm>
<programlisting language="C">#define SMFIP_NR_EOH          0x00040000L
</programlisting>
<para>milterが<link linkend="xxfi-eoh"><function>xxfi_eoh()</function></link>に返答しないことを示します。</para>
<para>このフラグは<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>の<parameter>steps_output</parameter>で取得・設定できます。</para>
</refsect2>
<refsect2 id="SMFIP-NR-BODY:CAPS" role="macro">
<title>SMFIP_NR_BODY</title>
<indexterm zone="SMFIP-NR-BODY:CAPS"><primary>SMFIP_NR_BODY</primary></indexterm>
<programlisting language="C">#define SMFIP_NR_BODY         0x00080000L
</programlisting>
<para>milterが<link linkend="xxfi-body"><function>xxfi_body()</function></link>に返答しないことを示します。</para>
<para>このフラグは<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>の<parameter>steps_output</parameter>で取得・設定できます。</para>
</refsect2>
<refsect2 id="SMFIP-HDR-LEADSPC:CAPS" role="macro">
<title>SMFIP_HDR_LEADSPC</title>
<indexterm zone="SMFIP-HDR-LEADSPC:CAPS"><primary>SMFIP_HDR_LEADSPC</primary></indexterm>
<programlisting language="C">#define SMFIP_HDR_LEADSPC     0x00100000L
</programlisting>
<para><link linkend="xxfi-header"><function>xxfi_header()</function></link>コールバックが':'の後のスペース付きでヘッダの値を受けとることを示します。例は<link linkend="xxfi-header"><function>xxfi_header()</function></link>を見てください。</para>
<para>このフラグは<link linkend="xxfi-negotiate"><function>xxfi_negotiate()</function></link>の<parameter>steps_output</parameter>で取得・設定できます。</para>
</refsect2>

</refsect1>

</refentry>
