Parse / var / email / username file в Ruby - PullRequest
1 голос
/ 20 июня 2011

По какой-то причине мне нужно получить электронную почту из файла / var / mail / username. Похоже, файл только для добавления.

У меня вопрос: безопасно ли анализировать содержимое файла / var / email / username в зависимости от первой строки From username@host Mon Jun 20 16:50:15 2011? Что если подобный шаблон найден внутри тела письма?

Кроме того, есть ли какой-нибудь рубиновый скрипт с открытым исходным кодом, доступный для справки?

1 Ответ

2 голосов
/ 20 июня 2011

Да, это кажется более или менее правильным способом анализа формата mbox - из быстрого сканирования спецификации RFC :

Структура разделительных линий варьируется в зависимости от реализации, но
обычно содержит точную последовательность символов «From», за которой следует
один пробел (0x20), какой-то адрес электронной почты, другой
пробелсимвол, временная метка некоторого вида и маркер конца строки.

And ...

Известно также, что многие реализации экранируют строки тела сообщения
начинаются с последовательности символов «От», чтобы избежать путаницы с чрезмерно либеральными синтаксическими анализаторами, которые не ищут полные разделительные линии.В общем случае для этой цели используется начальный символ «больше, чем» (0x3E) (с «From» становится «> From»).Однако известно, что другие реализации не экранируют такие строки, если им непосредственно не предшествует пустая строка или если они также содержат адрес электронной почты и метку времени.Известно также, что другие реализации выполняют вторичные экранирования для этих строк, если они уже экранированы или заключены в кавычки, в то время как другие вообще игнорируют эти механизмы.

Обновление: Также есть это: https://github.com/meh/ruby-mbox

...