[Mimedefang] limit Recipients for auth user
Benoit Panizzon
benoit.panizzon at imp.ch
Fri Nov 27 08:39:10 EST 2015
Hi Roman
At the start of your mimedefang-filter, where the 'use' statements are,
add the Perl Storable Module. (You need to have the storable
perl module installed for this to work).
require Storable;
You probably have sub filter_initialize {} and sub filter_cleanup {}
somewhere in your code. Just add those two subs there:
sub store_vars {
my($vars) = @_;
Storable::store($vars, 'vars.db');
}
sub load_vars {
my $vars = {};
if(-f 'vars.db') {
$vars = Storable::retrieve('vars.db');
}
return $vars;
}
Then replace your filter_recipient with this very basic one:
sub filter_recipient {
my ($recipient, $sender, $ip, $hostname, $first, $helo, $rcpt_mailer,
$rcpt_host, $rcpt_addr) = @_;
read_commands_file();
my $vars=&load_vars();
if(!defined($vars->{imp_rcpt_count})) {
$vars->{imp_rcpt_count}=1;
}
md_syslog('warning',"COUNTING: Auth-By: " .
$SendmailMacros{auth_authen} ." Recipient $recipient is number: " .
$vars->{imp_rcpt_count});
$vars->{imp_rcpt_count}++;
&store_vars($vars);
return ('CONTINUE', "ok");
};
But this is basicly just usefull if you want do act differently when
you reached a specific number of recipients, like limiting the number
of emails sent by a user during a certain time. If you just want to
know how many recipients the email goes to, you can use the size of
the array @Recipients in filter_begin, filter or filter_end.
-Benoît Panizzon-
--
I m p r o W a r e A G - Leiter Commerce Kunden
______________________________________________________
Zurlindenstrasse 29 Tel +41 61 826 93 00
CH-4133 Pratteln Fax +41 61 826 93 01
Schweiz Web http://www.imp.ch
______________________________________________________
More information about the MIMEDefang
mailing list