#!/usr/bin/perl use strict; # alle domains einlesen print "\nFolgende Domains werden bearbeitet\n"; open DOMAINS, "; close DOMAINS; foreach (@domains) { chomp; print "$_\n"; } # dmarc eintrag lesen print "\nAlte DMARC Einträge werden durch diesen ersetzt\n"; open DMARC, "; close DMARC; foreach (@dmarc) { chomp; print "$_\n"; } # dkim eintrag lesen print "\nAlte DKIM Einträge werden durch diese Zeilen ersetzt\n"; open DKIM, "; close DKIM; foreach (@dkim) { chomp; print "$_\n"; } print "\nSeriennummer wird zusammengesetzt aus dem Datum und einer 2-stelligen laufenden Nummer\n"; print "Die laufende Nummer muss manuell angegeben werden.\n"; print "laufende Nummer [xx]?"; my $nr=; chomp $nr; my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $year+=1900; $mon++; my $serial = sprintf ("%04d%02d%02d%02d", $year, $mon, $mday, $nr); print "\nFortfahren, dann \n"; ; print "Sicherheitskopie aller Zonendateien anlegen\n"; print " Backup Verzeichnis erstellen\n"; my $dir=sprintf ("%04d%02d%02d-%02d%02d", $year, $mon, $mday, $hour, $min); `mkdir $dir`; print "Zonendateien kopieren\n"; `cp *.zone $dir/`; print "\nTemporäre Zonendateien erstellen\n"; # domain für domain bearbeiten foreach my $domain (@domains) { print "========== $domain ==========\n"; # zonendatei einlesen open DOMAIN, "<$domain.zone"; my @domain=; close DOMAIN; # temporäre zonendatei erstellen open TEMP, ">$domain.zone.tmp"; foreach my $line (@domain) { chomp $line; if ( $line =~ /_dmarc/ ) { # dmarc eintrag ersetzen print "Ersetze DMARC Eintrag\n"; printf TEMP "$dmarc[0]\n"; } elsif ( $line =~ /_domainkey/ or $line =~ /^\s*".*"/ or $line =~ /^\s*".*"\s*\)/ ) { # weitere dkim einträge entfernen print "Entferne DKIM Eintrag\n"; } elsif ( $line =~ /; serial/) { # serial printf TEMP " %s ; serial\n", $serial; } else { # andere Einträge unbearbeitet übernehmen printf TEMP "$line\n"; } } # dkim einträge hinten anhängen print "Neuen DKIM Eintrag schreiben\n"; foreach (@dkim) { printf TEMP "$_\n"; } close TEMP; } print "\nUnschöne Zeilenenden entfernen\n"; foreach (@domains) { `sed -i "s/\r//g" $_.zone.tmp`; } print "Alte Dateien entfernen\n"; foreach (@domains) { unlink ("$_.zone"); } print "Temporäre Dateien umbenennen\n"; foreach (@domains) { `mv "$_.zone.tmp" "$_.zone"`; } print "\nfertig\n";