[linux] sqlite3 database email adres query

Geert Stappers geert.stappers op hendrikx-itc.nl
Do Apr 4 08:51:37 CEST 2019


On 03-04-2019 23:06, Frans van Berckel wrote:
> On Wed, 2019-04-03 at 18:55 +0200, Paul Slootman wrote:
>> On Wed 03 Apr 2019, Frans van Berckel wrote:
>>
>>>> Zo uit m'n hoofd:
>>>>
>>>> SELECT userid || '@' || domain FROM users;
>>>>
>>>>>> is vaak een string concat operator.
>>> Super dit werkt.
>>>
>>> En met deze aanvullende query, hoe kan ik dan zien wat er in %s
>>> zit? Dat ik je sql niveau reeds weet dat het werkt.
>>>
>>> SELECT userid || '@' || domain AS email FROM users WHERE email =
>>> '%s'
> Sorry, ik zet jullie op het verkeerde been. Wat blijkt, Postfix
> gebruikt '%s' om te zoeken. Op dan wel een userid, een domeinnaam of
> een alias. Heb nu drie werkende postfix sqlite3 query's.
>
>> Hmm, weet niet of sqlite dit snapt, maar je kunt doorgaans geen WHERE
>> gebruiken op iets wat je pas weet nadat de query is uitgevoerd.
>>
>> Dus je moet of eerst (buiten sqlite om) user en domain splitsen en
>> die los opzoeken met "WHERE userid = 'abc' AND domain =
>> 'example.com'"; of HAVING gebruiken (als sqlite dit ondersteunt,
>> mysql b.v. wel):
>>
>> SELECT userid || '@' || domain AS email FROM users HAVING email =
>> '%s';
> # cat sqlite_mailbox.cf
>
> dbpath = /var/mail/sqlite/authdb.sqlite3
> query = SELECT userid || '@' || domain AS email FROM users WHERE email
> = '%s'
> result_format = %d/%u/
>
> Om te testen vervang ik in sqlite3 %s voor info@{gecensureerd}.nl, dan
> krijg ik info@{gecensureerd}.nl retour.
>
> # cat sqlite_domains.cf
> dbpath = /var/mail/sqlite/authdb.sqlite3
> query = SELECT domain FROM users WHERE domain = '%s'
>
> Vervang ik %s voor {gecensureerd}.nl, krijg ik de domeinnaam
> {gecensureerd}.nl retour. Een onbekende geeft niks.
>
> #cat sqlite_alias.cf
> dbpath = /var/mail/sqlite/authdb.sqlite3
> query = SELECT alias FROM aliases WHERE email = '%s'
>
> Alias is een andere tabel. En vervang ik %s voor
> postmaster@{gecensureerd}.nl, komt info@{gecensureerd}.nl retour.
>
> De hele configuratie van deze server schiet ik nu met Ansible in.
>
> https://github.com/mattsta/mailweb

https://github.com/mattsta/mailweb/blob/master/roles/postfix/templates/postfix/main.cf.j2#L43

heeft (als commentaar):

} require addresses of the form "user op domain.tld"


Hey, dat is wat Linux masterĀ  Paul ook adviseert


>
> Moest zelf e.a tweaken en drie modules toevoegen maar dan heb je ook
> wat. Zal eens kijken of ik die op mijn eigen Github kan publiceren.

Ik kijk er naar uit



Groeten

Geert Stappers




Meer informatie over de Linux maillijst