From 4704a2e650646ac28300f051cea9cab3e46fb2f4 Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Tue, 25 Dec 2012 12:40:14 +0100 Subject: [PATCH] Allow specifying the login method for nnimap * nnimap.el (nnimap-authenticator): Expand to allow specifying the login methods. (nnimap-login): Respect the `nnimap-authenticator' variable. --- lisp/ChangeLog | 4 ++++ lisp/nnimap.el | 19 ++++++++++++++----- texi/ChangeLog | 5 +++++ texi/gnus.texi | 6 +++++- 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 69558f935..b62b1adff 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,9 @@ 2012-12-25 Lars Ingebrigtsen + * nnimap.el (nnimap-authenticator): Expand to allow specifying the + login methods. + (nnimap-login): Respect the `nnimap-authenticator' variable. + * gnus-sum.el (gnus-summary-push-marks-to-backend): Push the complete mark state when moving articles. Otherwise unticked articles will get their ticks back after moving. diff --git a/lisp/nnimap.el b/lisp/nnimap.el index 3277a7f56..968d1eea3 100644 --- a/lisp/nnimap.el +++ b/lisp/nnimap.el @@ -100,7 +100,8 @@ Uses the same syntax as `nnmail-split-methods'.") (defvoo nnimap-authenticator nil "How nnimap authenticate itself to the server. -Possible choices are nil (use default methods) or `anonymous'.") +Possible choices are nil (use default methods), `anonymous', +`login', `plain' and `cram-md5'.") (defvoo nnimap-expunge t "If non-nil, expunge articles after deleting them. @@ -498,9 +499,13 @@ textual parts.") ;; round trips than CRAM-MD5, and it's less likely to be buggy), ;; and we're using an encrypted connection. ((and (not (nnimap-capability "LOGINDISABLED")) - (eq (nnimap-stream-type nnimap-object) 'tls)) + (eq (nnimap-stream-type nnimap-object) 'tls) + (or (null nnimap-authenticator) + (eq nnimap-authenticator 'login))) (nnimap-command "LOGIN %S %S" user password)) - ((nnimap-capability "AUTH=CRAM-MD5") + ((and (nnimap-capability "AUTH=CRAM-MD5") + (or (null nnimap-authenticator) + (eq nnimap-authenticator 'cram-md5))) (erase-buffer) (let ((sequence (nnimap-send-command "AUTHENTICATE CRAM-MD5")) (challenge (nnimap-wait-for-line "^\\+\\(.*\\)\n"))) @@ -513,9 +518,13 @@ textual parts.") (base64-decode-string challenge)))) "\r\n")) (nnimap-wait-for-response sequence))) - ((not (nnimap-capability "LOGINDISABLED")) + ((and (not (nnimap-capability "LOGINDISABLED")) + (or (null nnimap-authenticator) + (eq nnimap-authenticator 'login))) (nnimap-command "LOGIN %S %S" user password)) - ((nnimap-capability "AUTH=PLAIN") + ((and (nnimap-capability "AUTH=PLAIN") + (or (null nnimap-authenticator) + (eq nnimap-authenticator 'plain))) (nnimap-command "AUTHENTICATE PLAIN %s" (base64-encode-string diff --git a/texi/ChangeLog b/texi/ChangeLog index cd3182b95..8a184e8e0 100644 --- a/texi/ChangeLog +++ b/texi/ChangeLog @@ -1,3 +1,8 @@ +2012-12-25 Lars Ingebrigtsen + + * gnus.texi (Customizing the IMAP Connection): Mention the other + authenticators. + 2012-12-24 Lars Ingebrigtsen * gnus.texi (Browse Foreign Server): Document diff --git a/texi/gnus.texi b/texi/gnus.texi index 8fb590435..edbae06b6 100644 --- a/texi/gnus.texi +++ b/texi/gnus.texi @@ -14208,7 +14208,11 @@ what you need. @item nnimap-authenticator Some @acronym{IMAP} servers allow anonymous logins. In that case, -this should be set to @code{anonymous}. +this should be set to @code{anonymous}. If this variable isn't set, +the normal login methods will be used. If you wish to specify a +specific login method to be used, you can set this variable to either +@code{login} (the traditional @acronym{IMAP} login method), +@code{plain} or @code{cram-md5}. @item nnimap-expunge If non-@code{nil}, expunge articles after deleting them. This is always done -- 2.25.1