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