savenko_egor
@savenko_egor

Как выполнить свой скрипт при поступлении письма в postfix?

Ребят, подскажите, пожалуйста, как выполнить свой скрипт при поступлении письма в postfix и при этом доставить сообщение получателю?
Сейчас получилось сделать чтобы отрабатывал скрипт при поступлении, но при этом письмо не доходит в ящик.

master.cf
smtp      inet  n       -       n       -       -       smtpd
    -o content_filter=trigger:dummy

trigger   unix  -       n       n       -       -       pipe
    flags=F user=vmail argv=/etc/postfix/trigger ${sender} ${size} ${recipient}

"/etc/postfix/trigger" - bash скрипт который пока записывает входящие параметры в файл.

При этом в логе получается такое:
postfix/qmgr[24500]: 41A1F434B96: from=<user@domain1.com>, size=608, nrcpt=1 (queue active)
postfix/pipe[24513]: 41A1F434B96: to=<user@domain2.com>, relay=trigger, delay=0.06, delays=0.03/0.02/0/0.01, dsn=2.0.0, status=sent (delivered via trigger service)
postfix/qmgr[24500]: 41A1F434B96: removed
  • Вопрос задан
  • 1029 просмотров
Решения вопроса 1
savenko_egor
@savenko_egor Автор вопроса
Нашёл решение. Как не странно, в официальной документации: Postfix After-Queue Content Filter

UPDATE 07.02.2020:
Вклад в будущее =)
В случае если конструкция выше не будет работать, возможно подключение производится не на 25 порт, а на 465 или 587. В таком случае обработку будет выполнять не smtp, а smtps или submission. Если это так, то правило вызова триггера нужно добавлять в секции smtps или submission.

UPDATE 20.02.2020:
В случае если добавляется spamassassin, то тригер нужно дергать из вызова spamassassin, то есть так:
spamassassin unix -     n       n       -       -       pipe
  user=spamd argv=/usr/bin/spamc -p 8730 --max-size 10240000 -f -e /etc/postfix/trigger -f ${sender} -- ${recipient}

При этом вызов тригера нужно убрать и оставить только вызов spamassassin:
Было:
smtp      inet  n       -       n       -       -       smtpd
  -o content_filter=trigger:dummy

Стало:
smtp      inet  n       -       n       -       -       smtpd
  -o content_filter=spamassassin
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@MechanID
Админ хостинг провайдера
пару вариантов которыре пришли в голову:
1 через virtual или aliases копирывать письмо в еще 1 адресс и там уже его примет скрипт.
2 сделать фильтр который ранит скрипт и соответствующую запись в access файле чтобы фильтр применялся только к нужному адресу.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы