בונה SPF ו-DMARC
הדביקו את רשומת ה-TXT שספק האחסון נתן לכם וגלו מה היא באמת אומרת. או בנו חדשה בלי לשנן את התחביר.
רץ בדפדפן שלכם. שום דבר שתדביקו או תגררו לכאן לא מועלה לשום מקום.
אין כאן שאילתות DNS, ובכוונה: הדומיין שלכם לא יוצא מהדפדפן. הביאו את הרשומה בעצמכם עם dig TXT example.com +short, dig TXT _dmarc.example.com +short או nslookup -type=TXT example.com.
רשומה אחת · אזהרה אחת
v=spf1 +a +mx +ip4:203.0.113.10 include:_spf.google.com ptr ~all
| # | חלק | מה זה אומר | אם יש התאמה | שאילתות |
|---|---|---|---|---|
| 1 | v=spf1 | מסמן את רשומת ה-TXT כ-SPF גרסה 1. חייב לבוא ראשון. | — | |
| 2 | +a | דואר מכתובות ה-IP ברשומות A/AAAA של הדומיין: בדרך כלל שרת האתר. | Passמותר | 1 |
| 3 | +mx | דואר משרתי ה-MX של הדומיין, אלה שמקבלים את הדואר שלכם. | Passמותר | 1 |
| 4 | +ip4:203.0.113.10 | דואר מכתובת ה-IP 203.0.113.10. | Passמותר | — |
| 5 | include:_spf.google.com | Google Workspace: כל מה שרשומת ה-SPF של _spf.google.com מרשה. | Passמותר | 1 |
| 6 | ptr | בדיקת DNS הפוך: עובר אם ה-IP של השולח מצביע חזרה לשם תחת הדומיין הזה. | Passמותר | 1 |
| 7 | ~all | כל מה שלא התאים לשום דבר למעלה. | SoftFailלקבל ולסמן | — |
- !אזהרה
ptrהוכרז כמיושן ב-RFC 7208: איטי, והרבה שרתים מדלגים עליו. פרטו את כתובות ה-IP, או השתמשו ב-aאו ב-mx. - iהערה
~all: דואר מכל מקום אחר מקבל כישלון רך, ובדרך כלל מתקבל עם סימון. התחלה טובה; עברו ל--allכשהרשימה מלאה. - iהערה
+הוא ברירת המחדל, אז+aו-aאומרים אותו דבר. - iהערהכל
includeו-redirectמביאים שאילתות משלהם, וגם הן נספרות. הכלי הזה לא שואל את ה-DNS, בכוונה, אז הוא לא יכול לספור אותן: בדקו את הרשומות המוכללות בעצמכם.
כתובות IP הופכות ל-ip4:/ip6:, דומיינים ל-include:. הפרידו ברווחים או בפסיקים.
-all כשהרשימה מלאה, ~all כל עוד אתם בודקים.
- Host
@example.com- סוג
TXT- ערך
v=spf1 a mx include:_spf.google.com ~all- קובץ zone
example.com. 3600 IN TXT "v=spf1 a mx include:_spf.google.com ~all"
למסור כרגיל ולשלוח דוחות. מתחילים כאן.
לשלוח דואר שנכשל לספאם.
לדחות דואר שנכשל. זו המטרה.
mailto: נוסף לבד. כמה כתובות: הפרידו בפסיקים.
יישור ודוחות כישלון
הפעילו בשלבים: כמה שבועות none עם דוחות, אחר כך quarantine, ואז reject.
- Host
_dmarc_dmarc.example.com- סוג
TXT- ערך
v=DMARC1; p=none; rua=mailto:dmarc@example.com- קובץ zone
_dmarc.example.com. 3600 IN TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com"
איך משתמשים
- הדביקו ערך TXT בלשונית הסבר: הרשומה עצמה, הגרסה עם המירכאות, או שורות שלמות מ-
digאו מקובץ zone. - קראו את הטבלה מלמעלה למטה. SPF בודק את החלקים משמאל לימין ועוצר בהתאמה הראשונה, כך שהסדר חשוב.
- תקנו קודם את כל מה שמסומן בעיה, ואחר כך את האזהרות.
- מתחילים מאפס? פתחו את בניית SPF או בניית DMARC, בחרו מה שמתאים והעתיקו את ה-host והערך ללוח ה-DNS.
- בדקו את הרשומה החיה עם
dig TXT example.com +shortו-dig TXT _dmarc.example.com +short(ב-Windows:nslookup -type=TXT example.com).
מה זה עושה
SPF, DKIM ו-DMARC הן רשומות TXT ב-DNS שלכם. SPF מונה את השרתים שמותר להם לשלוח דואר בשם הדומיין. DKIM מפרסמת את המפתח הציבורי שבודק את החתימה על הדואר. DMARC אומרת לצד המקבל מה לעשות כשהבדיקות נכשלות, ולאן לשלוח דוחות. הגרסה הארוכה, עם צעצוע לשחק בו, נמצאת בפוסט SPF, DKIM ו-DMARC: מה הם?
ההסבר עוקב אחרי RFC 7208 עבור SPF ו-RFC 7489 עבור DMARC. הוא מסמן את מה שגורם לשרתים מקבלים לוותר על רשומה: רשומת SPF שנייה, יותר מ-10 שאילתות DNS, מנגנון לא מוכר, היעדר p=. וגם את מה שחוקי אבל לא חכם: +all, ptr, p=none בלי לאן לשלוח דוחות. הדביקו רשומת מפתח DKIM (v=DKIM1) והוא יסביר גם אותה.
הוא לא שואל את ה-DNS, ובכוונה. שאילתה הייתה מוסרת את הדומיין שלכם לשרת resolver, וכל מה שאתם מקלידים כאן לא יוצא מהדפדפן. זו גם המגבלה שלו: הוא סופר את השאילתות ברשומה שהדבקתם, אבל לא את אלה שבתוך כל include:. אם אתם קרובים ל-10, הביאו את הרשומות האלה עם dig והדביקו גם אותן.
את DMARC מפעילים בשלבים. מתחילים ב-p=none עם כתובת rua, קוראים את הדוחות שבועיים עד ארבעה, ומוסיפים ל-SPF ול-DKIM שולחים ששכחתם. אחר כך p=quarantine (עם pct=25 אם אתם לחוצים), ולבסוף p=reject.
שאלות
להשתמש ב-~all או ב--all?
~all כל עוד אתם עדיין מגלים מי שולח דואר בשמכם, ו--all כשהרשימה מלאה. כשיש DMARC, רוב השרתים המקבלים פועלים לפי מדיניות ה-DMARC ולא לפי תוצאת ה-SPF לבדה, כך שההבדל קטן ממה שנראה. לעולם לא +all: הוא מרשה לכל אחד לשלוח בשמכם.
מה עושה p=none?
לדואר עצמו כלום: השרתים המקבלים מוסרים אותו כרגיל ושולחים לכם דוחות על מה שעבר ומה שנכשל. זה צעד ראשון בטוח, בתנאי שמוסיפים rua=mailto:…. בלי כתובת לדוחות אתם לא מנטרים כלום.
אפשר שתי רשומות SPF?
לא. לדומיין צריכה להיות בדיוק רשומת TXT אחת שמתחילה ב-v=spf1. עם שתיים, השרתים המקבלים מחזירים permerror ו-SPF נכשל לכל הודעה. מזגו אותן: v=spf1 אחד, כל חלקי ה-include: וה-ip4:, ו-all אחד בסוף.
מה זו מגבלת 10 שאילתות ה-DNS של SPF?
בבדיקת רשומת SPF אחת, השרת המקבל מוותר אחרי 10 שאילתות DNS ומחזיר permerror. include, a, mx, ptr, exists ו-redirect עולים אחת כל אחד, וכך גם כל אחד כזה בתוך הרשומות שאתם מכלילים. ip4, ip6 ו-all בחינם. הסירו שירותים שכבר לא בשימוש, או החליפו include בטווחי ה-IP שמאחוריו.
למה DMARC נכשל כש-SPF עובר?
כי DMARC דורש גם יישור (alignment): הדומיין שעבר את הבדיקה צריך להתאים לדומיין בכתובת ה-From שאנשים רואים. SPF בודק את כתובת ההחזרות (Return-Path), ושירותי דיוור ו-CRM שמים שם לעתים קרובות דומיין משלהם, כך ש-SPF עובר עבור הדומיין שלהם ולא שלכם. DMARC עובר כש-SPF או DKIM עוברים וגם מיושרים, אז הפתרון הרגיל הוא חתימת DKIM עם הדומיין שלכם (רוב השירותים נותנים לזה רשומות CNAME או TXT) או return-path מותאם על תת-דומיין שלכם. יישור גמיש, ברירת המחדל, מקבל כל תת-דומיין של הדומיין שלכם; aspf=s ו-adkim=s דורשים התאמה מדויקת.