[linux] sqlite3 database email adres query

Frans van Berckel fberckel op xs4all.nl
Wo Apr 3 23:06:46 CEST 2019


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

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.

Met vriendelijke groet,

-- 
Frans van Berckel
Media Engineer / Linux Master
LinkedIn: https://www.linkedin.com/in/fransvberckel/



Meer informatie over de Linux maillijst