Заморожено при открытии соединения STARTTLS к smtp.qq.com:587'...done - PullRequest
2 голосов
/ 23 января 2020

Я сослался на ответ на вопрос send-emails-with-emacs24-via-smtp-with-gnutls-and-extra-arguments

и установил мою конфигурацию как

(setq user-mail-address "abst.proc.do@qq.com")
(setq user-full-name "abst.proc.do")

(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 "smtp.qq.com")
(setq smtpmail-smtp-service 587) ;;587(starttls) or 465(tls/ssl)
(setq starttls-extra-arguments '("--priority" "NORMAL:%COMPAT"))

Затем попробуйте отправить тестовое письмо как

From: abst.proc.do@qq.com (abst.proc.do)
To: abst.proc.do@qq.com
Subject: Testing
Date: Thu, 23 Jan 2020 07:11:44 +0800
Message-ID: <877e1j2ij3.fsf@qq.com>
--text follows this line--
Testing

Он завис в минибуфере с подсказкой

Opening STARTTLS connection to ‘smtp.qq.com:587’...done

и получил сообщения

 Saving file /home/me/*message*-20200123-071130...

письмо не было отправлено.

Служба благодарности stmp была проверена и токен помещен в .authinfo

enter image description here

В чем проблема с моей конфигурацией?

Машина: Ubuntu 19.10 Emacs 26.3

Трассировка ошибок:

220 newxmesmtplogicsvrszc2.qq.com XMail Esmtp QQ Mail Server.
250-newxmesmtplogicsvrszc2.qq.com
250-PIPELINING
250-SIZE 73400320
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN
250-MAILCOMPRESS
250 8BITMIME

Process smtpmail deleted
220 newxmesmtplogicsvrsza3.qq.com XMail Esmtp QQ Mail Server.
250-newxmesmtplogicsvrsza3.qq.com
250-PIPELINING
250-SIZE 73400320
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN
250-MAILCOMPRESS
250 8BITMIME
220 Ready to start TLS from 106.39.174.180 to newxmesmtplogicsvrsza3.qq.com.
*** Starting TLS handshake
- Certificate type: X.509
- Got a certificate list of 3 certificates.
- Certificate[0] info:
 - subject `CN=*.mail.qq.com,O=Tencent Technology (Shenzhen) Company Limited,L=shenzhen,ST=guangdong,C=CN', issuer `CN=GlobalSign Organization Validation CA - SHA256 - G2,O=GlobalSign nv-sa,C=BE', serial 0x41110235e23a37f3ead2dc5e, RSA key 2048 bits, signed using RSA-SHA256, activated `2019-11-11 10:32:16 UTC', expires `2020-06-03 04:00:33 UTC', pin-sha256="3gHtBaJCDCS2wo6ho7kKEE6rUA1YXM3A6R1XiFejm48="
    Public Key ID:
        sha1:5df67c6c87174f49828307072b0922d6da77cab0
        sha256:de01ed05a2420c24b6c28ea1a3b90a104eab500d585ccdc0e91d578857a39b8f
    Public Key PIN:
        pin-sha256:3gHtBaJCDCS2wo6ho7kKEE6rUA1YXM3A6R1XiFejm48=

- Certificate[1] info:
 - subject `CN=GlobalSign Organization Validation CA - SHA256 - G2,O=GlobalSign nv-sa,C=BE', issuer `CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE', serial 0x040000000001444ef04247, RSA key 2048 bits, signed using RSA-SHA256, activated `2014-02-20 10:00:00 UTC', expires `2024-02-20 10:00:00 UTC', pin-sha256="IQBnNBEiFuhj+8x6X8XLgh01V9Ic5/V3IRQLNFFc7v4="
- Certificate[2] info:
 - subject `CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE', issuer `CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE', serial 0x040000000001154b5ac394, RSA key 2048 bits, signed using RSA-SHA1 (broken!), activated `1998-09-01 12:00:00 UTC', expires `2028-01-28 12:00:00 UTC', pin-sha256="K87oWBWM9UZfyddvDfoxL+8lpNyoUB2ptGtn0fv6G2Q="
- Status: The certificate is trusted. 
- Description: (TLS1.2)-(ECDHE-SECP256R1)-(RSA-SHA512)-(AES-128-GCM)
- Session ID: CB:34:DB:07:B8:3D:32:D8:13:BD:9B:4E:6B:5D:0A:72:1A:85:83:20:68:BB:70:8A:5A:43:15:51:3E:7D:19:BD
- Options: safe renegotiation,

1 Ответ

1 голос
/ 19 февраля 2020

У меня был ряд текущих проблем с starttls, то есть open-tls-stream, когда он использует openssl в Emacs - его крайне сложно отладить, и обновление либо emacs, либо openssl может заставить соединения зависать, как вы заметили - и это обычно происходит достаточно далеко друг от друга, чтобы позволить человеку полностью забыть, что это произошло раньше, и как отлаживать и исправлять это снова.

Я изменил определение tls-end-of-info чтобы решить эту проблему:

;; xxx gnutls-cli is broken, at least when used with emacs-23.3
;; (xxx "-no_ssl2" might still be required for older openssl?)
;; n.b. the "-crlf" is now necessary for Gmail, but not Cyrus
;;
(setq tls-program '("openssl s_client -connect %h:%p -ign_eof"))

(setq starttls-use-gnutls nil)  ; XXX requires security/starttls be installed!!!
;; 
;; XXX as of OpenSSL 1.1.1a  20 Nov 2018 there's a new ending to the noise
;; c_client prints before real data starts.
;; 
;; (XXX debugging this was HARD!  No clues -- emacs just "hung" without responding)
;;
(setq tls-end-of-info
      "\\(^\s*Verify return code: .+
---
\\|^    Extended master secret: .+
---
\\|^- Simple Client Mode:
\\(
\\|^\\*\\*\\* Starting TLS handshake
\\)*\\)")

Чтобы помочь с отладкой, я использую слегка взломанную версию open-tls-stream. Вы можете найти все это в моем ~/.emacs.el файле

...