Используется ли 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 запрещено использовать команды 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 цифр английского алфавита.