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