#!/usr/bin/perl -w # In der main.cf wurde bei relayhost keine IP eingetragen, sondern der DynDns-Name. # Dadurch ist es nicht noetig, dort die IP zu aendern! my $name = "????????"; my $name2 = "/32"; my $name3 = "\#??????1";#manuell in der main.cf eingetragen, damit der Eintrag korrekt ausgelesen wird. my $name4 = "???????.com\ smtp:"; my $name5 = "?????????\ smtp:"; my $network1 = "mynetworks\ = "; my $network2 = "/32,127.0.0.0/8#??????1"; my $datei = "/etc/postfix/main.cf"; my $datei1 = "/etc/postfix/transport"; #IP-Adresse auslesen ($addr) = (gethostbyname("$name"))[4]; $addr1 = join(".", unpack("C4", $addr)); print ("$addr1\n"); MAIN1 (); MAIN2 (); #IP-Adresse in der main.cf aendern sub MAIN1 { open (DATEI, "<$datei")|| die "Kann die main.cf nicht oeffnen\n";; @DATEI = ; close (DATEI); #nach IP-Adresse suchen foreach (@DATEI){ if ($_ =~/$name3/){ #Vergleichsoperator ~ s/$_/$network1$addr1$network2\n/; #ersetzen der Zeile } } } #Ausgabe in Datei, in Datei schreiben open (OUT, ">/etc/postfix/ma.txt"); print OUT @DATEI; close OUT; #IP-Adresse in der transport aendern sub MAIN2 { open (DATEI1, "<$datei1")|| die "Kann die transport nicht oeffnen\n";; @DATEI1 = ; close (DATEI1); #nach IP-Adresse suchen foreach (@DATEI1){ if ($_ =~/$name4/){ #Vergleichsoperator ~ s/$_/$name4$addr1\n/; #ersetzen der Zeile s= Ersetzoperator } if ($_ =~/$name5/){ #Vergleichsoperator ~ s/$_/$name5$addr1\n/; #ersetzen der Zeile s= Ersetzoperator } } } #Ausgabe in Datei, in Datei schreiben open (OUT, ">/etc/postfix/max.txt"); print OUT @DATEI1; close OUT; system "mv /etc/postfix/main.cf /etc/postfix/main.cf.old"; system "mv /etc/postfix/ma.txt /etc/postfix/main.cf"; system "mv /etc/postfix/transport /etc/postfix/transport.old"; system "mv /etc/postfix/max.txt /etc/postfix/transport"; #Neue transport schreiben system "postmap /etc/postfix/transport"; # Neue transport einlesen system "postfix reload"; # System neu starten exit;