From cef7411ec1c882ec8a3dcce9cd5ec7eb6f5b9ca0 Mon Sep 17 00:00:00 2001 From: Dominik Meyer Date: Fri, 7 Feb 2025 15:42:19 +0100 Subject: [PATCH] feat: very small implementation of Net::LMTP --- Net/LMTP.pm | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 Net/LMTP.pm diff --git a/Net/LMTP.pm b/Net/LMTP.pm new file mode 100644 index 0000000..cc50029 --- /dev/null +++ b/Net/LMTP.pm @@ -0,0 +1,39 @@ +package Net::LMTP; + +use strict; +use warnings; + +use base 'Net::SMTP'; + + +sub hello { + my $me = shift; + my $domain = shift || "localhost.localdomain"; + my $ok = $me->_LHLO($domain); + my @msg = $me->message; + + if ($ok) { + my $h = ${*$me}{'net_smtp_esmtp'} = {}; + foreach my $ln (@msg) { + $h->{uc $1} = $2 if $ln =~ /([-\w]+)\b[= \t]*([^\n]*)/; + } + } + elsif ($me->status == CMD_ERROR) { + @msg = $me->message if $ok = $me->_HELO($domain); + } + + + return unless $ok; + ${*$me}{net_smtp_hello_domain} = $domain; + $msg[0] =~ /\A\s*(\S+)/; + return ($1 || " "); + +} + + + +sub _EHLO { shift->unsupported(@_);} +sub _HELO { shift->unsupported(@_);} +sub _LHLO { shift->command("LHLO", @_)->response() == CMD_OK } + +1; \ No newline at end of file