Neste tutorial, mostramos como usar o SendGrid para enviar e-mails de um aplicativo em execução em uma instância de máquina virtual (VM, na sigla em inglês) do Compute Engine.
Objetivos
- Usar o SendGrid com o Postfix em uma instância do Compute Engine.
- Usar o SendGrid em código Java executado em uma instância do Compute Engine.
- Usar o SendGrid em código Node.js executado em uma instância do Compute Engine.
- Usar o SendGrid com um servidor de transporte de borda do Microsoft Exchange em uma instância do Compute Engine.
Para mais informações sobre como configurar o SendGrid, consulte a documentação do desenvolvedor do SendGrid (em inglês).
Custos
Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:
- Compute Engine
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- In the Google Cloud console, go to the Create an instance page.
-
Set Name to
sendgrid-tutorial
. - In the Boot disk section, click Change to begin configuring your boot disk.
- Na guia Public images, escolha a Debian or CentOS image version.
- Clique em Selecionar.
- Para criar a VM, clique em Criar.
-
Use o Google Cloud Marketplace para se inscrever no serviço de e-mail do SendGrid. Anote as credenciais da conta SMTP do SendGrid, que incluem nome de usuário, senha e nome do host. O nome de usuário e a senha SMTP são iguais aos da inscrição no serviço. O nome do host do SendGrid é
smtp.sendgrid.net
. - Crie uma chave de API:
- Faça login no SendGrid e acesse Configurações > Chaves de API.
- Crie uma chave de API.
- Selecione as permissões para a chave. Para enviar e-mails, a chave precisa, no mínimo, de permissões de envio de e-mail.
- Clique em Salvar para criar a chave.
- O SendGrid gera uma nova chave. Esta é a única cópia da chave, portanto, faça uma cópia dela e salve-a para uso futuro.
Como enviar e-mails da instância com o Postfix
Conclua as etapas a seguir para se conectar à instância do sendgrid-tutorial e executar o SendGrid com o Postfix.
Conectar-se à instância "tutorial-sendgrid" usando o SSH
- In the Google Cloud console, go to the VM instances page.
- In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.
Como configurar o SendGrid como um redirecionamento SMTP com o Postfix
Execute os comandos a seguir no terminal SSH para usar o SendGrid como um redirecionamento SMTP com o Postfix.
Torne-se um superusuário:
sudo su -
Defina um umask seguro:
umask 077
Instale o agente de transporte de e-mail do Postfix.
Debian
apt update && apt -y install postfix libsasl2-modules
CentOS
yum install postfix cyrus-sasl-plain cyrus-sasl-md5 -y
Se solicitado, selecione a configuração Somente local e aceite o nome de domínio padrão.
Modifique as opções de configuração do Postfix. Abra
/etc/postfix/main.cf
para edição. Por exemplo, para usar o editor de textonano
, digite o comando a seguir:nano /etc/postfix/main.cf
Atualize o arquivo:
Marque as seguintes linhas como comentários:
# default_transport = error # relay_transport = error
Adicione estas linhas ao final do arquivo:
relayhost = [smtp.sendgrid.net]:2525 smtp_tls_security_level = encrypt smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd header_size_limit = 4096000 smtp_sasl_security_options = noanonymous
As linhas acima aplicam o suporte SSL/TLS e configuram a autenticação SMTP para essas solicitações. Na configuração do Postfix, a autenticação é processada por um módulo de camada simples de autenticação e segurança (SASL, na sigla em inglês).
Salve e feche o arquivo.
Crie o mapa de senhas SASL usando a chave de API gerada na seção Antes de começar. Substitua
your-api-key
pela chave de API que foi gerada.echo [smtp.sendgrid.net]:2525 apikey:your-api-key >> /etc/postfix/sasl_passwd
Use o utilitário
postmap
para gerar um arquivo.db
:postmap /etc/postfix/sasl_passwd
Verifique se há um arquivo
.db
:ls -l /etc/postfix/sasl_passwd*
-rw------- 1 root root ... /etc/postfix/sasl_passwd -rw------- 1 root root ... /etc/postfix/sasl_passwd.db
Remova o arquivo com suas credenciais, porque ele não é mais necessário:
rm /etc/postfix/sasl_passwd
Defina as permissões no arquivo
.db
e verifique se o outro arquivo foi removido:chmod 600 /etc/postfix/sasl_passwd.db ls -la /etc/postfix/sasl_passwd*
-rw------- 1 root root ... /etc/postfix/sasl_passwd.db
Recarregue sua configuração com os parâmetros modificados:
Debian
/etc/init.d/postfix restart
CentOS
postfix reload
Instale o pacote
mailutils
oumailx
:Debian
apt -y install mailutils
CentOS
yum install mailx -y
Envie um e-mail de teste:
echo 'message' | mail -s subject email@example.com
Substitua:
message
: o corpo do e-mail.subject
: o assunto do e-mail.email@example.com
: o endereço de e-mail a que você quer enviar e-mails.
Nos registros do sistema, procure uma linha de status que contenha
status
e o código de resposta bem-sucedida do servidor(250)
:Debian
tail -n 5 /var/log/syslog
CentOS
tail -n 5 /var/log/maillog
Enviar e-mails com Java na instância
Conectar-se à instância "tutorial-sendgrid" usando o SSH
- In the Google Cloud console, go to the VM instances page.
- In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.
Criar e enviar uma mensagem de e-mail
Nas instruções a seguir, a biblioteca de cliente Java do SendGrid é usada para criar e enviar uma mensagem de e-mail pelo SendGrid. Veja o exemplo completo no GitHub (em inglês).
No terminal do SSH:
Conecte-se como um superusuário e configure um umask seguro:
sudo su - umask 077
Instale o Java e o Maven:
apt -y update && apt -y install git-core openjdk-11-jdk maven
Clone o repositório do GitHub:
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Acesse o código-fonte principal do exemplo:
cd /root/java-docs-samples/compute/sendgrid/src/main/java/com/example/compute/sendgrid
Abra
SendEmailServelet.java
para edição.Substitua
your-sendgrid-api-key
pela chave de API da conta do SendGrid.Substitua
your-sendgrid-from-email
pelo endereço de e-mail que você quer usar para enviar e-mails.Substitua
destination-email
pelo endereço de e-mail a que você quer enviar e-mails.
Acesse o diretório raiz do código de amostra:
cd /root/java-docs-samples/compute/sendgrid
Crie o pacote da classe Java:
mvn clean package
Acesse o novo diretório
target
:cd target
Defina as permissões para executar o arquivo jar:
chmod +x compute-sendgrid-1.0-SNAPSHOT-jar-with-dependencies.jar
Execute o seletor de versão alternativa de Java:
update-alternatives --config java
Selecione a opção
java-11-openjdk-amd64
.Execute o arquivo Java:
java -jar compute-sendgrid-1.0-SNAPSHOT-jar-with-dependencies.jar
Como enviar e-mails com o Node.js na instância
Para executar esta amostra, é necessário ter a versão 7.6 ou mais recente de Node.js
instalado na instância de VM.
Conectar-se à instância "tutorial-sendgrid" usando o SSH
- In the Google Cloud console, go to the VM instances page.
- In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.
Criar e enviar uma mensagem de e-mail
No terminal do SSH:
Conecte-se como um superusuário e configure um umask seguro:
sudo su - umask 077
Atualize os repositórios de pacotes:
Debian
apt update
CentOS
yum update -y
Instale as dependências do Node.js:
Debian
apt -y install git-core curl build-essential openssl libssl-dev
CentOS
yum install git-core curl openssl openssl-devel -y yum groupinstall "Development Tools" -y
Instale o Node.js. Por padrão, npm também é instalado:
Debian
curl -sL https://deb.nodesource.com/setup_14.x | sudo bash - sudo apt -y install nodejs
CentOS
curl --silent --location https://rpm.nodesource.com/setup_14.x | bash -
Depois instale o Node.js:
yum -y install nodejs
Instale o cliente Node.js do SendGrid:
npm install sendgrid
Clone o repositório de amostra:
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Acesse o diretório que contém a amostra do SendGrid:
cd nodejs-docs-samples/compute
Copie o arquivo
sendgrid.js
:cp sendgrid.js sendmail.js
Abra
sendmail.js
para edição.Substitua
your-sendgrid-api-key
pela chave de API da conta do SendGrid.Substitua
from-email@example.com
pelo endereço de e-mail que você quer usar para enviar e-mails.Substitua
to-email@example.com
pelo endereço de e-mail a que você quer enviar e-mails.
Execute o programa para enviar uma mensagem de e-mail pelo SendGrid:
node sendmail.js
Como enviar e-mails de um servidor de transporte de borda do Exchange
É possível fazer com que o Microsoft Exchange envie e-mails de saída com o SendGrid. Para isso, basta configurar um conector de envio de saída. Para mais detalhes, acesse Como implantar o Microsoft Exchange Server 2016 no Compute Engine.
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
Exclua o projeto
O jeito mais fácil de evitar cobranças é excluindo o projeto que você criou para o tutorial.
Para excluir o projeto, faça o seguinte:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Excluir a instância do Compute Engine
Para excluir uma instância do Compute Engine, faça o seguinte:
- In the Google Cloud console, go to the VM instances page.
-
Select the checkbox for
your
sendgrid-tutorial
instance. - To delete the instance, click More actions, click Delete, and then follow the instructions.
A seguir
Confira arquiteturas de referência, diagramas, tutoriais e práticas recomendadas do Google Cloud. Confira o Centro de arquitetura do Cloud.