Table of Contents

About

Dovecot allows creating a master user that will be able to log-in as any other user which is particularly useful when administering a large number of accounts and you have to check that emails are properly sent and received. This short tutorial will explain how a master user can be added to dovecot and how to test logging-in. The Linux distribution used for this tutorial is Debian but the information may apply to other distributions.

Creating Master Password File

To create a master file, assuming that the dovecot configuration files are placed in /etc/dovecot/, issue the command:

htpasswd -b -c -s /etc/dovecot/master-users MASTER_USER MASTER_PASSWORD

where:

Configuring Dovecot

To configure dovecot and enable the master user, edit /etc/dovecot/conf.d/10-auth.conf and set the master separator field:

auth_master_user_separator = *

this symbol (*) will be used to separate the real user from the master user when logging-in. In the same file, make sure that the master configuration file is not commented (remove the hash sign # before the exclamation mark !:

!include auth-master.conf.ext

Next, edit /etc/dovecot/conf.d/auth-master.conf.ext and amend the file such that it contains the lines:

passdb {
  driver = passwd-file
  master = yes
  args = /etc/dovecot/master-users
  pass = yes
}
passdb {
  driver = shadow
}
userdb {
  driver = passwd
}

The final step is to restart dovecot and then check that logging-in works.

Testing

Checking that the master user works can be performed via SSL or in plain mode. In order to log-in as a different user by using the master user, the username and password to be used will be:

Username Password
OTHER_USER*MASTER_USER MASTER_PASSWORD

For example, if the user you want to log-in as is called john and your master user is called barbara and the master password is siglint, then the username you have to supply will be john*barbara and the password will be siglint.

Plain

To log-in using the plain method, issue:

telnet localhost 143

assuming that dovecot is listening on localhost.

And then enter:

tag login john*barbara siglint

where:

Using SSL

Using SSL, issue:

openssl s_client -crlf -connect localhost:993

assuming that dovecot is listening on localhost and port 993, and then issue:

tag login john*barbara siglint

where: