diff -U 5 dovecot-2.2.33.1/pigeonhole/src/managesieve-login/client-authenticate.c dovecot-2.2.33.1~mwe/pigeonhole/src/managesieve-login/client-authenticate.c --- dovecot-2.2.33.1/pigeonhole/src/managesieve-login/client-authenticate.c 2017-11-01 15:06:28.000000000 +0100 +++ dovecot-2.2.33.1~mwe/pigeonhole/src/managesieve-login/client-authenticate.c 2017-11-01 14:55:43.869493098 +0100 @@ -306,12 +306,20 @@ return 1; } if ( ret == 0 ) return 0; - init_response = ( client->auth_response == NULL ? NULL : - t_strdup(str_c(client->auth_response)) ); + + if ( client->auth_response == NULL ) { + init_response = NULL; + } else if (( strncasecmp(client->auth_mech_name, "EXTERNAL", 8) == 0 ) && ( str_len( client->auth_response ) == 0 )) { + /* MWE: hack/workaround to pass empty response */ + init_response = t_strdup("="); + } else { + init_response = t_strdup(str_c(client->auth_response)); + } + msieve_client->auth_mech_name_parsed = FALSE; if ( (ret=client_auth_begin (client, t_strdup(client->auth_mech_name), init_response)) < 0 ) return ret;