SQL Backend for IMAP METADATA Dictionary

Aki Tuomi aki.tuomi at open-xchange.com
Sun Aug 1 10:47:03 EEST 2021


Hi,

I realized that the priv map entry should work for shared too. So just use pattern = $key. The username field should always be there for IMAP metadata for both shared and priv.

Aki


On 1 August 2021 7.10.06 UTC, Joseph D Wagner <joe at josephdwagner.info> wrote:
>This works for /priv:
>
>map {
>  pattern = $key
>  table = attr_priv
>  fields {
>     attr_name = $key
>  }
>  username_field = username
>  value_field = attr_value
>}
>
>Not sure what to do about /shared.  I tried, for example, to comment out the /priv map and use just this /shared map:
>map {
>  pattern = $key
>  table = attr_shared
>  fields {
>     attr_name = $key
>  }
>  value_field = attr_value
>}
>
>However, postgres logs showed it didn't even try to hit the database.
>
>Joseph D. Wagner
>
>-----Original Message-----
>From: dovecot <dovecot-bounces at dovecot.org> On Behalf Of Aki Tuomi
>Sent: Saturday, July 31, 2021 4:46 AM
>To: dovecot at dovecot.org; Joseph D Wagner <joe at josephdwagner.info>
>Subject: Re: SQL Backend for IMAP METADATA Dictionary
>
>
>
>On 31 July 2021 9.12.53 UTC, Joseph D Wagner <joe at josephdwagner.info> wrote:
>>I've seen documentation on using a SQL backend for quota dictionary and 
>>passdb&userdb dictionary. However, I can't find any examples of a SQL 
>>backend for IMAP METADATA / mail_attributes_dict.
>>
>>Is this combination possible?  If so, is there an example somewhere?
>>
>>I am unsure what data structures it's expected or how to create the map 
>>entries for it.
>>
>>Thanks in advance.
>>
>>Joseph D. Wagner
>>
>
>Hi Joseph,
>
>try
>
>mail_attributes_dict = proxy::attr
>
>dict {
>  attr = sql:/path/to/config
>}
>
>
>map {
>  pattern = /shared/$key
>  table = attr_shared
>  fields {
>     attr_name = $key
>  }
>  value_field = attr_value
>}
>
>map {
>  pattern = /priv/$key
>  table = attr_priv
>  fields {
>     attr_name = $key
>  }
>  username_field = username
>  value_field = attr_value
>}
>
>SQL
>
>CREATE TABLE attr_shared (
>   attr_name VARCHAR(255) PRIMARY KEY NOT NULL,
>   attr_value VARCHAR(65535)
>)
>
>CREATE TABLE attr_priv (
>   attr_name VARCHAR(255)  NOT NULL,
>   username VARCHAR(255)  NOT NULL,
>   attr_value VARCHAR(65535)
>   PRIMARY KEY(attr_name, username)
>)
>
>Hopefully correct :)
>
>Aki
>
>


More information about the dovecot mailing list