Catch all for Metadata storage in SQL database

Aki Tuomi aki.tuomi at open-xchange.com
Thu Oct 27 10:32:43 UTC 2022


> On 03/05/2021 09:10 EEST Aki Tuomi <aki.tuomi at open-xchange.com> wrote:
> 
>  
> > On 30/04/2021 09:38 Steffen Kaiser <skdovecot at smail.inf.h-brs.de> wrote:
> > 
> >  
> > Hi,
> > 
> > the
> > 
> > https://doc.dovecot.org/configuration_manual/imap_metadata/
> > 
> > sample uses
> > 
> > mail_attribute_dict = file:%h/Maildir/dovecot-attributes
> > 
> > which stores all keys=value pairs in the file.
> > 
> > http://dovecot.2317879.n4.nabble.com/Dovecot-v2-3-9-3-HTTP-API-Endpoint-for-mailbox-cryptokey-operations-td70801.html
> > 
> > uses a SQL dict, however very specific ones. How can I use a SQL dict to 
> > store _all_ keys, as with a file based storage?
> > 
> > I cannot find a documentation for "pattern" specification, that works as 
> > "catch all", in order to store anything not catched by patterns into the 
> > database.
> > 
> > https://wiki.dovecot.org/Dictionary does not give any hint (in my eyes).
> > 
> > 
> > 
> > -- 
> > Steffen Kaiser
> 
> 
> for one, you need to use proxy::metadata
> 
> then define
> 
> dict {
>    metadata = mysql:/path/to/config
> }
> 
> then you need the mapping file, which you could use something like:
> 
> connect = host=localhost dbname=dovecot user=dovecot password=dovecot
> map {
>  pattern = priv/$key
>  fields {
>    meta_key = $key
>  }
>  table = meta
>  username_field = username
>  value_field = value
> }
> 
> with
> 
> CREATE TABLE meta (
>    username VARCHAR(255) NOT NULL,
>    meta_key VARCHAR(255) NOT NULL,
>    value VARCHAR(255),
>    PRIMARY KEY(username, `key`)
> );
> 
> Hope this helps.
> 
> Aki


Hi!

There is now better documentation on how to achieve this: https://doc.dovecot.org/configuration_manual/dict/#sql-dict-with-mail-attribute-dict

Aki


More information about the dovecot mailing list