Elementar, Pequeno Gafanhoto!

"Causos" encontrados entre o mundo online e o off-line

Enviando e-mails pela DigitalOcean

Apesar de toda a facilidade de configurar um droplet na DigitalOcean, infelizmente, o envio de e-mails por meio deste não é algo simples. Pois, por padrão, a DigitalOcean bloqueia a porta 25 e a 465 para o envio de e-mails, sendo necessário solicitar a liberação para o suporte técnico – mas se sua conta tiver sido criada há menos de 60 dias, poderá haver um problema na autorização. Veja algumas opções para fazer com que o envio de e-mails comece a funcionar no seu droplet.

Clique neste link para criar uma conta na DigitalOcean e ganhe US$ 10 de crédito (equivale a 2 meses em um droplet de 1GB de memória).

Caso esteja desenvolvendo sua aplicação utilizando um framework como Laravel, é possível configurá-la para utilizar um dos serviços abaixo:

E evitar toda a dor de cabeça para configurar o sendmail ou alguma outra alternativa para enviar as mensagens pela instância na DigitalOcean.

Mas, caso sua aplicação realmente necessite que o envio seja feito pelo servidor, há duas alternativas:

  • Solicitar a liberação ao suporte técnico;
  • Ou, configurar o sSMTP no droplet;

Opção 1: Solicitando a liberação do SMTP ao suporte técnico

Nesta opção, você terá de enviar um e-mail ao suporte técnico da DigitalOcean – em inglês – solicitando a liberação da porta 25 ou 465. Mas para adiantar, siga os passos abaixo:

  1. Faça o login no painel da DigitalOcean;
  2. Vá até o endereço: cloudsupport.digitalocean.com/s/createticket
  3. No formulário, selecione:
    • Em Ticket Topic: App/Software
    • Em Subtopic: Mail
  4. Para adiantar responda às questões abaixo (isso evitará algumas idas e vindas na comunicação):
    1. Your name (Seu nome);
    2. What business or individual you are going to send mail on behalf of as well as their website (if one exists). Por qual empresa ou indivíduo você enviará e-mails em nome de seu site (se houver um).
    3. What kind of mail you’re going to be sending (password resets, newsletters, marketing mail, transactional mail such as order confirmations). Que tipo de e-mail você enviará (redefinições de senha, newsletters, e-mail marketing, e-mails transacionais, como confirmações de pedidos).
      Aqui eu aconselho a você dizer que será enviado apenas e-mails de contato, transacionais e/ou alguma outra mensagem originada de uma ação direta do visitante do seu site/app.
    4. If you’re sending on behalf of a business or an individual that is not yourself, what is your relationship to that business or individual. Se você está enviando em nome de uma empresa ou de um indivíduo que não é você mesmo, qual é o seu relacionamento com essa empresa ou indivíduo.
      Explique que as mensagens serão enviadas pelos visitantes querendo entrar em contato a respeito de um produto/serviço ofertado por você ou sua empresa. E seria bom explicar também que, caso seja feito um envio de newsletter ou e-mail marketing, será utilizado um serviço apropriado como o Mailchimp ou Amazon SES.
  5. Não esqueça de escrever o seu e-mail em inglês. Caso tenha alguma dificuldade, escreva as suas respostas em português e traduza pelo Google Tradutor.

A liberação pode demorar alguns dias úteis (para mim foi em um dia útil), mas é super tranquilo.

Conseguida a liberação, falta só instalar o Sendmail para que possa efetuar o envio. Siga os passos abaixo:

  1. Acesse o SSH do seu droplet;
  2. Instale o sendmail
    sudo apt-get install sendmail
  3. Configure o /etc/hosts/
    sudo nano /etc/hosts

    Substitua a linha:

    127.0.0.1 localhost

    Por:

    127.0.0.1 localhost.localdomain localhost seuhostname

    Substitua “seuhostname” pelo o hostname do seu droplet. Para descobrir, apenas digite hostname no SSH do seu droplet.

  4. Rode o config do Sendmail e responda Sim (“Y”) para tudo:
    sudo sendmailconfig
  5. Teste a instalação do Sendmail, rodando o comando abaixo:
    echo "Mensagem Teste" | sendmail -v meuemail@dominio.com.br
  6. Verifique a caixa de entrada, ou provavelmente a caixa de SPAM.

Obs.: Caso não tenha recebido, ou o envio demore muito para ser realizado. Pode ser que as portas SMTP ainda não tenham sido liberadas pela DigitalOcean.

Opção 2: Configurando o sSMTP no droplet

O sSMTP é um pequeno programa que permite configurar um SMTP e ligá-lo à função mail do Linux, assim, ao executar a função mail, as mensagens serão enviadas por ele ao invés do Sendmail.

A instalação descrita a seguir foi realizada num servidor Ubuntu 16.04.

  1. Acesse o SSH do seu droplet;
  2. Para começar, instale o ssmpt e o mailutils:
    sudo apt-get install ssmtp mailutils
  3. Abra o arquivo de configuração do sSMTP:
    sudo nano /etc/ssmtp/ssmtp.conf
  4. Agora, altere os parâmetros que estão em colchetes, como exemplo estou utilizando um e-mail criado pelo Mailgun (postmaster@mg.c7host.com.br):
    
    #
    # Config file for sSMTP sendmail
    #
    # The person who gets all mail for userids < 1000
    # Make this empty to disable rewriting.
    root=email@mg.c7host.com.br
    
    # The place where the mail goes. The actual machine name is required no
    # MX records are consulted. Commonly mailhosts are named mail.domain.com
    mailhub=smtp.mailgun.org:587
    
    # Where will the mail seem to come from?
    rewriteDomain=mg.c7host.com.br
    AuthUser=postmaster@mg.c7host.com.br
    AuthPass=COLOQUESUASENHA
  5. Para testar, utilize
    mail -s "Assunto Teste" meuemail@dominio.com.br < /dev/null

Anterior

Adeus, meu querido filho! Nos vemos em breve…

Próximo

Café Pilão para Nespresso (dessa vez de uma forma “decente”)

9 Comments

  1. Carlos Higueras

    Passei mais de 2 semanas apanhando pra enviar e-mails pela Digital Ocean e só consegui graças a opção 2 ciada aqui no blog. Muito obrigado, salvou a vida!

  2. Amigo, utilizando a 2ª opção consegui enviar o email. Mas minha dúvida é: Como recebo um email neste servidor? Como configurar um cliente de email para receber emails deste servidor? Tem como criar contas de email com senhas normalmente? Enfim, alguma duvidas de um iniciante…

    Obrigado!

    • Kan I.

      Olá Koynonia, tudo bem?

      A DigitalOcean é um pouco diferente das hospedagens normais, pois eles não oferecem um serviço de e-mail integrado.

      Neste caso, você teria que configurar um serviço de e-mail em um droplet, o que não é recomendado em virtude da complexidade de configuração, de segurança, etc.

      O que eu recomendo a você é que contrate um serviço de e-mail à parte, como o Google Apps, ou o Microsoft Office 365. Talvez eu faça um post sobre estes serviços.

  3. Dirceu Fernandes Cunha

    Amigo você informou as portas 25 ou 465 para solicitar a liberação na DO. Mas não entendi porque usou a porta 587 para configurar ssmtp.conf (sSMTP). Por me esclarecer por gentileza?

    • Kan I.

      Olá Dirceu, bom dia. Você está fazendo uma pequena confusão com as duas opções que passei ;). Na primeira opção, você pode solicitar à Digital Ocean para liberar a porta 25 ou 465 do seu droplet e, assim, enviar as mensagens diretamente do seu droplet.

      Caso não consiga ou não queira esperar a liberação, você tem a solução de configurar o sSMTP utilizando um serviço terceiro. Neste caso utilizei o Mailgun que, no exemplo, disponibiliza a porta 587 para utilizar nos envios.

  4. O artigo é muito bom, mas acho que como a menor droplet custa $5 / mês, é mais fácil pagar $5 / mês em um e-mail profissional no G Suite e usar o PHP Mailer pra enviar e-mails, do que fazer todo esse procedimento. O seu procedimento só é mais vantajoso, caso a pessoa deseje colocar mais de 1 domínio pra enviar.

  5. Kan, eu estou node js e o nodemailer para o envio de emails e estou tendo pois localmente consigo enviar os emails e recebo na caixa de mensagens na hora mas agora que hospedei a app na digitalOcean estou o problema envio mais nao recebo nada caixa de mensagens.
    gostaria de saber se usando o sSmtp utilizando servico terceiro nao terei que pagar pelo servico e esse segundo procedimento que explica aqui post posso realizar com sucesso no nodejs ..?

    agradeco desde ja…

    • Kan I.

      Olá Octavio. Tudo bem?

      Se utilizar o sSMTP não precisará pagar nada à Digital Ocean. E quanto ao funcionamento, se o nodemailer usar a função mail do Linux deve funcionar com certeza. Mas antes não esqueça de fazer o teste com a função mail pelo SSH.

Dê o seu pitaco

Powered by WordPress & Theme by Anders Norén