Este tutorial mostra como usar o SendGrid para enviar e-mails de um aplicativo em execução em uma instância de máquina virtual (VM) do Compute Engine.
Objetivos
- Use SendGrid com Postfix em uma instância do Compute Engine.
- Use SendGrid no código Java em execução em uma instância do Compute Engine.
- Use o SendGrid no código Node.js em execução em uma instância do Compute Engine.
- Use o SendGrid com um servidor de transporte de borda do Microsoft Exchange em uma instância do Compute Engine.
Para obter outras informações sobre como configurar o SendGrid, consulte a documentação do desenvolvedor do SendGrid .
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 SendGrid. Anote as credenciais da sua conta SMTP do SendGrid, que incluem nome de usuário, senha e nome do host. Seu nome de usuário e senha SMTP são os mesmos que você usou para se inscrever no serviço. O nome do host SendGrid é
smtp.sendgrid.net
. - Crie uma chave de API:
- Faça login no SendGrid e vá para Configurações > Chaves de API .
- Crie uma chave de API.
- Selecione as permissões para a chave. No mínimo, a chave deve ter permissões de envio de email para enviar email.
- Clique em Salvar para criar a chave.
- SendGrid gera uma nova chave. Esta é a única cópia da chave, portanto, copie a chave e salve-a para mais tarde.
Enviando e-mails da sua instância com Postfix
Conclua as etapas a seguir para conectar-se à sua instância do tutorial sendgrid e executar SendGrid com Postfix .
Conecte-se à sua instância do tutorial sendgrid usando 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.
Configurando SendGrid como uma retransmissão SMTP com Postfix
Execute os seguintes comandos em seu terminal SSH para usar SendGrid como uma retransmissão SMTP com Postfix.
Torne-se um superusuário:
sudo su -
Defina uma umask segura:
umask 077
Instale o agente de transporte de correio 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 Local Only 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 seguinte comando:nano /etc/postfix/main.cf
Atualize o arquivo:
Comente as seguintes linhas:
# default_transport = error # relay_transport = error
Adicione as seguintes 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 reforçam o suporte SSL/TLS e configuram a autenticação SMTP para essas solicitações. Um módulo de camada simples de acesso e segurança (SASL) lida com a autenticação na configuração do Postfix.
Salve e feche o arquivo.
Gere o mapa de senha SASL usando a chave de API gerada na seção Antes de começar . Substitua
your-api-key
pela chave de API que você gerou.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 você possui 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 que contém suas credenciais porque ele não é mais necessário:
rm /etc/postfix/sasl_passwd
Defina as permissões no seu 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 para carregar 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 o seguinte:
-
message
: o corpo do e-mail. -
subject
: O assunto do e-mail. -
email@example.com
: o endereço de e-mail para o qual você deseja enviar uma mensagem.
Procure nos logs do sistema uma linha de status contendo
status
e o código de resposta do servidor bem-sucedido(250)
:Debian
tail -n 5 /var/log/syslog
CentOS
tail -n 5 /var/log/maillog
-
Enviando e-mail com Java em sua instância
Conecte-se à sua instância do tutorial sendgrid usando 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.
Construa e envie uma mensagem de e-mail
As instruções a seguir usam a biblioteca cliente SendGrid Java para construir e enviar uma mensagem de email por meio do SendGrid. Você pode ver o exemplo completo no GitHub .
No seu terminal SSH:
Torne-se um superusuário e defina uma umask segura:
sudo su - umask 077
Instale Java e Maven:
apt -y update && apt -y install git-core openjdk-11-jdk maven
Clone o repositório GitHub:
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Vá para 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 API da sua conta SendGrid.Substitua
your-sendgrid-from-email
pelo endereço de e-mail do qual você deseja enviar mensagens.Substitua
destination-email
pelo endereço de e-mail para o qual deseja enviar e-mails.
Vá para o diretório raiz do código de exemplo:
cd /root/java-docs-samples/compute/sendgrid
Empacote a classe Java:
mvn clean package
Vá para o novo diretório
target
:cd target
Defina permissões que permitem executar o arquivo jar:
chmod +x compute-sendgrid-1.0-SNAPSHOT-jar-with-dependencies.jar
Execute o seletor de versão alternativa do 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
Enviando e-mail com Node.js em sua instância
Para executar este exemplo, você deve ter Node.js
versão 7.6 ou posterior instalado na instância de VM.
Conecte-se à sua instância do tutorial sendgrid usando 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.
Construa e envie uma mensagem de e-mail
No seu terminal SSH:
Torne-se um superusuário e defina uma umask segura:
sudo su - umask 077
Atualize seus 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, a instalação também instala o npm :
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 -
Em seguida, instale o Node.js:
yum -y install nodejs
Instale o cliente SendGrid Node.js:
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 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 API da sua conta SendGrid.Substitua
from-email@example.com
pelo endereço de e-mail do qual você deseja enviar mensagens.Substitua
to-email@example.com
pelo endereço de e-mail para o qual você deseja enviar mensagens.
Execute o programa para enviar uma mensagem de email através do SendGrid:
node sendmail.js
Enviando email de um servidor de transporte de borda do Exchange
Você pode configurar o Microsoft Exchange para enviar emails de saída com SendGrid configurando um conector de envio de saída. Para obter detalhes, consulte Implantação do Microsoft Exchange Server 2016 no Compute Engine .
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados neste tutorial, exclua o projeto que contém os recursos ou mantenha o projeto e exclua os recursos individuais.
Exclua o projeto
A maneira mais fácil de eliminar o faturamento é excluir o projeto que você criou para o tutorial.
Para excluir o projeto:
- 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.
Exclua sua instância do Compute Engine
Para excluir uma instância do Compute Engine:
- 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.
O que vem a seguir
Explore arquiteturas de referência, diagramas e práticas recomendadas sobre o Google Cloud. Dê uma olhada em nosso Centro de Arquitetura de Nuvem .