[Dovecot] doveadm -A stops processing at first uid<first_valid_uid
Joseph Tam
jtam.home at gmail.com
Tue Mar 6 04:01:43 EET 2012
On Sun, 4 Mar 2012, Timo Sirainen writes:
> > I would like to run various doveadm commands that involves all (mail) users like
> >
> > doveadm expunge -A mailbox Trash savedbefore 30d
> >
> > but any doveadm command that uses "-A" to iterate through all users will
> > stop processing at the first account with UID<first_valid_uid.
>
> What userdb are you using? userdb passwd should already skip users that
> aren't in the valid range. And what Dovecot version are you using?
passwd-file under dovecot 2.0.16.
> And one more thing: Does it really even stop there? Looking at the code
> it's supposed to log an error and continue to next user. Note that it says
> "Failed to iterate through SOME users".
The wording did not escape my notice, which is why I suspect it's not doing
what it was designed to do. This is my test:
# Command
doveadm mailbox list -A
# Start of password file
sysdaemon:*:500:500:System daemon:/:/dev/null
... and the rest ...
# dovecot.conf
...
first_valid_uid = 10000
first_valid_gid = 10000
...
In this situation, doveadm will exit immediately with an UID error
message. If I change the UID>10000, it will produce the analogous GID
error message. If I satify both UID and GID constraints, it will fail
on the next daemon entry. If I move the sysdaemon entry all the way to
the bottom of the pasword file, I get
user1 saved-messages
user1 sent-mail
user1 postponed-msgs
user1 temp
user1 temp/temp
user1 INBOX
user2 sent-mail
user2 101
user2 345
user2 ckf
... all user's mailbox with UID>10000, then ...
doveadm(sysdaemon): Error: user sysdaemon: Couldn't drop privileges: Mail access for users with UID 500 not permitted (see first_valid_uid in config file, uid from userdb lookup).
doveadm(sysdaemon): Error: User init failed
doveadm: Error: Failed to iterate through some users
> Oh, it says about first_valid_gid. Is sysdaemon's UID within valid range?
Sorry for this error mismatch -- I cut&pasted the wrong test output;
however, the problem I witnessed applies to both UID and GID (if either
constraint is not met, user iteration terminates).
> I also added this today: http://hg.dovecot.org/dovecot-2.1/rev/85a8d582d37f
It looks like I'll be upgrading. Oh, I just spotted this in the ChangeLog --
maybe you are undoing this?
(2010-10-21)
* src/auth/auth-settings.c, src/auth/auth-settings.h, src/auth/userdb-
passwd.c:
auth: userdb passwd iteration now lists only users within
first_valid_uid..last_valid_uid range.
[745ef289b0ea]
Joseph Tam <jtam.home at gmail.com>
More information about the dovecot
mailing list