כדי לשפר את אבטחת האימייל ולהבטיח מסירה אמינה של אימיילים בכמויות גדולות, צריך לעבור מ-Mail API מדור קודם לשירות של ספק אימייל רגיל מצד שלישי שמשתמש ב-Simple Mail Transfer Protocol (SMTP), כמו SendGrid, Mailgun או Mailjet.
במדריך הזה מוסבר איך להעביר שירותים של דואר יוצא מ-Mail API לשירות אימייל מבוסס SMTP. אפשר להשתמש בהוראות האלה כדי לעבור לכל ספק אימייל של צד שלישי שמבוסס על SMTP, או להשתמש בסביבת זמן ריצה נתמכת אחרת. במדריך הזה לא מוסבר איך להעביר הודעות נכנסות שמשתמשות בחלופה של צד שלישי.
התקן SMTP מציע את היתרונות הבאים בהשוואה ל-Mail API מדור קודם של App Engine:
שירותים מבוססי SMTP משפרים את מסירת האימיילים כי הם מפחיתים את הסיכוי שהאימיילים יסומנו כספאם.
בשירותים שמבוססים על SMTP, אפשר לגשת לדוחות מפורטים של ניתוח נתונים על פתיחות של אימיילים, קליקים והחזרות. הדוחות האלה מספקים מידע שימושי על האינטראקציה של המשתמשים עם האימיילים שלכם.
יש לכם שליטה מלאה על המוניטין של השולח ועל אימות האימייל.
מגבלות שליחה יומיות מוגדלות בהשוואה ל-Mail API מדור קודם, עם גישה לתכונות מתקדמות כמו בדיקות A/B, פילוח ותבניות.
סקירה כללית של תהליך המיגרציה
תהליך ההעברה כולל את השלבים הבאים:
- מגדירים את שירות האימייל מבוסס ה-SMTP כדי לקבל את פרטי הכניסה ל-SMTP.
- מאמתים את הזהות של השולח כדי לבצע אימות באמצעות הדומיין או כתובת האימייל.
- מגדירים את קובצי המקור עם פרטי הכניסה ל-SMTP ושיטת השליחה, ואז פורסים את האפליקציה.
- בודקים את האפליקציה כדי לוודא שפונקציית האימייל פועלת.
הגדרת שירות אימייל מבוסס SMTP
מגדירים חשבון אצל ספק אימייל רגיל של צד שלישי שמשתמש ב-SMTP, כמו SendGrid, Mailgun או Mailjet, ומקבלים מהספק את הפרטים הבאים:
מארח SMTP: כתובת שרת ה-SMTP שמשמשת לשליחת דואר. לדוגמה,
smtp.sendgrid.netאוexample.mailjet.com.יציאה: מספר היציאה של החיבור. לדוגמה,
587להצפנת TLS.שם משתמש: שם המשתמש שלכם לכניסה ל-SMTP בחשבון.
סיסמה או מפתח API: הסיסמה של החשבון או מפתח API, שמשמש כסיסמה לחיבור SMTP. אצל ספקים מסוימים, כמו SendGrid, שם המשתמש הוא ערך קבוע כמו
apikey, ומפתח ה-API משמש כסיסמה.
אימות הזהות של השולח
כדי למנוע ספאם, כל שירותי האימייל דורשים שתאמתו שאתם הבעלים של כתובת האימייל או הדומיין שמהם אתם שולחים אימיילים. בשלב הזה צריך בדרך כלל להוסיף פרטי DNS ספציפיים, כמו רשומות CNAME, לדף ניהול ה-DNS של מארח הדומיין.
כדי להמשיך בהגדרת האפליקציה, צריך לפעול לפי ההוראות של הספק כדי לאמת את זהות השולח.
כדי להוסיף רשומות DNS למארח הדומיין, פועלים לפי השלבים הבאים:
- נכנסים לחשבון בשירות של ספק ה-DNS.
- עוברים לדף של ניהול ה-DNS של הדומיין.
מוסיפים את רשומות ה-CNAME בדיוק כמו שהן מופיעות אצל ספק שירות האימייל. לכל רשומה, מבצעים את הפעולות הבאות:
- בשדה Name (שם) או Host (מארח), מזינים את פרטי המארח.
- בשדה נקודות או ערך, מזינים את הערך.
יכול להיות שיעברו כמה שעות עד שהשינויים ב-DNS ייכנסו לתוקף. אם האימות נכשל, כדאי לחכות קצת ולנסות שוב.
הגדרת קובצי המקור
כדי לכלול את הפונקציונליות של SMTP, פועלים לפי השלבים הבאים:
מריצים את הפקודה הבאה כדי להתקין את Maven:
sudo apt install mavenכדי לעבור לשירות SMTP, מוסיפים את הקוד הבא לקובץ
pom.xml:מוסיפים את הגרסה של יחסי התלות
appengine-api-1.0-sdk:<dependency> <groupId>com.google.appengine</groupId> <artifactId>appengine-api-1.0-sdk</artifactId> <version>5.0.0</version> </dependency>מעדכנים את מזהה הפרויקט:
<configuration> <deploy.projectId>PROJECT-ID</deploy.projectId> <deploy.version>1</deploy.version> </configuration>מחליפים את PROJECT-ID במזהה הפרויקט ב- Google Cloud .
מוסיפים את משתני הסביבה הבאים לקובץ
appengine-web.xmlכדי לכלול את הגדרות שולח ה-SMTP:... <runtime>RUNTIME</runtime> <service>default</service> <threadsafe>true</threadsafe> <app-engine-apis>true</app-engine-apis> <env-variables> <!-- This is the master switch to enable the SMTP service.--> <env-var name="APPENGINE_USE_SMTP_MAIL_SERVICE" value="true" /> <!-- SMTP Server Configuration --> <!-- The server address from your mail provider.--> <env-var name="APPENGINE_SMTP_HOST" value="SMTP_HOST" /> <!-- The recommended port for TLS connections. --> <env-var name="APPENGINE_SMTP_PORT" value="587" /> <!-- The username for your SMTP login. --> <env-var name="APPENGINE_SMTP_USER" value="SMTP_USER" /> <!-- The API key or password --> <env-var name="APPENGINE_SMTP_PASSWORD" value="SMTP_PASSWORD" /> <!-- Use TLS for a secure connection. --> <env-var name="APPENGINE_SMTP_USE_TLS" value="true" /> </env-variables> ... </appengine-web-app>מחליפים את מה שכתוב בשדות הבאים:
- RUNTIME: גרסת זמן ריצה של Java נתמכת.
- SMTP_HOST: כתובת המארח של SMTP. לדוגמה,
smtp.sendgrid.netאוexample.mailjet.com. - SMTP_USER: שם המשתמש שלכם להתחברות ל-SMTP. לדוגמה,
apiKey. - SMTP_PASSWORD: הסיסמה או מפתח ה-API שקיבלתם מספק האימייל של הצד השלישי. כדי לשפר את האבטחה, מומלץ להשתמש ב-Secret Manager כדי לאחסן את מפתח ה-API במקום להציב אותו בקובץ
appengine-web.xml.
מריצים את הפקודה הבאה כדי לפרוס את האפליקציה:
mvn package appengine:deploy
בדיקת האפליקציה
ההעברה הצליחה אם אתם מצליחים לפרוס את האפליקציה ללא שגיאות. כדי לוודא ששירות הדואר שלכם פועל, פועלים לפי השלבים הבאים:
- מפעילים את החלק באפליקציה ששולח אימייל.
- בודקים את Logs Explorer כדי לוודא שאין שגיאות שקשורות לקריאות ל-API או לניסיון החיבור ל-SMTP.
- נכנסים לחשבון אצל ספק האימייל של הצד השלישי (למשל Mailgun, Mailjet, SendGrid) ובודקים את פיד הפעילות, היומנים או מרכז הבקרה של המשלוחים. האימייל לבדיקה אמור להופיע בפיד עם סטטוס מסירה שמסומן כ
Processed,Deliveredאו דומה.