milterを使った効果的な迷惑メール対策 - milter manager

MilterClientContext

MilterClientContext — milterプロトコルを処理します。

Functions

#define MILTER_CLIENT_CONTEXT_STATE_IN_MESSAGE_PROCESSING()
GQuark milter_client_context_error_quark ()
MilterClientContext * milter_client_context_new ()
gboolean milter_client_context_feed ()
gpointer milter_client_context_get_private_data ()
void milter_client_context_set_private_data ()
gboolean milter_client_context_set_reply ()
gchar * milter_client_context_format_reply ()
gboolean milter_client_context_add_header ()
gboolean milter_client_context_insert_header ()
gboolean milter_client_context_change_header ()
gboolean milter_client_context_delete_header ()
gboolean milter_client_context_change_from ()
gboolean milter_client_context_add_recipient ()
gboolean milter_client_context_delete_recipient ()
gboolean milter_client_context_replace_body ()
gboolean milter_client_context_progress ()
gboolean milter_client_context_quarantine ()
void milter_client_context_set_timeout ()
guint milter_client_context_get_timeout ()
void milter_client_context_set_state ()
MilterClientContextState milter_client_context_get_state ()
void milter_client_context_set_quarantine_reason ()
const gchar * milter_client_context_get_quarantine_reason ()
MilterClientContextState milter_client_context_get_last_state ()
void milter_client_context_set_status ()
MilterStatus milter_client_context_get_status ()
void milter_client_context_set_option ()
MilterOption * milter_client_context_get_option ()
void milter_client_context_set_socket_address ()
MilterGenericSocketAddress * milter_client_context_get_socket_address ()
MilterMessageResult * milter_client_context_get_message_result ()
void milter_client_context_set_message_result ()
void milter_client_context_reset_message_related_data ()
guint milter_client_context_get_n_processing_sessions ()
void milter_client_context_set_packet_buffer_size ()
guint milter_client_context_get_packet_buffer_size ()
void milter_client_context_set_mail_transaction_shelf_value ()
const gchar * milter_client_context_get_mail_transaction_shelf_value ()
GHashTable * milter_client_context_get_mail_transaction_shelf ()
void milter_client_context_clear_mail_transaction_shelf ()
void milter_client_context_mail_transaction_shelf_foreach ()

プロパティ

MilterClient * client Read / Write / Construct Only
MilterMessageResult * message-result Read / Write
MilterOption * option Read / Write
guint packet-buffer-size Read / Write
gchar * quarantine-reason Read / Write
MilterClientContextState state Read / Write
MilterStatus status Read / Write

オブジェクト階層

    GEnum
    ├── MilterClientContextError
    ╰── MilterClientContextState
    GObject
    ╰── MilterAgent
        ╰── MilterProtocolAgent
            ╰── MilterClientContext

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

MilterClientContext implements

説明

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

各milterプロトコルコマンドを処理するために、MilterClientContextのシグナルに接続します。MilterClientContextにはmilterプロトコルのイベントに対応したシグナルがあります。

NOTE: You will need to check whether the current state is message processing or not. You can use MILTER_CLIENT_CONTEXT_STATE_IN_MESSAGE_PROCESSING for it.

以下はシグナルに接続する例です。すべてのシグナルに接続して、各シグナルハンドラはイベント名を表示します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
static MilterStatus
cb_negotiate (MilterClientContext *context, MilterOption *option,
              gpointer user_data)
{
    g_print("negotiate\n");
    return MILTER_STATUS_ALL_OPTIONS;
}

static MilterStatus
cb_connect (MilterClientContext *context, const gchar *host_name,
            const struct sockaddr *address, socklen_t address_length,
            gpointer user_data)
{
    g_print("connect\n");
    return MILTER_STATUS_CONTINUE;
}

static MilterStatus
cb_helo (MilterClientContext *context, const gchar *fqdn, gpointer user_data)
{
    g_print("helo\n");
    return MILTER_STATUS_CONTINUE;
}

static MilterStatus
cb_envelope_from (MilterClientContext *context, const gchar *from,
                  gpointer user_data)
{
    g_print("envelope-from\n");
    return MILTER_STATUS_CONTINUE;
}

static MilterStatus
cb_envelope_recipient (MilterClientContext *context, const gchar *to,
                       gpointer user_data)
{
    g_print("envelope-recipient\n");
    return MILTER_STATUS_CONTINUE;
}

static MilterStatus
cb_data (MilterClientContext *context, gpointer user_data)
{
    g_print("data\n");
    return MILTER_STATUS_CONTINUE;
}

static MilterStatus
cb_header (MilterClientContext *context, const gchar *name, const gchar *value,
           gpointer user_data)
{
    g_print("header\n");
    return MILTER_STATUS_CONTINUE;
}

static MilterStatus
cb_end_of_header (MilterClientContext *context, gpointer user_data)
{
    g_print("end-of-header\n");
    return MILTER_STATUS_CONTINUE;
}

static MilterStatus
cb_body (MilterClientContext *context, const gchar *chunk, gsize length,
         gpointer user_data)
{
    g_print("body\n");
    return MILTER_STATUS_CONTINUE;
}

static MilterStatus
cb_end_of_message (MilterClientContext *context,
                   const gchar *chunk, gsize length,
                   gpointer user_data)
{
    g_print("end-of-message\n");
    return MILTER_STATUS_CONTINUE;
}

static MilterStatus
cb_abort (MilterClientContext *context, MilterClientContextState state,
          gpointer user_data)
{
    g_print("abort\n");
    return MILTER_STATUS_CONTINUE;
}

static MilterStatus
cb_unknown (MilterClientContext *context, const gchar *command,
            gpointer user_data)
{
    g_print("unknown\n");
    return MILTER_STATUS_CONTINUE;
}

static void
setup_context_signals (MilterClientContext *context)
{
#define CONNECT(name)                                                   \
    g_signal_connect(context, #name, G_CALLBACK(cb_ ## name), NULL)

    CONNECT(negotiate);
    CONNECT(connect);
    CONNECT(helo);
    CONNECT(envelope_from);
    CONNECT(envelope_recipient);
    CONNECT(data);
    CONNECT(header);
    CONNECT(end_of_header);
    CONNECT(body);
    CONNECT(end_of_message);
    CONNECT(abort);
    CONNECT(unknown);

#undef CONNECT
}

Functions

MILTER_CLIENT_CONTEXT_STATE_IN_MESSAGE_PROCESSING()

#define             MILTER_CLIENT_CONTEXT_STATE_IN_MESSAGE_PROCESSING(state)

milter_client_context_error_quark ()

GQuark
milter_client_context_error_quark (void);

milter_client_context_new ()

MilterClientContext *
milter_client_context_new (MilterClient *client);

Creates a new context object. Normally, context object is created by MilterClient and passed by “connection-established” signal.

Parameters

client

context用のMilterClientオブジェクト。

 

Returns

新しいMilterClientContextオブジェクト。


milter_client_context_feed ()

gboolean
milter_client_context_feed (MilterClientContext *context,
                            const gchar *chunk,
                            gsize size,
                            GError **error);

Feeds a chunk to the context . You can use it for testing or debugging.

Parameters

context

MilterClientContext

 

chunk

the string to be fed to context .

 

size

the size of chunk .

 

error

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

 

Returns

成功時はTRUE


milter_client_context_get_private_data ()

gpointer
milter_client_context_get_private_data
                               (MilterClientContext *context);

Gets the private data of the context .

Parameters

context

MilterClientContext

 

Returns

milter_client_context_set_private_data()で設定したプライベートなデータ、あるいはNULL


milter_client_context_set_private_data ()

void
milter_client_context_set_private_data
                               (MilterClientContext *context,
                                gpointer data,
                                GDestroyNotify destroy);

Sets the private data of the context . data is destroyed by destroy when data is unset. data is unset when new private data is set or context is destroyed.

Parameters

context

MilterClientContext

 

data

プライベートなデータ。

 

destroy

dataの破棄関数、あるいはNULL

 

milter_client_context_set_reply ()

gboolean
milter_client_context_set_reply (MilterClientContext *context,
                                 guint code,
                                 const gchar *extended_code,
                                 const gchar *message,
                                 GError **error);

エラー応答コードを設定します。MILTER_REPLY_TEMPORARY_FAILUREのときは4xx codeを使います。MILTER_REPLY_REJECTのときは5xx codeを使います。

milter.orgの smfi_setreplyも見てください。

Parameters

context

MilterClientContext

 

code

3桁のSMTPエラー応答コード。(RFC 2821)4xxと5xxだけが使えます。

 

extended_code

拡張応答コード(RFC 1893/2034)、あるいはNULL

 

message

SMTP応答のテキスト部分またはNULL

 

error

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

 

Returns

成功時はTRUE


milter_client_context_format_reply ()

gchar *
milter_client_context_format_reply (MilterClientContext *context);

milter_client_context_set_reply()で指定された現在のエラー応答コードを整形します。エラー応答コードが設定されていない場合は、NULLを返します。

Parameters

context

MilterClientContext

 

Returns

整形された応答コード、あるいはNULL


milter_client_context_add_header ()

gboolean
milter_client_context_add_header (MilterClientContext *context,
                                  const gchar *name,
                                  const gchar *value,
                                  GError **error);

Adds a header to the current message's header list. This function can be called in “end-of-message” signal.

milter.orgの smfi_addheaderも見てください。

FIXME: MILTER_ACTION_ADD_HEADERSについて書くこと。

Parameters

context

MilterClientContext

 

name

ヘッダ名。

 

value

ヘッダ値。

 

error

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

 

Returns

成功時はTRUE


milter_client_context_insert_header ()

gboolean
milter_client_context_insert_header (MilterClientContext *context,
                                     guint32 index,
                                     const gchar *name,
                                     const gchar *value,
                                     GError **error);

Inserts a header into the current message's header lists at index . This function can be called in “end-of-message” signal. See also smfi_insheader on milter.org.

FIXME: MILTER_ACTION_ADD_HEADERSについて書くこと。

Parameters

context

MilterClientContext

 

index

挿入する位置。

 

name

ヘッダ名。

 

value

ヘッダ値。

 

error

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

 

Returns

成功時はTRUE


milter_client_context_change_header ()

gboolean
milter_client_context_change_header (MilterClientContext *context,
                                     const gchar *name,
                                     guint32 index,
                                     const gchar *value,
                                     GError **error);

Changes a header that is located at index in headers that all of them are named name . If value is NULL, the header is deleted. This function can be called in “end-of-message” signal.

milter.orgの smfi_chgheaderも見てください。

FIXME: MILTER_ACTION_CHANGE_HEADERSについて書くこと。

Parameters

context

MilterClientContext

 

name

ヘッダ名。

 

index

the index of headers that all of them are named

 

name. (1-based) FIXME

should change 0-based?

 

value

ヘッダ値。ターゲットのヘッダを削除する場合はNULLを指定してください。

 

error

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

 

Returns

成功時はTRUE


milter_client_context_delete_header ()

gboolean
milter_client_context_delete_header (MilterClientContext *context,
                                     const gchar *name,
                                     guint32 index,
                                     GError **error);

Deletes a header that is located at index in headers that all of them are named name . This function can be called in “end-of-message” signal. This function works same as milter_client_context_change_header() with NULL as value .

FIXME: MILTER_ACTION_CHANGE_HEADERSについて書くこと。

Parameters

context

MilterClientContext

 

name

ヘッダ名。

 

index

the index of headers that all of them are named

 

name. (1-based) FIXME

should change 0-based?

 

error

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

 

Returns

成功時はTRUE


milter_client_context_change_from ()

gboolean
milter_client_context_change_from (MilterClientContext *context,
                                   const gchar *from,
                                   const gchar *parameters,
                                   GError **error);

Changes the envelope from address of the current message. ESMTP's 'MAIL FROM' parameter can be set by parameters . parameters may be NULL. This function can be called in “end-of-message” signal. See also smfi_chgfrom on milter.org.

FIXME: MILTER_ACTION_CHANGE_FROMについて書くこと。

Parameters

context

MilterClientContext

 

from

新しい送信アドレス。

 

parameters

ESMTPの'MAIL FROM'パラメタ。NULLも可。

 

error

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

 

Returns

成功時はTRUE


milter_client_context_add_recipient ()

gboolean
milter_client_context_add_recipient (MilterClientContext *context,
                                     const gchar *recipient,
                                     const gchar *parameters,
                                     GError **error);

Adds a new envelope recipient address to the current message. ESMTP's 'RCPT TO' parameter can be set by parameters . parameters may be NULL. This function can be called in “end-of-message” signal. See also smfi_addrcpt and smfi_addrcpt_par on milter.org.

FIXME: MILTER_ACTION_ADD_RECIPIENTとMILTER_ACTION_ADD_ENVELOPE_RECIPIENT_WITH_PARAMETERSについて書くこと。

Parameters

context

MilterClientContext

 

recipient

新しい宛先アドレス。

 

parameters

ESMTPの'RCPT TO'パラメタ。NULLも可。

 

error

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

 

Returns

成功時はTRUE


milter_client_context_delete_recipient ()

gboolean
milter_client_context_delete_recipient
                               (MilterClientContext *context,
                                const gchar *recipient,
                                GError **error);

Removes a envelope recipient that named recipient . This function can be called in “end-of-message” signal. See also smfi_delrcpt on milter.org.

FIXME: MILTER_ACTION_DELETE_RECIPIENTについて書くこと。

Parameters

context

MilterClientContext

 

recipient

削除する宛先アドレス。

 

error

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

 

Returns

成功時はTRUE


milter_client_context_replace_body ()

gboolean
milter_client_context_replace_body (MilterClientContext *context,
                                    const gchar *body,
                                    gsize body_size,
                                    GError **error);

Replaces the body of the current message with body . This function can be called in “end-of-message” signal. See also smfi_replacebody on milter.org.

FIXME: MILTER_ACTION_CHANGE_BODYについて書くこと。

Parameters

context

MilterClientContext

 

body

新しい本文。

 

body_size

the size of body .

 

error

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

 

Returns

成功時はTRUE


milter_client_context_progress ()

gboolean
milter_client_context_progress (MilterClientContext *context);

Notifies the MTA that this milter is still in progress. This function can be called in “end-of-message” signal. See also smfi_progress on milter.org.

Parameters

context

MilterClientContext

 

Returns

成功時はTRUE


milter_client_context_quarantine ()

gboolean
milter_client_context_quarantine (MilterClientContext *context,
                                  const gchar *reason);

Quarantines the current message with reason . This function can be called in “end-of-message” signal. See also smfi_quarantine on milter.org.

FIXME: MILTER_ACTION_QUARANTINEについて書くこと。

Parameters

context

MilterClientContext

 

reason

どうして現在のメッセージが隔離されるかの理由。

 

Returns

成功時はTRUE


milter_client_context_set_timeout ()

void
milter_client_context_set_timeout (MilterClientContext *context,
                                   guint timeout);

Sets the timeout by seconds. If MTA doesn't responses in timeout seconds, “timeout” signal is emitted. See also smfi_settimeout on milter.org.

Parameters

context

MilterClientContext

 

timeout

秒単位のタイムアウト。(既定値は7210秒)

 

milter_client_context_get_timeout ()

guint
milter_client_context_get_timeout (MilterClientContext *context);

秒単位でタイムアウトを取得します。

Parameters

context

MilterClientContext

 

Returns

秒単位でのタイムアウト。


milter_client_context_set_state ()

void
milter_client_context_set_state (MilterClientContext *context,
                                 MilterClientContextState state);

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

This is for testing. Don't use it directory for normal use.

Parameters

context

MilterClientContext

 

state

MilterClientContextState

 

milter_client_context_get_state ()

MilterClientContextState
milter_client_context_get_state (MilterClientContext *context);

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

This is for testing. Don't use it directory for normal use.

Parameters

context

MilterClientContext

 

Returns

現在の状態。


milter_client_context_set_quarantine_reason ()

void
milter_client_context_set_quarantine_reason
                               (MilterClientContext *context,
                                const gchar *reason);

Sets the quarantine reason.

This is for testing. Don't use it directory for normal use.

Parameters

context

MilterClientContext

 

reason

a quarantine reason.

 

milter_client_context_get_quarantine_reason ()

const gchar *
milter_client_context_get_quarantine_reason
                               (MilterClientContext *context);

Gets the quarantine reason.

This is for testing. Don't use it directory for normal use.

Parameters

context

MilterClientContext

 

Returns

隔離理由。


milter_client_context_get_last_state ()

MilterClientContextState
milter_client_context_get_last_state (MilterClientContext *context);

Gets the last state. It's one of start, negotiate, connect, helo, envelope-from, envelope-recipient, data, unknown, header, end-of-header, body and end-of-message.

Parameters

context

MilterClientContext

 

Returns

the last state.


milter_client_context_set_status ()

void
milter_client_context_set_status (MilterClientContext *context,
                                  MilterStatus status);

Sets the current status.

Parameters

context

MilterClientContext

 

status

a MilterStatus.

 

milter_client_context_get_status ()

MilterStatus
milter_client_context_get_status (MilterClientContext *context);

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

Parameters

context

MilterClientContext

 

Returns

現在の状態。


milter_client_context_set_option ()

void
milter_client_context_set_option (MilterClientContext *context,
                                  MilterOption *option);

現在のコンテキストのオプションを取得します。

Parameters

context

MilterClientContext

 

option

MilterOption

 

milter_client_context_get_option ()

MilterOption *
milter_client_context_get_option (MilterClientContext *context);

コンテキストに接続しているサーバのソケットアドレスを取得します。

Parameters

context

MilterClientContext

 

Returns

コンテキストに接続しているサーバのソケットアドレス。


milter_client_context_set_socket_address ()

void
milter_client_context_set_socket_address
                               (MilterClientContext *context,
                                MilterGenericSocketAddress *address);

Sets the socket address of connected server for the context.

Parameters

context

MilterClientContext

 

address

a MilterGenericSocketAddress.

 

milter_client_context_get_socket_address ()

MilterGenericSocketAddress *
milter_client_context_get_socket_address
                               (MilterClientContext *context);

milter_client_context_get_message_result ()

MilterMessageResult *
milter_client_context_get_message_result
                               (MilterClientContext *context);

Gets the message result of context .

Parameters

context

MilterClientContext

 

Returns

the message result of context .


milter_client_context_set_message_result ()

void
milter_client_context_set_message_result
                               (MilterClientContext *context,
                                MilterMessageResult *result);

Sets the message result of context .

Parameters

context

MilterClientContext

 

result

the message result.

 

milter_client_context_reset_message_related_data ()

void
milter_client_context_reset_message_related_data
                               (MilterClientContext *context);

Resets message related data of context .

Normally, you don't need to call this function.

Parameters

context

MilterClientContext

 

milter_client_context_get_n_processing_sessions ()

guint
milter_client_context_get_n_processing_sessions
                               (MilterClientContext *context);

Returns number of the current processing sessions.

Parameters

context

MilterClientContext

 

Returns

number of the current processing sessions.


milter_client_context_set_packet_buffer_size ()

void
milter_client_context_set_packet_buffer_size
                               (MilterClientContext *context,
                                guint size);

Sets the packet buffer size for the context. Packets on end-of-message are buffered until the buffer size is full. Packet buffering is for performance.

Parameters

context

MilterClientContext

 

size

a packet buffer size in bytes. (The deafult is 0 bytes. It means buffering is disabled.)

 

milter_client_context_get_packet_buffer_size ()

guint
milter_client_context_get_packet_buffer_size
                               (MilterClientContext *context);

Gets the packet buffer size for the context.

Parameters

context

MilterClientContext

 

Returns

the packet buffer size for the context.


milter_client_context_set_mail_transaction_shelf_value ()

void
milter_client_context_set_mail_transaction_shelf_value
                               (MilterClientContext *context,
                                const gchar *key,
                                const gchar *value);

Sets the string for the mail_transaction_shelf.

Parameters

context

MilterClientContext

 

key

a string

 

value

a string

 

milter_client_context_get_mail_transaction_shelf_value ()

const gchar *
milter_client_context_get_mail_transaction_shelf_value
                               (MilterClientContext *context,
                                const gchar *key);

Gets the string for the mail_transaction_shelf.

Parameters

context

MilterClientContext

 

key

a key

 

Returns

the string for the mail_transaction_shelf.


milter_client_context_get_mail_transaction_shelf ()

GHashTable *
milter_client_context_get_mail_transaction_shelf
                               (MilterClientContext *context);

Gets the mail_transaction_shelf. This is a mail-transaction scope storage.

Parameters

context

MilterClientContext

 

Returns

the GHashTable for the context.


milter_client_context_clear_mail_transaction_shelf ()

void
milter_client_context_clear_mail_transaction_shelf
                               (MilterClientContext *context);

Remove all keys and values from mail_transaction_shelf.

Parameters

context

MilterClientContext

 

milter_client_context_mail_transaction_shelf_foreach ()

void
milter_client_context_mail_transaction_shelf_foreach
                               (MilterClientContext *context,
                                GHFunc func,
                                gpointer user_data);

A wrapper for g_hash_table_foreach().

Parameters

context

MilterClientContext

 

func

the function to call for each key/value pair

 

user_data

user data to pass to the function

 

Types and Values

MILTER_CLIENT_CONTEXT_ERROR

#define MILTER_CLIENT_CONTEXT_ERROR           (milter_client_context_error_quark())

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


enum MilterClientContextError

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

Members

MILTER_CLIENT_CONTEXT_ERROR_INVALID_CODE

milter_client_context_set_reply()で指定されたステータスコードが不正であることを示します。

 

MILTER_CLIENT_CONTEXT_ERROR_IO_ERROR

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

 

MILTER_CLIENT_CONTEXT_ERROR_NULL

Indicates unexpected empty value is passed.

 

MILTER_CLIENT_CONTEXT_ERROR_INVALID_STATE

現在のMilterClientContextStateで予期しない操作が要求されたことを示します。

 

MILTER_CLIENT_CONTEXT_ERROR_INVALID_ACTION

コンテキストのMilterActionFlagsで予期しない操作が要求されたことを示します。

 

MILTER_CLIENT_CONTEXT_ERROR_EMPTY

   

enum MilterClientContextState

MilterClientContextの状態を識別します。

Members

MILTER_CLIENT_CONTEXT_STATE_INVALID

不正な状態。

 

MILTER_CLIENT_CONTEXT_STATE_START

はじまったばかり。

 

MILTER_CLIENT_CONTEXT_STATE_NEGOTIATE

ネゴシエーションを開始。

 

MILTER_CLIENT_CONTEXT_STATE_NEGOTIATE_REPLIED

ネゴシエーション応答を受信した

 

MILTER_CLIENT_CONTEXT_STATE_CONNECT

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

 

MILTER_CLIENT_CONTEXT_STATE_CONNECT_REPLIED

接続情報への応答を受信した。

 

MILTER_CLIENT_CONTEXT_STATE_HELO

HELOコマンドの開始。

 

MILTER_CLIENT_CONTEXT_STATE_HELO_REPLIED

HELOコマンドへの応答を受信した。

 

MILTER_CLIENT_CONTEXT_STATE_ENVELOPE_FROM

MAIL FROMコマンド開始。

 

MILTER_CLIENT_CONTEXT_STATE_ENVELOPE_FROM_REPLIED

MAIL FROMコマンドへの応答を受信した。

 

MILTER_CLIENT_CONTEXT_STATE_ENVELOPE_RECIPIENT

RCPT TOコマンドの開始。

 

MILTER_CLIENT_CONTEXT_STATE_ENVELOPE_RECIPIENT_REPLIED

RCPT TOコマンドへの応答を受信した。

 

MILTER_CLIENT_CONTEXT_STATE_DATA

DATAコマンドの開始。

 

MILTER_CLIENT_CONTEXT_STATE_DATA_REPLIED

DATAコマンドへの応答を受信した。

 

MILTER_CLIENT_CONTEXT_STATE_UNKNOWN

未知のSMTPコマンドの受信。

 

MILTER_CLIENT_CONTEXT_STATE_UNKNOWN_REPLIED

未知のSMTPコマンドへの応答を受信した。

 

MILTER_CLIENT_CONTEXT_STATE_HEADER

ヘッダを送信した。

 

MILTER_CLIENT_CONTEXT_STATE_HEADER_REPLIED

ヘッダへの応答を受信した。

 

MILTER_CLIENT_CONTEXT_STATE_END_OF_HEADER

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

 

MILTER_CLIENT_CONTEXT_STATE_END_OF_HEADER_REPLIED

ヘッダ終了への応答を受信した。

 

MILTER_CLIENT_CONTEXT_STATE_BODY

本体のかたまりの送信。

 

MILTER_CLIENT_CONTEXT_STATE_BODY_REPLIED

本体への応答を受信した。

 

MILTER_CLIENT_CONTEXT_STATE_END_OF_MESSAGE

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

 

MILTER_CLIENT_CONTEXT_STATE_END_OF_MESSAGE_REPLIED

メッセージ終了への応答を受信した。

 

MILTER_CLIENT_CONTEXT_STATE_QUIT

正常終了の開始。

 

MILTER_CLIENT_CONTEXT_STATE_QUIT_REPLIED

正常終了への応答を受信した。

 

MILTER_CLIENT_CONTEXT_STATE_ABORT

異常終了の開始。

 

MILTER_CLIENT_CONTEXT_STATE_ABORT_REPLIED

異常終了への応答を受信した。

 

MILTER_CLIENT_CONTEXT_STATE_FINISHED

終了した。

 

プロパティ詳細

The “client” property

  “client”                   MilterClient *

コンテキストのクライアント。

Flags: Read / Write / Construct Only


The “message-result” property

  “message-result”           MilterMessageResult *

クライアントコンテキストのメッセージの処理結果。

Flags: Read / Write


The “option” property

  “option”                   MilterOption *

クライントコンテキストのオプション。

Flags: Read / Write


The “packet-buffer-size” property

  “packet-buffer-size”       guint

クライアントコンテキストのパケットバッファサイズ。

Flags: Read / Write

デフォルト値: 0


The “quarantine-reason” property

  “quarantine-reason”        gchar *

クライアントコンテキストの隔離理由。

Flags: Read / Write

デフォルト値: NULL


The “state” property

  “state”                    MilterClientContextState

クライアントコンテキストの状態。

Flags: Read / Write

デフォルト値: MILTER_CLIENT_CONTEXT_STATE_INVALID


The “status” property

  “status”                   MilterStatus

クライアントコンテキストのステータス。

Flags: Read / Write

デフォルト値: MILTER_STATUS_DEFAULT

シグナル詳細

The “abort” signal

MilterStatus
user_function (MilterClientContext     *context,
               MilterClientContextState Returns,
               gpointer                 user_data)

This signal may be emitted at any time between “envelope-from” and “end-of-message”. This signal is only emitted if the milter causes an internal error and the message processing isn't completed. For example, if the milter has already returned MILTER_STATUS_ACCEPT, MILTER_STATUS_REJECT, MILTER_STATUS_DISCARD and MILTER_STATUS_TEMPORARY_FAILURE, this signal will not emitted.

If the milter has any resources allocated for the message between “envelope-from” and “end-of-message”, should be freed in this signal. But any resources allocated for the connection should not be freed in this signal. It should be freed in “finished”.

すべての利用可能な応答ステータスは以下の通りです。

MILTER_STATUS_CONTINUE

現在のメッセージに対する処理を続けます。

MILTER_STATUS_DISCARD

Accepts the current message and discards it silently. “abort” is not emitted.

MILTER_STATUS_ACCEPT

Accepts the current message without further more processing. “abort” is not emitted.

MILTER_STATUS_TEMPORARY_FAILURE

Rejects the current message with temporary failure. (i.e. 4xx status code in SMTP) “abort” is not emitted.

MILTER_STATUS_PROGRESS

It means that the processing in callback is in progress and returning response status is pending. The main loop for the milter is continued. If you returns this status, you need to emit “end-of-message-response” signal by yourself with one of the above MilterStatuses. This status may be used for a milter that has IO wait. (e.g. The milter may need to connect to the its server like clamav-milter) Normally, this status will not be used.

milter.orgの xxfi_abortも見てください。

Parameters

context

シグナルを受け取るコンテキスト。

 

user_data

user data set when the signal handler was connected.

 

Returns

応答ステータス。

Flags: Run Last


The “abort-response” signal

void
user_function (MilterClientContext *context,
               MilterStatus         status,
               gpointer             user_data)

This signal is emitted implicitly after “abort” returns a status except MILTER_STATUS_PROGRESS. This signal's default handler replies a response to MTA. You don't need to connect this signal.

If you returns MILTER_STATUS_PROGRESS in “abort”, you need to emit this signal to context by yourself.

Parameters

context

シグナルを受け取るコンテキスト。

 

status

応答ステータス。

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “body” signal

MilterStatus
user_function (MilterClientContext *context,
               gchar               *chunk,
               guint64              size,
               gpointer             user_data)

This signal is emitted on body data is received. This signal is emitted zero or more times between “end-of-header” and “end-of-message”.

すべての利用可能な応答ステータスは以下の通りです。

MILTER_STATUS_CONTINUE

現在のメッセージに対する処理を続けます。

MILTER_STATUS_REJECT

Rejects the current message. “abort” is not emitted.

MILTER_STATUS_DISCARD

Accepts the current message and discards it silently. “abort” is not emitted.

MILTER_STATUS_ACCEPT

Accepts the current message without further more processing. “abort” is not emitted.

MILTER_STATUS_TEMPORARY_FAILURE

Rejects the current message with temporary failure. (i.e. 4xx status code in SMTP) “abort” is not emitted.

MILTER_STATUS_SKIP

Skips further body processing. “end-of-message” is emitted.

MILTER_STATUS_NO_REPLY

Doesn't send a reply back to MTA. The milter must set MILTER_STEP_NO_REPLY_BODY in “negotiate” handler.

MILTER_STATUS_PROGRESS

It means that the processing in callback is in progress and returning response status is pending. The main loop for the milter is continued. If you returns this status, you need to emit “body-response” signal by yourself with one of the above MilterStatuses. This status may be used for a milter that has IO wait. (e.g. The milter may need to connect to the its server like clamav-milter) Normally, this status will not be used.

milter.orgの xxfi_bodyも見てください。

Parameters

context

シグナルを受け取るコンテキスト。

 

chunk

本文の1かたまり。

 

size

the size of chunk .

 

user_data

user data set when the signal handler was connected.

 

Returns

応答ステータス。

Flags: Run Last


The “body-response” signal

void
user_function (MilterClientContext *context,
               MilterStatus         status,
               gpointer             user_data)

This signal is emitted implicitly after “body” returns a status except MILTER_STATUS_PROGRESS. This signal's default handler replies a response to MTA. You don't need to connect this signal.

If you returns MILTER_STATUS_PROGRESS in “body”, you need to emit this signal to context by yourself.

Parameters

context

シグナルを受け取るコンテキスト。

 

status

応答ステータス。

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “connect” signal

MilterStatus
user_function (MilterClientContext *context,
               gchar               *host_name,
               gpointer             address,
               guint                address_size,
               gpointer             user_data)

This signal is emitted on SMTP client is connected to MTA.

すべての利用可能な応答ステータスは以下の通りです。

MILTER_STATUS_CONTINUE

現在の接続に対する処理を続行します。

MILTER_STATUS_REJECT

Rejects the current connection. “finished” will be emitted.

MILTER_STATUS_ACCEPT

Accepts the current connection without further more processing. “finished” will be emitted.

MILTER_STATUS_TEMPORARY_FAILURE

Rejects the current connection with a temporary failure. (i.e. 4xx status code in SMTP) “finished” will be emitted.

MILTER_STATUS_NO_REPLY

Doesn't send a reply back to MTA. The milter must set MILTER_STEP_NO_REPLY_CONNECT in “negotiate” handler.

MILTER_STATUS_PROGRESS

It means that the processing in callback is in progress and returning response status is pending. The main loop for the milter is continued. If you returns this status, you need to emit “connect-response” signal by yourself with one of the above MilterStatuses. This status may be used for a milter that has IO wait. (e.g. The milter may need to connect to the its server like clamav-milter) Normally, this status will not be used.

milter.orgのxxfi_connectも見てください。

Parameters

context

シグナルを受け取るコンテキスト。

 

host_name

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

 

address

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

 

address_size

the size of address . (socklen_t)

 

user_data

user data set when the signal handler was connected.

 

Returns

応答ステータス。

Flags: Run Last


The “connect-response” signal

void
user_function (MilterClientContext *context,
               MilterStatus         status,
               gpointer             user_data)

This signal is emitted implicitly after “connect” returns a status except MILTER_STATUS_PROGRESS. This signal's default handler replies a response to MTA. You don't need to connect this signal.

If you returns MILTER_STATUS_PROGRESS in “connect”, you need to emit this signal to context by yourself.

Parameters

context

シグナルを受け取るコンテキスト。

 

status

応答ステータス。

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “data” signal

MilterStatus
user_function (MilterClientContext *context,
               gpointer             user_data)

このシグナルはSMTPの"DATA"コマンドのときに発行されます。

すべての利用可能な応答ステータスは以下の通りです。

MILTER_STATUS_CONTINUE

現在のメッセージに対する処理を続けます。

MILTER_STATUS_REJECT

Rejects the current message. “abort” is not emitted.

MILTER_STATUS_DISCARD

Accepts the current message and discards it silently. “abort” is not emitted.

MILTER_STATUS_TEMPORARY_FAILURE

Rejects the current message with temporary failure. (i.e. 4xx status code in SMTP) “abort” is not emitted.

MILTER_STATUS_NO_REPLY

Doesn't send a reply back to MTA. The milter must set MILTER_STEP_NO_REPLY_DATA in “negotiate” handler.

MILTER_STATUS_PROGRESS

It means that the processing in callback is in progress and returning response status is pending. The main loop for the milter is continued. If you returns this status, you need to emit “data-response” signal by yourself with one of the above MilterStatuses. This status may be used for a milter that has IO wait. (e.g. The milter may need to connect to the its server like clamav-milter) Normally, this status will not be used.

milter.orgの xxfi_dataも見てください。

Parameters

context

シグナルを受け取るコンテキスト。

 

user_data

user data set when the signal handler was connected.

 

Returns

応答ステータス。

Flags: Run Last


The “data-response” signal

void
user_function (MilterClientContext *context,
               MilterStatus         status,
               gpointer             user_data)

This signal is emitted implicitly after “data” returns a status except MILTER_STATUS_PROGRESS. This signal's default handler replies a response to MTA. You don't need to connect this signal.

If you returns MILTER_STATUS_PROGRESS in “data”, you need to emit this signal to context by yourself.

Parameters

context

シグナルを受け取るコンテキスト。

 

status

応答ステータス。

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “define-macro” signal

void
user_function (MilterClientContext *context,
               MilterCommand        command,
               gpointer             macros,
               gpointer             user_data)

This signal is emitted when macro definition is received. Normally, this signal isn't needed to be connected.

Parameters

context

シグナルを受け取るコンテキスト。

 

command

マクロが定義されるコマンド。

 

macros

マクロ定義。

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “end-of-header” signal

MilterStatus
user_function (MilterClientContext *context,
               gpointer             user_data)

このシグナルはすべてのヘッダが処理されたときに呼ばれます。

すべての利用可能な応答ステータスは以下の通りです。

MILTER_STATUS_CONTINUE

現在のメッセージに対する処理を続けます。

MILTER_STATUS_REJECT

Rejects the current message. “abort” is not emitted.

MILTER_STATUS_DISCARD

Accepts the current message and discards it silently. “abort” is not emitted.

MILTER_STATUS_ACCEPT

Accepts the current message without further more processing. “abort” is not emitted.

MILTER_STATUS_TEMPORARY_FAILURE

Rejects the current message with temporary failure. (i.e. 4xx status code in SMTP) “abort” is not emitted.

MILTER_STATUS_NO_REPLY

Doesn't send a reply back to MTA. The milter must set MILTER_STEP_NO_REPLY_END_OF_HEADER in “negotiate” handler.

MILTER_STATUS_PROGRESS

It means that the processing in callback is in progress and returning response status is pending. The main loop for the milter is continued. If you returns this status, you need to emit “end-of-header-response” signal by yourself with one of the above MilterStatuses. This status may be used for a milter that has IO wait. (e.g. The milter may need to connect to the its server like clamav-milter) Normally, this status will not be used.

milter.orgの xxfi_eofも見てください。

Parameters

context

シグナルを受け取るコンテキスト。

 

user_data

user data set when the signal handler was connected.

 

Returns

応答ステータス。

Flags: Run Last


The “end-of-header-response” signal

void
user_function (MilterClientContext *context,
               MilterStatus         status,
               gpointer             user_data)

This signal is emitted implicitly after “end-of-header” returns a status except MILTER_STATUS_PROGRESS. This signal's default handler replies a response to MTA. You don't need to connect this signal.

If you returns MILTER_STATUS_PROGRESS in “end-of-header”, you need to emit this signal to context by yourself.

Parameters

context

シグナルを受け取るコンテキスト。

 

status

応答ステータス。

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “end-of-message” signal

MilterStatus
user_function (MilterClientContext *context,
               gchar               *Returns,
               guint64              arg2,
               gpointer             user_data)

This signal is emitted after all “body” are emitted. All message modifications can be done only in this signal handler. The modifications can be done with milter_client_context_add_header(), milter_client_context_change_from() and so on.

すべての利用可能な応答ステータスは以下の通りです。

MILTER_STATUS_CONTINUE

現在のメッセージに対する処理を続けます。

MILTER_STATUS_DISCARD

Accepts the current message and discards it silently. “abort” is not emitted.

MILTER_STATUS_ACCEPT

Accepts the current message without further more processing. “abort” is not emitted.

MILTER_STATUS_TEMPORARY_FAILURE

Rejects the current message with temporary failure. (i.e. 4xx status code in SMTP) “abort” is not emitted.

MILTER_STATUS_PROGRESS

It means that the processing in callback is in progress and returning response status is pending. The main loop for the milter is continued. If you returns this status, you need to emit “end-of-message-response” signal by yourself with one of the above MilterStatuses. This status may be used for a milter that has IO wait. (e.g. The milter may need to connect to the its server like clamav-milter) Normally, this status will not be used.

milter.orgの xxfi_eomも見てください。

Parameters

context

シグナルを受け取るコンテキスト。

 

user_data

user data set when the signal handler was connected.

 

Returns

応答ステータス。

Flags: Run Last


The “end-of-message-response” signal

void
user_function (MilterClientContext *context,
               MilterStatus         status,
               gpointer             user_data)

This signal is emitted implicitly after “end-of-message” returns a status except MILTER_STATUS_PROGRESS. This signal's default handler replies a response to MTA. You don't need to connect this signal.

If you returns MILTER_STATUS_PROGRESS in “end-of-message”, you need to emit this signal to context by yourself.

Parameters

context

シグナルを受け取るコンテキスト。

 

status

応答ステータス。

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “envelope-from” signal

MilterStatus
user_function (MilterClientContext *context,
               gchar               *from,
               gpointer             user_data)

このシグナルはSMTPの"MAIL FROM"コマンドのときに呼ばれます。

すべての利用可能な応答ステータスは以下の通りです。

MILTER_STATUS_CONTINUE

現在のメッセージに対する処理を続けます。

MILTER_STATUS_REJECT

Rejects the current envelope from address and message. A new envelope from may be specified. “abort” is not emitted.

MILTER_STATUS_DISCARD

Accepts the current message and discards it silently. “abort” is not emitted.

MILTER_STATUS_ACCEPT

Accepts the current message without further more processing. “abort” is not emitted.

MILTER_STATUS_TEMPORARY_FAILURE

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. “abort” is not emitted.

MILTER_STATUS_NO_REPLY

Doesn't send a reply back to MTA. The milter must set MILTER_STEP_NO_REPLY_ENVELOPE_FROM in “negotiate” handler.

MILTER_STATUS_PROGRESS

It means that the processing in callback is in progress and returning response status is pending. The main loop for the milter is continued. If you returns this status, you need to emit “envelope-from-response” signal by yourself with one of the above MilterStatuses. This status may be used for a milter that has IO wait. (e.g. The milter may need to connect to the its server like clamav-milter) Normally, this status will not be used.

milter.orgの xxfi_envfromも見てください。

Parameters

context

シグナルを受け取るコンテキスト。

 

from

SMTPの"MAIL FROM"コマンドの送信アドレス。

 

user_data

user data set when the signal handler was connected.

 

Returns

応答ステータス。

Flags: Run Last


The “envelope-from-response” signal

void
user_function (MilterClientContext *context,
               MilterStatus         status,
               gpointer             user_data)

This signal is emitted implicitly after “envelope-from” returns a status except MILTER_STATUS_PROGRESS. This signal's default handler replies a response to MTA. You don't need to connect this signal.

If you returns MILTER_STATUS_PROGRESS in “envelope-from”, you need to emit this signal to context by yourself.

Parameters

context

シグナルを受け取るコンテキスト。

 

status

応答ステータス。

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “envelope-recipient” signal

MilterStatus
user_function (MilterClientContext *context,
               gchar               *recipient,
               gpointer             user_data)

このシグナルはSMTPの"RCPT TO"コマンドのときに発行されます。

すべての利用可能な応答ステータスは以下の通りです。

MILTER_STATUS_CONTINUE

現在のメッセージに対する処理を続けます。

MILTER_STATUS_REJECT

Rejects the current envelope recipient address. Processing the current messages is continued. “abort” is not emitted.

MILTER_STATUS_DISCARD

Accepts the current message and discards it silently. “abort” is not emitted.

MILTER_STATUS_ACCEPT

Accepts the current envelope recipient. “abort” is not emitted.

MILTER_STATUS_TEMPORARY_FAILURE

Rejects the current envelope recipient address with temporary failure. (i.e. 4xx status code in SMTP) Processing the current message is continued. “abort” is not emitted.

MILTER_STATUS_NO_REPLY

Doesn't send a reply back to MTA. The milter must set MILTER_STEP_NO_REPLY_ENVELOPE_RECIPIENT in “negotiate” handler.

MILTER_STATUS_PROGRESS

It means that the processing in callback is in progress and returning response status is pending. The main loop for the milter is continued. If you returns this status, you need to emit “envelope-recipient-response” signal by yourself with one of the above MilterStatuses. This status may be used for a milter that has IO wait. (e.g. The milter may need to connect to the its server like clamav-milter) Normally, this status will not be used.

milter.orgの xxfi_envrcptも見てください。

Parameters

context

シグナルを受け取るコンテキスト。

 

recipient

SMTPの"RCPT TO"コマンドの宛先アドレス。

 

user_data

user data set when the signal handler was connected.

 

Returns

応答ステータス。

Flags: Run Last


The “envelope-recipient-response” signal

void
user_function (MilterClientContext *context,
               MilterStatus         status,
               gpointer             user_data)

This signal is emitted implicitly after “envelope-recipient” returns a status except MILTER_STATUS_PROGRESS. This signal's default handler replies a response to MTA. You don't need to connect this signal.

If you returns MILTER_STATUS_PROGRESS in “envelope-recipient”, you need to emit this signal to context by yourself.

Parameters

context

シグナルを受け取るコンテキスト。

 

status

応答ステータス。

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “header” signal

MilterStatus
user_function (MilterClientContext *context,
               gchar               *name,
               gchar               *value,
               gpointer             user_data)

This signal is emitted on each header. If MILTER_STEP_HEADER_LEADING_SPACE is set in “negotiate”, value have spaces after header name and value separator ":".

例:

1
2
3
From: from <from@example.com>
To: recipient <recipient@example.com>
Subject:a subject

MILTER_STEP_HEADER_VALUE_WITH_LEADING_SPACEあり:

1
2
3
"From", " from <from@example.com>"
"To", " recipient <recipient@example.com>"
"Subject", "a subject"

MILTER_STEP_HEADER_VALUE_WITH_LEADING_SPACEなし:

1
2
3
"From", "from <from@example.com>"
"To", "recipient <recipient@example.com>"
"Subject", "a subject"

すべての利用可能な応答ステータスは以下の通りです。

MILTER_STATUS_CONTINUE

現在のメッセージに対する処理を続けます。

MILTER_STATUS_REJECT

Rejects the current message. “abort” is not emitted.

MILTER_STATUS_DISCARD

Accepts the current message and discards it silently. “abort” is not emitted.

MILTER_STATUS_ACCEPT

Accepts the current message without further more processing. “abort” is not emitted.

MILTER_STATUS_TEMPORARY_FAILURE

Rejects the current message with temporary failure. (i.e. 4xx status code in SMTP) “abort” is not emitted.

MILTER_STATUS_NO_REPLY

Doesn't send a reply back to MTA. The milter must set MILTER_STEP_NO_REPLY_HEADER in “negotiate” handler.

MILTER_STATUS_PROGRESS

It means that the processing in callback is in progress and returning response status is pending. The main loop for the milter is continued. If you returns this status, you need to emit “header-response” signal by yourself with one of the above MilterStatuses. This status may be used for a milter that has IO wait. (e.g. The milter may need to connect to the its server like clamav-milter) Normally, this status will not be used.

milter.orgの xxfi_headerも見てください。

Parameters

context

シグナルを受け取るコンテキスト。

 

name

ヘッダ名。

 

value

ヘッダ値。valueは折り返し時に挿入された空白を含むかもしれません。

 

user_data

user data set when the signal handler was connected.

 

Returns

応答ステータス。

Flags: Run Last


The “header-response” signal

void
user_function (MilterClientContext *context,
               MilterStatus         status,
               gpointer             user_data)

This signal is emitted implicitly after “header” returns a status except MILTER_STATUS_PROGRESS. This signal's default handler replies a response to MTA. You don't need to connect this signal.

If you returns MILTER_STATUS_PROGRESS in “header”, you need to emit this signal to context by yourself.

Parameters

context

シグナルを受け取るコンテキスト。

 

status

応答ステータス。

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “helo” signal

MilterStatus
user_function (MilterClientContext *context,
               gchar               *fqdn,
               gpointer             user_data)

このシグナルはSMTPの"HELO"/"EHLO"コマンドのときに発行されます。

すべての利用可能な応答ステータスは以下の通りです。

MILTER_STATUS_CONTINUE

現在の接続に対する処理を続行します。

MILTER_STATUS_REJECT

Rejects the current connection. “finished” will be emitted.

MILTER_STATUS_ACCEPT

Accepts the current connection without further more processing. “finished” will be emitted.

MILTER_STATUS_TEMPORARY_FAILURE

Rejects the current connection with a temporary failure. (i.e. 4xx status code in SMTP) “finished” will be emitted.

MILTER_STATUS_NO_REPLY

Doesn't send a reply back to MTA. The milter must set MILTER_STEP_NO_REPLY_HELO in “negotiate” handler.

MILTER_STATUS_PROGRESS

It means that the processing in callback is in progress and returning response status is pending. The main loop for the milter is continued. If you returns this status, you need to emit “helo-response” signal by yourself with one of the above MilterStatuses. This status may be used for a milter that has IO wait. (e.g. The milter may need to connect to the its server like clamav-milter) Normally, this status will not be used.

milter.orgの xxfi_heloも見てください。

Parameters

context

シグナルを受け取るコンテキスト。

 

fqdn

SMTPの"HELO"/"EHLO"コマンドでのFQDN。

 

user_data

user data set when the signal handler was connected.

 

Returns

応答ステータス。

Flags: Run Last


The “helo-response” signal

void
user_function (MilterClientContext *context,
               MilterStatus         status,
               gpointer             user_data)

This signal is emitted implicitly after “helo” returns a status except MILTER_STATUS_PROGRESS. This signal's default handler replies a response to MTA. You don't need to connect this signal.

If you returns MILTER_STATUS_PROGRESS in “helo”, you need to emit this signal to context by yourself.

Parameters

context

シグナルを受け取るコンテキスト。

 

status

応答ステータス。

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “message-processed” signal

void
user_function (MilterClientContext *milterclientcontext,
               MilterMessageResult *arg1,
               gpointer             user_data)

Flags: Run Last


The “negotiate” signal

MilterStatus
user_function (MilterClientContext  *context,
               MilterOption         *option,
               MilterMacrosRequests *macros_requests,
               gpointer              user_data)

This signal is emitted on negotiate request from MTA. If you want to modify actions (MilterActionFlags) and steps (MilterStepFlags), you modify option . If you want to add macros that you want to receive, you modify macros_requests .

すべての利用可能な応答ステータスは以下の通りです。

MILTER_STATUS_ALL_OPTIONS

すべての利用可能なアクションとステップを有効にします。

MILTER_STATUS_REJECT

現在のセッションを拒否します。

MILTER_STATUS_CONTINUE

optionmacros_requestsで指定されたアクション、ステップ、要求マクロリストを使って現在のセッションの処理を続けます

MILTER_STATUS_PROGRESS

It means that the processing in callback is in progress and returning response status is pending. The main loop for the milter is continued. If you returns this status, you need to emit “negotiate-response” signal by yourself with one of the above MilterStatuses. This status may be used for a milter that has IO wait. (e.g. The milter may need to connect to the its server like clamav-milter) Normally, this status will not be used.

milter.orgの xxfi_negotiateも見てください。

Parameters

context

シグナルを受け取るコンテキスト。

 

option

MTAからのネゴシエーションのオプション。

 

macros_requests

要求マクロリスト。

 

user_data

user data set when the signal handler was connected.

 

Returns

応答ステータス。

Flags: Run Last


The “negotiate-response” signal

void
user_function (MilterClientContext  *context,
               MilterOption         *option,
               MilterMacrosRequests *macros_requests,
               MilterStatus          status,
               gpointer              user_data)

This signal is emitted implicitly after “negotiate” returns a status except MILTER_STATUS_PROGRESS. This signal's default handler replies a response to MTA. You don't need to connect this signal.

If you returns MILTER_STATUS_PROGRESS in “negotiate” handler, you need to emit this signal to context by yourself.

Parameters

context

シグナルを受け取るコンテキスト。

 

option

MTAからのネゴシエーションのオプション。

 

macros_requests

要求マクロリスト。

 

status

応答ステータス。

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “timeout” signal

void
user_function (MilterClientContext *context,
               gpointer             user_data)

This signal is emitted if MTA doesn't return the next command within milter_client_context_get_timeout() seconds. If “timeout” is emitted, the current connection is aborted and “finished” are emitted. “abort” may be emitted before “finished” if the milter is processing a message.

Parameters

context

シグナルを受け取るコンテキスト。

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “unknown” signal

MilterStatus
user_function (MilterClientContext *context,
               gchar               *command,
               gpointer             user_data)

このシグナルは未知のSMTPコマンドまたは未実装のSMTPコマンドが送られてきた場合に発行されます。

すべての利用可能な応答ステータスは以下の通りです。

MILTER_STATUS_REJECT

Rejects the current message. “abort” is not emitted.

MILTER_STATUS_TEMPORARY_FAILURE

Rejects the current message with temporary failure. (i.e. 4xx status code in SMTP) “abort” is not emitted.

MILTER_STATUS_NO_REPLY

Doesn't send a reply back to MTA. The milter must set MILTER_STEP_NO_REPLY_DATA in “negotiate” handler.

MILTER_STATUS_PROGRESS

It means that the processing in callback is in progress and returning response status is pending. The main loop for the milter is continued. If you returns this status, you need to emit “unknown-response” signal by yourself with one of the above MilterStatuses. This status may be used for a milter that has IO wait. (e.g. The milter may need to connect to the its server like clamav-milter) Normally, this status will not be used.

MTAは、未知のSMTPコマンドまたは未実装のSMTPコマンドは常に拒否することに中してください。

milter.orgの xxfi_unknownも見てください。

Parameters

context

シグナルを受け取るコンテキスト。

 

command

未知のSMTPコマンド。

 

user_data

user data set when the signal handler was connected.

 

Returns

応答ステータス。

Flags: Run Last


The “unknown-response” signal

void
user_function (MilterClientContext *context,
               MilterStatus         status,
               gpointer             user_data)

This signal is emitted implicitly after “unknown” returns a status except MILTER_STATUS_PROGRESS. This signal's default handler replies a response to MTA. You don't need to connect this signal.

If you returns MILTER_STATUS_PROGRESS in “unknown”, you need to emit this signal to context by yourself.

Parameters

context

シグナルを受け取るコンテキスト。

 

status

応答ステータス。

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last