Hallo,
ich brauche eine Konfiguration um bei Postfix mehrere IPs rotaten zu lassen.
Derzeit probiere ich mich mit dem Script von dort:
Das funktioniert gut aber nicht zuverlässig.
Irgendetwas cached da die IP und sorgt dafür dass es nur sehr selten diese wechselt wie sie soll.
Teilweise steckt es einfach ewig auf der selben ip.
Derzeit schaut das ganze bei mir so aus:
main.cf (gekürzt)
inet_interfaces = all inet_protocols = all best_mx_transport = virtual virtual_transport = tcp:127.0.0.1:2527 virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf transport_maps = tcp:127.0.0.1:2527 127.0.0.1:2527_time_limit = 5s
master.cf (gekürzt)
127.0.0.1:2527 inet n n n - 0 spawn user=nobody argv=/etc/postfix/rotation.pl rotate1 unix - - n - - smtp -o syslog_name=postfix-rotate1 -o smtp_helo_name=mail1.XXXXX.com -o smtp_bind_address=XXX.XXX.XXX.166 rotate2 unix - - n - - smtp -o syslog_name=postfix-rotate2 -o smtp_helo_name=mail2.XXXXX.com -o smtp_bind_address=XXX.XXX.XXX.213 rotate3 unix - - n - - smtp -o syslog_name=postfix-rotate3 -o smtp_helo_name=mail3.XXXXX.com -o smtp_bind_address=XXX.XXX.XXX.22 rotate4 unix - - n - - smtp -o syslog_name=postfix-rotate4 -o smtp_helo_name=mail4.XXXXX.com -o smtp_bind_address=XXX.XXX.XXX.246 rotate5 unix - - n - - smtp -o syslog_name=postfix-rotate5 -o smtp_helo_name=mail5.XXXXX.com -o smtp_bind_address=XXX.XXX.XXX.199
rotation.pl
#!/usr/bin/perl -w use strict; use warnings; use Sys::Syslog qw(:DEFAULT setlogsock); use Storable; my $savefile="/tmp/postfix-last.txt"; my $smtps = 5; my $save = 0; if (-f $savefile) { open(my $fh, '<', $savefile) or die "cannot open file $savefile"; { local $/; $save = <$fh>; } close($fh); } select STDOUT; $|++; while (<>) { chomp; if (/^get\s(.+)$/i) { $save = $save + 0; if($save < $smtps){ $save++; } else { $save = 1; } open(my $fh2, '>', $savefile); print $fh2 $save; close $fh2; print "200 rotate$save:\n"; syslog("info","Using: %s Transport Service for %s", "rotate$save:"); next; } print "200 smtp:"; }
Wenn ich das mit dem Test Command 'postmap -q "whatever" tcp:127.0.0.1:2527' ausführe kommt auch jedes mal entsprecht das neue wie es sein sollte rüber.
Postfix selber scheint mir da nur ein Strich durch die Rechnung zu machen.
Jemand ne Idee wie man das fixen kann?
Danke!
PS: Laut dem syslog kommt der log
Using: %s Transport Service for %s", "rotate$save:
auch nur alle paar mal rein.
Wenn ich länger warte kommt er auf jeden fall rein. Sende ich viele mails nacheinander aber selten oder nur 1x dann.