Authenticating Users

Introduction

The Cyrus IMAP Server uses the Cyrus SASL library to authenticate users. Please refer to the Cyrus SASL documentation for specific details on SASL. This section focuses specifically on the server processes distributed with Cyrus IMAPd.

Authentication Mechanisms

At this writing, the underlying Cyrus SASL library supports a variety of SASL mechanisms, including PLAIN, SCRAM-SHA-1, SCRAM-SHA-256 and GSSAPI. The Cyrus IMAP, POP, and LMTP servers also support STARTTLS using client-side certificates and the EXTERNAL authentication method.

GSSAPI is specific to Kerberos version 5. Additionally, STARTTLS client side certificates have not been extensively tested.

When STARTTLS is enabled, the PLAIN SASL mechanism (if installed) also becomes available. This is because one should not pass a clear text password over the wire unless the connection is encrypted.

The IMAP protocol also supports a way for users to authenticate without using SASL (the specification). This is via the 'LOGIN' command (not to be confused by the LOGIN SASL mechanism). The IMAP LOGIN command (as with PLAIN) will send your password in clear-text to the server. In this case, the password is still verified through the Cyrus SASL library, though no SASL mechanism actually performs a negotiation.

The POP server is capable of APOP authentication, but this requires that Cyrus SASL be compiled --with-checkapop, and also that you are using an auxprop backend for your password store (e.g. the sasldb auxprop plugin).

Authentication Recommendations

Configuring Authentication

Cyrus SASL has a number of options that can be configured by the application. To configure these via imapd.conf, simply prefix the appropriate option name with sasl_ (e.g. pwcheck_method becomes sasl_pwcheck_method).

/etc/sasldb2

The easiest method for authenticating users is to use the libsasl authentication database and create users using the "saslpasswd2" utility. Set "sasl_pwcheck_method: auxprop", and be sure that the SASL sasldb auxprop module is installed (it is, by default). Make sure Cyrus can read "/etc/sasldb2":

   chown cyrus /etc/sasldb2*

Shadow Passwords

If you want to authenticate users from "/etc/shadow", things are considerably more complicated, since the cyrus user cannot read the shadow password file. Additionally, this will not allow you to use shared secret mechanisms. To do this, it is necessary to configure libsasl with saslauthd support, and set "sasl_pwcheck_method: saslauthd". The SASL library will then make calls to an external utility running as root to authenticate users.

Kerberos

Configuring Kerberos v5

Cyrus IMAP supports Kerberos v5 if the SASL library was compiled with GSSAPI support.

You'll have to create a Kerberos v5 identity for the server. Kerberos v5 keys are generally stored in "/etc/krb5.keytab".

  1. Add the "imap/hostname" key using "kadmin".
  2. Let the cyrus user read "/etc/krb5.keytab": user:
       chown cyrus /etc/krb5.keytab
    
  3. Test using imtest -m GSSAPI. imtest will attempt to authorize as the current Unix user regardless of the current ticket's held. Override this with the -u option.

last modified: $Date: 2010/01/06 17:01:29 $