Назад | Перейти на главную страницу

Как мне отфильтровать содержимое сообщения через программу, а затем переслать его на другой адрес?

В qmail вы можете поместить это в файл .forward:

|/usr/local/bin/myfilter | forward upstream@example.com

Это передаст все сообщение, в т.ч. заголовки в myfilter программа, а затем перенаправьте сообщение, напечатанное в стандартный вывод, по адресу upstream@example.com.

Однако у Exim нет forward программа и обычно игнорирует вывод конвейеров трубы.

Как это можно сделать с файлами exim .forward?

Передайте вывод программы через sendmail. Exim устанавливает собственную реализацию программы.

|sh -c '/usr/local/bin/myfilter | /usr/sbin/sendmail -i upstream@example.com'

Ноты:

  • Вы должны использовать sh - Exim выполнит указанную программу напрямую, а не через оболочку вроде qmail. Оболочка необходима для анализа | оператор.
  • Укажите полный путь к sendmail, так как /usr/sbin/ скорее всего не будет в PATH пользователя, под которым будет работать Exim во время обработки .forward файл.
  • Не используйте -t флаг sendmail.