Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Checking the dependency tree: <code>Email::Sender::Transport::SMTP::TLS</code> ==> <code>Net::SMTP::TLS::ButMaintained</code> ==> <code>IO::Socket::SSL</code> ==> <code>Net::SSLeay</code></p> <p>Both <code>IO::Socket::SSL</code> and <code>Net::SSLeay</code> supporting the X.509 client certificates. So <code>Net::SMTP::TLS::ButMaintained</code> and <code>Email::Sender::Transport::SMTP::TLS</code> should be enhanced to support client certificates. A proper way should update both modules to allow the <code>SSL_key|SSL_key_file</code> and <code>SSL_cert|SSL_cert_file</code> parameters. </p> <p>Here is a quick dirty one -- you need to create modified <code>Net::SMTP::TLS::ButMaintained</code> and keep it locally. </p> <pre><code># modify the Net::SMTP::TLS::ButMaintained; # built a private version which have client certificates sub starttls { my $me = shift; $me-&gt;_command("STARTTLS"); my ( $num, $txt ) = $me-&gt;_response(); if ( not $num == 220 ) { croak "Invalid response for STARTTLS: $num $txt\n"; } if ( not IO::Socket::SSL::socket_to_SSL( $me-&gt;{sock}, SSL_version =&gt; "SSLv3 TLSv1", ### private changes begin: append following two lines. SSL_use_cert =&gt; 1, SSL_cert_file =&gt; "path_to/your/certificate_file.pem", SSL_key_file =&gt; "path_to/your/private_key_file.pem" ### private changes end: ) ) { croak "Couldn't start TLS: " . IO::Socket::SSL::errstr . "\n"; } $me-&gt;hello(); } </code></pre> <p>Please leave the User and Password parameter as blank. </p> <p><em>Good luck!</em></p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload