Hilfe: Postfix(MySQL) ignoriert Email-Adressen in User-Tabelle

Possessor

New Member
Hallo,

ich habe folgendes Problem mit meiner Postfix-Konfiguration in Verbindung mit virtuellen Mailboxen mit MySQL:

Ich habe in der user tabelle benutzer1@domain.de und benutzer2@domain.de in der forward tabelle habe ich @domain.de -> benutzer1@domain.de

Soll also am Ende bedeuten, dass wenn keine Email-Adresse für diese Domain vorhanden ist sie immer an benutzer1 geht.

Versende ich nun aber eine Email an benutzer2@domain.de bekomme ich diese auch!

Wäre cool wenn ihr mal drüber schauen könntet, da ich mir schon den Tag über den Kopf zerbrochen habe.

Vielen Dank im voraus.

/etc/postfix/main.cf:
Code:
virtual_mailbox_base = /home/vmail
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailboxes.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias.cf
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000

/etc/postfix/mysql-virtual-mailboxes.cf:
Code:
hosts = localhost                                                  
dbname = email
table = users
user = dbuser
password = dbpw
select_field = maildir 
where_field = email

/etc/postfix/mysql-virtual-alias.cf:
Code:
hosts = localhost
dbname = email
table = forwardings
user = dbuser
password = dbpw
select_field = destination
where_field = source
 
Last edited by a moderator:
Moin moin.. Ich bin jetzt selbst dabei, mich mit Postfix genauer auseinander zusetzen und stecke an einem ähnlichen Problem fest.. Aber vielleicht habe ich da einen kleinen Ansatz (falls Du das nicht schon probiert hast).

Possessor said:
... in der forward tabelle habe ich @domain.de -> benutzer1@domain.de

Soll also am Ende bedeuten, dass wenn keine Email-Adresse für diese Domain vorhanden ist sie immer an benutzer1 geht.
Das klingt nach einer "Catchall" Funktion, sprich.. das Postfach was angesprochen worden ist, existiert nicht.. Email soll aber zugestellt werden an XY!

Du hast nun geschrieben dass Emails an "@domain.tld -> benutzer1" gesendet werden sollen, soweit ich es weiß.. muss solch ein Vorhaben wie folgt aussehen,
- *@domain.tld -> benutzer1@domain.tld

Du müsstest also das * dort hinstellen, falls Du das nicht schon gemacht hast.

Mfg. Anubis
 
Wenn ich mir anschaue, wie viele E-Mails an meine Domains mit irgenwelchen generierten local-Parts abgewiesen werden, willst du eigentlich keinen CatchAll haben.
 
Guten morgen,

ich muss wegen gewisser Strukturen catchAll anbieten und fange dies durch SpamTools auch ab. Also die catchAll-Funktion funktioniert auch für alle Domains einwandfrei. Wo es klemmt ist, dass alle Emails über die catchAll abgefangen werden selbst wenn in der User-Tabelle eine exakte Email-Adresse existiert.
 
Okay, dass er die einzelnen Direktiven übergeht und immer an dein "Catchall" sendet (Bnutzer2) ist doof. Hast Du mal Benutzer 1 per Hand in deine forwards eingetragen?

Sprich, dass in deiner Forwards diese Einträge drin sind...
- benutzer1 -> benutzer1
- benutzer2 -> benutzer2
- * -> benutzer2

Ist aber nur ein Ansatz von mir. Eine Frage habe ich allerdings an Dich, wie hast Du es geschafft das er deine SQL Datenbank mit "virtual_mailbox_maps = mysql:/..." anspricht?

Ich muss bei mir "proxy:mysql:/..." dort rein schreiben und eine "proxy_read_maps" einbauen, sonst geht gar nichts :(

Allerdings sehen meine mysql Dateien etwas anders aus, da ich mit dem Aufbau von deinem Format noch nicht so zurecht komme :(
Code:
hosts = localhost
user = postfix
password = xxxx
dbname = postfix

query = SELECT domain AS virtual FROM mailbox WHERE domain = '%s' AND active = '1'

Mfg. Anubis
 
Da hängt es leider an folgendem: wenn ich in forwards die email-adresse wiederholt einschreibe, bilde ich ein Endloss-Schleife. Nicht zu empfehlen!

Bei deiner Datei ist ja lediglich der Query ausgeschrieben und bei mir in die einzelnen Teilabschnitte eingeteilt.

Der Proxyabschnitt wirkt bei mir komisch. Hast in deiner main.cf noch irgendwo proxies eingerichtet?

Meine Struktur auf deinem Beispiel würde so aussehen:
hosts = localhost
dbname = postfix
table = mailbox
user = postfix
password = XXXXXXX
select_field = domain
where_field = domain
 
Last edited by a moderator:
Ahh.. okay, dass mit der Schleife klingt logisch.. hätte mir auch einfallen können.

Zu der Frage ob ich noch irgendwo Proxys verwende.. nope, mache ich nicht.
Code:
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf

proxy_read_maps =
 $local_recipient_maps
 $mydestination
 $virtual_alias_maps
 $virtual_alias_domains
 $virtual_mailbox_maps
 $virtual_mailbox_domains
 $relay_recipient_maps
 $relay_domains
 $canonical_maps
 $sender_canonical_maps
 $recipient_canonical_maps
 $relocated_maps
 $transport_maps
 $mynetworks
 $virtual_mailbox_limit_maps
Und diese Latte an proxy_read_maps brauche ich. Warum auch immer. Ich hatte es dann ohne dem "proxy:mysql:" versucht, aber dann geht gar nichts mehr. Meine Überlegung war, ob es an meinem Aufbau der mysql Datei liegt...

Auf einem vorinstallierten Server habe ich nämlich gesehen, dass dort die Einträge wie folgt sind,
Code:
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual_mailbox_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual_mailbox_domains.cf
da existiert auch nichts mit Proxy.. und es funktioniert. Allerdings ist der mysql Aufbau wieder wie bei Dir.. :D

Auf dem Server wo das ohne Proxy funktioniert, wird auch kein forwarding verwendet, sondern
Code:
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual_alias_maps.cf
vielleicht ist das ja ein Ansatz zur Lösung. Ich gucke gleich mal die Config Files alle durch, was ich da finde ;)
 
Also in meinem Fall ist ja alias=forwardings... ich habe ja nur den Tabellennamen so genannt.

In deinem Fall denke ich, dass wenn du den Proxy-Abschnitt weg lässt und die cfgStrukturen übernimmst es auch läuft, da ich sonst nichts besonderes geändert habe.
 
Postfixadmin ist doch nur ein Webinterface, ähnlich wie phpMyAdmin, und selbst für phpMyAdmin muss der MySQL Server erst mal richtig laufen :D

Oder irre ich ich da gerade?
 
Ne habe ich auch so verstanden. Und soweit ich weiß kann man in dem Admin keine Wildcard-Email-Adressen vergeben. Und der Sinn mit Postfix & MySQL ist ja das ich automatisch über mein CMS Email-Adressen einrichten kann, da wäre ein zweites CMS für Kunden eher hinderlich.
 
Und soweit ich weiß kann man in dem Admin keine Wildcard-Email-Adressen vergeben.
Klar kann man: *@domain.tld

PostfixAdmin legt wenigstens die MySQL-Tabellen richtig an und diese kann man dann auch per CMS füttern (das PostfixAdmin-Webinterface muss man nicht nutzen, aber man kann sich daraus die richtigen DB-Queries extrahieren).
 
Jawoll ja.. Das schaue ich mir gerade an. Mal gucken ob es klappt :)
Ich vermute mal, es reicht eine ganz minimale main.cf von Postfix, diese füttert man dann mit den Einträgen aus der Beschreibung und fertig.. da bin ich ja mal gespannt :D

Was die CatchAll angeht, es gibt eine Datei namens "mysql_virtual_alias_domain_catchall_maps.cf", ich sage jetzt einfach mal aus dem Bauch heraus, DIE steuert die CatchAll Geschichte :D

Und was in einer MySQL Datenbank steht, kann ich von überall ansteuern. Wenn das schon mal läuft, kann ich mir auch ein eigenes Interface bauen um Accounts steuern.. ich bin gespannt und probiere es aus.

Gruß, Anubis

Nachtrag1: Okay, dass einrichten ging ja recht easy.. Ich habe mir eine Test-Email zugesandt, und diese kam sofort an und wurde im richtigen "maildir" hinterlegt. Jetzt muss ich nur noch Dovecot dazu oder dazwischen schalten, damit ich die Mails vom Client abrufen kann :)

Nachtrag2: So, jetzt kann ich via Dovecot die Emails abrufen, und Postfix empfängt auch Emails die ich mir von GMX zusende. Das ist jetzt zwar nicht kombiniert, Postfix + Dovecot kann man ja verbinden, aber erst mal geht das. Was noch nicht geht ist das versenden, da machen die "smtpd_restrictions" Ärger und sagen das Relaying nicht erlaubt ist.. :(
 
Last edited by a moderator:
Also nach meiner Recherche bildet es aber nicht die cf Files oder?

Ich habe jetzt meine main.cf umgeschrieben zu:
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailboxes.cf, mysql:/etc/postfix/mysql-virtual-catchall.cf

die catchall.cf ist lediglich die umgeschriebene alias.cf, wobei ich den alias eintrag komplett entfernt habe. Das Resultat: benutzer1 und benutzer2 erhalten nun Emails... allerdings funktionieren die catchall Einträge selbst leider nicht.

PS: Habt beim Thunderbird ebenfalls folgendes Problem: imapd-ssl: Maximum connection limit reached for ?

EDIT: Ich habe das Problem lösen können. Postfix guckt zu erst nach Alias-Tabellen, damit er ggf. Emails nur forwarden braucht. Wenn man allerdings einmal eine alias_map nimmt die ebenfalls die echten Email-Adressen beinhaltet erkennt er das diese spezifischer sind und zieht dieser der CatchAll vor.
 
Last edited by a moderator:
Back
Top