Jump to content
Froxlor Forum
  • 0

authentifizierten Nutzern den Mailversand einschränken


rseffner

Question

Hallo,

froxlor kommt ja mit einer Datenbankabfrage für den postfix-Parameter smtpd-sender-login-maps, die das SASL-Login mit der MAIL-FROM Adresse abgleicht - sprich tim@example.com kann auch nur als tim@example.com versenden, wenn man das aktiviert. Nun habe ich hier aber häufig Anwendungsfälle, in denen tim auch als timea@example.com (gleicher domainpart) oder sogar tim@example.de (abweichender, aber dem Froxlor-Kunden zugeordneter domainpart) versenden können soll.

Ich frage mich, ob man (also ich jetzt individuell) dazu nicht die SQL-query abändern könnte und wenn ja wie:

Wir haben:

SELECT DISTINCT username FROM mail_users WHERE email in ((SELECT mail_virtual.email_full FROM mail_virtual WHERE mail_virtual.email = '%s' UNION SELECT mail_virtual.destination FROM mail_virtual WHERE mail_virtual.email = '%s'));

Das "%s" steht laut postfix-Doku für "address". Wenn der SASL tim@example.com also als tim@example.com oder timea@example.com versenden dürfen soll, müsste es doch genügen, das erste Vorkommen von "%s" durch "%d" zu ersetzen - nicht?

SELECT DISTINCT username FROM mail_users WHERE email in ((SELECT mail_virtual.email_full FROM mail_virtual WHERE mail_virtual.email = '%d' UNION SELECT mail_virtual.destination FROM mail_virtual WHERE mail_virtual.email = '%s'));

Ferner scheint das auch nur so mit catch-all-Konten zu klappen (zumindest aus SQL-Sicht), ich bin mir nicht klar ob postfix dann noch localpart und domainpart durchprobiert.

Nun lässt sich das doch sicher auch so bauen, dass ein beliebiges Konto eines Froxlor-Kunden im Namen aller Nutzer und Domains des Kunden versenden dürfte. Das verkompliziert das SELECT dann, weil über die Kunde-ID gegangen werden muss. Gibt es hier SQL-Kenntnisse, die das ermöglichen würden?

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Grundsätzlich gebe ich dir Recht, es wäre sinnvoll sowas zu haben, allerdings vorallem auf senden im Namen anderer bezogen, ist man schnell bei äußerst komplexen abfragen (und auch entsprechender Verwaltung im Frontend). Lässt sich aber sicher Mal durchdenken und skizzieren 

Link to comment
Share on other sites

  • 0

Ja, dass das im UI ne Menge Arbeit bedeuten würde ist mir klar.

Ich möchte erstmal wissen, ob die %d Ersetzung von der Adressberechtigung auf die Domainberechtigung wechselt. Man könnte das ja als Tipp in die Doku aufnehmen.

Die Kür wäre dann, wenn ein DB:Profi mal schaut wie man diese Anfrage auf alle Domains des Kunden, zu dem das Saale-Login passt, erweitert.

Link to comment
Share on other sites

  • 0
9 minutes ago, rseffner said:

Ich möchte erstmal wissen, ob die %d Ersetzung von der Adressberechtigung auf die Domainberechtigung wechselt.

steht doch alles in der manual:

		%s     This is replaced by the input key.  SQL quoting  is  used
                     to  make  sure that the input key does not add unexpected
                     metacharacters.
                     
		%u     When the input key is an address of the form user@domain,
                     %u  is  replaced  by  the  SQL  quoted  local part of the
                     address.  Otherwise, %u is replaced by the entire  search
                     string.   If  the  localpart  is empty, the query is sup-
                     pressed and returns no results.

              %d     When the input key is an address of the form user@domain,
                     %d  is  replaced  by  the  SQL  quoted domain part of the
                     address.  Otherwise, the query is suppressed and  returns
                     no results.

 

53 minutes ago, rseffner said:

müsste es doch genügen, das erste Vorkommen von "%s" durch "%d" zu ersetzen - nicht?

Nein, deine Abfrage lautet sonst: where email = 'domain.tld'

Du wirst also keine results bekommen. wenn müsstest du auch die Abfrage entsprechend anpassen auf z.B. where email LIKE '%%@%d (was sowas wie: LIKE '%@domain.tld' ergeben sollte)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×
×
  • Create New...