2

我能够检索电子邮件并浏览各种文件夹。但是,由于证书错误(如下所述),我无法发送任何电子邮件。互联网上的一些配置提供了证书文件的路径,但 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
4

3 回答 3

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")
于 2013-07-02T20:44:17.097 回答
1

您使用 --tofu 选项走在正确的轨道上。按照此处的步骤操作后,您需要做的就是在 .emacs 中添加以下内容

(setq starttls-extra-arguments '("--tofu"))

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

于 2013-12-31T18:50:40.337 回答
1

好吧,我并没有真正解决这个问题,但只是在使用 ssl 和谷歌邮件的最终正确端口支持的情况下进行了工作。但是,在设置另一个电子邮件帐户时,该问题再次困扰着我,该帐户的 SMTP 服务器坚持使用 STARTTLS 或 TLS。因此,与您报告的相同问题仍然存在。我花了半天时间寻找解决方案,但找不到。最有趣的是关于使用 gnutls-cli --tofu 选项而不是 --insecure 的小对话。

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

然而,这导致我深入研究 emacs,但我找不到更改调用 gnutls-cli 的选项的方法。

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

于 2013-12-12T22:15:50.600 回答