Pigeonhole Sieve Config Warning

Aki Tuomi aki.tuomi at open-xchange.com
Mon Aug 9 16:59:58 EEST 2021


> On 09/08/2021 16:57 dovecot at ptld.com wrote:
> 
>  
> > On 08-09-2021 12:55 am, Aki Tuomi wrote:
> > 
> >> In the sieve plugin settings i have
> >>    plugin {
> >>      ...
> >>      sieve_user_email = %u
> >>    }
> >> 
> >> Variables pages says
> >>    %u = full username (e.g. user at domain)
> >> 
> >> This config seems to work in practice, the email is from: the users
> >> email address.
> >> 
> >> However on starting dovecot im getting a warning twice:
> >>    dovecot[35893]: managesieve: Warning: sieve: Invalid address value 
> >> for
> >> setting `sieve_user_email': Missing domain
> >>    dovecot[35893]: master: Dovecot v2.3.8 (9df20d2db) starting up for
> >> imap, lmtp, sieve
> >>    dovecot[35897]: managesieve: Warning: sieve: Invalid address value 
> >> for
> >> setting `sieve_user_email': Missing domain
> > 
> > Maybe some of your users do not have domain in the username? %u will
> > only expand into user at domain if the username has domain. It won't
> > magic up the domain value there.
> 
> 
> Im not getting my head around what you are saying. This happens on 
> dovecot startup. To my knowledge there isn't any username being 
> evaluated. Where would dovecot be pulling a username from? I assumed it 
> was just testing the syntax of the config not grabbing random user data.
> 
> As far as maybe some users don't have domains in their username, still 
> having trouble getting my head around that idea. I didn't know a 
> maildir/ location had a "username" embedded into it. Isn't mail access 
> determined by login verification and where mail_location tells dovecot 
> where to find the maildir/ files for that login? I mean if i just change 
> mail_location then doesn't that completely change the correlation 
> between "username" and ones email?
> 
> For my situation im using sql to lookup login info.
> 
>    mail_home = /email/%d/%2n/%n/_dovecot
>    mail_location = 
> maildir:/email/%d/%2n/%n/_folders:INDEX=/email/%d/%2n/%n/_dovecot:CONTROL=/email/%d/%2n/%n/_dovecot
>    password_query = SELECT inbox AS userdb_user, passwd AS password, 
> CONCAT('*:storage=', diskQuota, 'm') AS userdb_quota_rule FROM accounts 
> WHERE email = '%u'
> 
> Sql Columns 'email' and 'inbox' both store the same full 
> "user at domain.com". The 'email' column acts as login username and the 
> 'inbox' column acts as maildir/ location.
> Other relevant configuration...
> 
>    protocol lmtp {
>      mail_plugins = $mail_plugins sieve
>    }
>    plugin {
>      ...
>      sieve = file:~/../_sieve;active=~/../_sieve/.active_sieve
>      sieve_user_email = %u
>    }
> 
> Where is my misunderstanding on this and/or what is dovecot looking at 
> on startup to determine there isn't a domain in usernames for sieve when 
> no one has logged in yet? Or should i trick sieve by putting %n@%d 
> instead of %u for sieve_user_email?

Hm. Overlooked the "on startup" part. This sounds like a bug, maybe.

Aki


More information about the dovecot mailing list