Заблокирован ли procmail или ограничен в использовании команд Linux?

StackOverflow https://stackoverflow.com/questions/4386371

  •  10-10-2019
  •  | 
  •  

Вопрос

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top