Tutorial ini menunjukkan cara menggunakan SendGrid untuk mengirim email dari aplikasi yang berjalan pada instance virtual machine (VM) Compute Engine.
Tujuan
- Menggunakan SendGrid dengan Postfix pada instance Compute Engine.
- Gunakan SendGrid dalam kode Java yang berjalan di instance Compute Engine.
- Gunakan SendGrid dalam kode Node.js yang berjalan di instance Compute Engine.
- Menggunakan SendGrid dengan server transportasi edge Microsoft Exchange pada instance Compute Engine.
Untuk informasi lainnya tentang cara menyiapkan SendGrid, lihat dokumentasi developer SendGrid.
Biaya
Di dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:
- Compute Engine
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga.
Sebelum memulai
- 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify 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 OS and Storage section, click Change to begin configuring your boot disk.
- Di tab Public images, pilih a Debian or CentOS image version.
- Klik Select.
- Untuk membuat VM, klik Create.
-
Gunakan
Google Cloud Marketplace
untuk mendaftar ke layanan email SendGrid. Catat kredensial akun SMTP SendGrid Anda, yang mencakup nama pengguna, sandi, dan nama host. Nama pengguna dan sandi SMTP Anda sama dengan yang Anda gunakan untuk mendaftar ke layanan. Nama host SendGrid adalah
smtp.sendgrid.net. - Membuat Kunci API:
- Login ke SendGrid dan buka Settings > API Keys.
- Membuat Kunci API.
- Pilih izin untuk kunci tersebut. Setidaknya, kunci harus memiliki izin Pengiriman email untuk mengirim email.
- Klik Save untuk membuat kunci.
- SendGrid akan membuat kunci baru. Ini adalah satu-satunya salinan kunci, jadi pastikan Anda menyalin kunci dan menyimpannya untuk nanti.
Mengirim email dari instance Anda dengan Postfix
Selesaikan langkah-langkah berikut untuk terhubung ke instance sendgrid-tutorial dan menjalankan SendGrid dengan Postfix.
Hubungkan ke instance sendgrid-tutorial Anda menggunakan 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.
Mengonfigurasi SendGrid sebagai relai SMTP dengan Postfix
Jalankan perintah berikut di terminal SSH untuk menggunakan SendGrid sebagai relai SMTP dengan Postfix.
Menjadi superuser:
sudo su -Setel umask yang aman:
umask 077Instal Agen Transportasi Email Postfix:
Debian
apt update && apt -y install postfix libsasl2-modules
CentOS
yum install postfix cyrus-sasl-plain cyrus-sasl-md5 -y
Jika diminta, pilih konfigurasi Local Only dan terima nama domain default.
Memodifikasi opsi konfigurasi Postfix. Buka
/etc/postfix/main.cfuntuk mengedit. Misalnya, untuk menggunakan editor teksnano, masukkan perintah berikut:nano /etc/postfix/main.cfPerbarui file:
Jadikan baris berikut sebagai komentar:
# default_transport = error # relay_transport = error
Tambahkan baris berikut ke bagian akhir file:
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 = noanonymousBaris di atas menerapkan dukungan SSL/TLS dan mengonfigurasi autentikasi SMTP untuk permintaan ini. Modul akses sederhana dan lapisan keamanan (SASL) menangani autentikasi dalam konfigurasi Postfix.
Simpan dan tutup file tersebut.
Buat peta sandi SASL menggunakan kunci API yang Anda buat di bagian Sebelum memulai. Ganti
your-api-keydengan kunci API yang Anda buat.echo [smtp.sendgrid.net]:2525 apikey:your-api-key >> /etc/postfix/sasl_passwd
Gunakan utilitas
postmapuntuk menghasilkan file.db:postmap /etc/postfix/sasl_passwdVerifikasi bahwa Anda memiliki file
.db:ls -l /etc/postfix/sasl_passwd*-rw------- 1 root root ... /etc/postfix/sasl_passwd -rw------- 1 root root ... /etc/postfix/sasl_passwd.db
Hapus file yang berisi kredensial Anda karena tidak lagi diperlukan:
rm /etc/postfix/sasl_passwdTetapkan izin pada file
.dbAnda dan pastikan file lainnya telah dihapus:chmod 600 /etc/postfix/sasl_passwd.db ls -la /etc/postfix/sasl_passwd*-rw------- 1 root root ... /etc/postfix/sasl_passwd.db
Muat ulang konfigurasi Anda untuk memuat parameter yang diubah:
Debian
/etc/init.d/postfix restartCentOS
postfix reloadInstal paket
mailutilsataumailx:Debian
apt -y install mailutils
CentOS
yum install mailx -yKirim email uji:
echo 'message' | mail -s subject email@example.com
Ganti kode berikut:
message: Isi email.subject: Subjek email.email@example.com: Alamat email yang ingin Anda kirimi pesan.
Buka log sistem Anda untuk melihat baris status yang berisi
statusdan kode respons server yang berhasil(250):Debian
tail -n 5 /var/log/syslogCentOS
tail -n 5 /var/log/maillog
Mengirim email dengan Java di instance Anda
Hubungkan ke instance sendgrid-tutorial Anda menggunakan 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.
Membuat dan mengirim pesan email
Petunjuk berikut menggunakan library klien Java SendGrid untuk membuat dan mengirim pesan email melalui SendGrid. Anda dapat melihat contoh lengkapnya di GitHub.
Di terminal SSH Anda:
Jadilah superuser dan setel umask yang aman:
sudo su - umask 077Instal Java dan Maven:
apt -y update && apt -y install git-core openjdk-11-jdk mavenClone GitHub repo:
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.gitBuka kode sumber utama untuk contoh:
cd /root/java-docs-samples/compute/sendgrid/src/main/java/com/example/compute/sendgridBuka
SendEmailServelet.javauntuk mengedit.Ganti
your-sendgrid-api-keydengan kunci API untuk akun SendGrid Anda.Ganti
your-sendgrid-from-emaildengan alamat email yang ingin Anda gunakan untuk mengirim email.Ganti
destination-emaildengan alamat email yang ingin Anda kirimi email.
Buka direktori root kode contoh tersebut:
cd /root/java-docs-samples/compute/sendgridMembuat class Java dalam paket:
mvn clean packageBuka direktori
targetbaru:cd targetTetapkan izin yang memungkinkan Anda menjalankan file jar:
chmod +x compute-sendgrid-1.0-SNAPSHOT-jar-with-dependencies.jarMenjalankan pemilih versi Java alternatif:
update-alternatives --config javaPilih opsi
java-11-openjdk-amd64.Jalankan file Java:
java -jar compute-sendgrid-1.0-SNAPSHOT-jar-with-dependencies.jar
Mengirim email dengan Node.js di instance Anda
Untuk menjalankan contoh ini, Anda harus menginstal Node.js versi 7.6 atau yang lebih baru pada instance VM.[
Hubungkan ke instance sendgrid-tutorial Anda menggunakan 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.
Membuat dan mengirim pesan email
Di terminal SSH Anda:
Jadilah superuser dan setel umask yang aman:
sudo su - umask 077Perbarui repositori paket Anda:
Debian
apt updateCentOS
yum update -yInstal dependensi 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" -yInstal Node.js. Secara default, penginstalan juga akan menginstal 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 -Kemudian, instal Node.js:
yum -y install nodejsInstal klien SendGrid Node.js:
npm install sendgridGandakan repositori sampel
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.gitBuka direktori yang berisi contoh SendGrid:
cd nodejs-docs-samples/computeSalin file
sendgrid.js:cp sendgrid.js sendmail.jsBuka
sendmail.jsuntuk mengedit.Ganti
your-sendgrid-api-keydengan kunci API untuk akun SendGrid Anda.Ganti
from-email@example.comdengan alamat email yang ingin Anda gunakan untuk mengirim email.Ganti
to-email@example.comdengan alamat email yang ingin Anda kirimi email.
Jalankan program untuk mengirim pesan email melalui SendGrid:
node sendmail.js
Mengirim email dari server transpor edge Exchange
Anda dapat menyiapkan Microsoft Exchange untuk mengirim email keluar menggunakan SendGrid dengan mengonfigurasi konektor pengiriman keluar. Untuk mengetahui detailnya, lihat Men-deploy Microsoft Exchange Server 2016 di Compute Engine.
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
Untuk menghapus project:
- 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.
Menghapus instance Compute Engine
Untuk menghapus instance Compute Engine:
- In the Google Cloud console, go to the VM instances page.
-
Select the checkbox for
your
sendgrid-tutorialinstance. - To delete the instance, click More actions, click Delete, and then follow the instructions.
Langkah berikutnya
Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.