En MTA-STS distributionen har två distinkta format. DNS annonserar v=STSv1; id=20261107A, medan HTTPS har en linjeorienterad policy. Att placera DNS strängen i policyfilen, eller policykroppen i DNS , skapar inte en fungerande distribution.
Bygg minimalpolitiken medvetet
Referenser: RFC 8461 §3.2.
Ett testexempel för den reserverade domänen example.com är:
version: STSv1-läge: testning mx: mx1.example.net max_age: 86400
Varje fält är på sin egen linje. Visa dessa som vanlig text på https://mta-sts.example.com/.well-known/mta-sts.txt. Detta är en illustrativ konfiguration, inte ett påstående om att dessa värdar kör e-posttjänster.
Version, läge och max_age krävs. Minst en mx-linje krävs förutom läge ingen. Tillåtna lägen är testning, verkställighet och inga. max_age är ett icke-negativt heltal av sekunder, skrivet med en till tio siffror, med ett maximalt värde på 31557600. En dag i det här exemplet är ett observationsfasval, inte en allmänt rekommenderad produktionslivslängd; längre livslängder förbättrar motståndet mot avbruten policyuppdatering men förlänger exponeringen för inaktuell policy.
Se till att parserbeteendet skiljer sig från redaktionellt lint
Referenser: RFC 8461 §3.2.
RFC 8461 avsnitt 3.2 tillåter LF- eller CRLF-linjeavslutningar. Obligatoriska fältnamn och angivna värden är skiftlägeskänsliga. Flera MX mönster hör hemma på separata mx-linjer, inte en kommaseparerad lista. Internationaliserade namn använder sin ASCII A-etikettform.
En överensstämmande parser ignorerar okända fält och ignorerar efterföljande kopior av ett icke-upprepat fält efter dess första förekomst. Därför läge: testning följt av läge: verkställa inte tillförlitligt upprätthåller någonting: det första läget styrs enligt specifikationen. En distributionslinter bör avvisa denna tvetydighet för publicering även om protokollet definierar hur det ska analyseras. Dokumentera denna strängare redaktionella regel istället för att hävda att alla dubbletter av fält gör protokollpolicyn ogiltig.
Återge de kritiska distinktionerna
Skapa en UTF-8-fil som innehåller exemplet med fyra rader. Kontrollera att uppdelningen i rader ger fyra nyckel-/värdepar och ett MX värde. Lägg till en andra mx-rad och förvänta dig två tillåtna värdar. Lägg till en andra lägesrad och jämför förstavärdesanalys med den striktare publiceringslint. Byt ut max_age med -1, 31557601 och ett ord, och förvänta dig att var och en misslyckas med intervall- eller numerisk kontroll.
Det här granskningspaketet innehåller en körbar avgränsad fixtur för fall med första värde, numerisk gräns och jokertecken. Det är inte en komplett ABNF-parser eller en produktion MTA. Den nyligen inspelade offlinekörningen klarar de begränsade kontrollerna. Att godkänna det bevisar de angivna lokala jämförelserna, inte DNS upptäckt, HTTPS-certifikatvalidering eller SMTP leverans.
Publicera först efter att hela rutten är överens
Referenser: RFC 8461 §3.3, RFC 8461 §4.
Behåll de exakta filbytena och deras hash, upptäckts TXT värdet, MX svaren och den avsedda cacheminnets livslängd. Hämta den fasta webbadressen utan att följa omdirigeringar och inspektera dess kropp. Verifiera sedan alla annonserade MX :s STARTTLS och certifikatidentitet innan du väljer att tillämpa. En syntaktisk giltig fil kan inte kompensera för ett saknat MX mönster eller ett ogiltigt mottagningscertifikat.
Bevarade historiska bevis och kvarvarande omfattning
Följande är den bevarade labbposten den 7 november 2026, inspekterad men inte körd som ett nätverksexperiment för denna granskning. Exekvering av ny offline-fixtur spelas in separat.
Det utökade isolerade labbet analyserade faktisk policytext. En upprätthållande policy med fyra rader producerade ett verkställande beslutsobjekt med den tillåtna gamla MX och max_age 86400. Organ utan MX , max_age 31557601 eller STSv2 avvisades. Ett duplicerat andra läge behöll det första testvärdet. Efter en riktig loopback STARTTLS handskakning misslyckades värdnamnsverifieringen, producerade den begränsade beslutsmotorn allow_despite_sts_failure för testning och do_not_deliver_to_candidate för enforce. Dessa är fångade fixturbeslut, inte observationer av en produktions-MTA-kö. Parsern stöder avsiktligt endast ASCII-fallen som listas här och är inte en komplett ABNF-implementering.