[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