בדיקת SPF, ‏DKIM ו-DMARC

לפני שהדוא״ל שלכם נוחת בספאם, בודקים מה השרתים המקבלים קוראים ב-DNS: רשומת SPF אחת תקינה בתוך 10 השאילתות שלה, מדיניות DMARC שעושה משהו, ומפתחות DKIM ארוכים מספיק. הדפדפן שואל ישירות resolvers ציבוריים; שום דבר לא עובר דרך ANAROQ ולא נשאר אצלנו. מתחת לבדיקה כותבים רשומות SPF ו-DMARC מקומית.

הדומיין שבכתובת השולח (From), למשל example.com.
ערך ה-s= בכותרת DKIM-Signature של הודעה ששלחתם, למשל google או s1. כמה selectors מפרידים בפסיקים.

מה יוצא מהדפדפן

כשלוחצים על בדיקת DNS של דוא״ל, הדפדפן שולח שאילתות DNS לדומיין שהזנתם, לשם ה-_dmarc שלו, לשמות ה-selectors של DKIM שהזנתם ולשמות שרשומת ה-SPF שלו כוללת, ישירות ל-Cloudflare 1.1.1.1, ול-Google Public DNS רק לשאילתה ש-Cloudflare 1.1.1.1 לא עונה עליה. כמו בכל בקשה, הם רואים גם את כתובת ה-IP שלכם. שום דבר לא נשלח לפני הלחיצה.

השמות לא נשלחים ל-ANAROQ, לא נשמרים, לא נכנסים לקישור ולא נשלחים לאנליטיקה. המחוללים שלמטה לא שולחים דבר.

כתיבת רשומות SPF ו-DMARC

המחוללים האלה רצים בדפדפן ולא שולחים דבר. פרסמו את התוצאה אצל ספק ה-DNS כרשומת TXT, ואז בדקו שוב למעלה.

רשומת SPF

בחרו את כל מה ששולח דוא״ל בשם הדומיין שלכם. לדומיין יש רשומת SPF אחת בדיוק: אם כבר יש לכם אחת, אחדו אליה במקום להוסיף שנייה.

שירותי שליחהדוגמאות בסדר אלפביתי, לא המלצה. כל include הוא זה שבתיעוד המקושר, נבדק ב-2026-10-18; אם התיעוד משתנה, הוא הקובע.
השרתים שלכם
כתובות או טווחים של שרתים ששולחים, למשל 203.0.113.10 או 198.51.100.0/24.
למשל 2001:db8::25 או 2001:db8::/48.
דוא״ל מכל שרת אחר
רשומת TXT ב-@ (הדומיין עצמו)
v=spf1 -all

לא נבחר דבר: זו הרשומה של דומיין שלא שולח דוא״ל. היא לא עולה אף שאילתה.

רשומת DMARC, שלב אחר שלב

‏DMARC אומר לשרתים המקבלים מה לעשות בדוא״ל שנכשל גם בהתאמת SPF וגם בהתאמת DKIM, ולאן לשלוח דוחות. מתקדמים שלב אחד בכל פעם, ורק כשהדוחות מראים שכל הדוא״ל שלכם עובר.

שלב
תיבה לדוחות המצטברים, למשל [email protected]. תיבה בדומיין אחר צריכה אישור של הדומיין הזה.
רשומת TXT ב-_dmarc
v=DMARC1; p=none

הבא: קראו את הדוחות, הוסיפו ל-SPF או ל-DKIM את השירותים שנכשלים, ואז עברו ל-quarantine.

מה הכלי עושה

הכלי קורא את רשומות אימות הדוא״ל של דומיין מ-resolvers ציבוריים של DNS-over-HTTPS, מהדפדפן שלכם: רשומת ה-SPF וכל רשומה שהיא כוללת, מדיניות ה-DMARC, מפתחות ה-DKIM של ה-selectors שתזינו ורשומות ה-MX. הוא מדווח על מה שגורם לשרתים המקבלים להתייחס לדוא״ל שלכם כלא מאומת: יותר מרשומת SPF אחת, יותר מ-10 שאילתות DNS, ‏+all, מדיניות DMARC חסרה או לניטור בלבד, ומפתחות DKIM חסרים או קצרים. שני מחוללים כותבים רשומות SPF ו-DMARC מקומית.

איך זה עובד

  1. הזינו את הדומיין שבכתובת השולח, ואת ה-selectors של DKIM שאתם מכירים (ערך ה-s= בכותרת DKIM-Signature של הודעה ששלחתם).
  2. קראו את ההודעה: הלחיצה שולחת את שמות ה-DNS של הבדיקה ל-resolvers שמופיעים בה.
  3. לחצו על בדיקת DNS של דוא״ל. ה-includes של SPF נבדקים רמה אחר רמה, ולכן בדיקה לוקחת כמה שניות.
  4. קראו את הממצאים, החמורים קודם, כל אחד עם מה לשנות וה-RFC שמאחוריו. השתמשו במחוללים למטה כדי לכתוב רשומה מתוקנת.

מה נבדק

SPF
רשומה אחת בדיוק שמתחילה ב-v=spf1, עם מונחים תקינים; היעדים של include ו-redirect נבדקים וכל שאילתה נספרת מול המגבלה של 10 (RFC 7208 §4.6.4); מה all אומר על שרתים אחרים (‎+all, ‏?all, ‏~all, ‏-all); ‏ptr ומונחים שאחרי all.
DMARC
רשומה אחת ב-_dmarc של הדומיין, או של דומיין האב; ‏p תקין, ו-sp, ‏pct, ‏rua, ‏adkim ו-aspf; ‏p=none מדווח כניטור בלבד, והיעדר דוחות כפער (RFC 7489).
DKIM
לכל selector שתזינו: האם מפורסם מפתח, האם הוא תקין, מבוטל או במצב בדיקה, ומה הגודל שלו. ‏RSA של פחות מ-1024 ביט נדחה; פחות מ-2048 נמוך ממה שחותמים צריכים להשתמש בו (RFC 8301).
MX
שרתי הדוא״ל והסדר שלהם; דומיין בלי MX, ‏null MX ‏(RFC 7505), ו-MX שמצביע לכתובת IP.

דוגמה

‏example.com הוסיף לרשומת ה-SPF שלו שירות ניוזלטר ושירות CRM. התשובות האלה בדויות (שמות וכתובות לתיעוד), והממצאים הם הממצאים האמיתיים של הבודק: ה-includes צריכים עכשיו 11 שאילתות DNS, ‏DMARC עדיין ב-p=none בלי דוחות, ומפתח ה-DKIM של selector s1 הוא 1024 ביט.

תוצאה עבור example.com

SPF

v=spf1 a mx include:spf.mail-a.example include:spf.newsletter.example include:spf.crm.example ~all

11 מתוך 10 שאילתות DNS מותרות, כולל ה-includes.

עץ ה-includes
  • example.com 5 שאילתות
    • include:spf.mail-a.example 3 שאילתות
      • include:_s1.mail-a.example 0 שאילתות
      • include:_s2.mail-a.example 0 שאילתות
      • include:_s3.mail-a.example 0 שאילתות
    • include:spf.newsletter.example 2 שאילתות
      • include:_ip.newsletter.example 0 שאילתות
    • include:spf.crm.example 1 שאילתות

DMARC

v=DMARC1; p=none

נמצאה ב-_dmarc.example.com.

תגיתמשמעותערך
pמדיניות לדומייןnone
spמדיניות לתת-דומייניםnone
pctהחלק מהדוא״ל שנכשל שהמדיניות חלה עליו (%)100
ruaלאן נשלחים הדוחות המצטברים—
adkimהתאמת DKIM ‏(r מקלה, s מחמירה)r
aspfהתאמת SPF ‏(r מקלה, s מחמירה)r

DKIM

selectorמצבמפתח
s1._domainkey.example.comמפורסםrsa, ‏1024 ביט

MX

עדיפותשרת דוא״ל
10mx1.example.com
20mx2.example.com

ממצאים

שגיאה1
גבוהה0
בינונית2
נמוכה1
מידע1

5 ממצאים: 1 שגיאה, 0 גבוהה, 2 בינונית, 1 נמוכה, 1 מידע.

שגיאה1

  1. שגיאהAQ-MAIL-005

    רשומת ה-SPF צריכה 11 שאילתות DNS, כולל ה-includes שלה; המגבלה היא 10. מעבר לה, השרתים המקבלים נעצרים עם שגיאה (permerror) ו-SPF נכשל לכל הדוא״ל שלכם.

    תיקון: הסירו includes של שירותים שכבר לא שולחים דרכם, החליפו a ו-mx ב-ip4:/ip6: של שרתים קבועים (הם לא עולים שאילתה), או שלחו דיוור המוני מתת-דומיין עם רשומת SPF משלו.

    מקור

בינונית2

  1. בינוניתAQ-MAIL-023

    מדיניות ה-DMARC ב-_dmarc.example.com היא p=none: ניטור בלבד. דוא״ל שנכשל ב-SPF וב-DKIM עדיין נמסר.

    תיקון: כשהדוחות מראים שכל הדוא״ל שלכם עובר, עברו ל-p=quarantine ואחר כך ל-p=reject. המחולל למטה מסביר כל שלב.

    מקור

  2. בינוניתAQ-MAIL-034

    מפתח ה-DKIM של selector ‏s1 הוא RSA של 1024 ביט. מפתחות של פחות מ-1024 ביט נדחים; חותמים צריכים להשתמש לפחות ב-2048.

    תיקון: צרו בשירות הדוא״ל מפתח של 2048 ביט תחת selector חדש, פרסמו אותו, העבירו אליו את החתימה, והסירו את ה-selector הישן אחרי כמה ימים.

    מקור

נמוכה1

  1. נמוכהAQ-MAIL-025

    לרשומת ה-DMARC ב-_dmarc.example.com אין כתובת rua: אף אחד לא מקבל את הדוחות המצטברים שמראים מי שולח דוא״ל בשם הדומיין.

    תיקון: הוסיפו rua=mailto: עם תיבה שאתם קוראים, או של שירות לניתוח דוחות DMARC.

    מקור

מידע1

  1. מידעAQ-MAIL-011

    רשומת ה-SPF מסתיימת ב-~all ‏(soft fail): דוא״ל משרתים אחרים מסומן ולא נדחה. עם מדיניות DMARC זה מקובל; ‏-all מחמיר יותר.

    מקור

מגבלות

  • הוא רואה מה resolvers ציבוריים עונים מהמקום שלכם, ברגע הזה.
  • אי אפשר לגלות selectors של DKIM מה-DNS: נבדקים רק אלה שתזינו.
  • includes של SPF שמשתמשים במאקרו (%{…}) מתמלאים לכל הודעה ולא נבדקים, ולכן ספירת השאילתות יכולה להיות גבוהה יותר. הבודק מפסיק לעקוב אחרי includes כשהספירה עוברת את 10.
  • הוא לא שולח הודעת בדיקה, לא בודק רשימות חסימה (blocklists) ולא קורא BIMI, ואינו יכול לומר אם הודעה מסוימת עוברת: זה תלוי בשרת שממנו היא נשלחה.
  • ההכרעה אם שם הוא דומיין שורש נעשית בלי Public Suffix List, כמו בבדיקת ה-DNS לפני עלייה לאוויר; דומיין האב ל-DMARC נקבע לפי אותו כלל.

מתודולוגיה: איך מחושבים המספרים

מקורות

  1. RFC 7208: Sender Policy Framework (SPF)
  2. RFC 7208 §4.6.4: DNS lookup limits
  3. RFC 7489: DMARC
  4. RFC 6376: DKIM signatures
  5. RFC 8301: cryptographic algorithm and key usage update to DKIM
  6. RFC 8463: Ed25519 for DKIM
  7. RFC 7505: null MX
  8. RFC 8484: DNS queries over HTTPS (DoH)

עודכן

הצעד הבא

בדיקת DNS לפני עלייה לאוויר

כלי ציבורי חינמי של אנרוק, חברה שבונה תשתיות מחשוב. מה אנרוק בונה