você está aqui: Home  → Arquivo de Mensagens

Enviar email com msmtp

Colaboração: Wendell Almeida

Data de Publicação: 15 de maio de 2012

O envio de emails com alertas, lembretes, relatórios, etc normalmente faz parte da rotina diária de todos. Dessa forma é sempre bom que nossos sistemas possam fazer isso adequadamente. Nem sempre temos um servidor SMTP configurado localmente ou tempo para configurar um. Uma alternativa fácil e rápida para enviar emails a partir de seu desktop ou servidor é utilizar um cliente SMTP.

MSMTP é um cliente leve e de fácil configuração.

Instalação em sistemas Debian:

  apt-get install msmtp openssl
  echo "set sendmail=/usr/bin/msmtp" >> /etc/mail.rc

O pacote openssl precisa ser instalado devido a exigencia dos certificados de criptografia, usados pelo TLS.

Para a configuração em todo o sistema edite ou crie o arquivo /etc/msmtprc ou para somente o usuário ~/.msmtprc

  # Set default values for all following accounts.
  defaults
  tls on
  tls_starttls on
  tls_trust_file /etc/ssl/certs/ca-certificates.crt
  
  #logfile ~/.msmtp.log
  logfile /var/log/maillog
  
  # The SMTP servers
  account teste
  host smtp.teste.com.br
  from voce@teste.com.br
  auth plain
  user voce@teste.com.br
  password XXXXYYYY
  tls off
  tls_starttls off
  
  account gmail
  host smtp.gmail.com
  from voce@gmail.com
  auth on
  user voce@gmail.com
  password XXXXYYYY
  
  # Set a default account
  account default : gmail

Acima temos uma configuração que possibilita o envio por duas contas de email diferentes. Uma por um servidor SMTP qualquer e outra pelo Gmail. A conta do Gmail está habilitada como default.

Para testar se está funcionando corretamente:

  msmtp -S

O comando retornará informações do servidor SMTP default: gmail.

Altere as permissões do arquivo /etc/msmtprc ou ~/.msmtprc para serem visualizadas por somente o proprietário, pois as senhas das contas são de fácil visualização.

Teste final:

  echo "Testando envio de email com msmtp" | mail -s "Enviar email sem SMTP local" fulano@bla.com


Veja a relação completa dos artigos de Wendell Almeida

 

 

Opinião dos Leitores

Wendell Almeida
11 Dez 2012, 12:30
Daniel, você pode escolher com qual conta enviar o e-mail. Por isso a opção de se ter mais de uma conta.
Dependendo do número de e-mails simultâneos que você envia, o servidor considerará como spam e bloqueará o envio. Por isso o Google solicita autenticação humana.
Daniel Plácido
21 Ago 2012, 21:11
Olá Wendell, parabéns pelo artigo me ajudou muito a configurar aqui!
Cara só estou com um problema que n"ao consegui resolver, tenho um script agendado que envia vários emails, as vezes o servidor SMTP do google me trava e tenho que me logar no gmail pra digitar o CAPTCHA, pensei que cadastrando mais de uma conta no arquivo de configuração a segunda conta seria usada como backup em caso de falha na primeira, mas n"ao funcionou assim.. então qual a utilidade de 2 contas configuradas?

abçs.
Ramiro Pereira
17 Mai 2012, 05:06
Agora funcionou tudo.
Rubens Queiroz de Almeida
16 Mai 2012, 12:59
Ramiro, Vandeir,
Eu corrigi a questão das aspas e inclui na dica uma nova linha, indicando onde se encontra o arquivo do certificado. Voce precisa de ter o pacote openssl instalado. Isto feito, funciona maravilhosamente bem.
Wendell Almeida
16 Mai 2012, 12:44
Valdeir, você está correto. Algo aconteceu na formatação do texto quando enviei a dica que retirou as aspas.

Ramiro, para o Gmail é necessário SSL/TLS como segurança para a conexão. Alguns provedores não necessitam. Talvez falte alguma dependência em seu sistema.
O resultado do comando deve retornar algo assim:

[12:37][~]$ msmtp -S
SMTP server at smtp.gmail.com (yx-in-f109.1e100.net [74.125.45.109]), port 25:
mx.google.com ESMTP d10sm4930937anm.17
TLS certificate information:
Owner:
Common Name: smtp.gmail.com
Organization: Google Inc
Locality: Mountain View
State or Province: California
Country: US
Issuer:
Common Name: Google Internet Authority
Organization: Google Inc
Country: US
Validity:
Activation time: Thu 17 Nov 2011 11:57:17 PM BRST
Expiration time: Sun 18 Nov 2012 12:07:17 AM BRST
Fingerprints:
SHA1: F3:92:AE:B4:28:FE:64:03:6F:E1:55:ED:71:9E:5F:F6:88:90:5A:57
MD5: 27:71:5C:5E:A7:D5:2B:03:9E:2F:7E:7E:1A:1B:75:A9
Capabilities:
SIZE 35882577:
Maximum message size is 35882577 bytes = 34.22 MiB
STARTTLS:
Support for TLS encryption via the STARTTLS command
AUTH:
Supported authentication methods:
PLAIN LOGIN
Vandeir Eduardo
16 Mai 2012, 08:20
Em comandos nos quais haja algum parâmetro que possua espaço em branco, é necessário o uso de aspas ou apóstrofo (quando se deseja evitar a interpretação de caracteres especiais). Então o comando deveria ficar assim:
$echo "Testando envio de email com msmtp" | mail -s "Enviar email sem SMTP local" ramiropereira@gmail.com
Ramiro Pereira
16 Mai 2012, 04:09
Após configuração recebi:

$ msmtp -S
msmtp: account default from /etc/msmtprc: tls requires either tls_trust_file (highly recommended) or tls_fingerprint or a disabled tls_certcheck

coloquei tls_certcheck off no /etc/msmtprc

$ echo Testando envio de email com msmtp | mail -s Enviar email sem SMTP local ramiropereira@gmail.com
send-mail: recipient address email not accepted by the server
send-mail: server message: 553-5.1.2 We weren't able to find the recipient domain. Please check for any
send-mail: server message: 553-5.1.2 spelling errors, and make sure you didn't enter any spaces, periods,
send-mail: server message: 553 5.1.2 or other punctuation after the recipient's email address. t43sm6871532yht.11
send-mail: could not send mail (account default from /etc/msmtprc)
send-mail: cannot log to /var/log/maillog: cannot open: Permissão negada
send-mail: log info was: host=smtp.gmail.com tls=on auth=on user=ramiropereira@gmail.com from=ramiropereira@gmail.com recipients=email,local,ramiropereira@gmail.com,sem,SMTP smtpstatus=553 smtpmsg='553-5.1.2 We weren?t able to find the recipient domain. Please check for any\n553-5.1.2 spelling errors, and make sure you didn?t enter any spaces, periods,\n553 5.1.2 or other punctuation after the recipient?s email address. t43sm6871532yht.11' errormsg='recipient address email not accepted by the server' exitcode=EX_DATAERR
Can't send mail: sendmail process failed with error code 65
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script