Net-IMAP-Client
view release on metacpan or search on metacpan
"configure" : {
"requires" : {
"ExtUtils::MakeMaker" : "0"
}
},
"runtime" : {
"requires" : {
"Encode" : "0",
"Encode::MIME::Header" : "0",
"IO::Socket::INET" : "0",
"IO::Socket::SSL" : "0",
"List::MoreUtils" : "0",
"List::Util" : "0",
"Test::More" : "0"
}
}
},
"release_status" : "stable",
"version" : "0.9507"
}
version: '1.4'
name: Net-IMAP-Client
no_index:
directory:
- t
- inc
requires:
Encode: '0'
Encode::MIME::Header: '0'
IO::Socket::INET: '0'
IO::Socket::SSL: '0'
List::MoreUtils: '0'
List::Util: '0'
Test::More: '0'
version: '0.9507'
Makefile.PL view on Meta::CPAN
WriteMakefile(
NAME => 'Net::IMAP::Client',
AUTHOR => 'Mihai Bazon <mihai.bazon@gmail.com>',
VERSION_FROM => 'lib/Net/IMAP/Client.pm',
ABSTRACT_FROM => 'lib/Net/IMAP/Client.pm',
PL_FILES => {},
PREREQ_PM => {
'Test::More' => 0,
'IO::Socket::INET' => 0,
'IO::Socket::SSL' => 0,
'List::Util' => 0,
'List::MoreUtils' => 0,
'Encode' => 0,
'Encode::MIME::Header' => 0,
},
dist => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
clean => { FILES => 'Net-IMAP-Client-*' },
);
lib/Net/IMAP/Client.pm view on Meta::CPAN
use vars qw[$VERSION];
$VERSION = '0.9507';
use strict;
use warnings;
use List::Util qw( min max first );
use List::MoreUtils qw( each_array );
use IO::Socket::INET ();
use IO::Socket::SSL ();
use Socket qw( SO_KEEPALIVE );
use Net::IMAP::Client::MsgSummary ();
our $READ_BUFFER = 4096;
my %UID_COMMANDS = map { $_ => 1 } qw( COPY FETCH STORE SEARCH SORT THREAD );
my %DEFAULT_ARGS = (
uid_mode => 1,
timeout => 90,
server => '127.0.0.1',
lib/Net/IMAP/Client.pm view on Meta::CPAN
my ($self) = @_;
return $self->{server};
}
sub _get_ssl_config {
my ($self) = @_;
if (!$self->{ssl_verify_peer}
|| !$self->{ssl_ca_path}
&& !$self->{ssl_ca_file}
&& $^O ne 'linux') {
return SSL_verify_mode => IO::Socket::SSL::SSL_VERIFY_NONE;
}
my %ssl_config = ( SSL_verify_mode => IO::Socket::SSL::SSL_VERIFY_PEER );
if ($^O eq 'linux' && !$self->{ssl_ca_path} && !$self->{ssl_ca_file}) {
$ssl_config{SSL_ca_path} =
-d '/etc/ssl/certs/' ? '/etc/ssl/certs/' : '/etc/pki/tls/certs/';
-d $ssl_config{SSL_ca_path}
or die "$ssl_config{SSL_ca_path}: SSL certification directory not found";
}
$ssl_config{SSL_ca_path} = $self->{ssl_ca_path} if $self->{ssl_ca_path};
$ssl_config{SSL_ca_file} = $self->{ssl_ca_file} if $self->{ssl_ca_file};
return %ssl_config;
}
sub _get_socket {
my ($self) = @_;
my $socket = $self->{socket};
return $socket if (defined($socket) and ($socket->isa('IO::Socket::SSL')or $socket->isa('IO::Socket::INET')));
$self->{socket} = ($self->{ssl} ? 'IO::Socket::SSL' : 'IO::Socket::INET')->new(
( ( %{$self->{ssl_options}} ) x !!$self->{ssl} ),
PeerAddr => $self->_get_server,
PeerPort => $self->_get_port,
Timeout => $self->_get_timeout,
Proto => 'tcp',
Blocking => 1,
$self->_get_ssl_config,
) or die "failed connect or ssl handshake: $!,$IO::Socket::SSL::SSL_ERROR";
$self->{socket}->sockopt(SO_KEEPALIVE, 1);
$self->{greeting} = $self->_socket_getline; # get the initial greeting
$self->_starttls if ($self->{tls}); # upgrade to TLS if needed
return $self->{socket};
}
sub _starttls {
lib/Net/IMAP/Client.pm view on Meta::CPAN
$can_do_starttls ||= 1 if ($line =~ /^\*\s+CAPABILITY.*\s+STARTTLS/);
} else {
die "IMAP server failed CAPABILITY query"
}
die "IMAP server does not have STARTTLS capability" unless ($can_do_starttls);
# request STARTTLS
($ok, $lines) = $self->_tell_imap('STARTTLS');
if ($ok) {
my @sni_args;
push(@sni_args, SSL_hostname => $self->_get_server) if (IO::Socket::SSL->can_client_sni());
IO::Socket::SSL->start_SSL(
$self->{socket},
$self->_get_ssl_config,
@sni_args,
) or die $IO::Socket::SSL::SSL_ERROR;
} else {
die "IMAP server failed STARTTLS command"
}
return $self->{socket};
}
sub _get_next_id {
return ++$_[0]->{_cmd_id};
}
lib/Net/IMAP/Client.pm view on Meta::CPAN
=item - B<user> (STRING)
User ID (I<only "clear" login is supported for now!>)
=item - B<pass> (STRING)
Password
=item - B<ssl> (BOOL, optional, default FALSE)
Pass a true value if you want to use L<IO::Socket::SSL>
You may not set both C<ssl> and C<tls> at the same time.
=item - B<tls> (BOOL, optional, default FALSE)
Pass a true value if you want to use connect without SSL and then use
C<STARTTLS> to upgrade the connection to an encrypted session using
L<IO::Socket::SSL>. The other C<ssl_*> options also apply.
You may not set both C<ssl> and C<tls> at the same time.
=item - B<ssl_verify_peer> (BOOL, optional, default TRUE)
Pass a false value if you do not want to use SSL CA to verify server
only need when you set ssl to true
=item - B<ssl_ca_file> (STRING, optional)
lib/Net/IMAP/Client.pm view on Meta::CPAN
Pass a dir which will be used as CA file search dir, found CA file
will be used to verify server
On linux, by default is '/etc/ssl/certs/'
at least one of ssl_ca_file and ssl_ca_path is needed for ssl verify
server
=item - B<ssl_options> (HASHREF, optional)
Optional arguments to be passed to the L<IO::Socket::SSL> object.
=item - B<uid_mode> (BOOL, optional, default TRUE)
Whether to use UID command (see RFC3501). Recommended.
=item - B<socket> (IO::Handle, optional)
If you already have a socket connected to the IMAP server, you can
pass it here.
( run in 0.289 second using v1.01-cache-2.11-cpan-05444aca049 )