Какво е OST файл?
OST или офлайн файловете за съхранение представляват данните за пощенската кутия на потребителя в офлайн режим на локална машина при регистрация в Exchange Server с помощта на Microsoft Outlook. Създава се автоматично при първото използване на Microsoft Outlook при свързване със сървъра. След като файлът бъде създаден, данните се синхронизират с имейл сървъра, така че да са достъпни и офлайн в случай на прекъсване на връзката с имейл сървъра. OST файловете могат да използват елементи от пощенската кутия като имейли, контакти, информация от календара, бележки, задачи и други подобни данни. Потребителите могат да създават имейли и други елементи с данни в OST файл дори при липса на връзка със сървъра, но те няма да бъдат синхронизирани със сървъра. След като връзката бъде установена, локалният файл се синхронизира отново със сървъра, така че и сървърът, и локалното копие да са на едно и също ниво на информация.
OST файлов формат
Файловият формат OST (Офлайн таблица за съхранение) и PST (Лична таблица за съхранение) се състои от формат на файл с лична папка (PFF), който съответства на съхраняване на имейли, контакти и срещи на потребителя. Данните в PFF файл се съхраняват в little-endian с всички дати и часове, представени като FILETIME в UTC. [MS-PST] дефинира два типа PFF:
- 32-битов ANSI формат
- 64-битов Unicode формат
Файлов формат PST спецификации, както се предлага от Microsoft, също са приложими за файлов формат OST като безплатен и неотменимо патентно лицензиране чрез Open Specification Promise. Състои се от следните различими елементи:
- Fle header
- Данни за заглавката на файла
- Индекс клон възел
- Индексен листов възел
- (Файлов) индекс на отместване
- (Елемент) дескрипторен индекс
- Локални дескриптори
- Тип таблица на артикулите
Информация за заглавката
Структурата HEADER на OST файла се намира в самото начало на файла с отместване 0. Той съдържа информация за метаданни за OST файла и ROOT информация за достъп до описаните по-горе структури от данни на слоя NDB. Структурата на HEADER се различава за Unicode и ANSI версиите на OST File Format.
Заглавието започва с 4-байтова магическа дума !BDN, представена от байтове (0x21, 0x42, 0x44, 0x4E). Друго 2-байтово магическо число, SM (0x53, 0x4D), се намира на отместване 8 от началото на файла. Информацията за версията (ANSI или Unicode) се намира на отместване 10 от началото на файла. Шестнадесетичната стойност (0x17) указва Unicode OST файл, докато 0x0E или 0x0F представлява ANSI файлов формат.
Поле | Описание |
---|---|
dwMagic (4 байта) | ТРЯБВА да бъде “{ 0x21, 0x42, 0x44, 0x4E } ("!BDN”)" |
dwCRCPartial (4 байта) | 32-битовата CRC стойност на 471 байта данни, започващи от wMagicClient (0ffset 0x0008) |
wMagicClient (2 байта) | ТРЯБВА да бъде “{ 0x53, 0x4D }”. |
wVer (2 байта) | Версия на файлов формат. Тази стойност ТРЯБВА да бъде 14 или 15, ако файлът е ANSI PST файл, и ТРЯБВА да бъде 23, ако файлът е Unicode PST файл. |
wVerClient (2 байта) | Версия на клиентския файлов формат. Версията, която съответства на формата, описан в този документ, е 19. Създателите на нов PST файл, базиран на този документ, ТРЯБВА да инициализират тази стойност на 19. |
bPlatformCreate (1 байт) | Тази стойност ТРЯБВА да бъде зададена на 0x01. |
bPlatformAccess (1 байт) | Тази стойност ТРЯБВА да бъде зададена на 0x01. |
dwРезервирано (8 байта) | |
bidUnused (8 байта само за Unicode) | Неизползвана подложка, добавена при създаването на файловия формат Unicode PST. |
bidNextP (Unicode: 8 байта; ANSI: 4 байта) | BID на следващата страница. Страниците имат специален брояч за разпределяне на стойности на bidIndex. Стойността на bidIndex за BID за страници се разпределя от този брояч. |
bidNextB (4 байта само ANSI): | Следващ BID. Тази стойност е монотонният брояч, който показва BID, който трябва да бъде присвоен за следващия разпределен блок. Стойностите на BID се увеличават на стъпки от 4. За повече подробности вижте раздел 2.2.2.2. |
dwUnique (4 байта) | Това е монотонно нарастваща стойност, която се променя всеки път, когато структурата HEADER на PST файла се променя. Функцията на тази стойност е да предостави уникална стойност и да гарантира, че CRC на HEADER са различни след всяка модификация на заглавката. |
rgnid[] (128 байта) | Фиксиран масив от 32 NID, всеки съответстващ на един от 32-те възможни NID_TYPE (NID_TYPE, NID_TYPE_NORMAL_FOLDER, NID_TYPE_SEARCH_FOLDER, NID_TYPE_NORMAL_MESSAGE,NID_TYPE_ASSOC_MESSAGE) |
qwUnused (8 байта) | Неизползвано пространство; ТРЯБВА да се настрои на нула. Само Unicode PST файлов формат. |
корен (Unicode: 72 байта; ANSI: 40 байта) | ROOT структура (раздел 2.2.2.5). |
dwAlign (4 байта) | Неизползвани байтове за подравняване; ТРЯБВА да се настрои на нула. Само Unicode PST файлов формат. |
rgbFM (128 байта) | Отхвърлена FMmap. Това вече не се използва и ТРЯБВА да се попълни с 0xFF. Читателите ТРЯБВА да пренебрегват стойността на тези байтове. |
rgbFP (128 байта) | Отхвърлен FPMap. Това вече не се използва и ТРЯБВА да се попълни с 0xFF. Читателите ТРЯБВА да пренебрегват стойността на тези байтове. |
bSentinel (1 байт) | ТРЯБВА да бъде настроен на 0x80. |
bCryptMethod (1 байт) | Показва как са кодирани данните в PST файла. ТРЯБВА да бъде зададена на една от предварително дефинираните стойности (NDB_CRYPT_NONE, NDB_CRYPT_PERMUTE, NDB_CRYPT_CYCLIC). |
rgb Резервиран (2 байта) | Запазено; ТРЯБВА да се настрои на нула. |
bidNextB (8 байта) | Показва следващата налична BID стойност. Само Unicode PST файлов формат. |
bidNextB (САМО Unicode: 8 байта) | Следващ BID. Тази стойност е монотонният брояч, който показва BID, който трябва да бъде присвоен за следващия разпределен блок. Стойностите на BID се увеличават на стъпки от 4. За повече подробности вижте раздел 2.2.2.2. |
dwCRCFull (4 байта) | 32-битовата CRC стойност на 516 байта данни, започвайки от wMagicClient до bidNextB, включително. Само Unicode PST файлов формат. |
ullReserved (8 байта) | Резервирано; ТРЯБВА да се настрои на нула. Само файлов формат ANSI PST. |
dwРезервирано (4 байта) | Резервирано; ТРЯБВА да се настрои на нула. Само файлов формат ANSI PST. |
rgbReserved2 (3 байта) | |
bЗапазен (1 байт) | |
rgbReserved3 (32 байта) |