| Net-Server-Mail-ESMTP-SIZE documentation | Contained in the Net-Server-Mail-ESMTP-SIZE distribution. |
Net::Server::Mail::ESMTP::SIZE - add support for the SIZE ESMTP extension to Net::Server::Mail
use Net::Server::Mail::ESMTP;
my @local_domains = qw(example.com example.org);
my $server = new IO::Socket::INET Listen => 1, LocalPort => 25;
my $conn;
while($conn = $server->accept)
{
my $esmtp = new Net::Server::Mail::ESMTP socket => $conn;
# activate some extensions
$esmtp->register('Net::Server::Mail::ESMTP::SIZE');
$esmtp->set_size(10_000_000); #10 Milion bytes
$esmtp->process();
$conn->close()
}
Add the ESMTP SIZE extension to Net::Server::Mail::ESMTP. I stubbed this extension when I wrote Test::SMTP and thought it would be nice to finish it off.
Establishes the size threshold for rejecting messages.
Register the plugin in the ESMTP object, and then call set_size on the object instance
Jose Luis Martinez
CPAN ID: JLMARTIN
CAPSiDE
jlmartinez@capside.com
http://www.pplusdomain.net
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
The full text of the license can be found in the LICENSE file included with this module.
Net::Server::Mail, Net::Server::Mail::ESMTP
| Net-Server-Mail-ESMTP-SIZE documentation | Contained in the Net-Server-Mail-ESMTP-SIZE distribution. |
package Net::Server::Mail::ESMTP::SIZE; use strict; use base qw(Net::Server::Mail::ESMTP::Extension); use vars qw($VERSION); $VERSION = '0.02'; sub init { my ($self, $parent) = @_; $self->{parent} = $parent; return $self; } sub reply { return (['DATA' => \&reply_mail_body], ['MAIL' => \&reply_mail_from]); } sub option { return (['MAIL', 'SIZE' => \&option_mail_size]); } sub option_mail_size { my ($self, $command, $mail_from, $option, $value) = @_; if (lc($option) eq 'size'){ if ($value <= $self->{'_size_extension'}){ $self->{'_size_option_result'} = [ 200, 'OK' ]; } else { $self->{'_size_option_result'} = [ '552', 'message size exceeds fixed maximium message size' ]; } } } sub reply_mail_from { my ($self, $command, $last, $code, $message) = @_; if (defined ($self->{'_size_option_result'})){ return @{ $self->{'_size_option_result'} }; } } sub reply_mail_body { my ($self, $command, $last, $code, $message) = @_; if (length($self->{'_data'}) <= $self->{'_size_extension'}){ return ($code, $message); } else { return (552, 'Message too big!'); } } sub keyword { return 'SIZE'; } sub set_size { my ($self, $size) = @_; $self->{'_size_extension'} = $size; } *Net::Server::Mail::ESMTP::set_size = \&set_size; sub parameter { my ($self) = @_; return $self->{'parent'}->{'_size_extension'}; } 1; #################### main pod documentation begin ###################
#################### main pod documentation end ################### 1;