initial commit of file from CVS for smeserver-qpsmtpd on Thu 26 Oct 11:25:19 BST 2023
This commit is contained in:
40
root/etc/e-smith/events/actions/domains-update-dkim
Normal file
40
root/etc/e-smith/events/actions/domains-update-dkim
Normal file
@@ -0,0 +1,40 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
use esmith::DomainsDB;
|
||||
use esmith::ConfigDB;
|
||||
use File::Find;
|
||||
|
||||
my $d = esmith::DomainsDB->open_ro || die "Couldn't open the domains database";
|
||||
my $c = esmith::ConfigDB->open_ro || die "Couldn't open the configurtion database";
|
||||
|
||||
my $qpsmtpd = $c->get('qpsmtpd');
|
||||
die "qpsmtpd service entry not found" unless ($qpsmtpd);
|
||||
|
||||
my $dkim_sign = $qpsmtpd->prop('DKIMSigning') || 'disabled';
|
||||
|
||||
find({ wanted => \&wanted }, qw(/var/service/qpsmtpd/config/dkim/));
|
||||
|
||||
# Build a list of domain for which we want to sign emails
|
||||
my @dkim_domains = ();
|
||||
|
||||
if ($dkim_sign =~ m/^enabled|yes|1|on$/){
|
||||
foreach my $dom ($d->domains){
|
||||
next if ($dom->prop('DKIMSigning') || 'enabled') eq 'disabled';
|
||||
next if ($dom->prop('MailServer'));
|
||||
push @dkim_domains, $dom->key;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
sub wanted{
|
||||
my $domain = $d->get($_);
|
||||
if ( -l && !grep { $_ eq $domain->key } @dkim_domains ){
|
||||
unlink $_;
|
||||
}
|
||||
}
|
||||
|
||||
foreach my $dom (@dkim_domains){
|
||||
next if (-e '/var/service/qpsmtpd/config/dkim/' . $dom);
|
||||
my $src = ( -e '/home/e-smith/dkim_keys/' . $dom ) ? '/home/e-smith/dkim_keys/' . $dom : '/home/e-smith/dkim_keys/default';
|
||||
symlink $src, '/var/service/qpsmtpd/config/dkim/' . $dom;
|
||||
}
|
Reference in New Issue
Block a user