SQL Backend for IMAP METADATA Dictionary

Joseph D Wagner joe at josephdwagner.info
Sun Aug 1 10:10:06 EEST 2021


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