במדריך הזה נסביר איך להשתמש ב-SendGrid כדי לשלוח אימייל מאפליקציה שפועלת במכונה וירטואלית (VM) של Compute Engine.
מטרות
- שימוש ב-SendGrid עם Postfix במכונה של Compute Engine.
- שימוש ב-SendGrid בקוד Java שפועל במכונה של Compute Engine.
- שימוש ב-SendGrid בקוד Node.js שפועל במכונה של Compute Engine.
- שימוש ב-SendGrid עם שרת תעבורה של Microsoft Exchange edge במכונה של Compute Engine.
מידע נוסף על הגדרת SendGrid זמין במסמכי המפתחים של SendGrid.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
- Compute Engine
כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
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.
- נכנסים לדף Create an instance במסוף Google Cloud .
-
מגדירים את Name לערך
sendgrid-tutorial. - בקטע OS and Storage לוחצים על Change כדי להתחיל בהגדרת דיסק האתחול.
- בכרטיסייה תמונות ציבוריות, בוחרים גרסת תמונה של Debian או CentOS.
- לוחצים על בחירה.
- כדי ליצור את המכונה הווירטואלית (VM), לוחצים על האפשרות Create.
-
להירשם לשירות האימייל SendGrid דרך Google Cloud Marketplace. חשוב לשמור את פרטי הכניסה לחשבון SendGrid SMTP, כולל שם המשתמש, הסיסמה ושם המארח. שם המשתמש והסיסמה שלכם ב-SMTP זהים לאלה שבהם השתמשתם כשנרשמתם לשירות. שם המארח של SendGrid הוא
smtp.sendgrid.net. - יוצרים מפתח API:
- נכנסים ל-SendGrid ועוברים אל Settings (הגדרות) > API Keys (מפתחות API).
- יוצרים מפתח API.
- בוחרים את ההרשאות של המפתח. לפחות הרשאת שליחת אימייל צריכה להיות מוגדרת למפתח כדי לשלוח אימייל.
- לוחצים על שמירה כדי ליצור את המפתח.
- המערכת של SendGrid יוצרת מפתח חדש. זהו העותק היחיד של המפתח, לכן חשוב להעתיק אותו ולשמור אותו לשימוש מאוחר יותר.
שליחת דואר מהמופע באמצעות Postfix
כדי להתחבר למופע sendgrid-tutorial ולהפעיל את SendGrid עם Postfix, צריך לבצע את השלבים הבאים.
מתחברים למכונה sendgrid-tutorial באמצעות SSH
- נכנסים לדף VM instances במסוף Google Cloud .
- ברשימת המכונות הווירטואליות, לוחצים על SSH בשורה של המכונה שרוצים להתחבר אליה.
הגדרת SendGrid כשרת SMTP עם Postfix
מריצים את הפקודות הבאות בטרמינל SSH כדי להשתמש ב-SendGrid כשרת SMTP עם Postfix.
להפוך למשתמש על:
sudo su -הגדרת umask בטוח:
umask 077מתקינים את סוכן העברת האימייל Postfix:
Debian
apt update && apt -y install postfix libsasl2-modules
CentOS
yum install postfix cyrus-sasl-plain cyrus-sasl-md5 -y
אם מוצגת בקשה, בוחרים בהגדרה Local Only (מקומי בלבד) ומאשרים את שם הדומיין שמוגדר כברירת מחדל.
משנים את אפשרויות ההגדרה של Postfix. פותחים את
/etc/postfix/main.cfלעריכה. לדוגמה, כדי להשתמש בעורך הטקסטnano, מזינים את הפקודה הבאה:nano /etc/postfix/main.cfמעדכנים את הקובץ:
מוסיפים הערה לשורות הבאות:
# default_transport = error # relay_transport = error
מוסיפים את השורות הבאות לסוף הקובץ:
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השורות שלמעלה אוכפות תמיכה ב-SSL/TLS ומגדירות אימות SMTP לבקשות האלה. מודול פשוט של שכבת גישה ואבטחה (SASL) מטפל באימות בהגדרת Postfix.
שומרים את הקובץ וסוגרים אותו.
יוצרים את מפת הסיסמאות של SASL באמצעות מפתח ה-API שיצרתם בקטע לפני שמתחילים. מחליפים את
your-api-keyבמפתח ה-API שיצרתם.echo [smtp.sendgrid.net]:2525 apikey:your-api-key >> /etc/postfix/sasl_passwd
משתמשים בכלי
postmapכדי ליצור קובץ.db:postmap /etc/postfix/sasl_passwdמוודאים שיש לכם קובץ
.db:ls -l /etc/postfix/sasl_passwd*-rw------- 1 root root ... /etc/postfix/sasl_passwd -rw------- 1 root root ... /etc/postfix/sasl_passwd.db
מסירים את הקובץ שמכיל את פרטי הכניסה כי הוא כבר לא נחוץ:
rm /etc/postfix/sasl_passwdמגדירים את ההרשאות בקובץ
.dbומוודאים שהקובץ השני הוסר:chmod 600 /etc/postfix/sasl_passwd.db ls -la /etc/postfix/sasl_passwd*-rw------- 1 root root ... /etc/postfix/sasl_passwd.db
טוענים מחדש את ההגדרות כדי לטעון את הפרמטרים ששונו:
Debian
/etc/init.d/postfix restartCentOS
postfix reloadמתקינים את החבילה
mailutilsאוmailx:Debian
apt -y install mailutils
CentOS
yum install mailx -yשולחים אימייל לבדיקה:
echo 'message' | mail -s subject email@example.com
מחליפים את מה שכתוב בשדות הבאים:
message: תוכן האימייל.subject: נושא האימייל.email@example.com: כתובת האימייל שאליה רוצים לשלוח הודעה.
מחפשים ביומני המערכת שורת סטטוס שמכילה את הערך
statusואת קוד התגובה של השרת(250):Debian
tail -n 5 /var/log/syslogCentOS
tail -n 5 /var/log/maillog
שליחת אימייל באמצעות Java במופע
מתחברים למכונה sendgrid-tutorial באמצעות SSH
- נכנסים לדף VM instances במסוף Google Cloud .
- ברשימת המכונות הווירטואליות, לוחצים על SSH בשורה של המכונה שרוצים להתחבר אליה.
איך כותבים ושולחים הודעת אימייל
ההוראות הבאות מתייחסות לשימוש ב-Java client library של SendGrid כדי ליצור ולשלוח הודעת אימייל דרך SendGrid. אפשר לראות את הדוגמה המלאה ב-GitHub.
בטרמינל ה-SSH:
הופכים למשתמש על ומגדירים umask בטוח:
sudo su - umask 077מתקינים Java ו-Maven:
apt -y update && apt -y install git-core openjdk-11-jdk mavenמשכפלים את מאגר GitHub:
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.gitעוברים לקוד המקור הראשי של הדוגמה:
cd /root/java-docs-samples/compute/sendgrid/src/main/java/com/example/compute/sendgridפותחים את
SendEmailServelet.javaלעריכה.מחליפים את הערך
your-sendgrid-api-keyבמפתח ה-API של חשבון SendGrid.מחליפים את
your-sendgrid-from-emailבכתובת האימייל שממנה רוצים לשלוח את ההודעה.מחליפים את
destination-emailבכתובת האימייל שאליה רוצים לשלוח את ההודעה.
עוברים לספריית הבסיס של הקוד לדוגמה:
cd /root/java-docs-samples/compute/sendgridאורזים את מחלקת Java:
mvn clean packageעוברים לספרייה החדשה של
target:cd targetמגדירים הרשאות שמאפשרות להריץ את קובץ ה-JAR:
chmod +x compute-sendgrid-1.0-SNAPSHOT-jar-with-dependencies.jarמריצים את בורר הגרסאות החלופיות של Java:
update-alternatives --config javaבוחרים באפשרות
java-11-openjdk-amd64.מריצים את קובץ ה-Java:
java -jar compute-sendgrid-1.0-SNAPSHOT-jar-with-dependencies.jar
שליחת אימייל באמצעות Node.js במופע
כדי להריץ את הדוגמה הזו, צריך להתקין את Node.js בגרסה 7.6 ואילך במכונה הווירטואלית.
מתחברים למכונה sendgrid-tutorial באמצעות SSH
- נכנסים לדף VM instances במסוף Google Cloud .
- ברשימת המכונות הווירטואליות, לוחצים על SSH בשורה של המכונה שרוצים להתחבר אליה.
איך כותבים ושולחים הודעת אימייל
בטרמינל ה-SSH:
הופכים למשתמש על ומגדירים umask בטוח:
sudo su - umask 077מעדכנים את מאגרי החבילות:
Debian
apt updateCentOS
yum update -yמתקינים את יחסי התלות של 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" -yמתקינים את Node.js. כברירת מחדל, ההתקנה כוללת גם את 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 -לאחר מכן, מתקינים את Node.js:
yum -y install nodejsמתקינים את לקוח Node.js של SendGrid:
npm install sendgridמשכפלים את המאגר לדוגמה:
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.gitעוברים לספרייה שמכילה את הדוגמה של SendGrid:
cd nodejs-docs-samples/computeמעתיקים את הקובץ
sendgrid.js:cp sendgrid.js sendmail.jsפותחים את
sendmail.jsלעריכה.מחליפים את הערך
your-sendgrid-api-keyבמפתח ה-API של חשבון SendGrid.מחליפים את
from-email@example.comבכתובת האימייל שממנה רוצים לשלוח אימייל.מחליפים את
to-email@example.comבכתובת האימייל שאליה רוצים לשלוח אימייל.
מריצים את התוכנית כדי לשלוח הודעת אימייל דרך SendGrid:
node sendmail.js
שליחת אימייל משרת Exchange Edge Transport
אתם יכולים להגדיר את Microsoft Exchange לשליחת אימייל יוצא באמצעות SendGrid על ידי הגדרת מחבר לשליחה יוצאת. פרטים נוספים זמינים במאמר בנושא פריסת Microsoft Exchange Server 2016 ב-Compute Engine.
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
מחיקת הפרויקט
הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך הזה.
כדי למחוק את הפרויקט:
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
מחיקת מכונה של Compute Engine
כדי למחוק מכונה של Compute Engine:
- נכנסים לדף VM instances במסוף Google Cloud .
-
מסמנים את התיבה
sendgrid-tutorialליד המכונה. - כדי למחוק את המכונה, לוחצים על More actions ואז על Delete ופועלים לפי ההוראות.
המאמרים הבאים
כדאי להעמיק את הקריאה ולהכיר דוגמאות לארכיטקטורות, תרשימים ושיטות מומלצות בנושאי Google Cloud. כל אלה זמינים במרכז הארכיטקטורה של Cloud.