
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:
- Aritic Mail
- Amazon SES (Simple Email Service)
- Mailgun
- SparkPost
- Mandrill
- Entre diversos outros
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:
- Faça o login no painel da DigitalOcean;
- Vá até o endereço: cloudsupport.digitalocean.com/s/createticket
- No formulário, selecione:
- Em Ticket Topic: App/Software
- Em Subtopic: Mail
- Para adiantar responda às questões abaixo (isso evitará algumas idas e vindas na comunicação):
- Your name (Seu nome);
- 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).
- 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. - 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.
- 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:
- Acesse o SSH do seu droplet;
- Instale o sendmail
sudo apt-get install sendmail
- 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. - Rode o config do Sendmail e responda Sim (“Y”) para tudo:
sudo sendmailconfig
- Teste a instalação do Sendmail, rodando o comando abaixo:
echo "Mensagem Teste" | sendmail -v [email protected]
- 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.
- Acesse o SSH do seu droplet;
- Para começar, instale o ssmpt e o mailutils:
sudo apt-get install ssmtp mailutils
- Abra o arquivo de configuração do sSMTP:
sudo nano /etc/ssmtp/ssmtp.conf
- Agora, altere os parâmetros que estão em colchetes, como exemplo estou utilizando um e-mail criado pelo Mailgun ([email protected]):
# # Config file for sSMTP sendmail # # The person who gets all mail for userids < 1000 # Make this empty to disable rewriting. [email protected] # 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 [email protected] AuthPass=COLOQUESUASENHA
- Para testar, utilize
mail -s "Assunto Teste" [email protected] < /dev/null