NAME

Net::Inspect::L7::SMTP - guesses and handles SMTP traffic

SYNOPSIS

my $conn = ...
my $smtp = Net::Inspect::L7::SMTP->new($conn);
my $guess = Net::Inspect::L5::GuessProtocol->new;
$guess->attach($smtp);
...

DESCRIPTION

This class extracts SMTP traffic from TCP connections. It provides all hooks required for Net::Inspect::L4::TCP and is usually used together with it. It provides the guess_protocol hook so it can be used with Net::Inspect::L5::GuessProtocol.

Hooks provided:

guess_protocol($guess,$dir,$data,$eof,$time,$meta)
new_connection($meta)

This returns an object for the connection.

$connection->in($dir,$data,$eof,$time)

Processes new data and returns number of bytes processed. Any data not processed must be sent again with the next call.

$data are the data as string. Gaps are currently not support.

$connection->fatal($reason,$dir,$time)

The attached flow object needs to implement the following hooks:

new_connection($meta)

Called on start of SMTP connection to initialize object.

$obj->greeting($msg,$time)

Called when the initial greeting is read. $msg is the full greeting.

$obj->command($cmd,$time)

Called when a command is read. $cmd is the full command line.

$obj->response($msg,$time)

Called when a response is read. $msg is the full response.

$obj->mail_data($chunk,$time)

Called when a chunk is read inside DATA. Dot-escaping will be removed before calling mail_data End of mail data will be signaled with an empty chunk.

$obj->auth_data($line,$time)

Called within the AUTH handshake for the data send from client to server. The data (challenges) from server to client are delivered through response.

$obj->fatal($dir,$reason,$time)

Called on fatal protocol errors.