[pmg-devel] applied: [PATCH pmg-api v2 1/2] add support for sending NDRs on Block
Dietmar Maurer
dietmar at proxmox.com
Fri Nov 15 09:00:37 CET 2019
applied
> On 14 November 2019 17:35 Stoiko Ivanov <s.ivanov at proxmox.com> wrote:
>
>
> This patch adds a flag to the mail-section of pmg.conf - 'ndr_on_block',
> defaulting to false.
>
> If enabled pmg-smtp-filter replies with 554 (permanent fail) for the recipient
> who blocked the mail.
>
> Since pmg-smtp-filter is currently called with LMTP it can respond with a
> separate code for each recipient. Postfix records the answers and generates
> and sends the NDR to the sender.
>
> Signed-off-by: Stoiko Ivanov <s.ivanov at proxmox.com>
> ---
> src/PMG/Config.pm | 6 ++++++
> src/PMG/SMTP.pm | 8 +++++++-
> 2 files changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/src/PMG/Config.pm b/src/PMG/Config.pm
> index 4cbc520..e1a9cd4 100755
> --- a/src/PMG/Config.pm
> +++ b/src/PMG/Config.pm
> @@ -627,6 +627,11 @@ sub properties {
> minimum => 0,
> default => 1
> },
> + ndr_on_block => {
> + description => "Send out NDR when mail gets blocked",
> + type => 'boolean',
> + default => 0
> + },
> };
> }
>
> @@ -661,6 +666,7 @@ sub options {
> verifyreceivers => { optional => 1 },
> dnsbl_sites => { optional => 1 },
> dnsbl_threshold => { optional => 1 },
> + ndr_on_block => { optional => 1 },
> };
> }
>
> diff --git a/src/PMG/SMTP.pm b/src/PMG/SMTP.pm
> index a404ef0..00a448e 100644
> --- a/src/PMG/SMTP.pm
> +++ b/src/PMG/SMTP.pm
> @@ -132,12 +132,18 @@ sub loop {
> syslog ('err', $err);
> }
>
> + my $cfg = $data->{pmg_cfg};
> +
> if ($self->{lmtp}) {
> foreach $a (@{$self->{to}}) {
> if ($self->{queue}->{status}->{$a} eq 'delivered') {
> $self->reply ("250 2.5.0 OK ($self->{queue}->{logid})");
> } elsif ($self->{queue}->{status}->{$a} eq 'blocked') {
> - $self->reply ("250 2.7.0 BLOCKED ($self->{queue}->{logid})");
> + if ($cfg->get('mail', 'ndr_on_block')) {
> + $self->reply ("554 5.7.1 Rejected for policy reasons ($self->{queue}->{logid})");
> + } else {
> + $self->reply ("250 2.7.0 BLOCKED ($self->{queue}->{logid})");
> + }
> } elsif ($self->{queue}->{status}->{$a} eq 'error') {
> my $code = $self->{queue}->{status_code}->{$a};
> my $resp = substr($code, 0, 1);
> --
> 2.20.1
>
>
> _______________________________________________
> pmg-devel mailing list
> pmg-devel at pve.proxmox.com
> https://pve.proxmox.com/cgi-bin/mailman/listinfo/pmg-devel
More information about the pmg-devel
mailing list