PhpMyAdmin/MySQL - Emailaliase

ekin06

Captain
Registriert
Nov. 2007
Beiträge
3.474
Hallo!
Ich bin Admin eines Mailserver der Firma wo ich arbeite. Mein Chef hat viele Aliase und möchte auch das er unter allen erreichbar ist. Gesagt getan. Ich hab ihm die gewünschten Aliase eingerichtet (z.b. email1@domain.de, email2@domain.de). Diese werden weitergeleitet an eine einzige Adresse die er dann nur abrufen braucht.

Da wir mehrere Domains haben und ich es sehr mühselig finde jeden Alias Eintrag einzeln vorzunehmen, stellt sich die Frage ob es eine Möglichkeit gibt, ein Alias für mehrere Domains verantwortlich zu machen? D.h. man trägt ein email1@domain.* z.B. so dass man an email1@domain.de, email1@domain.info aber auch email1@domain.net eine Mail schicken kann, aber nur 1 Eintrag in der MySQL-Datenbank dafür braucht.

Natürlich funktioniert mein Beispiel nicht, weil ich das schon ausprobiert habe und hier sonst nicht nachfragen würde :D, aber evtl. gibt es einen anderen Trick?

Danke an alle die mir weiterhelfen können. Ich hoffe das ist verständlich so.

PS: Rootserver ist ein Debian Lenny, Postfix, MySQL

EDIT: Keiner ne Idee?

mfg ekin06
 
Zuletzt bearbeitet:
ok stimmt, an die queries hab ich gar nich gedacht. aber wie sieht das konkret für ein beispiel aus? das wären die daten für die alias abfrage.

user = *****
password = *****
dbname = mailserver
hosts = 127.0.0.1
query = SELECT destination FROM virtual_aliases WHERE source='%s'


nehmen wir an ich habe in der mysql-table 3 felder.

PHP:
ID                        Domain_ID                      Source                   Destination

1                         1                             arno-nym@domain.*         user@domain.de
2                         2                             user2@domain.*            user@domain.de
3                         3                             notify@domain.*           user@domain.de

wenn jetzt eine mail an 1 geht (egal ob endung de, net oder info etc.) wird die zu user@domain.de geschickt klar oder? das selbe gilt für die anderen. der account user@domain.de wird dann abgerufen.

wie muss jetzt der querie aussehen damit er weiß, dass er alle mails mit dem lokalen part "arno-nym" und domainnamen "domain.*" nehmen soll? da blick ich irgendwie noch nicht ganz durch.

bei result_format gibs ja noch %%, &u, %d, %[SUD1-9]. ich kann zwar übersetzen was da als erklärung steht, aber anfangen kann ich damit nix. bei manpages steh ich irgendwie immer aufm schlauch.

danke
mfg ekin06
 
Zuletzt bearbeitet:
SELECT `Destination` FROM `blablabla` WHERE ('%s' LIKE REPLACE(`Source`, '*', '%'));

Oder ggf. auch statisch die * durch % ersetzen und REPLACE weglassen. Oder du machst es mit REGEXP oder schreibst ne stored procedure. Da gibts viele Möglichkeiten.
 
Ok danke! Das werde ich heute Abend oder morgen mal ausprobieren.
 
hmm, also egal wie ich's drehe ich kriegs nicht hin. habe etliche varianten ausprobiert, aber kriege immer

Jan 31 02:51:20 h1642655 postfix/smtpd[2027]: fatal: db_common_parse: /etc/postfix/mysql_virtual_forwardings.cf: Invalid query template: ...

EDIT:
so, hab heut nochmal bisschen rumprobiert und mich langsam rangetastet. da postfix anscheinend irgendwelche probleme mit der schreibweise hat, hab ich jetzt erstmal mit regexp weitergemacht. ich bin jetzt soweit das er die mails richtig abruft, aber die zustellung an alle geht - was mir auch bei dem querie klar war. mein nächster schritt wäre jetzt zu wissen wie ich da eine sperre einbauen könnte. ich hab mir da gedacht das ich die mail id's nehme um zu identifizieren das die destination auf jeden fall in der source zeile steht. hab aber noch keine idee wie ich das umsetze.

das ist was ich im moment habe:
query = select destination from virtual_aliases where source REGEXP '\\.\\*';

EDIT2:
OK habs jetzt hinbekommen so wie du gesagt hast. man musste auch den * escapen, sieht jetzt also so aus:
query = SELECT destination FROM virtual_aliases WHERE ('%s' LIKE REPLACE (Source,'\\*','%%'));

das problem ist aber, er findet den user (die mit .* am adressende in der datenbank) noch immer nicht. also in der datenbank steht er mit user@domain.* - wenn ich an user@domain.net z.b. adressiere findet er ihn nicht wegen dem *.

btw: was ist eine "stored procedure" ... also was ist mittlerweile klar, aber wie/wo benutze/erstelle ich solch eine? aber ich denke die kommen für mich nich in frage, weil da muss man ja programmieren etc oder? und außerdem glaub ich ist die zu aufwendig für mein kleines problem.
 
Zuletzt bearbeitet:
hm nö nicht 100% aber anders hatte es glaube gar nicht funktioniert :S. ich probiers nochmal ohne und sag bescheid.

EDIT: wow....ich bin begeistert, es funktioniert :D - wer weiß was ich vorher alles für fehler inkl. hatte.

VIELEN VIELEN DANK! ^^
 
Zuletzt bearbeitet:
Zurück
Oben