Defina smtpmail-smtp-user
, smtpmail
para procurar credenciais no arquivo authinfo
.
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!
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.