posteoメールアカウントでemacs24からメールを送信するのにかなり奇妙な問題がありますが、Gmailとgmxではすべてがうまく機能しているようです。これは私の現在の.emacs構成の関連部分です(常に同じ結果で100万回並べ替えたように感じます):
(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
そして、posteo.deバッファへのSMTPの私のトレースでは:
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:<[email protected]> 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でこの種のエラーをスローする証明書をどのように処理するのでしょうか。
よろしくお願いします!
この投稿は私に決定的なヒントを与えました:emacs24でクライアント証明書を使用するようにgnutlsに依頼する方法
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 protected]
コメントを追加