Wanderlust - OSX - Emacs - SMTP认证失败

时间:2013-05-26 19:41:17

标签: macos emacs smtp

我可以检索电子邮件并浏览各种文件夹。但是,由于证书错误,我无法发送任何电子邮件(如下所述)。互联网上的一些配置提供了cert文件的路径,但OSX使用了一个钥匙串。我没有在Google上找到任何描述如何为OSX(Mountain Lion)设置此内容的内容。任何帮助将不胜感激。

[我是not使用gmail。]

互联网上的其他用户引用了与此类似的配置:(setq ssl-program-name "gnutls-cli" ssl-program-arguments '("--port" service "--insecure" "--x509cafile" "/etc/ssl/certs/ca-certificates.crt" host))但是,由于钥匙串的使用,OSX上的证书没有此类文件位置。我认为这是问题,但我不完全确定。

我遇到与gnu电子邮件相同的问题,文档说明:

The SMTP server may also request that you verify your identity by sending a certificate and the associated encryption key to the server. If you need to do this, you can use an ~/.authinfo entry like this:

machine mail.example.org port 25 key "~/.my_smtp_tls.key" cert "~/.my_smtp_tls.cert"

这是我目前的配置:

(setq ssl-program-name "/absolute/path/to/gnutls-cli"
      ssl-program-arguments '("--insecure" "-p" service host)
      ssl-certificate-verification-policy 1)

(autoload 'wl "wl" "Wanderlust" t)
(autoload 'wl-other-frame "wl" "Wanderlust on new frame." t)
(autoload 'wl-draft "wl-draft" "Write draft with Wanderlust." t)

;; IMAP
(setq elmo-imap4-default-server "mail.mydomain.com")
(setq elmo-imap4-default-user "myusername") 
(setq elmo-imap4-default-authenticate-type 'login) 
(setq elmo-imap4-default-port '993)
(setq elmo-imap4-default-stream-type 'ssl)


(setq elmo-imap4-use-modified-utf7 t) 

;; SMTP
(setq wl-smtp-connection-type 'starttls)
(setq wl-smtp-posting-port 587)
(setq wl-smtp-authenticate-type "login")
(setq wl-smtp-posting-user "myusername")
(setq wl-smtp-posting-server "mail.mydomain.com")
(setq wl-local-domain "mydomain.com")

(setq wl-default-folder "%INBOX")
(setq wl-default-spec "%")
;; (setq wl-draft-folder "%Drafts")
(setq wl-trash-folder "%Trash")

(setq wl-folder-check-async t) 

(setq elmo-imap4-use-modified-utf7 t)

(autoload 'wl-user-agent-compose "wl-draft" nil t)
(if (boundp 'mail-user-agent)
    (setq mail-user-agent 'wl-user-agent))
(if (fboundp 'define-mail-user-agent)
    (define-mail-user-agent
      'wl-user-agent
      'wl-user-agent-compose
      'wl-draft-send
      'wl-draft-kill
      'mail-send-hook))

这是发送电子邮件时的错误消息:

*** Starting TLS handshake
- Certificate type: X.509
- Got a certificate list of 2 certificates.
- Certificate[0] info:
 - subject `OU=Domain Control Validated,CN=*.liquidweb.com', issuer `C=BE,O=GlobalSign nv-sa,CN=GlobalSign Domain Validation CA - G2', RSA key 2048 bits, signed using RSA-SHA1, activated `2013-02-22 16:03:14 UTC', expires `2018-02-22 16:03:14 UTC', SHA-1 fingerprint `f9926583e10585ca301bec7ec8d36d7e4573750d'
    Public Key Id:
        3ff7ead3d8a2be6cf1e48d072a5be80afe5183de
    Public key's random art:
        +--[ RSA 2048]----+
        |                 |
        |                 |
        |                 |
        |       .         |
        |      . S        |
        |     . o +. o    |
        |    . o E +*.B   |
        |   . . o.oooB.=  |
        |    ..o.o==+o=.  |
        +-----------------+

- Certificate[1] info:
 - subject `C=BE,O=GlobalSign nv-sa,CN=GlobalSign Domain Validation CA - G2', issuer `C=BE,O=GlobalSign nv-sa,OU=Root CA,CN=GlobalSign Root CA', RSA key 2048 bits, signed using RSA-SHA1, activated `2011-04-13 10:00:00 UTC', expires `2022-04-13 10:00:00 UTC', SHA-1 fingerprint `0481c8ca31be0fa940c7e0ccd572374eadf52b73'
- Status: The certificate is NOT trusted. The certificate issuer is unknown. The name in the certificate does not match the expected. 
*** Verifying server certificate failed...
*** Fatal error: Error in the certificate.
*** Handshake has failed

byte-code: Wrong type argument: arrayp, nil

3 个答案:

答案 0 :(得分:2)

;; IMAP
(setq elmo-imap4-default-server "mail.mydomain.com")
(setq elmo-imap4-default-user "my-user-name") 
(setq elmo-imap4-default-authenticate-type 'login) 
(setq elmo-imap4-default-port '993)
(setq elmo-imap4-default-stream-type 'ssl)
(setq elmo-imap4-use-modified-utf7 t) 
(setq elmo-network-session-idle-timeout 30)

;; SMTP
(setq ssl-program-name "openssl s_client -ssl2 -connect %s:%p")
(setq smtpmail-auth-credentials '(("mail.mydomain.com" 587 "my-user-name" "my-password")))
(setq smtp-server "mail.mydomain.com")

答案 1 :(得分:1)

嗯,我并没有真正解决问题,但只是在使用ssl跟踪使用最终正确的端口支持谷歌邮件的workdoud。但是,当设置另一个SMTP服务器INSISTS在STARTTLS或TLS上的电子邮件帐户时,该问题再次让我感到困惑。因此,您报告的问题仍然存在。我花了半天时间寻找解决方案,却找不到解决方案。大多数内容是关于使用gnutls-cli --tofu选项而不是--insecure的小谈话。

http://lists.gnu.org/archive/html/info-gnus-english/2012-04/msg00001.html

然而,这导致我深入到emacs中,我无法找到改变gnutls-cli被调用的选项的方法。

问题的最佳解决方案很可能是找出OSX上丢失的密钥和crts的位置或如何创建它们然后将它们放在正确的位置。有任何帮助,提示,评论吗?

答案 2 :(得分:1)

使用--tofu选项,您走在正确的轨道上。完成以下步骤here后,您需要执行的操作是在.emacs

中添加以下内容
(setq starttls-extra-arguments '("--tofu"))

(您也可以通过emacs的自定义界面进行设置。)这将允许您将任何参数传递给您希望的gnutls-cli。