Как я могу преобразовать входящее HTML-письмо в обычный текст в почтовом клиенте Postfix?

Как можно настроить фильтр в Postfix, который конвертировал бы письма из html в plain text на лету, исключительно для писем от одного конкретного домена отправителя?
  • 1 февраля 2024 г. 7:18
Ответы на вопрос 2
Для выполнения такой задачи в Postfix можно использовать внешний фильтр контента. К сожалению, сам Postfix не умеет непосредственно преобразовывать HTML в обычный текст, но вы можете настроить его работу с внешним скриптом, который будет выполнять эту функцию.

Вот основные шаги для реализации этого:

1. **Установите необходимые пакеты.**

   Вам понадобится утилита, которая умеет преобразовывать HTML в текст. Например, `lynx`, `w3m`, или `html2text`. Вы можете установить любую из них с помощью своей системы управления пакетами. Например, для `lynx`:

   ```sh
   sudo apt-get install lynx
   ```

2. **Создайте скрипт фильтра.**

   Создайте скрипт на сервере, который будет обрабатывать HTML и преобразовывать его в текст. Например, с использованием `lynx`:

   ```bash
   #!/bin/bash
   DOMAIN_TO_FILTER="example.com" # Укажите домен, от которого письма нужно конвертировать
   SENDER="$(formail -cx"From")"
   if [[ "$SENDER" == *"$DOMAIN_TO_FILTER"* ]]; then
     lynx --dump --width=1000
   else
     cat
   fi
   ```

   Замените `example.com` на домен отправителя, от которого нужно преобразовывать письма. Убедитесь, что вы сделали скрипт исполняемым:

   ```sh
   chmod +x /path/to/your/script
   ```

3. **Настройте Postfix.**

   Вам необходимо настроить Postfix для использования вашего скрипта как фильтра. Откройте файл конфигурации Postfix (`/etc/postfix/main.cf`) и добавьте свой скрипт в качестве одного из мастеров обработки писем. Например:

   ```
   master.cf:
   smtp      inet  n       -       y       -       -       smtpd
       -o content_filter=myfilter
   myfilter  unix  -       n       n       -       10      pipe
     flags=Rq user=filter null_sender=
     argv=/path/to/your/script -f ${sender} -- ${recipient}
   ```

   Здесь `filter` - это пользователь системы, от имени которого будет работать ваш скрипт. Убедитесь, что все права доступа на файлы и каталоги позволяют этому пользователю читать и записывать необходимые данные.

4. **Перезагрузите Postfix.**

   ```sh
   sudo postfix reload
   ```

Это базовая настройка. Возможно, потребуется дополнительная настройка в зависимости от особенностей ваших потребностей и конфигурации вашей системы. Обратите внимание, что такие конвертации могут привести к потере некоторой информации из письма, так как HTML-форматирование не будет перенесено в текстовый формат.
просто для направления мысли 
смотри, можно сделать алиас для получения писем от этого клиента. а вот для алиаса сделать чтото типа
usermail: "|/path/to/myscript.pl"
а уж там в скрипте обрабатывать сообщение как угодно.
Похожие вопросы