Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: postfix/amavisd/sa: переслать копию сообщения локальному пользователю?  (Прочитано 860 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AnrDaemon

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28365
    • Просмотр профиля
Настраиваю связку postfix/amavisd-new/spamassassin. Вернее, настроил и работает, но очень много ошибочных срабатываний. Мало того, оно ещё и повреждает письма (темы) при проверке.
Хочу пересылать все входящие ДО сортировки и проверки на определённый ящик в системе (да, блин, на свой собственный...)
Как/каким способом это можно сделать?
Либо как можно в amavis/sa запустить внешнюю программу, покормив её тушкой проверяемого письма? Скрипт карбонки уже есть, проверен и работает, но я не понимаю, как его воткнуть между postfix и amavis.

Пользователь решил продолжить мысль 17 Февраля 2014, 10:35:55:
Кажется, сообразил... стоило поискать выход в дверь :)

main.cf:
content_filter = amavis-smtp:[127.0.0.1]:10024
master.cf:
smtp      inet  n       -       -       -       -       smtpd
  -o content_filter=simplecarbon:dummy

simplecarbon unix - n n - 100 pipe
  flags=hRq user=$USER null_sender=
  argv=/opt/scripts/simplecarbon.sh ${sender} -- ${original_recipient}
Входящую на 25-й порт почту ловит карбонка и перезапихивает в пикап через `sendmail -Gif "$1" -- "${@:3}"', после чего она ВНЕЗАПНО оказывается на 10024 порту амависа, стоящего главным фильтром.
« Последнее редактирование: 17 Февраля 2014, 10:35:55 от AnrDaemon »
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Karl500

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2267
    • Просмотр профиля
Например, добавив контент-фильтр:

- добавить в master.cf после строки

smtp inet ...


строку

   -o content_filter=mycarbonscript:dummy(в начале хотя бы один пробел)

Далее (например, в конце файла) добавить

mycarbonscript  unix  -  n  n  -  -  pipe
  flags=Rq user=postfix null_sender=
  argv=/usr/local/sbin/mycarbonscript

В main.cf нужно добавить строку

mycarbonscript_destination_recipient_limit = 1
Как-то так (не проверялось, естественно). Точное описание в документации postfix - http://www.postfix.org/FILTER_README.html

Оффлайн AnrDaemon

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28365
    • Просмотр профиля
Именно так и работает :))))
Стал немного лучше понимать работу postfix, но всё равно как-то маловато конфигурабельности.
Нельзя цепочки фильтров строить, если сам фильтр этого не поддерживает.
Разве что через третьего демона на нестандартном порту?... хм.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Karl500

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2267
    • Просмотр профиля
Мне, честно говоря, не хватает только одного: чтобы он "прокидывал" сквозь фильтры состояние authenticated_user. Ну и чтобы sendmail postfix'овский мог отправлять почту от авторизованного пользователя.

Через демоны - можно, конечно. Собственно, amavis так и поступает - инжектирует на 10025 порт.

Оффлайн AnrDaemon

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28365
    • Просмотр профиля
Состояние юзверя проверяется в момент состояния. Как только письмо принято, оно принято.
А куда там у тебя сендмейл собрался отправлять?
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Karl500

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2267
    • Просмотр профиля
Есть скрипт автоответчика, сделан как фильтр (так же, как твой carbonscript). Ему нужно знать, послано ли письмо авторизованным пользователем (тогда он должен включить/выключить автоответчик) или нет (тогда, естественно, проигнорировать). После своей работы он инжектирует письмо обратно в очередь sendmail'ом.

Для нормальной работы amavis (т.е. пропуска проверок при посылке "своими" пользователями), в amavis есть policy bank авторизованных юзеров. Но после работы скрипта автоответчика инфа о "авторизованности" пользователя теряется, соответственно работать и автоответчик и amavis'овский policy bank вместе не могут.

UPD: Кстати, та же проблема и у тебя, только либо тебе пофиг, либо ты пока об этом не знаешь :)
« Последнее редактирование: 17 Февраля 2014, 13:32:46 от Karl500 »

Оффлайн AnrDaemon

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28365
    • Просмотр профиля
Пофиг, ибо на 25-й порт свои прийдти НЕ МОГУТ.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

 

Страница сгенерирована за 0.058 секунд. Запросов: 25.