2013-12-15 72 views
2

我正嘗試使用Emacs gnus連接到我的gmail帳戶。這是相關的配置代碼,大多采取from here在Windows上Emacs gnus中打開gmail nnimap服務器的問題

(setq tls-program '("openssl s_client -CAfile C:/Users/GGustafson/gmail.crt -connect %h:%p -no_ssl2 -ign_eof")) 

(setq gnus-select-method '(nnimap "gmail" 
    (nnimap-address "imap.gmail.com") 
    (nnimap-server-port 993) 
    (nnimap-stream ssl) 
    (nnimap-authinfo-file "~/.authinfo"))) 

(setq message-send-mail-function 'smtpmail-send-it 
smtpmail-starttls-credentials '(("smtp.gmail.com" 587 nil nil)) 
    smtpmail-auth-credentials '(("smtp.gmail.com" 587 "[email protected]" nil)) 
    smtpmail-default-smtp-server "smtp.gmail.com" 
    smtpmail-smtp-server "smtp.gmail.com" 
    smtpmail-smtp-service 587) 

當我重新啓動,啓動的Emacs,做M-x gnus,我得到這些*Messages*

Opening connection to imap.gmail.com via tls... 
gnutls.c: [1] (Emacs) GnuTLS library not found 
Opening TLS connection to `imap.gmail.com'... 
Opening TLS connection with `openssl s_client -CAfile C:/Users/GGustafson/gmail.crt -connect imap.gmail.com:993 -no_ssl2 -ign_eof'...done 
Opening TLS connection to `imap.gmail.com'...done 
nnimap (gmail) open error: 'depth=3 C = US, O = Equifax, OU = Equifax Secure Certificate Authority^M 
'. Continue? (y or n) y 

正是這裏發生了什麼?以前我遇到了一些verify error:num=20:unable to get local issuer certificate錯誤,但我通過following these instructions修復了這些錯誤,我在其中添加了-CAfile參數和相應證書的副本。

爲了證實這一點,我可以這樣做:

C:\Users\GGustafson>openssl s_client -CAfile C:/Users/GGustafson/gmail.crt -connect imap.gmail.com:993 -no_ssl2 -ign_eof 
CONNECTED(00000003) 
depth=3 C = US, O = Equifax, OU = Equifax Secure Certificate Authority verify return:1 
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA verify return:1 
depth=1 C = US, O = Google Inc, CN = Google Internet Authority G2 verify return:1 
depth=0 C = US, ST = California, L = Mountain View, O = Google Inc, CN = imap.gmail.com verify return:1 
--- 
Certificate chain 
0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=imap.gmail.com 
    i:/C=US/O=Google Inc/CN=Google Internet Authority G2 
1 s:/C=US/O=Google Inc/CN=Google Internet Authority G2 
    i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA 
2 s:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA 
    i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority 
--- 
Server certificate 
-----BEGIN CERTIFICATE----- 
****SNIP**** 
    Start Time: 1387083719 
    Timeout : 300 (sec) 
    Verify return code: 0 (ok) 
--- 
* OK Gimap ready for requests from 128.84.124.191 el7if9939594qeb.109 

我缺少的是要能讀我的Gmail與角馬?我在使用Cygwin openssl的Windows 7上。

+0

嘗試在's_client'選項中添加'-quiet'。 – tripleee

回答

1

對我而言,有效的方法是使用a gnutls port for windows代替openssl,並刪除任何自定義的tls-program。因爲gnutls-cli是第一個使用默認值tls-program進行嘗試的程序,Emacs將自動使用gnutls中的二進制文件。

我建議在嘗試openssl之前使用gnutls,它可能首先出於某種原因的默認值。

+0

你能告訴我更多關於你如何刪除'tls-program'的任何定製?我從來沒有讓Gnus在Windows 7上工作。 – ReneFroger

+0

@ ReneFroger不要在emacs配置中的任何地方設置'tls-program'。換句話說,將其設置爲默認值。 –

3

有一兩件事,我需要在Windows 7上做連接從角馬到Gmail有:

;; So gnutls can find trustfiles on windows 
(eval-after-load "gnutls" 
'(progn 
    (setq gnutls-trustfiles '("c:/cygwin/usr/ssl/certs/ca-bundle.trust.crt" "c:/cygwin/usr/ssl/certs/ca-bundle.crt")))) 

除此之外,安裝的其餘部分類似於:

(setq gnus-secondary-select-methods 
     '(
    (nnimap "gmail" 
      (nnimap-address "imap.gmail.com") 
      (nnimap-server-port 993) 
      (nnimap-stream ssl) 
      (nnir-search-engine imap) 
      (nnimap-authinfo-file "~/.authinfo") 
      ) 
    (nntp "news.gmane.org") 
    (nnfolder "archive" 
     (nnfolder-directory "~/Documents/Text/Gnus/Mail/archive") 
     (nnfolder-active-file "~/Documents/Text/Gnus/Mail/archive/active") 
     (nnfolder-get-new-mail nil) 
     (nnfolder-inhibit-expiry t)))) 

能夠閱讀郵件罰款來自gmail。

+0

我甚至沒有使用gnutls原來;一旦我嘗試,而不是openssl事情沒有進一步的定製工作正常。然而,關於'gnutls-trustfiles'的建議似乎是有價值和相關的,所以+1。 :) –

+0

除了安裝cygwin之外,有什麼方法可以獲得信任文件嗎? – sk8ingdom