Postfix фильтрация исходящих с сервера сообщений. [SOLVED]
joper 5 марта, 2010 - 16:52
Есть связка из postfix+spamassassin+clamav+dovecot
Спамасассин проверяет и входящую и исходящую почнту.
Задача: Сделать фильтрацию исходящих писем на предмет спама.
Т.е. чтобы если уходящее с сервера пиьмо имеет хедер X-Spam-Flag: YES, то его не отправлять, а например дропать.
Я так понимаю мне поможет headers_checks, вот только как эту проверку запиинкть конкретно полсе проверки на спам и конкретно для исходящих с сервера сообщений.
»
- Для комментирования войдите или зарегистрируйтесь
1
Сделать фильтрацию исходящих писем на предмет спама -
эмм а у тебя почта через этот сервер уходит не только локальная, а еще и пересылается с других доменов?
Ога. И ещё пересылается на
Ога. И ещё пересылается на другие домены, наприме у локального юзера стоит пересылка на мэйл-ру, и вот если туда валит спам, то и мэйл.ру от тоже валит, соотв в блек листы можно попасть.
Также, если юзер завирусится и вирь с его акка начнёт спам слать, то тоже можно попасть в блек листы. Соотв, всё что исходящее с сервера имеет X-Spam-Flag: YES, надо заворачивать.
joper написал(а): Также, если
по моему, вирусу нет дела до вашего маил-сервера, а рассылку он ведет напрямую. достаточно закрыть 25 порт для НЕ вашего сервера + авторизацию добавить...
или вирусня настолько продвинулась, что ищет-> авторизуется-> а затем и шлет спам через ваш smtp сервер ?
________________________
"We Will Win"
Есть такая штука как
Есть такая штука как smtp-gated.
Но для этого тебе всю почту выходящую с пoстфикса придется завернуть на smtp-gated днатом или чем еще.
Спс за совет, но я думаю, это
Спс за совет, но я думаю, это средствами поствикса сделать можно, зачемс плодить сущности-то зазря.
,
Если я не ошибаюсь, при подключении spamassassin как smtp-proxy или как content_filter вся почта и так попадает в него.
Думаю надо смотреть его настройки.
Да, а потом возваращается
Да, а потом возваращается постфиксу. Настройки спамассасина тут непричём. Нужно отлавливать исходящие именно полсе content_filter и что-то с ними делать.
.
ну тогда поидее совсем просто должно быть в случае с smtp-proxy: когда описывается прием почты назад в postfix от асасина в master.cf:
Для content_filter надо подумать, но тоже наверное както так
Да, я уже дошёл до этого
Да, я уже дошёл до этого :)
Только теперь следующая проблема:
Нужно проверять сразу несколько хедеров одновременно, а именно X-Spam-Flag: и To:
Но headers_checks умеет проверять только поодному. Т.е. для одного действия он не может проверить больше чем 1 хедер.
.
тогда напиши простенький скрипт, котроый это будет делать и дай его в параметр приема от асасина как content_filter
Или, если мне не изменяет память, наряду с OK,REJECT в действиях фильтра header_checks можно перенаправить в какойто другой фильтр (тот что ты напишешь :)
UPD: или сделай еще один файл для header_checks в котором проверяй второй раз. Типа первый раз в основном файле: если попадает под X-flag-spam, то FILTER header_check = regexp:/file2 в котором уже REJECT если подходящий "TO:"
ps. синтаксис по памяти придумывал, но чтото такое должно быть
izbushka написал(а): UPD:
Хм... По идее должно работать, щас проверю.
izbushka написал(а):FILTER
Не работает, ты уверен, что так можно?
Mar 9 15:44:11 postfix/qmgr[19857]: 94937B1834: from=test_user@xxx.ru, size=505, nrcpt=1 (queue active)
Mar 9 15:44:11 postfix/qmgr[19857]: warning: connect to transport private/header_checks = regexp: No such file or directory
.
Значит нельзя, но в content_filter перенаправить можно.
Заглянул я в доки постфикса и увидел, что можно делать письмам с X_SPAM_FLAG HOLD, а потом скриптом проходить по таким письмам:
Может есть и легче способ, пока в голову не приходит
Вот нашёл как можно
Вот нашёл как можно сделать
http://onetforum.com/fourm/viewtopic.php?p=63#63
Но Мне так не нравится, хотелось бы спам пускать, через отдельный транспорт в master.cf, а там уже его проверять 2-й раз по адресу получателя. Я так попробовал сделать, ну у мя письмо в петлю попадает.
main.cf
master.cf
Такая ошибка: Diagnostic-Code: X-Postfix; too many hops
Есть идеи как сделать,чтобы письмо не попадало в петлю?
,
видимо надо на выходе из check_domain делать -o receive_override_options=no_header_checks
И вообще, зачем ты делаешь для check_domain
header_checks=regexp:/usr/pkg/etc/postfix/check_domains
?у тя ж он уже почекан.
Первый раз чекаешь, отправляешь в check_domain, а check_domain уже должен сам проверить хедер То. На выходе не надо проверять.
izbushka написал(а): И
Собсно у мя это и есть 2-й чек. 1-й в header_checks = regexp:/etc/postfix/check_spam_flag. А как он(check_domain) сам должен хедер проверять без header_checks?
Попробую.
,
А, я понял как ты хочешь.
Сразу не заметил что check_domain это не фильтр а sendmail у тебя. Получается он подает почту постфиксу как новое письмо, которое опять по всем фильтрам и так далее..
Надо чтоб sendmail возвращал письмо отдельному постфикс процесу, по аналогии с асасином:
который уже не будет отправлять ее в header_check
Осталось узнать как сказать sendmail'у отправить почту на localhost порт 10999 (думаю это возможно)
Проблем а вто, что например
Проблем а вто, что например спамассин отправляет также сендмылом
flags=Rq user=vmail argv=/usr/pkg/bin/spamc -u vmail -e /usr/pkg/sbin/sendmail -f $sender $recipient
И 2-й раз письма не проверяются
,
Нашел решение?
Пока -нет.
Пока -нет.
procmail?
procmail?
Можно, но хотелось бы
Можно, но хотелось бы обойтись без него.
если меня не глючит, то за
если меня не глючит, то за __отправку__ отвечает smtp, а не smtpd
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
Ага, вроде оно, попробую-
Ага, вроде оно, попробую- отпишусь.
Вообщем нашёл простое
Вообщем нашёл простое решение. :)
Spamassassin умеет добавлять хедры соотв добавляем ко всем проверенным письмам:
local.cf
Далее делаем header_checks у постфикса в main.cf:
Используем контрукцию if endif, чтобы проверить 1 и тот же хедер. Правила применяются поочереди, если после 1-го совпадения стоит действие, то оно применятся к письму и письмо далее не проверяется.
Соотв:
Если спам-флаг стоит и письмо идёт на "конечный" для сервера домен, то пропускаем.
Остальные(после первого правила остаются только как раз исходящие письма) с флагом спама, редиректим куда следует.
check_out_spam