Используется ли procmail для поддержки или ограничен в использовании команд linux? - PullRequest
0 голосов
/ 08 декабря 2010

я использую procmail для пересылки писем в разные папки в моем Maildir. Я использую эти две строки, чтобы получить ОТ и ОТ из почты, которая работает довольно хорошо.

FROM=`formail -x"From:"`
TO=`formail -x"To:"`

Эти две команды возвращают всю строку без префикса From: и To :. Так я получаю что-то вроде:

Firstname Lastname <firstname.lastname@mail-domain.com>

Теперь я хочу извлечь письмо между <и>. Для этого я передаю переменную FROM и TO, как это.

FROM_PARSED=`echo $FROM | grep -o '[[:alnum:]+\.\_\-]*@[[:alnum:]+\.\_\-]*'`
TO_PARSED=`echo $TO | grep -o '[[:alnum:]+\.\_\-]*@[[:alnum:]+\.\_\-]*'`

Но когда я печатаю FROM_PARSED в журнал procmail с помощью LOG = FROM_PARSED, я получаю пустую строку в FROM_PARSED и TO_PARSED.

Но если я запускаю эти команды на своей консоли, все работает нормально. Я перепробовал много других методов grepping, используя grep, egrep, sed и даже cut (cut ). Все работает на консоли, но я использую его в procmail, он просто ничего не возвращает.

Возможно ли, что procmail не разрешено использовать команды grep и sed? Что-то вроде chroot?

Я не получаю никаких журналов ошибок в моем журнале procmail. Я просто хочу извлечь действительный адрес электронной почты из строки ОТ и ТО. Извлечение с помощью formail работает, но синтаксический анализ с помощью grep или sed завершается неудачно, даже если выражение правильное.

Может ли кто-нибудь помочь? Может быть, мне нужно как-то настроить procmail.

Ответы [ 3 ]

1 голос
/ 10 декабря 2010

Странно.

Я добавил это в файл .procmailrc пользователей

SHELL=/bin/bash

Для оболочки пользователя задано значение / bin / false, что является правильным, поскольку она является пользователем почты, вообще не имеет доступа по ssh.

0 голосов
/ 09 сентября 2011

Вы уже решили эту проблему, но, чтобы ответить на ваш фактический вопрос, можно запустить procmail в chroot, но это, конечно, не выполняется самой Procmail. Sendmail имел обыкновение поставляться с чем-то, называемым Оболочка с ограничением доступа Sendmail (первоначально называемая rsh, но переименованная в remsh), которая позволяла системным администраторам изменять процесс доставки. Подводя итог, это особенность MTA, а не Procmail.

0 голосов
/ 10 декабря 2010

Вы должны правильно указать "$FROM" и "$TO".

Вам также необходимо добавить префикс grep к LC_ALL=POSIX, чтобы [:alnum:] действительно соответствовал 26 известным символам + 10 цифрам английского алфавита.

...