[Postfixbuch-users] Autoresponder - Mailloops verhindern

Christian Boltz postfixbuch at cboltz.de
Mi Nov 24 01:29:29 CET 2010


Hallo Sebastian, hallo Leute,

Am Dienstag, 23. November 2010 schrieb Sebastian Feltel:
> Am 22.11.2010 22:05, schrieb Christian Boltz:
> > Wenn Du die nötigen Tabellen in der Datenbank anlegst, funktioniert
> > vacation.pl auch unabhängig von Postfixadmin. Andererseits: Was
> > spricht gegen Postfixadmin? ;-)
> 
> Das vacation.pl-Script hatte ich mir schon mal angesehen und auch
> noch eine Art Light-Variante davon im Netz gefunden, die ich soweit
> durchschaut hab und nutzen würde. Gegen Postfixadmin spricht
> eigentlich nix, lediglich das der Mailserver schon steht und ich ihn
> nicht gerne nochmal komplett umkrempeln wollen würde. 

Wenn Dein Tabellen-Layout nicht zu kreativ ist, dürfte die Migration zu 
Postfixadmin nicht zu schwierig sein. Im Idealfall ist es sowas:
INSERT INTO postfixadmin.tabelle SELECT * FROM deine.tabelle

Falls irgendwas zum Tabellenformat unklar sein sollte, frag nach. 
Ich habe schon Aliase und Mailboxen aus einer Plesk-Datenbank 
rausoperiert [1] und kann mir gerade kein Datenbanklayout vorstellen, 
das mehr Schmerzen bei der Migration verursachen könnte...

> > Dann noch bei einem SMTP (vor _oder_ nach Amavis) das
> > Adress-Mapping deaktivieren. Das geht in der master.cf mit
> > smtp      inet  n       -       n       -       50      smtpd
> > 
> >     -o receive_override_options=no_address_mappings
> > 
> > (oder eben "10025 inet .... smtpd -o ...")
> > 
> > Ob man das vor oder nach Amavis macht, ist Geschmackssache. Vor
> > Amavis hat den Vorteil, dass weniger Mails durch Amavis müssen
> > (weil der Alias noch nicht expandiert ist), nach Amavis hat den
> > Vorteil, dass Du auch bei mehreren Zielen in einem Alias
> > benutzerabhängige Regeln verwenden kannst.
> 
> Das verstehe ich jetzt nicht ganz. Wie kann ich die aus dem
> vacation-Dienst abgehenden Mails denn direkt an den speziellen
> smtp-Dienst ohne Adress-Mapping leiten?

Die Frage ist, ob Du das willst - oder wir reden aneinander vorbei ;-)

Das no_address_mappings (vor _oder_ nach Amavis) ist etwas, das man 
sowieso will, weil sonst Mailbox-Aliase zu doppelten Mails an die 
andere(n) Adressen führen.

Beispiel: 
    user at example.com -> user at example.com (Mailbox), foo at example.com

Jetzt mal der Ablauf _ohne_ no_address_mappings:

1. Mail kommt von außen rein, der Alias wird expandiert, Postfix leitet 
   zwei Mails an Amavis weiter - je eine an user at example.com und 
   foo at example.com

2. Amavis gibt die beiden Mails an die zweite Postfix-Instanz zurück.
   Die an foo at example.com geht unverändert raus.
   Bei user at exampe.com wird der Alias wieder expandiert und es geht je
   eine Mail an user at example.com und foo at example.com

Ergebnis: Die Mail landet einmal im Postfach user at example.com - und 
doppelt(!) bei foo at example.com.
Oder eben zweimal beim Autoresponder (womit wir wieder beim Thema "nur 
eine automatische Antwort alle X Tage wären - dann tut das nicht weh).

Genau deswegen will man an einer der beiden Stellen no_address_mappings.
Nicht an beiden, sonst bekäme foo at example.com überhaupt keine Mail.

Du solltest jetzt verstanden haben, warum ohne no_address_mappings in 
Kombination mit einem content_filter doppelte Mails entstehen können. 
Wenn nicht, frag an den unklaren Punkten nochmal nach.

So weit, so gut.

Die Mails, die das Vacation-Script generiert, sind "ganz normale" Mails. 
Du kannst sie wie jede andere Mail an Postfix einliefern. Falls die 
Absenderadresse auf Deinem Server ist und gleichzeitig ein Alias (oder 
Mailbox+Alias), ist das Umschreiben des Empfängers sogar sinnvoll/nötig.
(Bei externen Empfängern passiert das ggf. auch, nur bekommst Du es 
nicht mit.)

Das einzige, was für Dich interessant sein könnte, wäre die Performance 
(Amavis umgehen, indem Du gleich auf der zweiten Postfix-Instanz auf 
Port 10025 (bzw. in Deinem Setup auch auf localhost:25) einlieferst). 
Bei einem Autoresponder ist sowas bei der Serverlast vermutlich nichtmal 
messbar - bei Mailman mit 1000 Listenmitgliedern sieht es deutlich 
anders aus und es reicht auch, wenn man die eine eingehende Mail 
gescannt hat - das geht leichter als 1000 ausgehende zu scannen ;-)

Wenn Du das so machen willst, gehört no_address_mappings definitiv in 
die erste Postfix-Instanz.

> Ich hab die aktuelle master.cf mal unter
> http://feltel.de/tmp/postfix-master.cf abgelegt.

Da Du bei localhost und 10025 content_filter=<leer> setzt, gehe ich mal 
davon aus, dass in Deiner main.cf content_filter auf Amavis zeigt.

EXT_IP_ADRESSE:smtp    inet  n     -       -       -       -       smtpd

EXT_IP_ADRESSE:submission  inet  n   -     n       -       -       smtpd

Den beiden auf der externen IP solltest Du
-o receive_override_options=no_address_mappings
spendieren. Das Expandieren der Aliase erfolgt dann, sobald die Mails 
von Amavis zurückkommen (sprich: bei localhost:10025).


127.0.0.1:smtp      inet  n       -       -       -       -       smtpd
  	[...] -o content_filter=

Kein content_filter auf 127.0.0.1:25 hätte ich zwar nicht gemacht, aber 
wirklich falsch ist es auch nicht. Hoffen wir mal, dass keiner einen 
Virus explizit über Deinen Webmailer hochlädt und verschickt ;-)

127.0.0.1:10025 inet    n       -       n       -       -       smtpd
  	-o content_filter=      [...]

Die beiden auf 127.0.0.1 sind "Endstation" für die Mails (kein 
content_filter) und müssen daher die Aliase expandieren. Also in diesem 
Teil nichts ändern.


Gruß

Christian Boltz

[1] 
-- 
Sagt mal ehrlich: Ist mein Rechner geisteskrank????
[Harald Katzer in suse-linux]



Mehr Informationen über die Mailingliste Postfixbuch-users