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


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Аспекты настройки POSTFIX в режиме релея(+amavisd-new, greylisting, rbl, fail2ba  (Прочитано 469 раз)

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

Оффлайн patcheddna

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Господа!

POSTFIX в режиме релея на ms exchange. Своих ящиков нет, нет sql, только POSTFIX + amavisd-new.

Подскажите «бест практисес».

1) Если нет своих ящиков, как обучать bayes овский фильтр? На какой ящик, всмысле, его натравить, если своих нет?

2) Какой нынче продакшн грейлистинг используете (для постфикса ессесно)?

3) rbl - какие используете? Многие жалуются на ложные «срезания» целых подсетей, так ли это? правильно ли я понимаю, что для рбл нужен только открытый днс порт?

4) Прикручиваете ли fail2ban?

5) И самое главное, вот все увуто-то вот многоуровневое хозяйство чего-то блочит, режет и пр. Как получать таки копии писем, сообщения о блоке и пр. методом, отличным от парсенья логов?

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 26086
    • Просмотр профиля
Зачем натравливать на ящик? Натравливайте его на письма.
Где вы письма возьмёте - это другой вопрос.

Никакого.

Никакие. Именно по этой причине.

Нет. Зачем?…

Чо?…
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн patcheddna

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
AnrDaemon,
1) так вот где по правильному брать письма в таком случае

2)3)4) Как тогда вы боретесь со спамом? (шлюз предполагается как спам-фильтр)

5)Сработал на спам Амавис, письма нет. Сработал Грейлист, письма нет. Сработал РБЛ, письма нет.
Разные модули на своем уровне не пропустили письмо, вопрос как свести все эти события в одну сущность, возможно с копией письма, кроме как парсить логи?

Оффлайн Karl500

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2240
    • Просмотр профиля
1. Проще всего в этом случае сделать примерно так: завести два адреса, spam@example.com и ham@example.com (вашего домена, естественно), которые не будут релеиться. Завести транспорты sa-spam и sa-ham. В master.cf для этих транспортов сделать вызов враппера, который передает полученное письмо фильтру для обучения (как спам и не спам соответственно). Если нужны подробности - скажите.

2. Самую обычную (apt install postgrey). Установки по умолчанию.

3. postscreen dnsbl, zen.spamhaus.org

4. Да. Блокирует особо наглые спам-хосты на час.

5. Слежу по БД задержанных писем - 0 ложных срабатываний. Причем порог стоит намеренно маленький - при счете больше 6.9 письмо не доставляется адресату, а 60 дней хранится в БД, после чего удаляется.

6. Плюс - dkim (dmarc), spf, разор и пизор (амависд и спамассассин - понятно)
« Последнее редактирование: 27 Май 2016, 09:48:22 от Karl500 »

Оффлайн patcheddna

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Karl500,

1) Не могу пока понять алгоритмически:
 1.1 Мне все-таки нужны будет локальные ящики, sql и тд?
 1.2 Вот пришло письмо. отправитель - postfix - exchange. Письмо лежит в эксченже, пользователь, что-бы обучить, должен отправить его на spam@domain.com, но оно таки попадет на exchange же. При этом, если я каким-то чудом зашлю обратно на POSTFIX, то получится петля, ибо mydestination...

2) 3) Спасибо!

4) Не ткнете в какой-нибудь гайд, который вы счиаете ОК?

5) Можно поподробней, имелось ввиду, что режут разные сущности, а хотелось бы одну "точку выхода".

6) Спасибо!

Оффлайн Karl500

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2240
    • Просмотр профиля
1.1 - зачем?
1.2 - я ж написал: "которые не будут релеиться". Сделайте, например, поддомен.

4. Да какой там гайд. Вот что у меня в фильтре для postfix:
(Нажмите, чтобы показать/скрыть)
Соответственно, при попытке три раза послать мне письмо, получив отлуп 550, 554 или 450 (кроме 450 4.2.0 - это грейлистинг) хост банится на час.

5. Грейлистинг ничего не "режет". Он только просит повторить. Если кто-то не повторяет - его сложности (ну, кроме хостов, внесенных в белый список). postscreen (например) режет еще при попытке установить соединение. fail2ban - тоже ДО получения письма. И это правильно - на фига тратить трафик и ресурсы на получение заведомого бреда? Так что единственно, что нужно сохранять, это прошедшие все остальные проверки и признанные спамом письма. Они и сохраняются амависом (у меня - в БД, могут просто в виде отдельных файлов). И их после просмотра (пользователем или администратором) можно "выпустить" из клетки и доставить-таки адресату.

Оффлайн patcheddna

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Karl500,

простите, может туплю, но пока не понятно:
1.1 где тогда завести  spam@example.com и ham@example.com, на exchange? Ведь для ящиков postix по-хорошему нужны базы?
1.2 Откуда\куда не будут релеиться?

4) Спасибо!

5)Что такое тогда БД куда попадают ваши спамы? Как осуществляется просмотр?

Еще раз прошу прощения за детские вопросы, видно что вам это очевидно, а у меня просто postfix релеил себе спокойно, все понятно вход-выход. Теперь спам надо резать  "более лучше" (с), однако понимание локальных ящиков, "нерелеиться" и БД пока нет.

Замечу, что собираюсь этот шлюз пересобрать на 16.04, так что если надо БД, будет БД.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 26086
    • Просмотр профиля
Завести НА РЕЛЕЕ! Вы вообще читаете, что вам пишут?…
Какие "базы" вам нужны "по-хорошему"? И зачем?
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн patcheddna

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
AnrDaemon,
" НА РЕЛЕЕ! " если вы снизойдете до подробностей, будет здорово, очевидно, этот вопрос мне не до конца понятен, наверное стоило спросить на форуме... погодите  :-\

"Какие "базы" вам нужны "по-хорошему"? И зачем?" Все нормальные гайды (в т.ч. здесь и на хабре) содержат пункт - устанавливаем БД. У меня сложилась стойкая связь - локальные ящики = БД, поэтому и уточняю, какие БД имеет ввидуKarl500.

И у нас тут похоже 2 сущности БД, 1 про которую я пытаюсь понять, 2 по которой Karl500 "Слежу по БД "

Оффлайн AnrDaemon

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

У меня локальные ящики в Maildirs. Вот ещё, с БД связываться, лишний сервис держать.

P.S.
Вообще, начните уже ДЕЛАТЬ.
Поставьте VirtualBox, создайте в нём пару виртуалок и настраивайте.
От постоянных вопросов знания не прибавится, нужны практические занятия.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн Karl500

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2240
    • Просмотр профиля
Это даже не ящики. Ну т.е. писем в них никаких никогда не будет - все, что от них нужно, это:
- не отразить посланные на них письма с ошибкой "нет такого адреса"
- не релеить посланные на них письма

Все остальное делает скрипт (который можно или найти на просторах интернета, или, если есть необходимость в подробностях, спросите - раскажу подробнее).

Пользователь добавил сообщение 27 Май 2016, 15:38:58:
Про БД я говорил только в разрезе хранения писем, которые amavisd признал спамом и НЕ доставил до получателя. Я писал, что есть два варианта: хранить их в БД или хранить просто как файлы (это уж как будет угодно). Никакого прямого отношения к ящикам они не имеют.

Просмотр осуществляется при помощи специальной веб-морды. Называется mailzu.
« Последнее редактирование: 27 Май 2016, 15:40:30 от Karl500 »

Оффлайн patcheddna

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
AnrDaemon,
спасибо, ваше мнение понятно.

Karl500,

Отлично, погуглив mailzu открыл для себя quarntine management, смущает только что все, что гуглится перестало развиваться в 2013 году, но это уже понятно, надо еще почитать и выбрать.

А вот с байасом туго...  :'(
1. Проще всего в этом случае сделать примерно так: завести два адреса, spam@example.com и ham@example.com (вашего домена, естественно), которые не будут релеиться. Завести транспорты sa-spam и sa-ham. В master.cf для этих транспортов сделать вызов враппера, который передает полученное письмо фильтру для обучения (как спам и не спам соответственно). Если нужны подробности - скажите.

Помогите еще немного, пожалуйста.

И по поводу ексченджа, я в локальном днс делаю поддомен на ip postfix, в posfix придется добавить ассептед домаин - sub.domain.com и spam и ham заводить в нем? Правильно рассуждаю?


Оффлайн Karl500

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2240
    • Просмотр профиля
Угу, как-то так, если Вы хотите "кормить" фильтр только с иксчейнжда.

Вставляете примерно следующее:

В транспорты:
spam@sub.domain.com          sa-spam:
ham@sub.domain.com           sa-ham:

В master.cf:
# Spam & Ham
sa-spam unix - n n - - pipe user=amavis:amavis argv=/usr/local/sbin/sa-wrapper.pl spam ${sender}
sa-ham unix - n n - - pipe user=amavis:amavis argv=/usr/local/sbin/sa-wrapper.pl ham  ${sender}

И создаете файл /usr/local/sbin/sa-wrapper.pl
#!/usr/bin/perl -w
# Time-stamp: <05 April 2004, 13:37 home>
#
# sa-wrapper.pl
#
# SpamAssassin sa-learn wrapper
# (c) Alexandre Jousset, 2004
# This script is GPL'd
#
# Thanks to: Chung-Kie Tung for the removal of the dir
#            Adam Gent for bug report
#
# v1.2
 
use strict;
use MIME::Tools;
use MIME::Parser;

use Sys::Syslog;
 
my $DEBUG = 0;
my $UNPACK_DIR = '/var/lib/amavis/mime';
my $SA_LEARN = '/usr/bin/sa-learn';
my @DOMAINS = qw/domain.com/;
 
my ($spamham, $sender) = @ARGV;
 
sub recurs
{
    my $ent = shift;
 
    if ($ent->head->mime_type eq 'message/rfc822') {
        if ($DEBUG) {
            unlink "/tmp/spam.log.$$" if -e "/tmp/spam.log.$$";
            open(OUT, "|$SA_LEARN -D --$spamham --single >>/tmp/spam.log.$$ 2>&1") or die "Cannot pipe $SA_LEARN: $!";
        } else {
            open(OUT, "|$SA_LEARN --$spamham --single") or die "Cannot pipe $SA_LEARN: $!";
        }

    my $log_message = join(" ", "Mail from", $sender, "learned as", $spamham);
    openlog("sa_learn", "ndelay,pid", "local0");
    syslog("info", $log_message);
    closelog();
 
        $ent->bodyhandle->print(\*OUT);
 
        close(OUT);
        return;
    }

    my @parts = $ent->parts;
 
    if (@parts) {
        map { recurs($_) } @parts;
    }
}
 
my ($domain) = $sender =~ /\@(.*)$/;
unless (grep { $_ eq $domain } @DOMAINS) {
    die "I don't recognize your domain !";
}
 
if ($DEBUG) {
    MIME::Tools->debugging(1);
    open(STDERR, ">/tmp/spam_err.log");
}
my $parser = new MIME::Parser;
$parser->extract_nested_messages(0);
$parser->output_under($UNPACK_DIR);
 
my $entity;
eval {
    $entity = $parser->parse(\*STDIN);
};
 
if ($@) {
    die $@;
} else {
    recurs($entity);
}
 
$parser->filer->purge;
rmdir $parser->output_dir;

Заменить domain.com на свой домен, конечно.

Ну и - есть режим отладки: установите my $DEBUG = 1; и смотрите логи в /tmp/

Оффлайн patcheddna

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Спасибо, осмысляю.

А вот в данном сетапе, если пользователь пересылает письмо на spam@sub.domain.com, понимает ли система что надо учится по исходному письму, а не по ivanov@domain.com?

Оффлайн Karl500

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

 

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