LINUX.ORG.RU
ФорумAdmin

[postfix] local delivery и post-processing

 


0

1

Приветствую.

Возникла задача обработки <<только-что-пришедших>> писем. Ловить их на спам-фильтре, как я это обычно делал, бесполезно. По задаче мне необхадимо имя файла письма, в который это письмо положил local.

Сначала попробывал решить задачу через mail_command, но это не то что мне нужно.

Если кратко описать, то то что я хочу получить(ход команд, сверху вниз):

virtual(spamfilter) <args>
  |
  sendmail <args>
    | 
    local <args>
      | 
      mycoolprogram <полное-имя-файла-письма-в-ящике-пользователя>


Ответ на: комментарий от guilder

Имхо, это плохой путь. Лучше использовать штатные средства, а не придумывать супер-пупер-костыли, которые будут интегрированы в систему особо изварщенным образом. Мне знакома ситуация, когда мне уперлось все сделать «вот так и никак иначе». К счастью, со временем понимаешь, что это от лукавого.

Valmont ★★★
()
Ответ на: комментарий от Valmont

>Лучше использовать штатные средства...

так, вообщем-то штатные средства свою работу выполняют.

Тут проблема в другом. Те же штатные средства не смогут выполнить свои операции если я вклинюсь <<до>> последнего local или virtual, которые ложат письмо в maildir.

Вот поэтому, необходимо обрабатывать после того как письмо положено. Но делать это сразу же, чтобы не нарваться на dovecot-imap сессию.

guilder
() автор топика
Ответ на: комментарий от guilder

Не очень понял вашу задачу. Но со скриптами не знаю подобного рода задач, которые нельзя было бы решить в связке postfix+dovecot_lda+sieve. так или иначе свою обработку вполне впихнуть можно.

Valmont ★★★
()
Ответ на: комментарий от guilder

Задача выглядит странно, но свой LDA вполне может решить эту задачу. Именно он кладет письмо в каталог. В чем проблема-то?

Valmont ★★★
()
Ответ на: комментарий от Valmont

Вы меня извините, но у меня складывается ощущение, что если вы и изучали вопрос, то очень плохо.

Что-то с письмом можно сделать используя стандартные способы фильтрации. Не все, но многое. Отрезать скриптом тело письма от заголовков, надругаться над ним нужным вас способом, склеить с заголовками и отдать обратно.
http://www.postfix.org/FILTER_README.html
http://www.postfix.org/SMTPD_PROXY_README.html

Далее, если это не подходит по каким-то причинам. Пишите перловый скрипт, который через perl-DBI общается с базой данных, выясняет кому класть, принимает на pipe письмо, производит необходимые вам манипуляции и кладет в каталог. Я не сказал, что это будет производительное решение и оно мне нравится. Но для вашей извращенной (имхо) задачи вполне подойдет. Вызывается банально через master.cf как свой deliver(LDA, local delivery agent), вместо virtual, dovecot или кого-еще-там.

Помимо этого, можно использовать
inotify, если прям так надо работать с письмами прямо в каталоге. Тоже странное решение, но наверно позволит достичь искомого.

Дальше уже лень придумывать, но еще несколько способов с разными обвязками можно придумать.

Valmont ★★★
()
Ответ на: комментарий от Valmont

>Вы меня извините, но у меня складывается ощущение, что если вы и изучали вопрос, то очень плохо.

я конечно не асс в postfix, но прежде чем писать топик, я прошерстил доки от и до в надежде найти то что мне нужно.

Что-то с письмом можно сделать используя стандартные способы фильтрации. Не все, но многое. Отрезать скриптом тело письма от заголовков, надругаться над ним нужным вас способом, склеить с заголовками и отдать обратно.

Если бы разделять письмо было бы достаточно я бы тем более не спрашивал. Это можно бы было делать на пайпе спамассасина.

Предполагается, что письмо уже отфильтровано, левел спама выставлен.

Но для вашей извращенной (имхо) задачи вполне подойдет.

У меня просто нет другого выхода, кроме как заниматься вот таким извращением.

Помимо этого, можно использовать

inotify, если прям так надо работать с письмами прямо в каталоге.

Что ж попробую посмотрить.

guilder
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.