Помогите реализовать в postfix динамическую фильтрациюЗадача:
Проверять внешнюю входящюю почту с помощью spamassassin и clamav...
раньше когда сервер смотрел в инет, на внешнем интерфейсе в постфиксе навешивал контент фильтр который как раз этим занимался...
сейчас сервер стоит за маршрутизатором, и имеет один интерфейс...
всю почту не хочется проверять, вот и задумался над этим вопросомВ документации прочел что можно делать так
/etc/postfix/access:
whatever FILTER foo:barно, что то пазл не складывается в полную картину... незнаю как правильно прописать в main.cf...
Может кто делал уже, помогите с реализацией
> Может кто делал уже, помогите с реализацией- с чем помочь-то?
- с реализацией.
>> Может кто делал уже, помогите с реализацией
> - с чем помочь-то?
> - с реализацией.динамического фильтра, например, мне не нужно проверять этим фильтром пользователей своего домена
спрашиваю как можно реализовать, без применения сторонних проксей и дополнительных программ типа амависа..
>>> Может кто делал уже, помогите с реализацией
>> - с чем помочь-то?
>> - с реализацией.
> динамического фильтра, например, мне не нужно проверять этим фильтром пользователей своего
> домена
> спрашиваю как можно реализовать, без применения сторонних проксей и дополнительных программ
> типа амависа..
>>В документации прочел что можно делать так
>>/etc/postfix/access:
>> whatever FILTER foo:barВ чем проблема-то?
> В чем проблема-то?Проблема в том что не понимаю как правильней обработать почту...
>> В чем проблема-то?
> Проблема в том что не понимаю как правильней обработать почту...Слово "правильней" подразумевает наличие нескольких вариантов, между которыми вы выбираете.
Приводите ваши варианты, обсудим.
> Приводите ваши варианты, обсудим.1. Вариант1, на маршрутизаторе делаю форвард с 25 порта на порт 10025 сервера
в main.cf:внутренний IP:10025 inet n - n - - smtpd
-o content_filter=myfilter:dummy.....
myfilter unix - n n - - pipe
flags=Ru user=vmail argv=/usr/local/etc/postfix/myfilter.sh -f $(sender) -- $(recipient)
в main.cf:
...
myfilter_destination_recipient_limit = 1
2. Вариант2, установить и настроить amavis-new, добавить в исключения мои домены3. Вариант3, делаю так:
main.cf:
...
header_checks=pcre:$config_directory/header_checkscontent_filter = scan:localhost:10025
receive_override_options = no_address_mappings
master.cf
...localhost:10025 unix - n n - - pipe
flags=Ru user=vmail argv=/usr/local/etc/postfix/myfilter.sh -f $(sender) -- $(recipient)# для возврата из фильтра...
localhost:10026 inet n - n - 10 smtpd
-o content_filter=
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks,no_milters
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_relay_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o smtpd_authorized_xforward_hosts=127.0.0.0/8
Файл header_checks:
...
IF /From:/
!/ <(.*@domain1.ry)>/ FILTER scan:localhost:10025
!/ <(.*@domain2.ru)>/ FILTER scan:localhost:10025
ENDIF
...третий вариант не делал не разу... сомневаюсь в правильности его
>раньше когда сервер смотрел в инет, на внешнем интерфейсе в постфиксе навешивал контент
>фильтр который как раз этим занимался...
>сейчас сервер стоит за маршрутизатором, и имеет один интерфейс...
>всю почту не хочется проверятьВариант 1 будет наиболее подобен тому, что "было раньше".
Вариант 2 - почта всё равно будет идти на фильтр, хотя и он ничего не будет с ней делать в силу настроенных исключений.
Вариант 3 - надеюсь вы понимаете, что заголовок From: внутри письма и тот MAIL FROM, что передается в SMTP-сессии, это разные From?
> Файл header_checks:
> ...
> IF /From:/
> !/ <(.*@domain1.ry)>/ FILTER scan:localhost:10025
> !/ <(.*@domain2.ru)>/ FILTER scan:localhost:10025
> ENDIF
> ...Таким синтаксисом (с IF) я не пользовался.
Но вообще решение вызывает у меня сомнения - вроде как проверка идет до первого совпадения, соответственно отправитель domain2.ru не пройдет первую проверку и письмо пойдет на фильтр.Варианты сильно различаются по степени гибкости.
Если устраивает вариант 1 - я бы выбрал его, как наиболее простой =).
>[оверквотинг удален]
>> !/ <(.*@domain2.ru)>/ FILTER scan:localhost:10025
>> ENDIF
>> ...
> Таким синтаксисом (с IF) я не пользовался.
> Но вообще решение вызывает у меня сомнения - вроде как проверка
> идет до первого совпадения, соответственно отправитель domain2.ru не пройдет первую проверку
> и письмо пойдет на фильтр.
> Варианты сильно различаются по степени гибкости.
> Если устраивает вариант 1 - я бы выбрал его, как наиболее простой
> =).Первый вариант мне не нравиться из-за того, что на фильтр попадает все письма, вне зависимости от настроек разрешений на helo/client/sender/recipient... Получается что сначала фильтр принимает всю почту, грубо говоря запускает антивирусную и спам проверку... или я не прав? или всетаки демон smtpd сначало отсеивает а потом передает контент фильтру?
Второй не расматриваю пока
> Первый вариант мне не нравиться из-за того, что на фильтр попадает все
> письма, вне зависимости от настроек разрешений на helo/client/sender/recipient... Получается
> что сначала фильтр принимает всю почту, грубо говоря запускает антивирусную и
> спам проверку... или я не прав? или всетаки демон smtpd сначало
> отсеивает а потом передает контент фильтру?Должен сначала отсеивать.
> Второй не расматриваю пока
> Если устраивает вариант 1 - я бы выбрал его, как наиболее простой > =).Ыхнифасебе! А то что там баш дёргается на каждое письмо тебя не сильно парит?
Хотя ... ну да - аффтар про траффик ничего не говорил :)
>> Если устраивает вариант 1 - я бы выбрал его, как наиболее простой > =).
> Ыхнифасебе! А то что там баш дёргается на каждое письмо тебя не
> сильно парит?
> Хотя ... ну да - аффтар про траффик ничего не говорил :)Ну так в варианте 3 то же самое, так что считаем это "условием задачи".
И вообще, мы обсуждаем, как разделить потоки "пойдет на фильтр/не пойдет на фильтр", а не то, как именно оно будет фильтроваться.
>>> Если устраивает вариант 1 - я бы выбрал его, как наиболее простой > =).
>> Ыхнифасебе! А то что там баш дёргается на каждое письмо тебя не
>> сильно парит?
>> Хотя ... ну да - аффтар про траффик ничего не говорил :)
> Ну так в варианте 3 то же самое, так что считаем это
> "условием задачи".
> И вообще, мы обсуждаем, как разделить потоки "пойдет на фильтр/не пойдет на
> фильтр", а не то, как именно оно будет фильтроваться.С динамической фильтрацией все намного гипче, например, все мои авторизованные пользователи, как минимум пойдут мимо фильтра, причем в не зависимости откуда они подключились... Собственно это я и хочу реализовать...
>[оверквотинг удален]
>>> Ыхнифасебе! А то что там баш дёргается на каждое письмо тебя не
>>> сильно парит?
>>> Хотя ... ну да - аффтар про траффик ничего не говорил :)
>> Ну так в варианте 3 то же самое, так что считаем это
>> "условием задачи".
>> И вообще, мы обсуждаем, как разделить потоки "пойдет на фильтр/не пойдет на
>> фильтр", а не то, как именно оно будет фильтроваться.
> С динамической фильтрацией все намного гипче, например, все мои авторизованные пользователи,
> как минимум пойдут мимо фильтра, причем в не зависимости откуда они
> подключились... Собственно это я и хочу реализовать...smtpd_sender_restrictions=
reject_non_fqdn_sender,
reject_unknown_sender_domain,
....
permit_sasl_authenticated,
check_sender_access /etc/postfix/send_to_filter
/etc/postfix/send_to_filter:/.*/ FILTER scan:localhost:10025
Однако, лично я средствами AMAVIS логирую проходящие письма (в частности авторизованных пользователей) и контролирую скриптом превышение установленных порогов, на случай если вдруг пароль утечет и из под аккаунта пользователя начнут слать спам.AMAVIS, на мой взгляд, можно было бы и допилить, чтобы он умел определять по заголовкам проходящего письма (доверять им) признак, что пользователь авторизовался на нашем сервере, и в зависимости от этого признака использовать другие политики проверок. Сейчас для этого они рекомендуют использовать настройку политики по порту, что не всегда удобно.
> smtpd_sender_restrictions=
> reject_non_fqdn_sender,
> reject_unknown_sender_domain,
> ....
> permit_sasl_authenticated,
> check_sender_access /etc/postfix/send_to_filter
> /etc/postfix/send_to_filter:
> /.*/ FILTER scan:localhost:10025Кстати да!, не нужно выискивать по заголовкам своих пользователей... Так и сделаю, спасибо за идею...
>> Если устраивает вариант 1 - я бы выбрал его, как наиболее простой > =).
> Ыхнифасебе! А то что там баш дёргается на каждое письмо тебя не
> сильно парит?
> Хотя ... ну да - аффтар про траффик ничего не говорил :)В первых двух случаях контент фильтр будет обрабатывать каждое письмо...
> В первых двух случаях контент фильтр будет обрабатывать каждое письмо...каждое письмо, проходящее через SMTP-порт.
Смысл мероприятия "вариант 1" в том, что есть разные порты - внешний и для внутрилокалки.Так что сначала разберитесь....
>> В первых двух случаях контент фильтр будет обрабатывать каждое письмо...
> каждое письмо, проходящее через SMTP-порт.
> Смысл мероприятия "вариант 1" в том, что есть разные порты - внешний
> и для внутрилокалки.
> Так что сначала разберитесь....Это понятно, но есть клиенты за локалкой??? они работают с почтовиком через внешний адресc... как я должен их определить??? мне кажется вы сами немного не понимаете...
> Это понятно, но есть клиенты за локалкой??? они работают с почтовиком через
> внешний адресc... как я должен их определить??? мне кажется вы сами
> немного не понимаете...Вы сами привели вариант 1 как приемлимый для вас:
>1. Вариант1, на маршрутизаторе делаю форвард с 25 порта на порт 10025 сервера
>в main.cf:Конечно не понимаю, вы же под разными никнеймами пишете.
>> Это понятно, но есть клиенты за локалкой??? они работают с почтовиком через
>> внешний адресc... как я должен их определить??? мне кажется вы сами
>> немного не понимаете...
> Вы сами привели вариант 1 как приемлимый для вас:
>>1. Вариант1, на маршрутизаторе делаю форвард с 25 порта на порт 10025 сервера
>>в main.cf:
> Конечно не понимаю, вы же под разными никнеймами пишете.Извеняюсь, писал с разных мест...
осталось для меня не понятным следующее:
допустим я зарулил почту на фильтр на 127.0.0.10025, он ее обработал, дальше каким образом я ее должен передать на возвратный 127.0.0.1:10026??? Это дожен сделать мой скрипт, или постфих сам знает куда отдать????
>[оверквотинг удален]
>>> немного не понимаете...
>> Вы сами привели вариант 1 как приемлимый для вас:
>>>1. Вариант1, на маршрутизаторе делаю форвард с 25 порта на порт 10025 сервера
>>>в main.cf:
>> Конечно не понимаю, вы же под разными никнеймами пишете.
> Извеняюсь, писал с разных мест...
> осталось для меня не понятным следующее:
> допустим я зарулил почту на фильтр на 127.0.0.10025, он ее обработал, дальше
> каким образом я ее должен передать на возвратный 127.0.0.1:10026??? Это дожен
> сделать мой скрипт, или постфих сам знает куда отдать????почта находится на фильтре. Куда он её отправит - фильтр решает сам.
> почта находится на фильтре. Куда он её отправит - фильтр решает сам.спасибо!
>[оверквотинг удален]
> контент фильтр который как раз этим занимался...
> сейчас сервер стоит за маршрутизатором, и имеет один интерфейс...
> всю почту не хочется проверять, вот и задумался над этим вопросом
> В документации прочел что можно делать так
> /etc/postfix/access:
> whatever FILTER
> foo:bar
> но, что то пазл не складывается в полную картину... незнаю как правильно
> прописать в main.cf...
> Может кто делал уже, помогите с реализациейПомогаю с реализацией. Дорого.
>[оверквотинг удален]
>> сейчас сервер стоит за маршрутизатором, и имеет один интерфейс...
>> всю почту не хочется проверять, вот и задумался над этим вопросом
>> В документации прочел что можно делать так
>> /etc/postfix/access:
>> whatever FILTER
>> foo:bar
>> но, что то пазл не складывается в полную картину... незнаю как правильно
>> прописать в main.cf...
>> Может кто делал уже, помогите с реализацией
> Помогаю с реализацией. Дорого.Мы на freelance.ru??? по мойму это специализированный форум, где люди делятся знаниями и помогают друг-другу в различных проблемах...
>> Помогаю с реализацией. Дорого.
> Мы на freelance.ru??? по мойму это специализированный форум, где люди делятся знаниями
> и помогают друг-другу в различных проблемах...Помогаю с русским языком. Бесплатно.
Мы на freelance.ru? По-моему, это специализированный форум, где люди делятся знаниями и помогают друг другу в различных проблемах...