Формат mbox

Як клієнти електронної пошти зберігають пошту на жорсткому диску

Найпоширеніший формат для зберігання поштових повідомлень - це формат mbox. MBOX розшифровується як MailBOX. Mbox - це єдиний файл, що містить нуль або більше поштових повідомлень.

Формат mbox

Якщо ми використовуємо формат mbox для зберігання електронних листів, ми поміщаємо їх у один файл. Це створює більш-менш довгий текстовий файл (електронна пошта завжди існує лише як 7-бітний текст ASCII, все інше - наприклад, додатки - закодовано), що містить одне повідомлення електронної пошти за іншим. Як ми знаємо, де закінчується одне, а починається інше?

На щастя, кожна електронна пошта має принаймні один поштовий канал на самому початку. Кожне повідомлення починається з "Від" (З якого слідує білий пробіл, який також називається рядком "Від_"). Якщо цій послідовності ("Від") на початку рядка передує порожній рядок або знаходиться у верхній частині файлу, ми знайшли початок повідомлення.

Отже, що ми шукаємо при розборі файлу mbox - це, по суті, порожній рядок, за яким слідує "Від".

Як регулярний вираз, ми можемо записати це як "nnFrom. * N". Тільки найперше повідомлення інше. Він починається просто з "Від" на початку рядка ("^ From. * N").

"З" В тілі

Що робити, якщо саме послідовність, зазначена вище, відображається в тілі електронного повідомлення? Що робити, якщо наведене нижче є частиною електронного листа?

  • ... я надсилаю тобі останній звіт.
  • З цього звіту вам не потрібно ...

Тут у нас є порожній рядок, після якого на початку рядка йде "Від". Якщо це відображається у файлі mbox, ми безпомилково маємо початок нового повідомлення. Принаймні, так думає аналізатор, і чому ми і клієнта електронної пошти нас дуже збентежили електронним повідомленням, яке не містить ні відправника, ні одержувача, але починається з "З цього звіту".

Щоб уникнути таких згубних умов, нам потрібно переконатися, що "From" ніколи не з’являється на початку рядка, що слідує за порожнім рядком в тілі електронної пошти.

Щоразу, коли ми додаємо нове повідомлення у файл mbox, ми шукаємо такі послідовності в тілі та просто замінюємо "From" на "> From". Це унеможливлює неправильне тлумачення. Наведений вище приклад виглядає так і більше не запускає аналізатор:

  • ... Я надсилаю тобі останній звіт.
  • > З цього звіту вам не потрібно ...

Ось чому іноді ви можете знайти "> From" в електронному листі, де ви очікуєте просто "From".