בדקו קודם את ארגז החול, כי הוא קובע אם זה יעבוד בכלל. חשבון SES חדש מתחיל בארגז החול בכל אזור, וכל עוד הוא נמצא שם, SES מוסר הודעות רק לכתובות מאומתות, לדומיינים מאומתים ולסימולטור תיבות הדואר שלו. בנוסף, קיימת מגבלה של 200 הודעות בכל 24 שעות ושל הודעה אחת בשנייה.
אימות כתובת של Email Spam Tester לא יעקוף את המגבלה. SES מאמת נמען באמצעות שליחת אימייל עם קישור, ומכיוון שהכתובות שלנו מקבלות הודעה אחת בלבד לפני שהן נסגרות, אימייל האימות יהיה ההודעה שתנצל את הכתובת. לכן, בפועל נדרשת גישת ייצור באזור שממנו אתם שולחים. AWS מתחייבת לתגובה ראשונית לבקשה הזאת בתוך 96 שעות.
מכיוון שמצב ארגז החול מוגדר בנפרד לכל אזור, חשבון שנמצא בייצור ב-eu-west-1 עדיין יכול להיות בארגז החול ב-us-east-1. גם זהויות מוגדרות בנפרד לכל אזור, ולכל אחת רשומות DKIM משלה.
קבלו כתובת ושלחו הודעה אחת
פתחו את email-spam-tester.com והעתיקו את הכתובת שמוצגת בו. אין צורך בחשבון או במפתח API, והכתובת נראית כמו test- ואחריו עשרים תווים ב-t.email-spam-tester.com. יש לכם שעה אחת והודעה אחת, לכן הכינו את פקודת השליחה לפני שתבקשו את הכתובת.
השליחה המינימלית ביותר מתבצעת דרך CLI, בהתאמה מהדוגמה של AWS בדף הדיירים של SES, ללא הדגלים של הדייר ושל ערכת התצורה:
aws sesv2 send-email \
--from-email-address "sender@yourdomain.com" \
--destination "ToAddresses=test-xxxxxxxxxxxxxxxxxxxx@t.email-spam-tester.com" \
--content "Simple={Subject={Data='Test Subject',Charset=utf-8},Body={Text={Data='Test email body',Charset=utf-8}}}"
הכתובת בשדה From חייבת להיות זהות מאומתת, גם בסביבת הייצור. גוף טקסט בלבד כמו זה מספיק כדי לבדוק את האימות ואת כתובת ה-IP, אבל כמעט אינו מספק מידע על התוכן. כדי לקבל תוצאה אמיתית, שלחו את ההודעה שהיישום שלכם שולח בפועל, כולל חלק ה-HTML והכותרות שלה. השתמשו גם באותו נתיב קוד, בין אם זה send_email של boto3, ספריית SMTP או משהו אחר. אם השליחות בסביבת הייצור משתמשות בערכת תצורה, הוסיפו כאן גם --configuration-set-name, כדי שהבדיקה תעבור דרך אותן הגדרות.
בדיקת המיקום בתיבה משתלבת באותה פקודה. תיבות הדואר של הספקים מתווספות אל ToAddresses לצד כתובת הבדיקה, והסמן שלה מתווסף לנתונים של Subject. קריאה אחת ממלאת שני דוחות, והשני מציג את התיקייה שאליה הגיעה ההודעה ב-Gmail, Outlook, Yahoo ובספקים אחרים. גם תיבות הדואר האלה אינן מאומתות, לכן גם פעולה זו דורשת גישת ייצור.
יש גם אפשרות דרך המסוף. פתחו את Configuration > Identities, לחצו על הזהות ובחרו Send test email. בחרו Raw אם אתם רוצים להדביק הודעת MIME מלאה עם כותרות משלכם. AWS מתארת את המסוף ככלי שבדרך כלל משתמשים בו רק להודעות בדיקה, והתיעוד אינו מתאר קידומת בדיקה או שינוי אחר בהודעה. בסביבת ה-sandbox, השדה Custom recipient דורש כתובת מאומתת, מה שמחזיר אתכם לבעיה שלמעלה.
איך נראית זהות SES חדשה בדוח
מהדוח · אימות
- SPFעברלא תואםה-MAIL FROM הוא תת-דומיין של amazonses.com, ולא של הדומיין שלכם.
- DKIMעברתואםEasy DKIM חותם על כל הודעה במפתח של 2048 סיביות בדומיין שלכם.
- DMARCעברעובר על סמך חתימת DKIM תואמת, לאחר שתפרסמו רשומת DMARC.
זהות SES שמוגדרת כברירת מחדל: SPF עובר, אבל עבור amazonses.com. MAIL FROM מותאם הוא מה שיוצר את ההתאמה.
DKIM. Easy DKIM הוא ברירת המחדל לזהויות דומיין, והוא חותם על כל הודעה במפתח של 2048 סיביות. ההגדרה כוללת שלוש רשומות CNAME בשם token._domainkey.yourdomain.com, שמצביעות אל token.dkim.<region>.amazonses.com. אם בדיקת DKIM נכשלת, בדקו קודם שני דברים: האם עדכון ה-DNS הושלם (AWS מאפשרת עד 72 שעות), והאם ספק ה-DNS הוסיף את הדומיין לשם ויצר token._domainkey.yourdomain.com.yourdomain.com. עם BYODKIM מפרסמים במקום זאת רשומת TXT אחת ב-selector שלכם. במהלך מעבר בין השניים, SES עשוי לשלוח ללא חתימה כלל, והדוח מסמן זאת כ-DKIM חסר. בודק ה-DKIM מקבל את ה-token בתור ה-selector.
SPF ונתיב ההחזרה. כברירת מחדל, SES משתמש בתת-דומיין של amazonses.com בתור MAIL FROM. SPF עובר, אבל עבור amazonses.com, ולכן הדוח מציג את SPF כלא תואם ל-From שלכם. כאשר DKIM תואם, המחיר לכך קטן (2 נקודות בסולם של 100 נקודות במקום 5), ו-DMARC עדיין עובר על סמך DKIM. כדי ליצור התאמה גם עבור SPF, הגדירו תת-דומיין MAIL FROM מותאם עם רשומת MX אחת בדיוק, 10 feedback-smtp.<region>.amazonses.com, ורשומת TXT v=spf1 include:amazonses.com ~all. אל תבחרו תת-דומיין שמקבל דואר, ואל תכללו aspf=s ברשומת ה-DMARC שלכם, כי לפי AWS התאמת SPF עם SES אינה פועלת תחת מדיניות SPF מחמירה.
DMARC. SES אינו מפרסם עבורכם רשומה. הדוגמה של AWS היא v=DMARC1;p=quarantine;rua=mailto:my_dmarc_report@example.com. אם אף אחד עדיין לא קורא את דוחות ה-DMARC שלכם, מומלץ להתחיל עם p=none ולהחמיר בהמשך. בודק ה-DMARC מציג את ההגדרה הקיימת, ו-DMARC fail מסביר את התקלות הנפוצות.
ערכים לדוגמה. העתיקו את הערכים האמיתיים מהחשבון שלכם.
| שם | סוג | ערך | למה הוא משמש | העתיקו |
|---|---|---|---|---|
| token. | CNAME | token. | Easy DKIM. שלוש רשומות כאלה, אחת לכל token. | |
| mail. | MX | 10 feedback-smtp. | MAIL FROM מותאם. רשומת MX אחת בדיוק, בתת-דומיין שאינו מקבל דואר. | |
| mail. | TXT | v= | SPF עבור ה-MAIL FROM המותאם, כדי ש-SPF יתאים ל-From שלכם. | |
| _dmarc. | TXT | v= | DMARC, הדוגמה של AWS. התחילו עם p=none אם אף אחד עדיין לא קורא את הדוחות, ואל תכללו aspf=s. |
List-Unsubscribe. SES מוסיף List-Unsubscribe ו-List-Unsubscribe-Post רק כששולחים עם ListManagementOptions שמצביע לרשימת אנשי קשר ולנושא. גם אז, הדבר נעשה רק בהודעות לנמען יחיד, רק עם Easy DKIM, ו-SES דורס כל כותרת ביטול הרשמה שהגדרתם בעצמכם. כל שאר ההודעות נשלחות ללא כותרות ביטול הרשמה כלל. עבור ניוזלטר, המשמעות היא כישלון בבדיקת List-Unsubscribe ובבדיקת ביטול הרשמה בלחיצה אחת, אלא אם תוסיפו אותן בעצמכם. מאז מרץ 2024, API v2 מקבל כותרות מותאמות ללא MIME גולמי. בהתבסס על הפוסט של AWS בנושא ביטול הרשמה בלחיצה אחת, שתי הכותרות נראות כך:
"Headers": [
{ "Name": "List-Unsubscribe",
"Value": "<https://yourdomain.com/unsub?address=x&topic=x>, <mailto:unsubscribe@yourdomain.com>" },
{ "Name": "List-Unsubscribe-Post",
"Value": "List-Unsubscribe=One-Click" }
]
לאחר מכן, נקודת הקצה שלכם צריכה לטפל בבקשת POST. איפוסי סיסמה וקבלות ללא כותרות רשימה הם מקרה אחר, ועבורם הדוח מסמן את קבוצת השולחים בכמות גדולה כ-skipped. מידע נוסף על הכותרת זמין בעמוד List-Unsubscribe שלנו.
כתובות IP ורשימות חסימה
חשבונות חדשים שולחים מכתובות IP המשותפות עם משתמשי SES אחרים, ו-AWS ממליצה להישאר איתן אלא אם נפח השליחה שלכם גדול וסדיר. הדוח בודק את כתובת ה-IP השולחת מול 21 רשימות חסימה, ובכתובות משותפות, התאמה לרשימה שייכת למאגר. כתובות IP ייעודיות זמינות בתצורת Standard, שבה אתם מבצעים את החימום ידנית, או בתצורת Managed, שבה SES מטפלת בחימום, ובמקרה זה רישום ברשימת חסימה משויך לשליחה שלכם. כל כתובת IP שתמצאו בכרטיסייה Headers יכולה לעבור ישירות אל בודק רשימות החסימה.
AWS עוקבת גם אחר החשבון שלכם. בשאלות הנפוצות שלה בנושא אכיפה נאמר שיש לבדוק מול כתובות אמיתיות שיכולות לקבל דואר, או מול הסימולטור, כדי שנמענים מומצאים לא יעלו את שיעור ההחזרות. חשבון מועבר לבדיקה כאשר שיעור ההחזרות מגיע ל-5% או שיעור התלונות מגיע ל-0.1%.
תוכנית התיקון בתחתית מפרטת עד שמונה שינויים, כל אחד עם רשומת ה-DNS להעתקה, אם נדרשת רשומה כזו. הנקודות לצד כל תיקון הן הקנסות הנוכחיים של הבדיקות שעליהן הוא משפיע. המודל בוחר תיקונים ומסביר אותם. הוא לא קובע את הניקוד שלהם. אם שמה של בדיקה אינו אומר לכם דבר, התיעוד מסביר כל אחת מ-42 הבדיקות.
מקורות של AWS
גישה לארגז החול ולייצורdocs.aws.amazon.com ↗Easy DKIMdocs.aws.amazon.com ↗MAIL FROM מותאם אישיתdocs.aws.amazon.com ↗DMARC עם SESdocs.aws.amazon.com ↗ניהול מינוייםdocs.aws.amazon.com ↗sesv2 send-emaildocs.aws.amazon.com ↗שאלות
האם אפשר לבדוק מתוך סביבת ה-sandbox של SES?
לא באמצעות הכתובת שלנו. בסביבת ה-sandbox, SES מוסר הודעות רק לנמענים מאומתים, ואימות הכתובת שלנו ינצל את ההודעה היחידה שהיא מקבלת. בקשו גישה לסביבת הייצור עבור ה-Region, ובינתיים בדקו את הרשומות שלכם באמצעות כלי הבדיקה החינמיים של DKIM, SPF ו-DMARC.
האם סימולטור תיבות הדואר של SES מספק את אותו מידע?
לא. הוא מראה כיצד SES מטפל בהחזרה, בתלונה או במסירה, והחיוב עליו זהה לשליחה רגילה. הוא לא מנתח את הכותרות, האימות או התוכן שלכם.
האם צריך להוסיף את SES לרשומת ה-SPF של דומיין הבסיס שלי?
השרתים המקבלים בודקים SPF מול דומיין ה-MAIL FROM, שהוא כברירת מחדל תת-דומיין של amazonses.com או תת-הדומיין המותאם אישית שלכם עבור MAIL FROM. רשומת ה-SPF עבור SES צריכה להימצא בתת-הדומיין הזה, ולפי הדף של MAIL FROM, לא נדרשת רשומה בדומיין הבסיס.