From: Andrej Kacian Date: Fri, 19 Feb 2016 16:13:08 +0000 (+0100) Subject: Enable SASL PLAIN auth mechanism for IMAP accounts. X-Git-Tag: 3.14.0~163 X-Git-Url: http://git.claws-mail.org/?p=claws.git;a=commitdiff_plain;h=7047fa7f29ac1837915c139bc4ca71b153886d3e Enable SASL PLAIN auth mechanism for IMAP accounts. --- diff --git a/src/imap.c b/src/imap.c index f40d00274..241ad0f35 100644 --- a/src/imap.c +++ b/src/imap.c @@ -902,6 +902,9 @@ static gint imap_auth(IMAPSession *session, const gchar *user, const gchar *pass case IMAP_AUTH_SCRAM_SHA1: ok = imap_cmd_login(session, user, pass, "SCRAM-SHA-1"); break; + case IMAP_AUTH_PLAIN: + ok = imap_cmd_login(session, user, pass, "PLAIN"); + break; case IMAP_AUTH_LOGIN: ok = imap_cmd_login(session, user, pass, "LOGIN"); break; @@ -914,12 +917,14 @@ static gint imap_auth(IMAPSession *session, const gchar *user, const gchar *pass "\t CRAM-MD5 %d\n" "\t DIGEST-MD5 %d\n" "\t SCRAM-SHA-1 %d\n" + "\t PLAIN %d\n" "\t LOGIN %d\n" "\t GSSAPI %d\n", imap_has_capability(session, "ANONYMOUS"), imap_has_capability(session, "CRAM-MD5"), imap_has_capability(session, "DIGEST-MD5"), imap_has_capability(session, "SCRAM-SHA-1"), + imap_has_capability(session, "PLAIN"), imap_has_capability(session, "LOGIN"), imap_has_capability(session, "GSSAPI")); if (imap_has_capability(session, "CRAM-MD5")) @@ -928,6 +933,8 @@ static gint imap_auth(IMAPSession *session, const gchar *user, const gchar *pass ok = imap_cmd_login(session, user, pass, "DIGEST-MD5"); if (ok == MAILIMAP_ERROR_LOGIN && imap_has_capability(session, "SCRAM-SHA-1")) ok = imap_cmd_login(session, user, pass, "SCRAM-SHA-1"); + if (ok == MAILIMAP_ERROR_LOGIN && imap_has_capability(session, "PLAIN")) + ok = imap_cmd_login(session, user, pass, "PLAIN"); if (ok == MAILIMAP_ERROR_LOGIN && imap_has_capability(session, "GSSAPI")) ok = imap_cmd_login(session, user, pass, "GSSAPI"); if (ok == MAILIMAP_ERROR_LOGIN) /* we always try LOGIN before giving up */ @@ -955,6 +962,12 @@ static gint imap_auth(IMAPSession *session, const gchar *user, const gchar *pass "SCRAM SASL plugin is installed."); } + if (type == IMAP_AUTH_PLAIN) { + ext_info = _("\n\nPLAIN logins only work if libetpan has been " + "compiled with SASL support and the " + "PLAIN SASL plugin is installed."); + } + if (time(NULL) - last_login_err > 10) { if (!prefs_common.no_recv_err_panel) { alertpanel_error_log(_("Connection to %s failed: " diff --git a/src/imap.h b/src/imap.h index a77686797..b7eae6cd7 100644 --- a/src/imap.h +++ b/src/imap.h @@ -29,7 +29,8 @@ typedef enum IMAP_AUTH_ANON = 1 << 2, IMAP_AUTH_GSSAPI = 1 << 3, IMAP_AUTH_DIGEST_MD5 = 1 << 4, - IMAP_AUTH_SCRAM_SHA1 = 1 << 5 + IMAP_AUTH_SCRAM_SHA1 = 1 << 5, + IMAP_AUTH_PLAIN = 1 << 6 } IMAPAuthType; FolderClass *imap_get_class (void); diff --git a/src/prefs_account.c b/src/prefs_account.c index 3fad6cc8c..e57dd216c 100644 --- a/src/prefs_account.c +++ b/src/prefs_account.c @@ -1584,6 +1584,7 @@ static void receive_create_widget_func(PrefsPage * _page, COMBOBOX_ADD (menu, "GSSAPI", IMAP_AUTH_GSSAPI); COMBOBOX_ADD (menu, "DIGEST-MD5", IMAP_AUTH_DIGEST_MD5); COMBOBOX_ADD (menu, "SCRAM-SHA-1", IMAP_AUTH_SCRAM_SHA1); + COMBOBOX_ADD (menu, "PLAIN", IMAP_AUTH_PLAIN); hbox1 = gtk_hbox_new (FALSE, 8); gtk_widget_show (hbox1);