On 2016-04-06 16:19, Benning, Markus wrote:
In sasl.h:

#define SASL_FAIL       -1   /* generic failure */

Could this one be added to the AUTH_TEMP case?

I took a look at the cyrus-sasl code in lib/checkpw.c and most error cases there
return SASL_FAIL.

Wrong credentails return SASL_BADAUTH, SASL_NOAUTHZ
or something like SASL_PWLOCK, etc.

A list of codes is in <sasl/sasl.h> but i could not find much documentation about its usage.

As server side error should result in an temporary smtp error code
i suggest to map at least SASL_FAIL to the XSASL_AUTH_TEMP status.

diff --git a/postfix/src/xsasl/xsasl_cyrus_server.c b/postfix/src/xsasl/xsasl_cyrus_server.c
index 95c470d..91f93ab 100644
--- a/postfix/src/xsasl/xsasl_cyrus_server.c
+++ b/postfix/src/xsasl/xsasl_cyrus_server.c
@@ -480,6 +480,8 @@ static int xsasl_cyrus_server_auth_response(int sasl_status,
            sasl_status = SASL_BADAUTH;
        vstring_strcpy(reply, xsasl_cyrus_strerror(sasl_status));
        switch (sasl_status) {
+  case SASL_FAIL:
+  case SASL_NOMEM:
        case SASL_TRYAGAIN:
        case SASL_UNAVAIL:
            return XSASL_AUTH_TEMP;



--
https://markusbenning.de/

Reply via email to