feat: first try on lmtp transfer
This commit is contained in:
parent
9a7a1c3d31
commit
4fcf21991a
24
queue/lmtp
24
queue/lmtp
@ -3,7 +3,7 @@ use warnings;
|
|||||||
|
|
||||||
use Qpsmtpd::Constants;
|
use Qpsmtpd::Constants;
|
||||||
use Qpsmtpd::DSN;
|
use Qpsmtpd::DSN;
|
||||||
|
use Net::LMTP;
|
||||||
|
|
||||||
|
|
||||||
sub register {
|
sub register {
|
||||||
@ -12,8 +12,10 @@ sub register {
|
|||||||
$self->{lmtp_rcpt_based} = $qp->config("lmtp_rcpt_based") || 0;
|
$self->{lmtp_rcpt_based} = $qp->config("lmtp_rcpt_based") || 0;
|
||||||
$self->{lmtp_host} = $qp->config("lmtp_host");
|
$self->{lmtp_host} = $qp->config("lmtp_host");
|
||||||
$self->{lmtp_port} = $qp->config("lmtp_port") || 24;
|
$self->{lmtp_port} = $qp->config("lmtp_port") || 24;
|
||||||
|
$self->{qp}= $qp;
|
||||||
$self->{enabled} = 1;
|
$self->{enabled} = 1;
|
||||||
|
|
||||||
|
|
||||||
if (!$self->{lmtp_rcpt_based} && !$self->{lmtp_host}) {
|
if (!$self->{lmtp_rcpt_based} && !$self->{lmtp_host}) {
|
||||||
$self->{enabled} = 0;
|
$self->{enabled} = 0;
|
||||||
$self->log(LOGERROR, "No LMTP host configured, disabling plugin\n");
|
$self->log(LOGERROR, "No LMTP host configured, disabling plugin\n");
|
||||||
@ -24,7 +26,23 @@ sub register {
|
|||||||
|
|
||||||
sub lmtp_transfer
|
sub lmtp_transfer
|
||||||
{
|
{
|
||||||
my ($self, $transaction) = @_;
|
my ($self, $transaction, $lmtp_host, $lmtp_port, $lmtp_user) = @_;
|
||||||
|
|
||||||
|
my $lmtp = Net::LMTP->new($lmtp_host, $lmtp_port);
|
||||||
|
$lmtp->hellp($self->{qp}->config("me"));
|
||||||
|
$lmtp->mail($transaction->sender->address);
|
||||||
|
$lmtp->recipient($lmtp_user);
|
||||||
|
$lmtp->data();
|
||||||
|
$lmtp->datasend($transaction->header->as_string);
|
||||||
|
$transaction->body_resetpos;
|
||||||
|
while (my $line = $transaction->body_getline) {
|
||||||
|
$lmtp->datasend($line)
|
||||||
|
or return DECLINED, "Unable to queue message ($!)";
|
||||||
|
}
|
||||||
|
$lmtp->dataend();
|
||||||
|
$lmtp->quit();
|
||||||
|
$self->log(LOGINFO, "finished queueing");
|
||||||
|
return OK;
|
||||||
|
|
||||||
return DECLINED;
|
return DECLINED;
|
||||||
}
|
}
|
||||||
@ -61,5 +79,5 @@ sub hook_queue {
|
|||||||
|
|
||||||
$self->log(LOGNOTICE,"forwarding mail to LMTP host: $lmtp_host:$lmtp_port\n");
|
$self->log(LOGNOTICE,"forwarding mail to LMTP host: $lmtp_host:$lmtp_port\n");
|
||||||
|
|
||||||
return $self->lmtp_transfer($transaction);
|
return $self->lmtp_transfer($transaction, $lmtp_host, $lmtp_port, $lmtp_user);
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user