| milter managerリファレンスマニュアル | ||||
|---|---|---|---|---|
#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; 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);
MilterServerContextは1つのサーバ側のmilterプロトコルセッションを処理します。これは各milterプロトコルセッション毎にMilterServerContextインスタンスが生成されるということです。
#define MILTER_SERVER_CONTEXT_ERROR (milter_server_context_error_quark())
MilterServerContextのエラー用のGErrorクォークを取得するために使われます。
#define MILTER_SERVER_CONTEXT_DEFAULT_CONNECTION_TIMEOUT 300
既定の秒単位での接続タイムアウト。
#define MILTER_SERVER_CONTEXT_DEFAULT_WRITING_TIMEOUT 10
既定の秒単位での書き込みタイムアウト。
#define MILTER_SERVER_CONTEXT_DEFAULT_READING_TIMEOUT 10
既定の秒単位での読み込みタイムアウト。
#define MILTER_SERVER_CONTEXT_DEFAULT_END_OF_MESSAGE_TIMEOUT 300
既定の秒単位でのメッセージ終了時の応答待ちタイムアウト。
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の関数呼び出し中に発生するエラーを識別します。
| 接続が失敗したことを示します。 | |
| 接続指定が設定されていないことを示します。 | |
現在のMilterServerContextが予期しない応答を受け取ったことを示します。 |
|
| 前の操作の結果を受け取る前に新しい操作が要求されたことを示します。 | |
| milterプロトコルデータの読み書き時に発生した入出力エラーを示します。 | |
| 未サポートの新しいバージョンが要求されたことを示します。 |
typedef enum
{
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の状態を識別します。
| はじまったばかり。 | |
| マクロ定義を送信しました。 | |
| ネゴシエーション中。 | |
| 接続情報を送信しました。 | |
| HELOコマンドの情報を送信しました。 | |
| MAIL FROMコマンドの情報を送信しました。 | |
| RCPT TOコマンドの情報を送信しました。 | |
| DATAコマンドの情報を送信しました。 | |
| 未知のSMTPコマンドを送信しました。 | |
| ヘッダを送信した。 | |
| すべてのヘッダを送信しました。 | |
| 本文の1かたまりを送信しました。 | |
| 本文すべてを送信しました。 | |
| 終了要求を送信しました。 | |
| 中止要求を送信しました。 |
MilterServerContext* milter_server_context_new (void);
新しいコンテキストオブジェクトを生成します。
返値 : |
新しいMilterServerContextオブジェクト。 |
void milter_server_context_set_connection_timeout
(MilterServerContext *context,
gdouble timeout);
接続時のタイムアウトを秒で設定します。もし、contextがtimeout秒以内にクライアントに接続できない場合は"timeout"シグナルが発行されます。
|
MilterServerContext。 |
|
接続時の秒単位のタイムアウト。(既定値はMILTER_SERVER_CONTEXT_DEFAULT_CONNECTION_TIMEOUT) |
void milter_server_context_set_writing_timeout
(MilterServerContext *context,
gdouble timeout);
書き込み時の秒単位のタイムアウトを設定します。contextがtimeout秒以内にクライアントのソケットに書き込めない場合は"timeout"シグナルが発行されます。
|
MilterServerContext。 |
|
秒単位での書き込みタイムアウト。(既定値はMILTER_SERVER_CONTEXT_DEFAULT_WRITING_TIMEOUT) |
void milter_server_context_set_reading_timeout
(MilterServerContext *context,
gdouble timeout);
読み込み時のタイムアウトを秒単位で指定します。contextがtimeout秒以内にクライアントソケットから応答を受け取らなかった場合は、"timeout"シグナルが発行されます。
|
MilterServerContext。 |
|
秒単位での読み込み時のタイムアウト。(既定値はMILTER_SERVER_CONTEXT_DEFAULT_READING_TIMEOUT) |
void milter_server_context_set_end_of_message_timeout
(MilterServerContext *context,
gdouble timeout);
メッセージ終了時のタイムアウトを秒単位で設定します。contextがtimeout秒以内にクライアントソケットからメッセージ終了時の応答を受け取らなかった場合は、"timeout"シグナルが発行されます。
|
MilterServerContext。 |
|
秒単位でのメッセージ終了時のタイムアウト。(既定値はMILTER_SERVER_CONTEXT_DEFAULT_END_OF_MESSAGE_TIMEOUT) |
gboolean milter_server_context_set_connection_spec (MilterServerContext *context, const gchar *spec, GError **error);
クライアントの接続指定を設定します。specが不正な形式で、errorがNULLでない場合は、エラーの詳細はerrorに設定されます。
|
MilterServerContext。 |
|
クライアントの接続指定。 |
|
エラーを受け取る場所のアドレス、またはNULL。 |
返値 : |
成功時はTRUE。 |
gboolean milter_server_context_establish_connection (MilterServerContext *context, GError **error);
クライアントへの接続を確立します。接続確立が失敗して、errorがNULLでない場合は、エラーの詳細はerrorに設定されます。
|
MilterServerContext。 |
|
エラーを受け取る場所のアドレス、またはNULL。 |
返値 : |
成功時はTRUE。 |
MilterStatus milter_server_context_get_status (MilterServerContext *context);
現在の状態を取得します。
|
MilterServerContext。 |
返値 : |
現在の状態。 |
MilterServerContextState milter_server_context_get_state (MilterServerContext *context);
現在の状態を取得します。
|
MilterServerContext。 |
返値 : |
現在の状態。 |
void milter_server_context_set_state (MilterServerContext *context, MilterServerContextState state);
現在の状態を設定します。
|
MilterServerContext。 |
|
新しい状態。 |
gboolean milter_server_context_is_processing (MilterServerContext *context);
応答を待っているかどうかを取得します。
|
MilterServerContext。 |
返値 : |
最後の書き込みの後に応答を受け取っていたらTRUE、そうでなければFALSE。 |
gboolean milter_server_context_negotiate (MilterServerContext *context, MilterOption *option);
クライアントとネゴシエーションします。
|
MilterServerContext。 |
|
ネゴシエーションのオプション。 |
返値 : |
成功時はTRUE。 |
gboolean milter_server_context_connect (MilterServerContext *context, const gchar *host_name, struct sockaddr *address, socklen_t address_length);
接続されたSMTPクライアントの情報を送信します。
|
MilterServerContext。 |
|
接続してきたSMTPクライアントのホスト名。 |
|
接続してきたSMTPクライアントのアドレス。 |
|
addressのサイズ。 |
返値 : |
成功時はTRUE。 |
gboolean milter_server_context_helo (MilterServerContext *context, const gchar *fqdn);
HELOに渡されたFQDNを送信します。
|
MilterServerContext。 |
|
FQDN。 |
返値 : |
成功時はTRUE。 |
gboolean milter_server_context_envelope_from (MilterServerContext *context, const gchar *from);
MAIL FROM時に渡されたパラメタを送信します。
|
MilterServerContext。 |
|
送信者のアドレス。 |
返値 : |
成功時はTRUE。 |
gboolean milter_server_context_envelope_recipient (MilterServerContext *context, const gchar *recipient);
RCPT TO時に渡されたパラメタを送信します。
|
MilterServerContext。 |
|
宛先アドレス。 |
返値 : |
成功時はTRUE。 |
gboolean milter_server_context_data (MilterServerContext *context);
DATAコマンドを受信したことを通知します。
|
MilterServerContext。 |
返値 : |
成功時はTRUE。 |
gboolean milter_server_context_unknown (MilterServerContext *context, const gchar *command);
受信した未知のSMTPコマンドを送信します。
|
MilterServerContext。 |
|
未知のSMTPコマンド。 |
返値 : |
成功時はTRUE。 |
gboolean milter_server_context_header (MilterServerContext *context, const gchar *name, const gchar *value);
ヘッダを送信します。
|
MilterServerContext。 |
|
ヘッダ名。 |
|
ヘッダ値。 |
返値 : |
成功時はTRUE。 |
gboolean milter_server_context_end_of_header (MilterServerContext *context);
すべてのヘッダが送信されたことを通知します。
|
MilterServerContext。 |
返値 : |
成功時はTRUE。 |
gboolean milter_server_context_body (MilterServerContext *context, const gchar *chunk, gsize size);
本文の1かたまりを送信します。
|
MilterServerContext。 |
|
本文の1かたまり。 |
|
chunkのサイズ。 |
返値 : |
成功時はTRUE。 |
gboolean milter_server_context_end_of_message (MilterServerContext *context, const gchar *chunk, gsize size);
すべての本文のかたまりを送信したことを通知します。未送信の最後の本文のかたまりも一緒に送信することができます。
|
MilterServerContext。 |
|
本文のかたまり。NULLかもしれません。 |
|
chunkのサイズ。 |
返値 : |
成功時はTRUE。 |
gboolean milter_server_context_quit (MilterServerContext *context);
現在の接続を終了します。
|
MilterServerContext。 |
返値 : |
成功時はTRUE。 |
gboolean milter_server_context_abort (MilterServerContext *context);
現在の接続を中止します。
|
MilterServerContext。 |
返値 : |
成功時はTRUE。 |
gboolean milter_server_context_is_enable_step (MilterServerContext *context, MilterStepFlags step);
contextのオプションでstepフラグが有効かどうかを取得します。
|
MilterServerContext。 |
|
ステップフラグ。 |
返値 : |
stepフラグが有効ならTRUE、そうでなければFALSE。 |
gboolean milter_server_context_get_skip_body (MilterServerContext *context);
contextが本文のかたまりを送っている間にスキップ応答を受け取ったかどうかを取得します。
|
MilterServerContext。 |
返値 : |
本文のかたまりを省略していたらTRUE、そうでなければFALSE。 |
const gchar* milter_server_context_get_name (MilterServerContext *context);
contextの名前を取得します。
|
MilterServerContext。 |
返値 : |
contextの名前。 |
void milter_server_context_set_name (MilterServerContext *context, const gchar *name);
contextの名前を設定します。
|
MilterServerContext。 |
|
名前。 |