$rdb->delete_object($obj);
- PMG::DBTools::reload_ruledb();
+ PMG::DBTools::reload_ruledb($rdb);
return undef;
}});
return 1;
};
-my $rewrite_config_whitelist = sub {
+sub rewrite_postfix_whitelist {
my ($rulecache) = @_;
# see man page for regexp_table for postfix regex table format
$changes = 1 if $self->rewrite_config_file(
'master.cf.in', '/etc/postfix/master.cf');
- $rewrite_config_whitelist->($rulecache) if $rulecache;
+ rewrite_postfix_whitelist($rulecache) if $rulecache;
# fixme: rewrite_config_tls_policy ($class);
use PMG::Utils;
use PMG::RuleDB;
use PMG::MailQueue;
+use PMG::Config;
our $default_db_name = "Proxmox_ruledb";
}
sub reload_ruledb {
+ my ($ruledb) = @_;
+
+ # Note: we pass $ruledb when modifying SMTP whitelist
+ if (defined($ruledb)) {
+ eval {
+ my $rulecache = PMG::RuleCache->new($ruledb);
+ PMG::Config::rewrite_postfix_whitelist($rulecache);
+ };
+ if (my $err = $@) {
+ warn "problems updating SMTP whitelist - $err";
+ }
+ }
+
my $pid_file = '/var/run/pmg-smtp-filter.pid';
my $pid = PVE::Tools::file_read_firstline($pid_file);
my $id = $obj->save($rdb);
- PMG::DBTools::reload_ruledb();
+ if ($use_greylist_gid) {
+ PMG::DBTools::reload_ruledb($rdb);
+ } else {
+ PMG::DBTools::reload_ruledb();
+ }
return $id;
}});
$obj->save($rdb);
- PMG::DBTools::reload_ruledb();
+ if ($use_greylist_gid) {
+ PMG::DBTools::reload_ruledb($rdb);
+ } else {
+ PMG::DBTools::reload_ruledb();
+ }
return undef;
}});