“Erro de protocolo SMTP” ao enviar mensagens no emacs

1

Estou tentando configurar o emacs para enviar e-mails através de um servidor SMTP, mas até agora não obtive êxito. Aqui está a saída que estou recebendo:

220 __SMTP.SERVER__ ESMTP Sendmail 8.14.4+UW11.03/8.14.4+UW13.09; Wed, 15 Jan 2014 13:16:39 -0800
250-__SMTP.SERVER__ Hello __LOCAL.DOMAIN__ [__IP.ADDRESS__], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE 60000000
250-DSN
250-AUTH GSSAPI
250-STARTTLS
250-DELIVERBY
250 HELP
250 2.0.0 Verbose mode
250 2.1.0 <__USER@DOMAIN__>... Sender ok
530 5.7.1 Relaying denied. Proper authentication required.
smtpmail-send-it: Sending failed; SMTP protocol error

O init.el relevante está configurado da seguinte forma:

(setq send-mail-function 'smtpmail-send-it)
(setq smtpmail-smtp-server "__SMTP.SERVER__")
(setq smtpmail-smtp-service 587)
(setq smtpmail-stream-type 'ssl)
(setq smtpmail-debug-info t)
(setq smtpmail-debug-verb t)

Existe também um arquivo .authinfo , que diz:

machine __SMTP.SERVER__ port 587 login __USER__ password *

Alguma opinião sobre o que eu perdi ou fiz de forma incorreta?

EDIT 1

@ techie007 Falei com o administrador do servidor e ele me disse que o servidor deve permitir a retransmissão após a autenticação; Agora eu estou querendo saber se eu configurei minha autenticação incorretamente. Eu sei que o servidor usa criptografia TLS e sei que eu configurei smtpmail-stream-type 'ssl em vez de 'tls , mas a documentação do emacs me levou a acreditar que 'ssl deve ser usado para conexões SSL e TLS (< href="http://www.gnu.org/software/emacs/manual/html_mono/smtpmail.html#Encryption"> link ). Isso está errado?

Além disso, o servidor SMTP realmente funciona com outros clientes; é apenas essa conexão particular que estou tendo problemas para fazer.

EDIT 2

Uma reformulação de init.el agora diz:

 (setq message-send-mail-function 'smtpmail-send-it
      smtpmail-starttls-credentials '(("__SMPT.SERVER__" 587 nil nil))
      smtpmail-auth-credentials '(("__SMTP.SERVER" 587 "__USER__" nil))
      smtpmail-default-smtp-server "__SMTP_SERVER__"
      smtpmail-smtp-server "__SMTP.SERVER__"
      smtpmail-smtp-service 587
      smtpmail-local-domain "__LOCAL.DOMAIN__")

que removeu a necessidade de um arquivo .authinfo . Log completo, incluindo uma tentativa de enviar e-mail:

Loading 00debian-vars...done
Loading /etc/emacs/site-start.d/50autoconf.el (source)...done
Loading /etc/emacs/site-start.d/50dictionaries-common.el (source)...
Loading debian-ispell...
Loading /var/cache/dictionaries-common/emacsen-ispell-default.el (source)...done
Loading debian-ispell...done
Loading /var/cache/dictionaries-common/emacsen-ispell-dicts.el (source)...done
Loading /etc/emacs/site-start.d/50dictionaries-common.el (source)...done
Loading /etc/emacs/site-start.d/50psvn.el (source)...done
Loading /etc/emacs23/site-start.d/50vm-init.el (source)...done
For information about GNU Emacs and the GNU system, type C-h C-a.
goto-history-element: Beginning of history; no preceding item
Quit
Loading /home/__USER__/.xemacs/init.el (source)...done
Loading /home/__USER__/.xemacs/custom.el (source)...done
/usr/bin/mail is not an executable. Setting mail-interactive to t.
Adding vm-rfaddons-option 'check-recipients'.
Adding vm-rfaddons-option 'check-for-empty-subject'.
Adding vm-rfaddons-option 'encode-headers'.
VM-RFADDONS: VM is now infected.
ispell.el is already loaded
Sending...
Added to /home/__USER__/vm-folders/SentMail
sendmail-send-it: Sending...failed with exit value 1

EDIT 3

Eu consegui fazer algum progresso! Na inicialização inicial do Emacs, inicio a VM com C-x m e, se eu tentar enviar uma mensagem, recebo a falha na primeira saída - smtpmail-send-it: Sending failed; SMTP protocol error . No entanto, se eu C-x C-f ~/.emacs abrir o arquivo e, em seguida, inserir M-x eval-buffer , poderei voltar para a VM e enviar uma mensagem perfeitamente. A configuração .emacs é assim:

(setq message-send-mail-function 'smtpmail-send-it
      send-mail-function 'smtpmail-send-it
      smtpmail-default-smtp-server "__SMTP.SERVER__"
      smtpmail-smtp-server "__SMTP.SERVER__"
      smtpmail-smtp-service 587
      smtpmail-stream-type 'ssl
      smtpmail-auth-credentials '(("__SMTP.SERVER__" 587 "__USER__" "__PASSWORD__"))
)

Alguém sabe como posso eliminar a necessidade de avaliar .emacs no início de cada sessão do Emacs?

EDIÇÃO FINAL

Funciona! Por causa do fechamento, deixe-me postar minha configuração final de trabalho aqui.

(add-to-list 'load-path "/usr/local/share/emacs/site-lisp/vm/")
(require 'vm-autoloads)
(load "/usr/local/share/emacs/site-lisp/vm/vm-reply")
(setq message-send-mail-function 'smtpmail-send-it
      send-mail-function 'smtpmail-send-it
      user-mail-address "__USER.MAIL.ADDRESS__"
      smtpmail-default-smtp-server "__SMTP.SERVER__" 
      smtpmail-smtp-server "__SMTP.SERVER__"
      smtpmail-smtp-service 587
      smtpmail-stream-type 'ssl
      smtpmail-smtp-user "__USER__"
      smtpmail-starttls-credentials '(("__SMTP.SERVER__" 587 "__USER__" nil)))
      starttls-use-gnutls t 
      starttls-gnutls-program "gnutls-cli"
      starttls-extra-arguments nil
)

Colocar o 'load-path e 'vm-autoloads pareceu ajudar com alguns erros de "definição de função é nulo" e a carga manual de vm-reply é uma solução para um erro encontrado na VM 8.2.0b, consistindo de um autoload ausente; caso contrário, isso resultaria em uma definição nula de vm-select-recipient-from-sender . Eu também voltei a usar o arquivo .authinfo para autenticar quando percebi que estava em conflito com a variável smtpmail-auth-credentials ; smtpmail-smtp-user é usado em conjunto com .authinfo conforme a sugestão de netawater . user-mail-address resolveu todos os erros de autenticação restantes que eu tinha.

Obrigado a todos pela ajuda e sugestões!

    
por tlake 16.01.2014 / 19:29

2 respostas

2

Defina smtpmail-smtp-user , smtpmail para procurar credenciais no arquivo authinfo .

    
por 25.01.2014 / 14:54
1

Duas coisas são estranhas sobre a saída SMTP no topo da questão:

250-STARTTLS

O servidor propõe STARTTLS , mesmo que você tenha definido smtpmail-stream-type para ssl e, portanto, já deve ter uma conexão criptografada. Não sei como verificar se é esse o caso e, se não, como corrigir isso.

Existe alguma confusão de terminologia aqui: SSL e TLS são na verdade basicamente a mesma coisa. O SSL versão 3.0 e o TLS versão 1.0 são protocolos muito semelhantes e você raramente precisa se preocupar com a diferença. O STARTTLS é uma maneira de configurar uma conexão criptografada: em vez de a conexão ser criptografada desde o início, a conexão começa descriptografada, o servidor oferece criptografia, o cliente a aceita e negocia uma conexão criptografada. No entanto, por algum motivo, quase todos os clientes de email usam "SSL" para se referir a conexões criptografadas não-STARTTLS (SSL ou TLS) e "TLS" para se referir a conexões criptografadas por STARTTLS. Emacs não, então pode valer a pena tentar definir smtpmail-stream-type para starttls .

250-AUTH GSSAPI

O servidor propõe GSSAPI como o único método de autenticação, mas smtpmail suporta apenas PLAIN , LOGIN e CRAM-MD5 . A menos que o servidor proponha outros métodos de autenticação em conexões criptografadas, parece que você está sem sorte tentando enviar e-mails do Emacs através deste servidor.

    
por 22.01.2014 / 15:32