<?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-milter-protocol">
<refmeta>
<refentrytitle role="top_of_page" id="milter-manager-milter-protocol.top_of_page">milter-protocol</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>milter managerライブラリ</refmiscinfo>
</refmeta>
<refnamediv>
<refname>milter-protocol</refname>
<refpurpose/>
</refnamediv>

<refsynopsisdiv id="milter-manager-milter-protocol.synopsis" role="synopsis">
<title role="synopsis.title">概要</title>

<synopsis>#define             <link linkend="MILTER-CHUNK-SIZE:CAPS">MILTER_CHUNK_SIZE</link>
enum                <link linkend="MilterCommand">MilterCommand</link>;
enum                <link linkend="MilterSocketFamily">MilterSocketFamily</link>;
enum                <link linkend="MilterReply">MilterReply</link>;
enum                <link linkend="MilterStatus">MilterStatus</link>;
enum                <link linkend="MilterMacroStage">MilterMacroStage</link>;
</synopsis>
</refsynopsisdiv>

<refsect1 id="milter-manager-milter-protocol.description" role="desc">
<title role="desc.title">説明</title>
<para>
</para>
</refsect1>
<refsect1 id="milter-manager-milter-protocol.details" role="details">
<title role="details.title">詳細</title>
<refsect2 id="MILTER-CHUNK-SIZE:CAPS" role="macro">
<title>MILTER_CHUNK_SIZE</title>
<indexterm zone="MILTER-CHUNK-SIZE:CAPS"><primary>MILTER_CHUNK_SIZE</primary></indexterm>
<programlisting>#define MILTER_CHUNK_SIZE 65535
</programlisting>
<para>
</para></refsect2>
<refsect2 id="MilterCommand" role="enum">
<title>enum MilterCommand</title>
<indexterm zone="MilterCommand"><primary>MilterCommand</primary></indexterm>
<programlisting>typedef enum
{
    MILTER_COMMAND_ABORT =			'A', /* Abort */
    MILTER_COMMAND_BODY =			'B', /* Body chunk */
    MILTER_COMMAND_CONNECT =			'C', /* Connection information */
    MILTER_COMMAND_DEFINE_MACRO =		'D', /* Define macro */
    MILTER_COMMAND_END_OF_MESSAGE =		'E', /* final body chunk (End) */
    MILTER_COMMAND_HELO =			'H', /* HELO/EHLO */
    MILTER_COMMAND_QUIT_NEW_CONNECTION = 'K', /* QUIT but
                                                        new connection follows */
    MILTER_COMMAND_HEADER =			'L', /* Header */
    MILTER_COMMAND_ENVELOPE_FROM =		'M', /* MAIL from */
    MILTER_COMMAND_END_OF_HEADER =		'N', /* end of header */
    MILTER_COMMAND_NEGOTIATE =			'O', /* Option negotiation */
    MILTER_COMMAND_QUIT =			'Q', /* QUIT */
    MILTER_COMMAND_ENVELOPE_RECIPIENT =		'R', /* RCPT to */
    MILTER_COMMAND_DATA =			'T', /* DATA */
    MILTER_COMMAND_UNKNOWN =			'U'  /* Any unknown command */
} MilterCommand;
</programlisting>
<para>
</para></refsect2>
<refsect2 id="MilterSocketFamily" role="enum">
<title>enum MilterSocketFamily</title>
<indexterm zone="MilterSocketFamily"><primary>MilterSocketFamily</primary></indexterm>
<programlisting>typedef enum
{
    MILTER_SOCKET_FAMILY_UNKNOWN = 'U',
    MILTER_SOCKET_FAMILY_UNIX =		'L',
    MILTER_SOCKET_FAMILY_INET =		'4',
    MILTER_SOCKET_FAMILY_INET6 = '6'
} MilterSocketFamily;
</programlisting>
<para>
</para></refsect2>
<refsect2 id="MilterReply" role="enum">
<title>enum MilterReply</title>
<indexterm zone="MilterReply"><primary>MilterReply</primary></indexterm>
<programlisting>typedef enum
{
    MILTER_REPLY_ADD_RECIPIENT =		'+', /* add recipient */
    MILTER_REPLY_DELETE_RECIPIENT =	'-', /* remove recipient */
    /* add recipient (incl. ESMTP args) */
    MILTER_REPLY_ADD_RECIPIENT_WITH_PARAMETERS ='2',
    /* 421: shutdown (internal to MTA) */
    MILTER_REPLY_SHUTDOWN =			'4',
    MILTER_REPLY_ACCEPT =			'a', /* accept */
    MILTER_REPLY_REPLACE_BODY =			'b', /* replace body (chunk) */
    MILTER_REPLY_CONTINUE =			'c', /* continue */
    MILTER_REPLY_DISCARD =			'd', /* discard */
    /* change envelope sender (from) */
    MILTER_REPLY_CHANGE_FROM =			'e',
    /* cause a connection failure */
    MILTER_REPLY_CONNECTION_FAILURE =		'f',
    MILTER_REPLY_ADD_HEADER =			'h', /* add header */
    MILTER_REPLY_INSERT_HEADER =		'i', /* insert header */
    /* set list of symbols (macros) */
    MILTER_REPLY_SET_SYMBOL_LIST =		'l',
    MILTER_REPLY_CHANGE_HEADER =		'm', /* change header */
    MILTER_REPLY_PROGRESS =			'p', /* progress */
    MILTER_REPLY_QUARANTINE =			'q', /* quarantine */
    MILTER_REPLY_REJECT =			'r', /* reject */
    MILTER_REPLY_SKIP =				's', /* skip */
    MILTER_REPLY_TEMPORARY_FAILURE =		't', /* tempfail */
    MILTER_REPLY_REPLY_CODE =			'y'  /* reply code etc */
} MilterReply;
</programlisting>
<para>
</para></refsect2>
<refsect2 id="MilterStatus" role="enum">
<title>enum MilterStatus</title>
<indexterm zone="MilterStatus"><primary>MilterStatus</primary></indexterm>
<programlisting>typedef enum
{
    MILTER_STATUS_DEFAULT,
    MILTER_STATUS_NOT_CHANGE,
    MILTER_STATUS_CONTINUE,
    MILTER_STATUS_REJECT,
    MILTER_STATUS_DISCARD,
    MILTER_STATUS_ACCEPT,
    MILTER_STATUS_TEMPORARY_FAILURE,
    MILTER_STATUS_NO_REPLY,
    MILTER_STATUS_SKIP,
    MILTER_STATUS_ALL_OPTIONS,
    MILTER_STATUS_PROGRESS,
    MILTER_STATUS_ABORT,
    MILTER_STATUS_QUARANTINE,
    MILTER_STATUS_STOP,
    MILTER_STATUS_ERROR
} MilterStatus;
</programlisting>
<para>
</para></refsect2>
<refsect2 id="MilterMacroStage" role="enum">
<title>enum MilterMacroStage</title>
<indexterm zone="MilterMacroStage"><primary>MilterMacroStage</primary></indexterm>
<programlisting>typedef enum
{
    MILTER_MACRO_STAGE_CONNECT = 0,
    MILTER_MACRO_STAGE_HELO = 1,
    MILTER_MACRO_STAGE_ENVELOPE_FROM = 2,
    MILTER_MACRO_STAGE_ENVELOPE_RECIPIENT = 3,
    MILTER_MACRO_STAGE_DATA = 4,
    MILTER_MACRO_STAGE_END_OF_MESSAGE = 5,
    MILTER_MACRO_STAGE_END_OF_HEADER = 6
} MilterMacroStage;
</programlisting>
<para>
</para></refsect2>

</refsect1>

</refentry>
