MIX (e-post)

MIX är ett högpresterande, indexerat e-postlagringssystem på disk som är designat för användning med IMAP -protokollet . MIX designades av Mark Crispin , författaren till IMAP-protokollet. Serverstöd för det har inkluderats i utgåvor av UW IMAP sedan 2006, Panda IMAP och Messaging Architects Netmail. MIX stöds också direkt av Alpine e-postklient.

Design

MIX-postlådor är kataloger som innehåller flera typer av filer, inklusive en metadatafil, en indexfil, en dynamisk statusdatafil, en trådnings-/sorteringscachefil och en samling filer som innehåller meddelandeinnehåll. MIX-brevlådor kan också innehålla underordnade brevlådor, som implementeras som underkataloger inom MIX-katalogen.

MIX-formatet designades med tonvikt på mycket hög skalbarhet, tillförlitlighet och prestanda, samtidigt som det effektivt stöder moderna funktioner i IMAP -protokollet. MIX har använts framgångsrikt med brevlådor med 750 000 meddelanden.

Basnivån MIX-format har fyra filer: en metadatafil, en indexfil, en statusfil och någon uppsättning meddelandedatafiler. Metadatafilen innehåller data på basnivå som är tillämplig på hela brevlådan; dvs UID giltighet, senast tilldelade UID och lista över nyckelord. Indexfilen innehåller pekare till varje ej raderat meddelande i meddelandedatafilerna, tillsammans med flaggor, storlek och interndata för IMAP . Statusfilen innehåller flaggor och nyckelord per meddelande.

Alla dessa filer kan vara dolda filer i en katalog (med katalognamnet som namnet på brevlådan). Således kan en katalog med gigabyte e-post i den verka tom om den undersöks med verktyg som inte visar dolda filer. Detta är en vanlig källa till förvirring för systemadministratörer som stöter på MIX för första gången. [ citat behövs ]

Genom designen är det möjligt att återställa brevlådan till ett användbart tillstånd om någon av dessa filer går förlorade eller skadas. Det är till exempel möjligt att bygga om indexfilen genom att läsa var och en av datafilerna, utan någon annan konsekvens än att ett raderat meddelande som ännu inte fått sitt utrymme återställts.

En annan viktig del av MIX-designen är att ingen fil ändras om inte data som är specifika för den filen ändras; en flaggändring ändrar alltså statusfilen men inte metadata eller indexfiler. Detta minskar effekten av alla systemhändelser som korrumperar en fil som pågår.

Varje fil har också en "ändringssekvens" som ökas varje gång filen ändras. När en MIX-implementering uppdateras från en fil, om ändringssekvensen är oförändrad stänger den filen på en gång utan att läsa den vidare. Dessutom har varje statusfilpost också en modifieringssekvens, som tillåter förlustfri synkronisering av flera konsumentmeddelandeflaggor/sökordsuppdateringar/

Tillägg

MIX tillåter implementeringsspecifika tillägg. Alla MIX-implementeringar måste vara utbytbara på basnivå, men är inte skyldiga att implementera tillägg och måste tolerera frånvaron av tillägg.

UW IMAP- och Panda IMAP-implementeringarna av MIX har en sorteringscache-fil som innehåller data som används av IMAP SORT- och THREAD-operatorerna. Detta tillåter dessa operatörer att ladda de flesta (om inte alla) data de behöver utan att behöva analysera den från meddelandedata.

Messaging Architects -implementeringen av MIX har utökad postlådemetadata (används för närvarande för att innehålla postlådans visningsnamn), meddelandemetadata (används för flera syften inklusive en JSON-representation av meddelandestrukturen) och en global modifieringssekvens (som möjliggör en snabb kontroll av postlådeuppdatering utan att behöva kontrollera ändringssekvensen i flera filer). Messaging Architects implementering har också en "virtuell brevlåda" eller stubbningsfunktion, där ett meddelande i en brevlåda faktiskt är en pekare till ett meddelande i en annan brevlåda.

Jämförelser med andra format för e-postlagring

MIX kan betraktas som en hybrid mellan e-postlagringsformaten maildir (enkelt meddelande per fil) och mbox (enkel fil per brevlåda).

Mot maildir

MIX har en likhet med maildir , genom att MIX-postlådor är kataloger snarare än enstaka filer.

Till skillnad från maildir har MIX dock stöd för en indexfil för snabböppning och genomsökning av brevlåde. Där maildir lagrar varje meddelande i sin egen fil på disken, kan MIX aggregera meddelanden till meddelandefiler, enligt den konfigurerade storleksgränsen för en meddelandefil. Meddelanden som är större än storleksgränsen samlas inte ihop. En MIX-katalog tenderar att ha ett mindre antal filer än en motsvarande maildir-postlåda som ett resultat, vilket kan vara fördelaktigt på vissa operativsystem. MIX har stöd för effektiv hämtning och modifiering av metadata och statusinformation.

MIX aggregerar också flera mindre meddelanden till enstaka datafiler på upp till 1 MB i storlek (större meddelanden får en datafil till sig själva). Detta minskar antalet noder som krävs i katalogen, vilket är viktigt för prestanda och skalbarhet. MIX-brevlådeformatet kräver mer rigoröst låsstöd från operativsystemet än maildir, och var uttryckligen inte utformat för att stödja skrivning till över NFS.

Maildir, å andra sidan, designades för att fungera i en NFS-miljö. Maildir har bredare klient-, server- och verktygsstöd än MIX.

Mot mbox

MIX åtnjuter avsevärd optimering jämfört med det vanliga mbox- e-postformatet. MIX har ett binärt index för att påskynda skanning och hämtning av meddelanden, medan mbox kräver fullständiga linjära skanningar för att extrahera meddelanden. Precis som maildir, och till skillnad från mbox, stöder MIX postlådor som innehåller både meddelanden och underordnade brevlådor. MIX stöder flera klienter som samtidigt läser och skriver till individuella brevlådor, vilket inte kan uppnås med mbox.

Å andra sidan stöds mbox-formatet mycket mer allmänt än MIX. mbox är ett allestädes närvarande postlådefilformat och används ofta som ett utbytesformat för den största gemensamma faktorn.

Se även

externa länkar

  • University of Washington MIX-formatdefinition
  • "UW IMAP, Courier, Cyrus och Dovecot i direkt jämförelse" ( på tyska). Linux Magazin . Hämtad 2009-04-04 .