The problem is now reproducible on my second machine.

>  - What difference between my test machines could potentially cause the
> difference in behavior?

One difference was related to the dovecot-related packages. I could only
reproduce the problem with the following packages installed:
  dovecot-core
  dovecot-imapd
  dovecot-mysql
  dovecot-pgsql
  dovecot-sqlite

Deinstalling any one of the database-related packages made the problem
disappear.

>  - Why does the inclusion of pam_warn.so make a difference?

So apparently this is not only about the presence of pam_warn.so.
Besides /etc/pam.d/dovecot, the exact content of the /etc/pam.d/common-*
files is also relevant. Attaching the files of the failing setup.

This is scary. Uncommenting the pam_gnome_keyring line makes the problem
disappear. So does commenting the smbpass lines...

Hope this helps!
#
# /etc/pam.d/common-account - authorization settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authorization modules that define
# the central access policy for use on the system.  The default is to
# only deny service to users whose accounts are expired in /etc/shadow.
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.
#

# here are the per-package modules (the "Primary" block)
account [success=1 new_authtok_reqd=done default=ignore]        pam_unix.so 
# here's the fallback if no module succeeds
account requisite                       pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
account required                        pam_permit.so
# and here are more per-package modules (the "Additional" block)
# end of pam-auth-update config
#
# /etc/pam.d/common-auth - authentication settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authentication modules that define
# the central authentication scheme for use on the system
# (e.g., /etc/shadow, LDAP, Kerberos, etc.).  The default is to use the
# traditional Unix authentication mechanisms.
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.

# here are the per-package modules (the "Primary" block)
auth    [success=1 default=ignore]      pam_unix.so nullok_secure
# here's the fallback if no module succeeds
auth    requisite                       pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth    required                        pam_permit.so
# and here are more per-package modules (the "Additional" block)
auth    optional                        pam_smbpass.so migrate
auth    optional                        pam_cap.so 
# end of pam-auth-update config
#
# /etc/pam.d/common-password - password-related modules common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of modules that define the services to be
# used to change user passwords.  The default is pam_unix.

# Explanation of pam_unix options:
#
# The "sha512" option enables salted SHA512 passwords.  Without this option,
# the default is Unix crypt.  Prior releases used the option "md5".
#
# The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB' option in
# login.defs.
#
# See the pam_unix manpage for other options.

# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.

# here are the per-package modules (the "Primary" block)
password        [success=1 default=ignore]      pam_unix.so obscure sha512
# here's the fallback if no module succeeds
password        requisite                       pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
password        required                        pam_permit.so
# and here are more per-package modules (the "Additional" block)
password        optional                        pam_smbpass.so nullok 
use_authtok use_first_pass
#password       optional        pam_gnome_keyring.so 
# end of pam-auth-update config
#
# /etc/pam.d/common-session - session-related modules common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of modules that define tasks to be performed
# at the start and end of sessions of *any* kind (both interactive and
# non-interactive).
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.

# here are the per-package modules (the "Primary" block)
session [default=1]                     pam_permit.so
# here's the fallback if no module succeeds
session requisite                       pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
session required                        pam_permit.so
# and here are more per-package modules (the "Additional" block)
session required        pam_unix.so 
session optional        pam_systemd.so 
session optional                        pam_ck_connector.so nox11
# end of pam-auth-update config
#%PAM-1.0

auth     required pam_unix.so
account  required pam_unix.so
session  required pam_unix.so
password required pam_unix.so

# 2.2.13: /etc/dovecot/dovecot.conf
# OS: Linux 3.16.0-4-amd64 x86_64 Debian 8.2 
#mail_location = maildir:~/Maildir:INBOX=/var/mail/%u
mail_location = maildir:~/Maildir
auth_debug = yes
#namespace inbox {
#  inbox = yes
#  location = 
#  mailbox Drafts {
#    special_use = \Drafts
#  }
#  mailbox Junk {
#    special_use = \Junk
#  }
#  mailbox Sent {
#    special_use = \Sent
#  }
#  mailbox "Sent Messages" {
#    special_use = \Sent
#  }
#  mailbox Trash {
#    special_use = \Trash
#  }
#  prefix = 
#}
passdb {
  driver = pam
}
service auth {
  user = root
}
protocols = imap
ssl = no
userdb {
  driver = passwd
}

Reply via email to