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
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang 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.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
- Di konsol Google Cloud, buka halaman Buat instance.
-
Tetapkan Name ke
sendgrid-tutorial
. - Di bagian Boot disk, klik Ubah untuk mulai mengonfigurasi boot disk Anda.
- Di tab Public images, pilih a Debian or CentOS image version.
- Klik Pilih.
- Untuk membuat VM, klik Buat.
-
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.
Menghubungkan ke instance sendgrid-tutorial menggunakan SSH
- Di konsol Google Cloud, buka halaman Instance VM.
- Di daftar instance virtual machine, klik SSH di baris instance yang ingin Anda hubungkan.
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 077
Instal 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.cf
untuk mengedit. Misalnya, untuk menggunakan editor teksnano
, masukkan perintah berikut:nano /etc/postfix/main.cf
Perbarui 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 = noanonymous
Baris 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-key
dengan kunci API yang Anda buat.echo [smtp.sendgrid.net]:2525 apikey:your-api-key >> /etc/postfix/sasl_passwd
Gunakan utilitas
postmap
untuk menghasilkan file.db
:postmap /etc/postfix/sasl_passwd
Verifikasi 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_passwd
Tetapkan izin pada file
.db
Anda 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 restart
CentOS
postfix reload
Instal paket
mailutils
ataumailx
:Debian
apt -y install mailutils
CentOS
yum install mailx -y
Kirim 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
status
dan kode respons server yang berhasil(250)
:Debian
tail -n 5 /var/log/syslog
CentOS
tail -n 5 /var/log/maillog
Mengirim email dengan Java di instance Anda
Menghubungkan ke instance sendgrid-tutorial menggunakan SSH
- Di konsol Google Cloud, buka halaman Instance VM.
- Di daftar instance virtual machine, klik SSH di baris instance yang ingin Anda hubungkan.
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:
Menjadi superuser dan menetapkan umask yang aman:
sudo su - umask 077
Instal Java dan Maven:
apt -y update && apt -y install git-core openjdk-11-jdk maven
Clone GitHub repo:
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Buka kode sumber utama untuk contoh:
cd /root/java-docs-samples/compute/sendgrid/src/main/java/com/example/compute/sendgrid
Buka
SendEmailServelet.java
untuk mengedit.Ganti
your-sendgrid-api-key
dengan kunci API untuk akun SendGrid Anda.Ganti
your-sendgrid-from-email
dengan alamat email yang ingin Anda gunakan untuk mengirim email.Ganti
destination-email
dengan alamat email yang ingin Anda kirimi email.
Buka direktori root kode contoh tersebut:
cd /root/java-docs-samples/compute/sendgrid
Membuat class Java dalam paket:
mvn clean package
Buka direktori
target
baru:cd target
Tetapkan izin yang memungkinkan Anda menjalankan file jar:
chmod +x compute-sendgrid-1.0-SNAPSHOT-jar-with-dependencies.jar
Menjalankan pemilih versi Java alternatif:
update-alternatives --config java
Pilih 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.[
Menghubungkan ke instance sendgrid-tutorial menggunakan SSH
- Di konsol Google Cloud, buka halaman Instance VM.
- Di daftar instance virtual machine, klik SSH di baris instance yang ingin Anda hubungkan.
Membuat dan mengirim pesan email
Di terminal SSH Anda:
Menjadi superuser dan menetapkan umask yang aman:
sudo su - umask 077
Perbarui repositori paket Anda:
Debian
apt update
CentOS
yum update -y
Instal dependensi 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
Instal 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 nodejs
CentOS
curl --silent --location https://rpm.nodesource.com/setup_14.x | bash -
Kemudian, instal Node.js:
yum -y install nodejs
Instal klien SendGrid Node.js:
npm install sendgrid
Gandakan repositori sampel
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Buka direktori yang berisi contoh SendGrid:
cd nodejs-docs-samples/compute
Salin file
sendgrid.js
:cp sendgrid.js sendmail.js
Buka
sendmail.js
untuk mengedit.Ganti
your-sendgrid-api-key
dengan kunci API untuk akun SendGrid Anda.Ganti
from-email@example.com
dengan alamat email yang ingin Anda gunakan untuk mengirim email.Ganti
to-email@example.com
dengan 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:
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Menghapus instance Compute Engine
Untuk menghapus instance Compute Engine:
- Di konsol Google Cloud, buka halaman Instance VM.
-
Pilih kotak centang untuk
instance
sendgrid-tutorial
Anda. - Untuk menghapus instance, klik Tindakan lainnya, klik Hapus, lalu ikuti petunjuknya.
Langkah berikutnya
Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.