Наиболее распространенным форматом для хранения почтовых сообщений является формат mbox. MBOX означает MailBOX. Mbox - это один файл, содержащий ноль или более почтовых сообщений.
Формат mbox
Если мы используем формат mbox для хранения электронных писем, мы помещаем их все в один файл. Это создает более или менее длинный текстовый файл (Интернет-почта всегда существует только как 7-битный ASCII-текст, все остальное - вложения, например, - закодировано), содержащее одно сообщение электронной почты за другим. Как мы узнаем, где заканчивается, а другой начинается?
К счастью, каждое электронное письмо имеет, по крайней мере, одну линию From-line в самом начале. Каждое сообщение начинается с «От», (From следует символ пробела, также называемый линией «From_»). Если этой последовательности («От») в начале строки предшествует пустая строка или находится в верхней части файла, мы нашли начало сообщения.
Так что мы ищем, когда синтаксический анализ файла mbox по существу является пустой строкой, за которой следует «От».
В качестве регулярного выражения мы можем записать это как « n nFrom. * N". Только первое сообщение отличается. Он начинается просто с «From» в начале строки («^ From. * N»).
«От» в теле
Что делать, если в теле сообщения электронной почты точно указанная выше последовательность? Что делать, если следующее сообщение является частью электронного письма?
- … Я отправляю вам последний отчет.
- Из этого отчета вам не нужно …
Здесь у нас есть пустая строка, за которой следует «От» в начале строки. Если это появляется в файле mbox, у нас безошибочно есть начало нового сообщения. По крайней мере, это то, что думает парсер и почему и клиент электронной почты, и мы были бы смущены сообщением электронной почты, которое не содержит ни отправителя, ни получателя, но начинается с «Из этого отчета».
Чтобы избежать таких катастрофических состояний, нам нужно убедиться, что «От» никогда не появляется в начале строки, следующей за пустой строкой в теле письма.
Всякий раз, когда мы добавляем новое сообщение в файл mbox, мы ищем такие последовательности в теле и просто заменяем «From» на «> From». Это делает неправильные интерпретации невозможными. Вышеприведенный пример теперь выглядит так и больше не запускает синтаксический анализатор:
- … Я отправляю вам последний отчет.
- > Из этого отчета вам не нужно …
Вот почему вы иногда можете найти «> От» в электронном письме, где вы ожидаете просто «От».