Используется ли procmail для поддержки или ограничен в использовании команд linux?

Я использую 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.

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

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

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

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

3 ответа

Решение

Странный.

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

SHELL=/bin/bash

Оболочка пользователей была установлена ​​в /bin/false, что является правильным, потому что это почтовый пользователь, вообще не имеет доступа по s sh.

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

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

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

Другие вопросы по тегам