Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Postfix, virtuelle Mailboxen mit mySql und Catchall-Problem

Alles rund um das Internet, Internet-Anwendungen (E-Mail, Surfen, Cloud usw.) und das Einrichten von Netzwerken einschl. VPN unter Linux

Moderator: Moderatoren

Gesperrt
nils-l
Member
Member
Beiträge: 51
Registriert: 28. Apr 2004, 10:13

Postfix, virtuelle Mailboxen mit mySql und Catchall-Problem

Beitrag von nils-l »

Hallo!
Habe Postfix jetzt endlich so eingerichtet, dass es virtuelle Mailboxen aus einer mySql-Tabelle ausliest und ich in einer zweiten Tabelle Weiterleitungen anlegen kann. So weit, so gut!

Nun aber mein Problem:
Ich habe z.B. zwei Accounts: user1@domain.tld und user2@domain.tld, die können auch prima Mails empfangen.
Wenn ich nun eine Catchall-Weiterleitung einrichte ("@domain.tld" "user1.domain.tld"), werden auch Mails an user2@domain.tld weitergeleitet. Irgendwie ja auch logisch, aber kann ich das irgendwie verhindern? Also sowas wie "leite nur mails zu user1@domain.tld weiter, falls kein eigener account existiert"

Hoffe ihr könnt mir helfen und sag schonmal Danke!
Benutzeravatar
crazyrolf
Advanced Hacker
Advanced Hacker
Beiträge: 964
Registriert: 7. Apr 2004, 09:05
Wohnort: Odenthal

Beitrag von crazyrolf »

Wie hast du das gemacht?

Liest du mit Postfix jetzt nur noch die virtuelle mysql Datei aus?

Oder wie?

Bitte deine Einträge dazu in der main.cf posten.
Gruß crazyrolf
-EX-Moderator-Mail-
Benutzeravatar
crazyrolf
Advanced Hacker
Advanced Hacker
Beiträge: 964
Registriert: 7. Apr 2004, 09:05
Wohnort: Odenthal

Beitrag von crazyrolf »

Ich hab das zwar noch nicht gemacht, aber würde es so versuchen:

Du packst alle User für die du eine Weiterleitung haben möchtest in die mysql Tabelle, aber nicht die catch-all!

Die catch-all würde ich in die Datei virtual schreiben.

Also etc/postfix/virtual:

Inhalt:
@domain.de user1@domain2.de

Jetzt die main.cf:

Reihenfolge beachten!

virtual_maps = mysql:/etc/postfix/forward.mysql,hash:/etc/postfix/virtual


So könnte es gehen, wenn Postfix die Reihenfolge beachtet!

Also wenn der User nicht in der mysql-Tabelle gefunden wird, dann die Datei virtual zum Zug kommt und die catch-all Funktion greift.
Gruß crazyrolf
-EX-Moderator-Mail-
nils-l
Member
Member
Beiträge: 51
Registriert: 28. Apr 2004, 10:13

Beitrag von nils-l »

Hallo!

Ich lese alle von Postfix benötigten Daten aus mySql aus.
Die entsprechenden Stellen in der main.cf:

Code: Alles auswählen

relay_domains = $mydestination, mysql:/etc/postfix/transport.mysql
virtual_mailbox_maps = mysql:/etc/postfix/virtboxes.mysql
virtual_maps = mysql:/etc/postfix/virtual.mysql
transport_maps = mysql:/etc/postfix/transport.mysql
Die mySql Tabellen sehen so aus:

Code: Alles auswählen

Transport:
domain (xyz.de)
transport (virtual:)

Virtboxes:
address (abc@xyz.de; def@xyz.de)
dir (/var/virtboxes/xyz.de/abc/; /var/virtboxes/xyz.de/def/)
uid (user-id; user-id)
password (passwort; passwort)
gid (gruppen-id; gruppen-id)

Virtual:
from (@xyz.de)
to (abc@xyz.de)
Es soll ganz gerne auch alles aus der Datenbank kommen...
Benutzeravatar
crazyrolf
Advanced Hacker
Advanced Hacker
Beiträge: 964
Registriert: 7. Apr 2004, 09:05
Wohnort: Odenthal

Beitrag von crazyrolf »

Teste doch mal so wie ich es geschrieben habe.

Ich weiß nicht genau ob das nur mit mysql geht?

Normal nimmt er ja das was er zuerst findet, wenn dann die addi nicht da ist, sollte die catch-all genommen werden.
Gruß crazyrolf
-EX-Moderator-Mail-
nils-l
Member
Member
Beiträge: 51
Registriert: 28. Apr 2004, 10:13

Beitrag von nils-l »

Hm, ist ja leider noch nicht so ganz das, was ich will...

Bei Deinem Vorschlag würde er schauen, ob in der mySql eine Weiterleitung (virtual_maps) existiert und diese ggfs. benutzen. Falls keine existiert, nimmt er die CatchAll aus der Hash-Datei.

Er soll aber schauen, ob ein Postfach (virtual_mailbox_maps) existiert und die Mail dorthin ausliefern. Nur wenn kein Postfach da ist, soll die Mail umgeleitet werden.
nils-l
Member
Member
Beiträge: 51
Registriert: 28. Apr 2004, 10:13

Beitrag von nils-l »

Oh, sorry, es geht tatsächlich...
Aber warum? Ist in meiner vorigen Antwort ein Denkfehler?
Benutzeravatar
crazyrolf
Advanced Hacker
Advanced Hacker
Beiträge: 964
Registriert: 7. Apr 2004, 09:05
Wohnort: Odenthal

Beitrag von crazyrolf »

Ist doch genau das was ich gesagt habe.

Also geht es so wie ich dachte oder was?
So könnte es gehen, wenn Postfix die Reihenfolge beachtet!

Also wenn der User nicht in der mysql-Tabelle gefunden wird, dann die Datei virtual zum Zug kommt und die catch-all Funktion greift.
Gruß crazyrolf
-EX-Moderator-Mail-
nils-l
Member
Member
Beiträge: 51
Registriert: 28. Apr 2004, 10:13

Beitrag von nils-l »

Entweder hast Du nicht verstenden, was ich mit
nils-l hat geschrieben:Bei Deinem Vorschlag würde er schauen, ob in der mySql eine Weiterleitung (virtual_maps) existiert und diese ggfs. benutzen. Falls keine existiert, nimmt er die CatchAll aus der Hash-Datei.

Er soll aber schauen, ob ein Postfach (virtual_mailbox_maps) existiert und die Mail dorthin ausliefern. Nur wenn kein Postfach da ist, soll die Mail umgeleitet werden.
meinte, oder ich vestehe Dich nicht :-)

Meine Logik sagt mir dass er bei

Code: Alles auswählen

virtual_maps = mysql:/etc/postfix/forward.mysql,hash:/etc/postfix/virtual
zwischen dem mysql und hash eintrag prüft, ob eine Mailbox existiert...
Oder bin ich jetzt ganz doof?! :D :roll: :oops:
Benutzeravatar
crazyrolf
Advanced Hacker
Advanced Hacker
Beiträge: 964
Registriert: 7. Apr 2004, 09:05
Wohnort: Odenthal

Beitrag von crazyrolf »

Wenn es so geht wie ich meine, sieht er erst in die mysql-db ob da ein Eintrag vorhanden ist.
Ist der user da, wird die Mail an diesen user ausgeliefert.
Ist der user nicht da, sollte die catch-all aus der virtual zum zuge kommen und die Mail an diese Stelle liefern.

Das ist doch genau das was du willst oder nicht?
Gruß crazyrolf
-EX-Moderator-Mail-
Benutzeravatar
crazyrolf
Advanced Hacker
Advanced Hacker
Beiträge: 964
Registriert: 7. Apr 2004, 09:05
Wohnort: Odenthal

Beitrag von crazyrolf »

In der mysql-db müsste dann für jeden user eine Weiterleitung existieren! logo!
Gruß crazyrolf
-EX-Moderator-Mail-
nils-l
Member
Member
Beiträge: 51
Registriert: 28. Apr 2004, 10:13

Beitrag von nils-l »

Sorry erstmal für die späte Antwort...
crazyrolf hat geschrieben:Ist der user nicht da, sollte die catch-all aus der virtual zum zuge kommen und die Mail an diese Stelle liefern.
Ja, genau das will ich.

Die user stehen in einer MySQL Tabelle, für die Weiterleitungen habe ich folgendes, wie Du gesagt hast:

Code: Alles auswählen

virtual_maps = mysql:/etc/postfix/forward.mysql,hash:/etc/postfix/virtual 
Die MySQL Tabelle ist natürlich eine andere als die, wo die User drin stehen.
Trage ich einen CatchAll jetzt in der MySQL-Tabelle ein, werden auch Mail weitergeleitet, für die ein User (in der anderen) Tabelle existiert. Trage ich die Weiterleitung in der Hash ein, wird nur weitergeleitet, wenn der User nicht existiert.
Das ist das, was mich verwirrt....
Benutzeravatar
crazyrolf
Advanced Hacker
Advanced Hacker
Beiträge: 964
Registriert: 7. Apr 2004, 09:05
Wohnort: Odenthal

Beitrag von crazyrolf »

Das wird mit der Abfrage von MySql zusammen hängen.

Der ist es wohl egal, wer oder was zuerst kommt, die nimmt dann wohl alles was sie findet und schickt es da hin.
Gruß crazyrolf
-EX-Moderator-Mail-
Gesperrt