smtpd

簡単に SMTP サーバを作れるようにするライブラリです。

ダウンロード

必要なもの

ライセンス

このプログラムは Ruby ライセンスに従います。

機能

SMTP サーバとして動作します。HELO, EHLO, MAIL, RCPT, DATA, RSET, NOOP, QUIT コマンドを認識します。

HELO, EHLO コマンドに渡されたドメイン名は @helo_name で参照できます。 MAIL コマンドに渡されたメールアドレスは @sender で参照できます。 RCPT コマンドに渡されたメールアドレスは @recipient で参照できます。

クラスメソッド

SMTPD::new(sock, domain)
ソケット sock に対して動作するような SMTPD オブジェクトを返します。 domain は HELO に対して返答するドメイン名です。

インスタンスメソッド

SMTPD#start()
SMTP サーバを開始します。
SMTPD#line_length_limit, SMTPD#line_length_limit=n
クライアントからの1行の入力が n バイトを超えるとエラーになります。 デフォルトは nil で、エラーにはなりません。
SMTPD#input_timeout, SMTPD#input_timeout=n
クライアントからの入力が n 秒間無いとエラーになります。 デフォルトは nil で、エラーにはなりません。
SMTPD#error_interval, SMTPD#error_interval=n
エラー発生時に n 秒間 sleep します。デフォルトは 5秒です。
SMTPD#use_file, SMTPD#use_file=bool
真の値を設定すると、DATA コマンドで渡されるデータを、文字列としてではなくファイルとして data_hook メソッドに渡します。 デフォルトは nil です。
SMTPD#max_size, SMTPD#max_size=n
DATA コマンドで渡されるデータの大きさが n バイトを超えるとエラーになります。 デフォルトは nil で、エラーになりません。
SMTPD#helo_hook(domain)
HELO, EHLO コマンド時に呼び出されるメソッドです。 引数は HELO, EHLO コマンドに渡されたドメイン名です。
SMTPD#mail_hook(sender)
MAIL コマンド時に呼び出されるメソッドです。 引数は MAIL コマンドに渡されたメールアドレスです。
SMTPD#rcpt_hook(rcpt)
RCPT コマンド時に呼び出されるメソッドです。 引数は RCPT コマンドに渡されたメールアドレスです。
SMTPD#data_each_line(line)
DATA コマンド時にクライアントから渡された1行毎に呼び出されるメソッドです。 引数はメッセージの行です。
SMTPD#data_hook(data)
DATA コマンド時に呼び出されるメソッドです。 引数は DATA コマンドに渡されたメッセージ本文です。
SMTPD#rset_hook()
RSET コマンド時に呼び出されるメソッドです。
SMTPD#noop_hook()
NOOP コマンド時に呼び出されるメソッドです。
SMTPD#quit_hook()
QUIT コマンド時に呼び出されるメソッドです。
SMTPD#error(msg)
SMTP のエラーを発生させます。 msg は数字3桁で始まる文字列です。

履歴

0.1.1
0.1
0.0.2
0.0.1

とみたまさひろ
Last modified: Mon Jan 3 10:39:18 JST 2005