Postfix + Amavis (bypass_spam_checks_maps для авторизовавшихся пользователей)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
Amper13
Сообщения: 551
ОС: Fedora 26, CentOS 7

Postfix + Amavis

Сообщение Amper13 »

Добрый день.
Возникала следующая проблема. Нужно чтобы пользователи прошедшие авторизацию на 25`ом порту не проверялись на спам.
Для 587 и 465 я делал так(да тут в общем то все понятно, тут чужих быть не может, так что если авторизовался то свой ):
master.cf:

Код:

submission inet n - n - - smtpd -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o content_filter=smtp-amavis:[127.0.0.1]:10026 smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o content_filter=smtp-amavis:[127.0.0.1]:10026

Для локального отправителя:

Код: Выделить всё

pickup    fifo  n       -       n       60      1       pickup
    -o smtpd_client_restrictions=permit_mynetworks,reject
    -o content_filter=smtp-amavis:[127.0.0.1]:10026

Согласно этим правилам пользователи попадают в $policy_bank{'ORIGINATING'} в котором есть следующие настройки:
amavisd.conf:

Код:

$policy_bank{'ORIGINATING'} = { # mail supposedly originating from our users originating => 1, # declare that mail was submitted by our smtp client allow_disclaimers => 1, # enables disclaimer insertion if available # notify administrator of locally originating malware virus_admin_maps => ["virusalert\@$mydomain"], spam_admin_maps => ["virusalert\@$mydomain"], warnbadhsender => 1, # forward to a smtpd service providing DKIM signing service #forward_method => 'smtp:[127.0.0.1]:10027', # force MTA conversion to 7-bit (e.g. before DKIM signing) #smtpd_discard_ehlo_keywords => ['8BITMIME'], bypass_banned_checks_maps => [1], # allow sending any file names and types bypass_header_checks_maps => [1], bypass_spam_checks_maps => [1], terminate_dsn_on_notify_success => 0, # don't remove NOTIFY=SUCCESS option };

А вот как заставить postfix делить пользователей на своих и чужих на 25`ом порту, ума не приложу.
Если авторизуюсь на 25`ом порту, в логах вижу следующее:
При отправке письма на другой сервер:

Код: Выделить всё

amavis[2122]: (02122-01) Open relay? Nonlocal recips but not originating: mymail@mail.ru

И действительно, mymail@mail.ru - не локальный адрес, действительно relay, но только не open.
Не авторизовавшимся пользователям релеить запрещено.
В main.cf есть
smtpd_recipient_restrictions =
reject_unauth_destination
Скажу даже больше, тем кто есть в базе, но не авторизовался, вообще запрещено что либо куда слать.
smtpd_sender_restrictions =
reject_sender_login_mismatch,
Ну и конечно:
smtpd_sender_login_maps =
ldap:/etc/postfix/ldap/sender_users_maps.cf,
ldap:/etc/postfix/ldap/sender_aliases_maps.cf
Ну и соответственно проверяет мое исходящее письмо спам-фильтром:

Код: Выделить всё

amavis[2122]: (02122-01) Passed CLEAN, [192.168.1.14] [192.168.1.14] <admin@home.local> -> <mymail@mail.ru>, Message-ID: <5044447A.6040009@home.local>, mail_id: g5Gb+MHe7-pZ, [b]Hits: -1.207[/b], size: 602, queued_as: DDAB4400FE, 202 ms

Еще раз (на всякий случай) повторю вопрос:
Как сделать так, чтобы любой (в данный момент не решена проблема только с авторизацией на 25`ом порту) пользователь прошедший авторизацию избегал проверки письма спам-фильтром, но при этом проходил проверку на вирусы(тобиш запихнуть его в какой нибудь policy_bank, ('ORIGINATING вполне бы подошел) ). Ну и все сторонние отправители проходили полный цикл проверок.
На счет необходимости использования policy_bank могу ошибаться, возможно есть и другой алгоритм действий, но пока что ничего лучше на ум не приходит.
Надеюсь на ваши советы и предложения. Заранее благодарю.
P.S. Возможно я слишком зациклился на поиске решения данной ситуации средствами postfix, вполне может быть что решить данную задачу можно средствами amavis`а, тут тоже ничего путного пока что придумать не могу :(
Спасибо сказали:
Аватара пользователя
Amper13
Сообщения: 551
ОС: Fedora 26, CentOS 7

Re: Postfix + Amavis

Сообщение Amper13 »

Убрал из лога:

Код: Выделить всё

amavis[2122]: (02122-01) Open relay? Nonlocal recips but not originating: mymail@mail.ru

Включением в amavisd.conf опций:

Код: Выделить всё

$enable_dkim_verification = 1;
$enable_dkim_signing = 1;

Хотя такое поведение мне не особо понятно, dkim_key я не генерировал и ни в amavisd.conf ни в DNS ничего больше не прописывал... :dntknw:
Вопрос про разделение пользователей на своих и чужих на 25 порту остается открытым :wacko:
P.S. Парсю просторы необъятного googl`а, то ли ищу не то, то ли не там... :(
Спасибо сказали:
Аватара пользователя
Amper13
Сообщения: 551
ОС: Fedora 26, CentOS 7

Re: Postfix + Amavis

Сообщение Amper13 »

Ну вроде бы нашел решение... Хотя еще продолжаю тестировать и искать варианты...
Поступил следующим образом:
По умолчанию пересылаю письма в $policy_bank{'ORIGINATING'} (тут соответственно отключена проверка на спам )
в main.cf:

Код: Выделить всё

content_filter = smtp-amavis:[127.0.0.1]:10026

Вставляю check_client_access последней строкой перед permit в smtpd_data_restrictions

Код: Выделить всё

smtpd_data_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_unauth_pipelining,
  reject_multi_recipient_bounce,
  check_client_access regexp:/etc/postfix/filter/filter-catchall.regexp
  permit

В filter-catchall.regexp:

Код: Выделить всё

/^/ FILTER smtp-amavis:[127.0.0.1]:10024

То есть отправляю на полный цикл проверки.
Логика следующая:
По скольку smtpd_data_restrictions выполняется ?последним ?, то если сообщение не встретило на своем пути ни одного reject, в окончании пути оно попадает на 10024 порт и проходит полный цикл проверки amavis`ом. Если на пути при проверке в smtpd_data_restrictions письмо встречает permit ( permit_mynetworks или permit_sasl_authenticated ), дальнейшее движение его по цепочки прекращается, и оно попадает на 10026 порт amavis`а и проходит цикл описанный политикой "ORIGINATING".
Помогла вот эта инструкция.
Уважаемые почтальоны и сочувствующие :) , если не сложно, прокомментируйте пожалуйста этот вариант решения выше поставленной задачи :blush:
Меня смущает то что в действительности smtpd_data_restrictions не последний restrictions, после него есть smtpd_end_of_data_restrictions, он конечно опциональный, но мне не понятны его действия по умолчанию, то есть если этот restriction не описан в main.cf. И есть еще smtpd_etrn_restrictions(тоже опционально ), правда я совсем запутался в последовательности исполнений restrictions. Точнее не пойму где в этой цепочки находится smtpd_etrn_restrictions, если верить этому товарищу, то на 3-ем, а если их правильно расположили в /usr/share/doc/postfix-2.6.6/README_FILES/SMTPD_ACCESS_README, то на последнем.
Вот и не ясно мне как поведут себя эти два ограничения если письмо на smtpd_data_restrictions улетит к amavis`у.
Продолжаю тестировать на работоспособность такой схемы и уязвимости.
По прежнему жду ваших комментариев и предложений.
P.S. Возможно кто нибудь посоветует более лучшее решение данной задачи.
Спасибо сказали: