Matheus Misumoto
Matheus Misumoto05/09/2024 23:26
Compartilhe

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.

    Compartilhe
    Comentários (1)
    Ronaldo Schmidt
    Ronaldo Schmidt - 06/09/2024 07:02

    Boa amigo. Valeu as dicas.