Como enviar e-mails de uma VM com a porta 25 bloqueada
Em ambientes de máquinas virtuais de serviços em nuvem, como o Compute Engine do Google Cloud, a porta 25 – utilizada para envio de mensagens de e-mails – é bloqueada por questões de segurança. Neste post apresentarei uma opção para envio de emails a partir de VMs.
No meu caso, o formulário de contato deste site e algumas funções do WordPress me levaram à procura por uma alternativa ao envio de e-mails.
Uma das soluções possíveis é o uso do SendGrid via msmtp na máquina virtual. O msmtp é um agente de transferência de email leve e confiável, enquanto o SendGrid é um provedor de serviços de email confiável e escalável.
Instalação e configuração da VM
Primeiro, você precisará criar uma conta no SendGrid. O serviço possui diversos planos, a depender das necessidades de sua aplicação. No painel de controle, crie uma nova chave de API e conceda a ela as permissões necessárias para enviar e-mails.
A criação da API pode necessitar de passos extras como verificação de domínio. Siga as instruções fornecidas pelo painel de controle ou consulte a documentação para mais detalhes.
Em seguida, instale o pacote msmtp na sua VM. O comando para instalação pode variar de acordo com a sua distribuição Linux.
sudo apt install msmtp
Uma vez instalado, abra o arquivo de configuração do msmtp (geralmente localizado em ~/.msmtprc
). Adicione as seguintes linhas ao final do arquivo:
account sendgrid
host smtp.sendgrid.net
port 587
from your_email@example.com
user apikey
password YOUR_API_KEY
Substitua YOUR_API_KEY
e your_email@example.com
pelas informações da sua conta SendGrid. Note que o usuário deve ser apikey
.
Testando o msmtp
Para testar se o msmtp está configurado e funcionando corretamente, você pode enviar um e-mail de teste usando o seguinte comando:
echo "Testando envio... " | msmtp -d test@example.com
Substitua test@example.com
pelo endereço de email para o qual deseja enviar o teste. Verifique sua caixa de entrada para confirmar o recebimento do email com o texto “Testando envio…”
Bônus: Configurando o PHP para enviar e-mails usando o msmtp
Para habilitar o envio de e-mails pelo PHP com o msmtp, abra o arquivo php.ini na sua máquina virtual e configure a variável sendmail_path
conforme abaixo. Talvez você precise substituir /etc/msmtprc
pelo caminho do seu arquivo de configuração, caso seja em um local diferente.
sendmail_path = "/usr/bin/msmtp -C /etc/msmtprc -t"
Conclusão
Ao usar o msmtp com SendGrid em uma VM com a porta 25 bloqueada, você pode desfrutar dos benefícios de um agente de transferência de e-mail confiável e seguro, mesmo em ambientes com restrições de rede.
Consulte a documentação oficial do msmtp e do SendGrid para obter outras detalhes sobre configuração e uso.