Este tutorial mostra como usar o SendGrid para enviar emails a partir de uma app executada numa instância de máquina virtual (VM) do Compute Engine.
Enviar correio a partir da sua instância com o Postfix
Conclua os passos seguintes para estabelecer ligação à sua instância do sendgrid-tutorial e executar o SendGrid com o Postfix.
Ligue-se à sua instância sendgrid-tutorial através de 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.
Configurar o SendGrid como uma transmissão SMTP com o Postfix
Execute os seguintes comandos no seu terminal SSH para usar o SendGrid como um retransmissor SMTP com o Postfix.
Torne-se um superutilizador:
sudo su -Defina uma umask segura:
umask 077Instale 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 lhe for pedido, selecione a configuração Apenas local e aceite o nome do domínio predefinido.
Modifique as opções de configuração do Postfix. Abra o perfil
/etc/postfix/main.cfpara edição. Por exemplo, para usar o editor de textonano, introduza o seguinte comando:nano /etc/postfix/main.cfAtualize o ficheiro:
Comente as seguintes linhas:
# default_transport = error # relay_transport = error
Adicione as seguintes linhas ao final do ficheiro:
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 = noanonymousAs linhas acima aplicam o suporte de SSL/TLS e configuram a autenticação SMTP para estes pedidos. Um módulo de camada de segurança e acesso simples (SASL) processa a autenticação na configuração do Postfix.
Guarde e feche o ficheiro.
Gere o mapa de palavras-passe SASL com a chave da API que gerou na secção Antes de começar. Substitua
your-api-keypela chave da API que gerou.echo [smtp.sendgrid.net]:2525 apikey:your-api-key >> /etc/postfix/sasl_passwd
Use o utilitário
postmappara gerar um ficheiro.db:postmap /etc/postfix/sasl_passwdVerifique se tem um ficheiro
.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 ficheiro que contém as suas credenciais, uma vez que já não é necessário:
rm /etc/postfix/sasl_passwdDefina as autorizações no ficheiro
.dbe verifique se o outro ficheiro foi removido:chmod 600 /etc/postfix/sasl_passwd.db ls -la /etc/postfix/sasl_passwd*-rw------- 1 root root ... /etc/postfix/sasl_passwd.db
Atualize a configuração para carregar os parâmetros modificados:
Debian
/etc/init.d/postfix restartCentOS
postfix reloadInstale o pacote
mailutilsoumailx:Debian
apt -y install mailutils
CentOS
yum install mailx -yEnvie um email de teste:
echo 'message' | mail -s subject email@example.com
Substitua o seguinte:
message: o corpo do email.subject: o assunto do email.email@example.com: o endereço de email para o qual quer enviar uma mensagem.
Procure nos registos do sistema uma linha de estado que contenha
statuse o código de resposta do servidor(250):Debian
tail -n 5 /var/log/syslogCentOS
tail -n 5 /var/log/maillog
Enviar correio com Java na sua instância
Ligue-se à sua instância sendgrid-tutorial através de 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 email
As instruções seguintes usam a biblioteca cliente Java do SendGrid para criar e enviar uma mensagem de email através do SendGrid. Pode ver o exemplo completo no GitHub.
No terminal SSH:
Torne-se superutilizador e defina uma umask segura:
sudo su - umask 077Instale o Java e o Maven:
apt -y update && apt -y install git-core openjdk-11-jdk mavenClone o repositório do GitHub:
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.gitAceda ao código-fonte principal do exemplo:
cd /root/java-docs-samples/compute/sendgrid/src/main/java/com/example/compute/sendgridAbra
SendEmailServelet.javapara edição.Substitua
your-sendgrid-api-keypela chave API da sua conta do SendGrid.Substitua
your-sendgrid-from-emailpelo endereço de email a partir do qual quer enviar correio.Substitua
destination-emailpelo endereço de email para o qual quer enviar correio.
Aceda ao diretório raiz do exemplo de código:
cd /root/java-docs-samples/compute/sendgridEmpacote a classe Java:
mvn clean packageAceda ao novo diretório
target:cd targetDefina autorizações que lhe permitam executar o ficheiro JAR:
chmod +x compute-sendgrid-1.0-SNAPSHOT-jar-with-dependencies.jarExecute o seletor de versão Java alternativo:
update-alternatives --config javaSelecione a opção
java-11-openjdk-amd64.Execute o ficheiro Java:
java -jar compute-sendgrid-1.0-SNAPSHOT-jar-with-dependencies.jar
Enviar correio com o Node.js na sua instância
Para executar este exemplo, tem de ter a versão 7.6 ou posterior do Node.js instalada na instância de VM.
Ligue-se à sua instância sendgrid-tutorial através de 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 email
No terminal SSH:
Torne-se superutilizador e defina uma umask segura:
sudo su - umask 077Atualize os repositórios de pacotes:
Debian
apt updateCentOS
yum update -yInstale as dependências do Node.js:
Debian
apt -y install git-core curl build-essential openssl libssl-devCentOS
yum install git-core curl openssl openssl-devel -y yum groupinstall "Development Tools" -yInstale o Node.js. Por predefiniçã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 nodejsCentOS
curl --silent --location https://rpm.nodesource.com/setup_14.x | bash -Em seguida, instale o Node.js:
yum -y install nodejsInstale o cliente Node.js do SendGrid:
npm install sendgridClone o repositório de exemplo:
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.gitAceda ao diretório que contém o exemplo do SendGrid:
cd nodejs-docs-samples/computeCopie o ficheiro
sendgrid.js:cp sendgrid.js sendmail.jsAbra
sendmail.jspara edição.Substitua
your-sendgrid-api-keypela chave API da sua conta do SendGrid.Substitua
from-email@example.compelo endereço de email a partir do qual quer enviar correio.Substitua
to-email@example.compelo endereço de email para o qual quer enviar correio.
Execute o programa para enviar uma mensagem de email através do SendGrid:
node sendmail.js
Enviar correio a partir de um servidor de transporte de extremidade do Exchange
Pode configurar o Microsoft Exchange para enviar emails de saída com o SendGrid configurando um conector de envio de saída. Para obter detalhes, consulte o artigo Implementar o Microsoft Exchange Server 2016 no Compute Engine.