From: yamaoka Date: Thu, 24 Nov 2005 00:57:34 +0000 (+0000) Subject: Synch to No Gnus 200511232302. X-Git-Tag: t-gnus-6_17_4-quimby-~215 X-Git-Url: http://git.chise.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=26ff9b24c54d69baed40e7ea36c67d758633b9dd;p=elisp%2Fgnus.git- Synch to No Gnus 200511232302. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 7d01d64..898e73a 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,17 @@ +2005-11-23 Dave Love + + Add pop3s, pop3/starttls. + + * pop3.el (pop3-authentication-scheme): Clarify doc. + (open-tls-stream, starttls-open-stream): Autoload. + (pop3-stream-type): New. + (pop3-open-server): Use it. + + * mail-source.el (mail-sources): Fix some :types. Add stream type + for POP. + (mail-source-keyword-map): Add :stream for POP. + (mail-source-fetch-pop): Use pop3-stream-type. + 2005-11-22 Katsumi Yamaoka * nnmail.el (nnmail-fancy-expiry-target): Use current-time instead diff --git a/lisp/mail-source.el b/lisp/mail-source.el index 5e0c514..7ccc04d 100644 --- a/lisp/mail-source.el +++ b/lisp/mail-source.el @@ -107,7 +107,7 @@ See Info node `(gnus)Mail Source Specifiers'." (const :format "" :value :port) (choice :tag "Port" :value "pop3" - (number :format "%v") + (integer :format "%v") (string :format "%v"))) (group :inline t (const :format "" :value :user) @@ -123,13 +123,15 @@ See Info node `(gnus)Mail Source Specifiers'." (choice :tag "Prescript" :value nil (string :format "%v") - (function :format "%v"))) + (function :format "%v") + (const :tag "None" nil))) (group :inline t (const :format "" :value :postscript) (choice :tag "Postscript" :value nil (string :format "%v") - (function :format "%v"))) + (function :format "%v") + (const :tag "None" nil))) (group :inline t (const :format "" :value :function) (function :tag "Function")) @@ -142,7 +144,14 @@ See Info node `(gnus)Mail Source Specifiers'." (const apop))) (group :inline t (const :format "" :value :plugged) - (boolean :tag "Plugged")))) + (boolean :tag "Plugged")) + (group :inline t + (const :format "" :value :stream) + (choice :tag "Stream" + :value nil + (const :tag "Clear" nil) + (const starttls) + (const :tag "SSL/TLS" ssl))))) (cons :tag "Maildir (qmail, postfix...)" (const :format "" maildir) (checklist :tag "Options" :greedy t @@ -162,7 +171,7 @@ See Info node `(gnus)Mail Source Specifiers'." (const :format "" :value :port) (choice :tag "Port" :value 143 - number string)) + integer string)) (group :inline t (const :format "" :value :user) (string :tag "User")) @@ -348,6 +357,7 @@ Common keywords should be listed here.") (:password) (:connection) (:authentication password) + (:stream nil) (:leave)) (maildir (:path (or (getenv "MAILDIR") "~/Maildir/")) @@ -715,6 +725,7 @@ If CONFIRM is non-nil, ask for confirmation before removing a file." (defun mail-source-fetch-pop (source callback) "Fetcher for single-file sources." (mail-source-bind (pop source) + ;; fixme: deal with stream type in format specs (mail-source-run-script prescript (format-spec-make ?p password ?t mail-source-crash-box @@ -817,7 +828,8 @@ If CONFIRM is non-nil, ask for confirmation before removing a file." (pop3-mailhost server) (pop3-port port) (pop3-authentication-scheme - (if (eq authentication 'apop) 'apop 'pass))) + (if (eq authentication 'apop) 'apop 'pass)) + (pop3-stream-type stream)) (if (or debug-on-quit debug-on-error) (save-excursion (pop3-get-message-count)) (condition-case err diff --git a/lisp/pop3.el b/lisp/pop3.el index ca284d2..ad79d6b 100644 --- a/lisp/pop3.el +++ b/lisp/pop3.el @@ -128,11 +128,11 @@ (defcustom pop3-authentication-scheme 'pass "*POP3 authentication scheme. -Defaults to 'pass, for the standard USER/PASS authentication. Other valid -values are 'apop." - :version "22.1" ;; Oort Gnus - :type '(choice (const :tag "USER/PASS" pass) +Defaults to `pass', for the standard USER/PASS authentication. The other +valid value is 'apop'." + :type '(choice (const :tag "Normal user/password" pass) (const :tag "APOP" apop)) + :version "22.1" ;; Oort Gnus :group 'pop3) (defcustom pop3-leave-mail-on-server nil @@ -306,6 +306,19 @@ Shorter values mean quicker response, but are more CPU intensive.") (pop3-quit process) message-count)) +(defcustom pop3-stream-type nil + "*Transport security type for POP3 connexions. +This may be either nil (plain connexion), `ssl' (use an +SSL/TSL-secured stream) or `starttls' (use the starttls mechanism +to turn on TLS security after opening the stream). However, if +this is nil, `ssl' is assumed for connexions to port +995 (pop3s)." + :version "23.1" ; fixme? + :group 'pop3 + :type '(choice (const :tag "Plain" nil) + (const :tag "SSL/TLS" ssl) + (const starttls))) + (defun pop3-open-server (mailhost port) "Open TCP connection to MAILHOST on PORT. Returns the process associated with the connection. @@ -319,9 +332,12 @@ Argument PORT specifies connecting port." (setq process (cond - ((eq pop3-connection-type 'ssl) + ((or (eq pop3-connection-type 'ssl) + (eq pop3-stream-type 'ssl) + (and (not pop3-stream-type) (= port 995))) ; pop3s (pop3-open-ssl-stream "POP" (current-buffer) mailhost port)) - ((eq pop3-connection-type 'tls) + ((or (memq pop3-connection-type '(tls starttls)) + (memq pop3-stream-type '(tls starttls))) (pop3-open-tls-stream "POP" (current-buffer) mailhost port)) (t (let ((coding-system-for-read 'binary) @@ -346,6 +362,7 @@ Argument PORT specifies connecting port." "-connect" ,(format "%s:%d" host service))) (process (open-ssl-stream name buffer host service))) (when process + ;; There's a load of info printed that needs deleting. (with-current-buffer buffer (goto-char (point-min)) (while (and (memq (process-status process) '(open run)) @@ -481,6 +498,8 @@ If NOW, use that time instead." ;; Date: 08 Jul 1996 23:22:24 -0400 ;; should be ;; Tue Jul 9 09:04:21 1996 + + ;; Fixme: This should use timezone on the date field contents. (setq date (cond ((not date) "Tue Jan 1 00:00:0 1900") @@ -827,6 +846,13 @@ to `mail-sources' while fetching mails with Gnus." ;; +OK [negotiation is ready] ;; -ERR [security layer is already active] +;; STLS (RFC 2595) +;; Arguments: none +;; Restrictions: Only permitted in AUTHORIZATION state. +;; Possible responses: +;; +OK +;; -ERR + ;;; TRANSACTION STATE ;; STAT