=head1 NAME postfix-queue =head1 DESCRIPTION This plugin passes mails on to the postfix cleanup daemon. =head1 CONFIG It takes one optional parameter, the location of the cleanup socket. If set the environment variable POSTFIXQUEUE overrides this setting. =cut use Qpsmtpd::Postfix; sub register { my ($self, $qp, @args) = @_; $self->register_hook("queue", "queue_handler"); if (@args > 0) { $self->{_queue_socket} = $args[0]; $self->log(1, "WARNING: Ignoring additional arguments.") if (@args > 1); } else { $self->{_queue_socket} = "/var/spool/postfix/public/cleanup"; } $self->{_queue_socket} = $ENV{POSTFIXQUEUE} if $ENV{POSTFIXQUEUE}; } sub queue_handler { my ($self, $transaction) = @_; my ($status, $qid, $reason) = Qpsmtpd::Postfix->inject_mail($transaction); $status and return(DECLINED, "Unable to queue message ($status, $reason)"); my $msg_id = $transaction->header->get('Message-Id') || ''; $msg_id =~ s/[\r\n].*//s; # don't allow newlines in the Message-Id here return (OK, "Queued! $msg_id (Queue-Id: $qid)"); } #vim: sw=2 ts=8