MilterServerContext
3
milter managerライブラリ

# MilterServerContext

サーバ側のmilterプロトコルを処理します。

## 概要

    #define             MILTER_SERVER_CONTEXT_ERROR
    #define             MILTER_SERVER_CONTEXT_DEFAULT_CONNECTION_TIMEOUT
    #define             MILTER_SERVER_CONTEXT_DEFAULT_WRITING_TIMEOUT
    #define             MILTER_SERVER_CONTEXT_DEFAULT_READING_TIMEOUT
    #define             MILTER_SERVER_CONTEXT_DEFAULT_END_OF_MESSAGE_TIMEOUT
    enum                MilterServerContextError;
    enum                MilterServerContextState;
    struct              MilterServerContext;
    GQuark              milter_server_context_error_quark   (void);
    MilterServerContext * milter_server_context_new         (void);
    void                milter_server_context_set_connection_timeout
                                                            (MilterServerContext *context,
                                                             gdouble timeout);
    void                milter_server_context_set_writing_timeout
                                                            (MilterServerContext *context,
                                                             gdouble timeout);
    void                milter_server_context_set_reading_timeout
                                                            (MilterServerContext *context,
                                                             gdouble timeout);
    void                milter_server_context_set_end_of_message_timeout
                                                            (MilterServerContext *context,
                                                             gdouble timeout);
    gboolean            milter_server_context_set_connection_spec
                                                            (MilterServerContext *context,
                                                             const gchar *spec,
                                                             GError **error);
    gboolean            milter_server_context_establish_connection
                                                            (MilterServerContext *context,
                                                             GError **error);
    MilterStatus        milter_server_context_get_status    (MilterServerContext *context);
    MilterServerContextState milter_server_context_get_state
                                                            (MilterServerContext *context);
    void                milter_server_context_set_state     (MilterServerContext *context,
                                                             MilterServerContextState state);
    gboolean            milter_server_context_is_processing (MilterServerContext *context);
    gboolean            milter_server_context_negotiate     (MilterServerContext *context,
                                                             MilterOption *option);
    gboolean            milter_server_context_connect       (MilterServerContext *context,
                                                             const gchar *host_name,
                                                             struct sockaddr *address,
                                                             socklen_t address_length);
    gboolean            milter_server_context_helo          (MilterServerContext *context,
                                                             const gchar *fqdn);
    gboolean            milter_server_context_envelope_from (MilterServerContext *context,
                                                             const gchar *from);
    gboolean            milter_server_context_envelope_recipient
                                                            (MilterServerContext *context,
                                                             const gchar *recipient);
    gboolean            milter_server_context_data          (MilterServerContext *context);
    gboolean            milter_server_context_unknown       (MilterServerContext *context,
                                                             const gchar *command);
    gboolean            milter_server_context_header        (MilterServerContext *context,
                                                             const gchar *name,
                                                             const gchar *value);
    gboolean            milter_server_context_end_of_header (MilterServerContext *context);
    gboolean            milter_server_context_body          (MilterServerContext *context,
                                                             const gchar *chunk,
                                                             gsize size);
    gboolean            milter_server_context_end_of_message
                                                            (MilterServerContext *context,
                                                             const gchar *chunk,
                                                             gsize size);
    gboolean            milter_server_context_quit          (MilterServerContext *context);
    gboolean            milter_server_context_abort         (MilterServerContext *context);
    gboolean            milter_server_context_is_enable_step
                                                            (MilterServerContext *context,
                                                             MilterStepFlags step);
    gboolean            milter_server_context_get_skip_body (MilterServerContext *context);
    const gchar *       milter_server_context_get_name      (MilterServerContext *context);
    void                milter_server_context_set_name      (MilterServerContext *context,
                                                             const gchar *name);

## オブジェクト階層

      GObject
       +----MilterAgent
             +----MilterProtocolAgent
                   +----MilterServerContext

## 実装されたインターフェイス

MilterServerContext implements MilterErrorEmittable, MilterFinishedEmittable and MilterReplySignals.

## プロパティ

      "connection-timeout"       gdouble               : Read / Write / Construct
      "end-of-message-timeout"   gdouble               : Read / Write / Construct
      "message-result"           MilterMessageResult*  : Read / Write
      "name"                     gchar*                : Read / Write
      "reading-timeout"          gdouble               : Read / Write / Construct
      "state"                    MilterServerContextState  : Read / Write
      "status"                   MilterStatus          : Read / Write
      "writing-timeout"          gdouble               : Read / Write / Construct

## シグナル

      "connection-timeout"                             : Run Last
      "end-of-message-timeout"                         : Run Last
      "message-processed"                              : Run Last
      "reading-timeout"                                : Run Last
      "ready"                                          : Run Last
      "state-transited"                                : Run Last
      "stop-on-body"                                   : Run Last
      "stop-on-connect"                                : Run Last
      "stop-on-data"                                   : Run Last
      "stop-on-end-of-header"                          : Run Last
      "stop-on-end-of-message"                         : Run Last
      "stop-on-envelope-from"                          : Run Last
      "stop-on-envelope-recipient"                     : Run Last
      "stop-on-header"                                 : Run Last
      "stop-on-helo"                                   : Run Last
      "stopped"                                        : Run Last
      "writing-timeout"                                : Run Last

## 説明

`MilterServerContext`は1つのサーバ側のmilterプロトコルセッションを処理します。これは各milterプロトコルセッション毎に`MilterServerContext`インスタンスが生成されるということです。

## 詳細

### MILTER_SERVER_CONTEXT_ERROR

    #define MILTER_SERVER_CONTEXT_ERROR           (milter_server_context_error_quark())

MilterServerContextのエラー用のGErrorクォークを取得するために使われます。

### MILTER_SERVER_CONTEXT_DEFAULT_CONNECTION_TIMEOUT

    #define MILTER_SERVER_CONTEXT_DEFAULT_CONNECTION_TIMEOUT     300

既定の秒単位での接続タイムアウト。

### MILTER_SERVER_CONTEXT_DEFAULT_WRITING_TIMEOUT

    #define MILTER_SERVER_CONTEXT_DEFAULT_WRITING_TIMEOUT         10

既定の秒単位での書き込みタイムアウト。

### MILTER_SERVER_CONTEXT_DEFAULT_READING_TIMEOUT

    #define MILTER_SERVER_CONTEXT_DEFAULT_READING_TIMEOUT         10

既定の秒単位での読み込みタイムアウト。

### MILTER_SERVER_CONTEXT_DEFAULT_END_OF_MESSAGE_TIMEOUT

    #define MILTER_SERVER_CONTEXT_DEFAULT_END_OF_MESSAGE_TIMEOUT 300

既定の秒単位でのメッセージ終了時の応答待ちタイムアウト。

### enum MilterServerContextError

    typedef enum {
        MILTER_SERVER_CONTEXT_ERROR_CONNECTION_FAILURE,
        MILTER_SERVER_CONTEXT_ERROR_NO_SPEC,
        MILTER_SERVER_CONTEXT_ERROR_INVALID_STATE,
        MILTER_SERVER_CONTEXT_ERROR_BUSY,
        MILTER_SERVER_CONTEXT_ERROR_IO_ERROR,
        MILTER_SERVER_CONTEXT_ERROR_NEWER_VERSION_REQUESTED
    } MilterServerContextError;

`MilterServerContext`の関数呼び出し中に発生するエラーを識別します。

`MILTER_SERVER_CONTEXT_ERROR_CONNECTION_FAILURE`

  接続が失敗したことを示します。

`MILTER_SERVER_CONTEXT_ERROR_NO_SPEC`

  接続指定が設定されていないことを示します。

`MILTER_SERVER_CONTEXT_ERROR_INVALID_STATE`

  現在の`MilterServerContext`が予期しない応答を受け取ったことを示します。

`MILTER_SERVER_CONTEXT_ERROR_BUSY`

  前の操作の結果を受け取る前に新しい操作が要求されたことを示します。

`MILTER_SERVER_CONTEXT_ERROR_IO_ERROR`

  milterプロトコルデータの読み書き時に発生した入出力エラーを示します。

`MILTER_SERVER_CONTEXT_ERROR_NEWER_VERSION_REQUESTED`

  未サポートの新しいバージョンが要求されたことを示します。

### enum MilterServerContextState

    typedef enum {
        MILTER_SERVER_CONTEXT_STATE_INVALID,
        MILTER_SERVER_CONTEXT_STATE_START,
        MILTER_SERVER_CONTEXT_STATE_DEFINE_MACRO,
        MILTER_SERVER_CONTEXT_STATE_NEGOTIATE,
        MILTER_SERVER_CONTEXT_STATE_CONNECT,
        MILTER_SERVER_CONTEXT_STATE_HELO,
        MILTER_SERVER_CONTEXT_STATE_ENVELOPE_FROM,
        MILTER_SERVER_CONTEXT_STATE_ENVELOPE_RECIPIENT,
        MILTER_SERVER_CONTEXT_STATE_DATA,
        MILTER_SERVER_CONTEXT_STATE_UNKNOWN,
        MILTER_SERVER_CONTEXT_STATE_HEADER,
        MILTER_SERVER_CONTEXT_STATE_END_OF_HEADER,
        MILTER_SERVER_CONTEXT_STATE_BODY,
        MILTER_SERVER_CONTEXT_STATE_END_OF_MESSAGE,
        MILTER_SERVER_CONTEXT_STATE_QUIT,
        MILTER_SERVER_CONTEXT_STATE_ABORT
    } MilterServerContextState;

`MilterServerContext`の状態を識別します。

`MILTER_SERVER_CONTEXT_STATE_INVALID`

  不正な状態。

`MILTER_SERVER_CONTEXT_STATE_START`

  はじまったばかり。

`MILTER_SERVER_CONTEXT_STATE_DEFINE_MACRO`

  マクロ定義を送信しました。

`MILTER_SERVER_CONTEXT_STATE_NEGOTIATE`

  ネゴシエーション中。

`MILTER_SERVER_CONTEXT_STATE_CONNECT`

  接続情報を送信しました。

`MILTER_SERVER_CONTEXT_STATE_HELO`

  HELOコマンドの情報を送信しました。

`MILTER_SERVER_CONTEXT_STATE_ENVELOPE_FROM`

  MAIL FROMコマンドの情報を送信しました。

`MILTER_SERVER_CONTEXT_STATE_ENVELOPE_RECIPIENT`

  RCPT TOコマンドの情報を送信しました。

`MILTER_SERVER_CONTEXT_STATE_DATA`

  DATAコマンドの情報を送信しました。

`MILTER_SERVER_CONTEXT_STATE_UNKNOWN`

  未知のSMTPコマンドを送信しました。

`MILTER_SERVER_CONTEXT_STATE_HEADER`

  ヘッダを送信した。

`MILTER_SERVER_CONTEXT_STATE_END_OF_HEADER`

  すべてのヘッダを送信しました。

`MILTER_SERVER_CONTEXT_STATE_BODY`

  本文の1かたまりを送信しました。

`MILTER_SERVER_CONTEXT_STATE_END_OF_MESSAGE`

  本文すべてを送信しました。

`MILTER_SERVER_CONTEXT_STATE_QUIT`

  終了要求を送信しました。

`MILTER_SERVER_CONTEXT_STATE_ABORT`

  中止要求を送信しました。

### struct MilterServerContext

    struct MilterServerContext;

### milter_server_context_error_quark ()

    GQuark              milter_server_context_error_quark   (void);

### milter_server_context_new ()

    MilterServerContext * milter_server_context_new         (void);

新しいコンテキストオブジェクトを生成します。

返値 :

  新しい`MilterServerContext`オブジェクト。

### milter_server_context_set_connection_timeout ()

    void                milter_server_context_set_connection_timeout
                                                            (MilterServerContext *context,
                                                             gdouble timeout);

接続時のタイムアウトを秒で設定します。もし、`context`が`timeout`秒以内にクライアントに接続できない場合は"timeout"シグナルが発行されます。

`context` :

  `MilterServerContext`。

`timeout` :

  接続時の秒単位のタイムアウト。（既定値は`MILTER_SERVER_CONTEXT_DEFAULT_CONNECTION_TIMEOUT`）

### milter_server_context_set_writing_timeout ()

    void                milter_server_context_set_writing_timeout
                                                            (MilterServerContext *context,
                                                             gdouble timeout);

書き込み時の秒単位のタイムアウトを設定します。`context`が`timeout`秒以内にクライアントのソケットに書き込めない場合は"timeout"シグナルが発行されます。

`context` :

  `MilterServerContext`。

`timeout` :

  秒単位での書き込みタイムアウト。（既定値は`MILTER_SERVER_CONTEXT_DEFAULT_WRITING_TIMEOUT`）

### milter_server_context_set_reading_timeout ()

    void                milter_server_context_set_reading_timeout
                                                            (MilterServerContext *context,
                                                             gdouble timeout);

読み込み時のタイムアウトを秒単位で指定します。`context`が`timeout`秒以内にクライアントソケットから応答を受け取らなかった場合は、"timeout"シグナルが発行されます。

`context` :

  `MilterServerContext`。

`timeout` :

  秒単位での読み込み時のタイムアウト。（既定値は`MILTER_SERVER_CONTEXT_DEFAULT_READING_TIMEOUT`）

### milter_server_context_set_end_of_message_timeout ()

    void                milter_server_context_set_end_of_message_timeout
                                                            (MilterServerContext *context,
                                                             gdouble timeout);

メッセージ終了時のタイムアウトを秒単位で設定します。`context`が`timeout`秒以内にクライアントソケットからメッセージ終了時の応答を受け取らなかった場合は、"timeout"シグナルが発行されます。

`context` :

  `MilterServerContext`。

`timeout` :

  秒単位でのメッセージ終了時のタイムアウト。（既定値は`MILTER_SERVER_CONTEXT_DEFAULT_END_OF_MESSAGE_TIMEOUT`）

### milter_server_context_set_connection_spec ()

    gboolean            milter_server_context_set_connection_spec
                                                            (MilterServerContext *context,
                                                             const gchar *spec,
                                                             GError **error);

クライアントの接続指定を設定します。`spec`が不正な形式で、`error`が`NULL`でない場合は、エラーの詳細は`error`に設定されます。

`context` :

  `MilterServerContext`。

`spec` :

  クライアントの接続指定。

`error` :

  エラーを受け取る場所のアドレス、または`NULL`。

返値 :

  成功時は`TRUE`。

### milter_server_context_establish_connection ()

    gboolean            milter_server_context_establish_connection
                                                            (MilterServerContext *context,
                                                             GError **error);

クライアントへの接続を確立します。接続確立が失敗して、`error`が`NULL`でない場合は、エラーの詳細は`error`に設定されます。

`context` :

  `MilterServerContext`。

`error` :

  エラーを受け取る場所のアドレス、または`NULL`。

返値 :

  成功時は`TRUE`。

### milter_server_context_get_status ()

    MilterStatus        milter_server_context_get_status    (MilterServerContext *context);

現在の状態を取得します。

`context` :

  `MilterServerContext`。

返値 :

  現在の状態。

### milter_server_context_get_state ()

    MilterServerContextState milter_server_context_get_state
                                                            (MilterServerContext *context);

現在の状態を取得します。

`context` :

  `MilterServerContext`。

返値 :

  現在の状態。

### milter_server_context_set_state ()

    void                milter_server_context_set_state     (MilterServerContext *context,
                                                             MilterServerContextState state);

現在の状態を設定します。

`context` :

  `MilterServerContext`。

`state` :

  新しい状態。

### milter_server_context_is_processing ()

    gboolean            milter_server_context_is_processing (MilterServerContext *context);

応答を待っているかどうかを取得します。

`context` :

  `MilterServerContext`。

返値 :

  最後の書き込みの後に応答を受け取っていたら`TRUE`、そうでなければ`FALSE`。

### milter_server_context_negotiate ()

    gboolean            milter_server_context_negotiate     (MilterServerContext *context,
                                                             MilterOption *option);

クライアントとネゴシエーションします。

`context` :

  `MilterServerContext`。

`option` :

  ネゴシエーションのオプション。

返値 :

  成功時は`TRUE`。

### milter_server_context_connect ()

    gboolean            milter_server_context_connect       (MilterServerContext *context,
                                                             const gchar *host_name,
                                                             struct sockaddr *address,
                                                             socklen_t address_length);

接続されたSMTPクライアントの情報を送信します。

`context` :

  `MilterServerContext`。

`host_name` :

  接続してきたSMTPクライアントのホスト名。

`address` :

  接続してきたSMTPクライアントのアドレス。

`address_length` :

  `address`のサイズ。

返値 :

  成功時は`TRUE`。

### milter_server_context_helo ()

    gboolean            milter_server_context_helo          (MilterServerContext *context,
                                                             const gchar *fqdn);

HELOに渡されたFQDNを送信します。

`context` :

  `MilterServerContext`。

`fqdn` :

  FQDN。

返値 :

  成功時は`TRUE`。

### milter_server_context_envelope_from ()

    gboolean            milter_server_context_envelope_from (MilterServerContext *context,
                                                             const gchar *from);

MAIL FROM時に渡されたパラメタを送信します。

`context` :

  `MilterServerContext`。

`from` :

  送信者のアドレス。

返値 :

  成功時は`TRUE`。

### milter_server_context_envelope_recipient ()

    gboolean            milter_server_context_envelope_recipient
                                                            (MilterServerContext *context,
                                                             const gchar *recipient);

RCPT TO時に渡されたパラメタを送信します。

`context` :

  `MilterServerContext`。

`recipient` :

  宛先アドレス。

返値 :

  成功時は`TRUE`。

### milter_server_context_data ()

    gboolean            milter_server_context_data          (MilterServerContext *context);

DATAコマンドを受信したことを通知します。

`context` :

  `MilterServerContext`。

返値 :

  成功時は`TRUE`。

### milter_server_context_unknown ()

    gboolean            milter_server_context_unknown       (MilterServerContext *context,
                                                             const gchar *command);

受信した未知のSMTPコマンドを送信します。

`context` :

  `MilterServerContext`。

`command` :

  未知のSMTPコマンド。

返値 :

  成功時は`TRUE`。

### milter_server_context_header ()

    gboolean            milter_server_context_header        (MilterServerContext *context,
                                                             const gchar *name,
                                                             const gchar *value);

ヘッダを送信します。

`context` :

  `MilterServerContext`。

`name` :

  ヘッダ名。

`value` :

  ヘッダ値。

返値 :

  成功時は`TRUE`。

### milter_server_context_end_of_header ()

    gboolean            milter_server_context_end_of_header (MilterServerContext *context);

すべてのヘッダが送信されたことを通知します。

`context` :

  `MilterServerContext`。

返値 :

  成功時は`TRUE`。

### milter_server_context_body ()

    gboolean            milter_server_context_body          (MilterServerContext *context,
                                                             const gchar *chunk,
                                                             gsize size);

本文の1かたまりを送信します。

`context` :

  `MilterServerContext`。

`chunk` :

  本文の1かたまり。

`size` :

  `chunk`のサイズ。

返値 :

  成功時は`TRUE`。

### milter_server_context_end_of_message ()

    gboolean            milter_server_context_end_of_message
                                                            (MilterServerContext *context,
                                                             const gchar *chunk,
                                                             gsize size);

すべての本文のかたまりを送信したことを通知します。未送信の最後の本文のかたまりも一緒に送信することができます。

`context` :

  `MilterServerContext`。

`chunk` :

  本文のかたまり。`NULL`かもしれません。

`size` :

  `chunk`のサイズ。

返値 :

  成功時は`TRUE`。

### milter_server_context_quit ()

    gboolean            milter_server_context_quit          (MilterServerContext *context);

現在の接続を終了します。

`context` :

  `MilterServerContext`。

返値 :

  成功時は`TRUE`。

### milter_server_context_abort ()

    gboolean            milter_server_context_abort         (MilterServerContext *context);

現在の接続を中止します。

`context` :

  `MilterServerContext`。

返値 :

  成功時は`TRUE`。

### milter_server_context_is_enable_step ()

    gboolean            milter_server_context_is_enable_step
                                                            (MilterServerContext *context,
                                                             MilterStepFlags step);

`context`のオプションで`step`フラグが有効かどうかを取得します。

`context` :

  `MilterServerContext`。

`step` :

  ステップフラグ。

返値 :

  `step`フラグが有効なら`TRUE`、そうでなければ`FALSE`。

### milter_server_context_get_skip_body ()

    gboolean            milter_server_context_get_skip_body (MilterServerContext *context);

`context`が本文のかたまりを送っている間にスキップ応答を受け取ったかどうかを取得します。

`context` :

  `MilterServerContext`。

返値 :

  本文のかたまりを省略していたら`TRUE`、そうでなければ`FALSE`。

### milter_server_context_get_name ()

    const gchar *       milter_server_context_get_name      (MilterServerContext *context);

`context`の名前を取得します。

`context` :

  `MilterServerContext`。

返値 :

  `context`の名前。

### milter_server_context_set_name ()

    void                milter_server_context_set_name      (MilterServerContext *context,
                                                             const gchar *name);

`context`の名前を設定します。

`context` :

  `MilterServerContext`。

`name` :

  名前。

## プロパティ詳細

### `"connection-timeout"`プロパティ

      "connection-timeout"       gdouble               : Read / Write / Construct

The timeout seconds for connecting to a filter.

Allowed values: >= 0

Default value: 300

### The `"end-of-message-timeout"` property

      "end-of-message-timeout"   gdouble               : Read / Write / Construct

The timeout seconds between sending end-of-message to a filter and waiting for its reply.

Allowed values: >= 0

Default value: 300

### `"message-result"`プロパティ

      "message-result"           MilterMessageResult*  : Read / Write

現在処理中のメッセージの結果。

### `"name"`プロパティ。

      "name"                     gchar*                : Read / Write

MilterServerContextの名前。

デフォルト値: NULL

### `"reading-timeout"`プロパティ

      "reading-timeout"          gdouble               : Read / Write / Construct

The timeout seconds for reading reply from a filter.

Allowed values: >= 0

デフォルト値: 10

### `"state"`プロパティ

      "state"                    MilterServerContextState  : Read / Write

MilterServerContextの状態。

Default value: MILTER_SERVER_CONTEXT_STATE_START

### `"status"`プロパティ

      "status"                   MilterStatus          : Read / Write

MilterServerContextのステータス。

Default value: MILTER_STATUS_NOT_CHANGE

### The `"writing-timeout"` property

      "writing-timeout"          gdouble               : Read / Write / Construct

The timeout seconds for writing information from MTA to a filter.

Allowed values: >= 0

デフォルト値: 10

## シグナル詳細

### `"connection-timeout"`シグナル

    void                user_function                      (MilterServerContext *milterservercontext,
                                                            gpointer             user_data)                : Run Last

`milterservercontext` :

  the object which received the signal.

`user_data` :

  user data set when the signal handler was connected.

### The `"end-of-message-timeout"` signal

    void                user_function                      (MilterServerContext *milterservercontext,
                                                            gpointer             user_data)                : Run Last

`milterservercontext` :

  the object which received the signal.

`user_data` :

  user data set when the signal handler was connected.

### `"message-processed"`シグナル

    void                user_function                      (MilterServerContext *milterservercontext,
                                                            MilterMessageResult *arg1,
                                                            gpointer             user_data)                : Run Last

`milterservercontext` :

  the object which received the signal.

`user_data` :

  user data set when the signal handler was connected.

### `"reading-timeout"`シグナル

    void                user_function                      (MilterServerContext *milterservercontext,
                                                            gpointer             user_data)                : Run Last

`milterservercontext` :

  the object which received the signal.

`user_data` :

  user data set when the signal handler was connected.

### `"ready"`シグナル

    void                user_function                      (MilterServerContext *milterservercontext,
                                                            gpointer             user_data)                : Run Last

`milterservercontext` :

  the object which received the signal.

`user_data` :

  user data set when the signal handler was connected.

### `"state-translated"`シグナル

    void                user_function                      (MilterServerContext     *milterservercontext,
                                                            MilterServerContextState arg1,
                                                            gpointer                 user_data)                : Run Last

`milterservercontext` :

  the object which received the signal.

`user_data` :

  user data set when the signal handler was connected.

### `"stop-on-body"`シグナル

    gboolean            user_function                      (MilterServerContext *milterservercontext,
                                                            gchar               *arg1,
                                                            guint64              arg2,
                                                            gpointer             user_data)                : Run Last

`milterservercontext` :

  the object which received the signal.

`user_data` :

  user data set when the signal handler was connected.

### `"stop-on-connect"`シグナル

    gboolean            user_function                      (MilterServerContext *milterservercontext,
                                                            gchar               *arg1,
                                                            gpointer             arg2,
                                                            guint                arg3,
                                                            gpointer             user_data)                : Run Last

`milterservercontext` :

  the object which received the signal.

`user_data` :

  user data set when the signal handler was connected.

### `"stop-on-data"`シグナル

    gboolean            user_function                      (MilterServerContext *milterservercontext,
                                                            gpointer             user_data)                : Run Last

`milterservercontext` :

  the object which received the signal.

`user_data` :

  user data set when the signal handler was connected.

### `"stop-on-end-of-header"`シグナル

    gboolean            user_function                      (MilterServerContext *milterservercontext,
                                                            gpointer             user_data)                : Run Last

`milterservercontext` :

  the object which received the signal.

`user_data` :

  user data set when the signal handler was connected.

### `"stop-on-end-of-message"`シグナル

    gboolean            user_function                      (MilterServerContext *milterservercontext,
                                                            gchar               *arg1,
                                                            guint64              arg2,
                                                            gpointer             user_data)                : Run Last

`milterservercontext` :

  the object which received the signal.

`user_data` :

  user data set when the signal handler was connected.

### `"stop-on-envelope-from"`シグナル

    gboolean            user_function                      (MilterServerContext *milterservercontext,
                                                            gchar               *arg1,
                                                            gpointer             user_data)                : Run Last

`milterservercontext` :

  the object which received the signal.

`user_data` :

  user data set when the signal handler was connected.

### `"stop-on-envelope-recipient"`シグナル

    gboolean            user_function                      (MilterServerContext *milterservercontext,
                                                            gchar               *arg1,
                                                            gpointer             user_data)                : Run Last

`milterservercontext` :

  the object which received the signal.

`user_data` :

  user data set when the signal handler was connected.

### `"stop-on-header"`シグナル。

    gboolean            user_function                      (MilterServerContext *milterservercontext,
                                                            gchar               *arg1,
                                                            gchar               *arg2,
                                                            gpointer             user_data)                : Run Last

`milterservercontext` :

  the object which received the signal.

`user_data` :

  user data set when the signal handler was connected.

### `"stop-on-helo"`シグナル

    gboolean            user_function                      (MilterServerContext *milterservercontext,
                                                            gchar               *arg1,
                                                            gpointer             user_data)                : Run Last

`milterservercontext` :

  the object which received the signal.

`user_data` :

  user data set when the signal handler was connected.

### `"stopped"`シグナル

    void                user_function                      (MilterServerContext *milterservercontext,
                                                            gpointer             user_data)                : Run Last

`milterservercontext` :

  the object which received the signal.

`user_data` :

  user data set when the signal handler was connected.

### `"writing-timeout"`シグナル

    void                user_function                      (MilterServerContext *milterservercontext,
                                                            gpointer             user_data)                : Run Last

`milterservercontext` :

  the object which received the signal.

`user_data` :

  user data set when the signal handler was connected.