איך בדיקת SPF פועלת
הכלי קורא את רשומות ה-TXT של הדומיין שהזנתם ומאתר את הרשומה שמתחילה ב-v=spf1. לאחר מכן הוא עוקב אחר כל include ו-redirect כפי ששרת מקבל היה עושה, מתעד כל חיפוש שדורש שאילתת DNS ובודק את התחביר של כל רכיב.
לא מעורבת כאן כתובת IP. השאלה היא אם הרשומה תקינה ואם עלות הבדיקה שלה סבירה לכל מי שצריך להעריך אותה, ולא אם שרת מסוים רשאי לשלוח. כדי לבדוק זאת, שלחו הודעה דרך הבדיקה המלאה. הדוח יציג את התוצאה שהשרת המקבל קיבל בפועל.
יותר מדי חיפושי DNS: המגבלה היא עשרה
RFC 7208 מגביל הערכת SPF לעשרה רכיבים שדורשים שאילתת DNS: include, a, mx, ptr, exists ו-redirect. הספירה חלה על העץ כולו, לכן include שכולל בעצמו שלושה רכיבים נוספים משתמש בארבעה חיפושים. חריגה מהמגבלה מחזירה permerror, ו-DMARC מחשיב אותה ככישלון SPF.
הכלי סופר כל רכיב, כולל רכיבים שההערכה אולי לעולם לא תגיע אליהם, מפני שהערכה אמיתית נעצרת בהתאמה הראשונה. שרתים שמופיעים בתחילת הרשומה ממשיכים לעבור, ושרתים שמופיעים בהמשך מתחילים להיכשל. מבחוץ זה נראה כאילו הדוא"ל פועל עבור הודעות מסוימות ולא עבור אחרות.
רכיבי ip4 ו-ip6 אינם עולים בחיפושי DNS. החלפת include בטווחי כתובות, תהליך המכונה flattening, מפחיתה את מספר החיפושים, במחיר של עדכון ידני של הטווחים בהתאם לשינויים אצל הספקים שלכם.
שגיאות נפוצות ברשומת SPF
שתי רשומות SPF בדומיין אחד. זה קורה כאשר הוראות ההגדרה של ספק נוסף אומרות להוסיף רשומה, ואף אחד לא ממזג אותה עם הרשומה הראשונה. שתי רשומות גורמות ל-permerror בפני עצמן.
סיומת +all, שמאפשרת לכל שרת באינטרנט לעבור, או ?all, שלא קובעת דבר לגבי אף שרת ולכן אינה מספקת הגנה. רכיב ptr, שלפי RFC 7208 אין להשתמש בו. גם include עבור שירותים שהחברה הפסיקה להשתמש בהם לפני שנים עדיין עולה חיפוש אחד לכל שירות.
שאלות
איך נראית רשומת SPF?
זוהי רשומת TXT אחת בדומיין, שמתחילה ב-v=spf1, מפרטת מי רשאי לשלוח ומסתיימת בכלל עבור כל השאר. הרשומה v=spf1 include:_spf.google.com ip4:203.0.113.5 ~all מאפשרת ל-Google Workspace ולשרת אחד לשלוח, ומחזירה softfail לכל השאר. דומיין רשאי לפרסם רשומה אחת בלבד.
SPF softfail או hardfail: ~all או -all?
לאחר שמגדירים DMARC, שתי האפשרויות מתאימות, כי DMARC קובע מה יקרה להודעה שנכשלת. ~all (softfail) היא האפשרות הבטוחה יותר כל עוד אתם עדיין מאתרים את כל השירותים ששולחים בשמכם. עברו ל--all כאשר דוחות DMARC מראים שאין הודעות לגיטימיות שנכשלות.
למה הרשומה שלי עוברת את הבדיקה המלאה, אבל כאן מוצגים יותר מעשרה חיפושים?
השרת המקבל הפסיק את הבדיקה במונח הראשון שהתאים לשרת שלכם, ולכן שאר החיפושים לא נספרו. שרת אחר שנמצא בהמשך הרשימה היה גורם לאותה בדיקה לעבור את מגבלת עשרת החיפושים ולהיכשל.
מהו חיפוש ללא תוצאה?
שאילתת DNS שלא מחזירה רשומות, או שם שאינו קיים. RFC 7208 מתיר שני חיפושים כאלה בכל בדיקה. חיפוש שלישי גורם ל-permerror. הסיבה הנפוצה היא include של דומיינים שכבר אינם קיימים.
האם לדומיין יכולות להיות שתי רשומות SPF?
לא. RFC 7208 מתיר רשומה אחת שמתחילה ב-v=spf1. כשיש שתיים, כל בדיקה מסתיימת ב-permerror. אחדו אותן: השאירו v=spf1 יחיד, הוסיפו אליו את מונחי include ו-ip4 משתי הרשומות וסיימו ב-all אחד. v=spf1 include:_spf.google.com include:servers.mcsv.net ~all מכסה שני ספקים ברשומה אחת.
המדריך המלא: Multiple SPF records
מה המשמעות של SPF permerror?
שגיאה קבועה: לא ניתן לבדוק את הרשומה כפי שפורסמה, ולכן ניסיון נוסף יחזיר את אותה תוצאה. הסיבות הנפוצות הן יותר מעשרה חיפושי DNS, שתי רשומות SPF בדומיין אחד, שגיאת תחביר וחיפוש DNS ריק שלישי. DMARC מחשיב permerror כאי-מעבר של SPF.
המדריך המלא: SPF permerror: too many DNS lookups
מה קורה אם לא נמצאה רשומת SPF?
המקבלים מקבלים את התוצאה none, ש-DMARC מתייחס אליה כמו fail, וכל אחד יכול להשתמש בדומיין שלכם כשולח המעטפת. פרסמו בדומיין עצמו רשומת TXT אחת שמתחילה ב-v=spf1, מפרטת את השירותים ששולחים עבורכם ומסתיימת ב-~all או -all.