gpt4 book ai didi

email - 通过带有 gnutls 和额外参数的 smtp 使用 emacs24 发送电子邮件

转载 作者:行者123 更新时间:2023-12-05 00:26:07 31 4
gpt4 key购买 nike

使用我的 posteo 电子邮件帐户从 emacs24 发送电子邮件时,我遇到了一个相当奇怪的问题,但使用 gmail 和 gmx 似乎一切正常。这是我当前 .emacs 配置的相关部分(感觉就像我排列了一百万次,结果总是相同):

(require 'smtpmail)
(require 'starttls)

(setq message-send-mail-function 'smtpmail-send-it)
(setq tls-program '("gnutls-cli --priority NORMAL:%COMPAT -p %p %h"))
(setq starttls-gnutls-program "gnutls-cli --priority NORMAL:%COMPAT")
(setq starttls-use-gnutls t)
(setq smtpmail-stream-type 'starttls)
(setq smtpmail-smtp-server "posteo.de")
(setq smtpmail-debug-info t)
(setq smtpmail-debug-verb t)
(setq smtpmail-smtp-service 587) ;;587(starttls) or 465(tls/ssl) or ?
(setq starttls-extra-arguments '("--priority NORMAL:%COMPAT"))
我的消息缓冲区中的输出是:
Sending via mail...
235 2.7.0 Authentication successful
gnutls.c: [0] (Emacs) fatal error: A TLS fatal alert has been received.
gnutls.c: [0] (Emacs) Received alert: Bad record MAC
smtpmail-send-command: Process smtpmail not running
并在我的 SMTP 到 posteo.de 缓冲区的跟踪中:
220 mail.posteo.de ESMTP Postfix
250-mail.posteo.de
250-PIPELINING
250-SIZE 76800000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
220 2.0.0 Ready to start TLS
250-mail.posteo.de
250-PIPELINING
250-SIZE 76800000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH PLAIN <omitted>
235 2.7.0 Authentication successful

Process smtpmail connection broken by remote peer
MAIL FROM:<c.bourjau@posteo.de> SIZE=281
QUIT
问题似乎是一个证书似乎有错误的“填充”(我不太确定这是什么) http://gnutls.org/manual/html_node/On-Record-Padding.html .在此服务器的命令行上产生类似错误的另一种方法是:
$ gnutls-cli --starttls -p 587 posteo.de
Resolving 'posteo.de'...
Connecting to '89.146.220.134:587'...

- Simple Client Mode:

220 mail.posteo.de ESMTP Postfix
*** Starting TLS handshake
*** Fatal error: An unexpected TLS packet was received.
*** Handshake has failed
如果添加 --priority NORMAL:%COMPAT,这个错误应该是固定的。我试图无济于事的 gnutls 论点(参见 .emacs)。
所以问题是:如何处理在 emacs 中抛出此类错误的证书?
非常感谢!

最佳答案

这篇文章给了我关键的提示:How to ask gnutls to use client certificate in emacs 24

emacs24 似乎忽略了 starttls-gnutls-program变量如果 gnutls-available-p不是 nil ,必须通过覆盖后一个函数来强制。

我的工作配置现在如下:

(require 'smtpmail)
(require 'starttls)

(setq message-send-mail-function 'smtpmail-send-it)
(defun gnutls-available-p ()
"Function redefined in order not to use built-in GnuTLS support"
nil)
(setq starttls-gnutls-program "gnutls-cli")
(setq starttls-use-gnutls t)
(setq smtpmail-stream-type 'starttls)
(setq smtpmail-smtp-server "posteo.de")
(setq smtpmail-smtp-service 587) ;;587(starttls) or 465(tls/ssl)
(setq starttls-extra-arguments '("--priority" "NORMAL:%COMPAT"))

关于email - 通过带有 gnutls 和额外参数的 smtp 使用 emacs24 发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22851076/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com