NAME

Net::Server::Mail::ESMTP::STARTTLS - A module to support the STARTTLS command in Net::Server::Mail::ESMTP

SYNOPSIS

use strict;
use Net::Server::Mail::ESMTP;

my @local_domains = qw(example.com example.org);
my $server = IO::Socket::INET->new( Listen => 1, LocalPort => 25 );

my $conn;
while($conn = $server->accept)
{
    my $esmtp = Net::Server::Mail::ESMTP->new(
         socket => $conn,
         SSL_config => {
             SSL_cert_file => 'your_cert.pem',
             SSL_key_file => 'your_key.key',
             # Any other options taken by IO::Socket::SSL
         }
    );
    
    # activate some extensions
    $esmtp->register('Net::Server::Mail::ESMTP::STARTTLS');
    
    # adding optional STARTTLS handler
    $esmtp->set_callback(STARTTLS => \&tls_started);
    $esmtp->process();
    $conn->close();
}

sub tls_started {
    my ($session) = @_;

    # Now, allow authentication
    $session->register('Net::Server::Mail::ESMTP::AUTH');
}

DESCRIPTION

This module conducts a TLS handshake with the client upon receiving the STARTTLS command. It uses IO::Socket::SSL, requiring 1.831+, to perform the handshake and secure traffic.

An additional option, SSL_config, is passed to Net::Server::Mail::ESMTP's constructor. It contains options for IO::Socket::SSL's constructor. Please refer to IO::Socket::SSL's perldoc for details.

SEE ALSO

Please, see Net::Server::Mail

AUTHOR

This module has been written by Xavier Guimard <x.guimard@free.fr> using libs written by:

Mytram <rmytram@gmail.com>
Dan Moore <dan at moore.cx>

AVAILABILITY

Available on CPAN.

anonymous Git repository:

git clone git://github.com/rs/net-server-mail.git

Git repository on the web:

https://github.com/rs/net-server-mail

BUGS

Please use CPAN system to report a bug (http://rt.cpan.org/).

LICENSE AND COPYRIGHT

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.