Заблокирован ли procmail или ограничен в использовании команд Linux?
Вопрос
я использую procmail для пересылки электронных писем в разные папки в моем Maildir.Я использую эти две строки, чтобы получать сообщения "ОТ" и "КОМУ" по почте, что работает довольно нормально.
FROM=`formail -x"From:"`
TO=`formail -x"To:"`
Эти две команды возвращают всю строку без символа From:и К:префикс.Итак, я получаю что-то вроде:
Firstname Lastname <firstname.lastname@mail-domain.com>
Теперь я хочу извлечь электронное письмо между < и >.Для этого я передаю переменную ИЗ и В grepping следующим образом.
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 (вырезание < и >).Все работает на консоли, но я использую его в procmail, он просто ничего не возвращает.
Возможно ли, что procmail не разрешено использовать команды grep и sed?Что-то вроде chroot?
Я не получаю никаких журналов ошибок в своем журнале procmail.Я просто хочу извлечь действительный адрес электронной почты из строк "ОТ" и "КОМУ".Извлечение с помощью formail работает, но синтаксический анализ с помощью grep или sed завершается неудачей, даже если выражение правильное.
Кто-нибудь может помочь?Может быть, мне нужно как-то настроить procmail.
Решение
Странно.
Я добавил это в файл users .procmailrc
SHELL=/bin/bash
Оболочка users была установлена в /bin/ false, что правильно, потому что это почтовый пользователь, у которого вообще нет доступа по ssh.
Другие советы
Вы должны правильно цитировать "$FROM"
а также "$TO
".
Вам также нужно будет префикс grep
с LC_ALL=POSIX
для обеспечения [:alnum:]
На самом деле соответствует 26 известных символам + 10 цифр английского алфавита.
Вы уже решили это, но чтобы ответить на ваш фактический вопрос, можно запустить procmail
В Chroot, но это, конечно, не сделано самим Procmail. Sendmail использовал с чем -то, что называется ограниченной оболочкой Sendmail (первоначально вызывается rsh
но переименовано в remsh
), который позволил системным администраторам ХРУТ процесс доставки. Но, в общем, это особенность MTA, а не Procmail.