minimum => 0,
default => 1
},
+ before_queue_filtering => {
+ description => "Enable before queue filtering by pmg-smtp-filter",
+ type => 'boolean',
+ default => 0
+ },
ndr_on_block => {
description => "Send out NDR when mail gets blocked",
type => 'boolean',
verifyreceivers => { optional => 1 },
dnsbl_sites => { optional => 1 },
dnsbl_threshold => { optional => 1 },
+ before_queue_filtering => { optional => 1 },
ndr_on_block => { optional => 1 },
};
}
}
}
} else {
- my $all_done = 1;
-
- foreach $a (@{$self->{to}}) {
- if (!($self->{queue}->{status}->{$a} eq 'delivered' ||
- $self->{queue}->{status}->{$a} eq 'blocked')) {
- $all_done = 0;
+ my $queueid = $self->{queue}->{logid};
+ my $qstat = $self->{queue}->{status};
+ my @rec = keys %$qstat;
+ my @success_rec = grep { $qstat->{$_} eq 'delivered' } @rec;
+ my @reject_rec = grep { $qstat->{$_} eq 'blocked' } @rec;
+
+ if (scalar(@reject_rec) == scalar(@rec)) {
+ $self->reply ("554 5.7.1 Rejected for policy reasons");
+ syslog('info', "reject mail $queueid");
+ } elsif ((scalar(@reject_rec) + scalar(@success_rec)) == scalar(@rec)) {
+ $self->reply ("250 2.5.0 OK ($queueid)");
+ if ($cfg->get('mail', 'ndr_on_block')) {
+ my $dnsinfo = $cfg->get_host_dns_info();
+ generate_ndr($self->{from}, [ @reject_rec ], $dnsinfo->{fqdn}, $queueid) if scalar(@reject_rec);
}
- }
- if ($all_done) {
- $self->reply ("250 2.5.0 OK ($self->{queue}->{logid})");
} else {
$self->reply ("451 4.4.0 detected undelivered mail");
}
# (yes) (yes) (yes) (never) (100)
# ==========================================================================
+[% IF ! pmg.mail.before_queue_filtering -%]
scan unix - - n - [% pmg.mail.max_filters %] lmtp
-o lmtp_send_xforward_command=yes
-o lmtp_connection_cache_on_demand=no
-o disable_dns_lookups=yes
+[% END -%]
[% pmg.mail.int_port %] inet n - - - [% pmg.mail.max_smtpd_out %] smtpd
+[% IF pmg.mail.before_queue_filtering -%]
+ -o smtpd_proxy_filter=127.0.0.1:10023
+ -o smtpd_proxy_options=speed_adjust
+ -o smtpd_client_connection_count_limit=[% pmg.mail.conn_count_limit div 5 %]
+[%- ELSE -%]
-o content_filter=scan:127.0.0.1:10023
+[%- END %]
-o smtpd_recipient_restrictions=permit_mynetworks,reject_unauth_destination
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
[% pmg.mail.ext_port %] inet n - - - 1 postscreen
smtpd pass - - - - [% pmg.mail.max_smtpd_in %] smtpd
+[% IF pmg.mail.before_queue_filtering -%]
+ -o smtpd_proxy_filter=127.0.0.1:10024
+ -o smtpd_proxy_options=speed_adjust
+ -o smtpd_client_connection_count_limit=[% pmg.mail.conn_count_limit div 5 %]
+[%- ELSE -%]
-o content_filter=scan:127.0.0.1:10024
+[%- END %]
-o receive_override_options=no_address_mappings
-o smtpd_discard_ehlo_keywords=silent-discard,dsn
-o mynetworks=127.0.0.0/8,[% postfix.int_ip %]