For those that all of the above doesn't solve the problem... check your password!
If it has a '#' sign all that is after the # gets ignored in "/etc/pam.d
/smtp" and therefore you will have these nice errors in /var/log/auth.log :
pam_mysql - required option "db" is not set
DEBUG: auth_pam: pam_authenticate failed: Error in service module
Source:
here.