Postfix: как сканировать исходящие сообщения пользователей SMTP SASL-аутентификации на наличие вредоносного ПО и спама?

Postfix: как сканировать исходящие сообщения пользователей SMTP SASL-аутентификации на наличие вредоносного ПО и спама?

Хотя я нашелдва ответык этому, я не могу понять, как их на самом деле реализовать, и по крайней мере один из них на самом деле не отвечает на вопрос. Так что если у кого-то есть опыт, которым можно поделиться, я буду очень благодарен.

У меня есть сервер (Ubuntu 18.04) с Postfix. Я уже ограничиваю скорость отправителей SASL с помощью postfwd, а также использую и другие вещи для сканирования исходящей почты с локальной машины/сети (например, с веб-серверов) с помощью Amavis. Это все в порядке, и выглядит так в main.cf:

smtpd_sender_restrictions =
    check_client_access cidr:/etc/postfix/internal_clients_filter,
    permit_mynetworks, 
    reject_unknown_sender_domain

и в master.cf

senderCheck  unix  -       n       n       -       15       spawn
  user=nobody argv=/opt/policyd/src/policyd.pl  max_idle=30 max_use=50 daemon_timeout=50

127.0.0.1:10025 inet    n    -    n    -    -    smtpd
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o smtpd_restriction_classes=
    -o smtpd_delay_reject=no
    -o smtpd_client_restrictions=
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o mynetworks=127.0.0.0/8
    -o smtpd_data_restrictions=
    -o smtpd_end_of_data_restrictions=
    -o local_header_rewrite_clients=
    -o smtpd_error_sleep_time=0
    -o smtpd_soft_error_limit=1001
    -o smtpd_hard_error_limit=1000
    -o smtpd_client_connection_count_limit=0
    -o smtpd_client_connection_rate_limit=0
    -o smtpd_milters=
    -o local_recipient_maps=
    -o relay_recipient_maps=
    -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_address_mappings

Как мне подвергнуть отправителей SASL (которые по определению не входят в мою сеть) сканированию на спам и вредоносное ПО так же, как я это делаю для локальных отправителей?

решение1

Ответ на это, как ни странно, состоял в том, что пользователи SASL-authбылифильтруется. Однако я не указал syslog_nameдля прослушивателя smtpd в master.cf, поэтому не увидел доказательств его работы во всем этом шуме (отправители SASL-auth составляют, возможно, 1% всего трафика в журнале).

Поэтому в качестве расплаты ниже приводится полное описание моей слегка измененной конфигурации, которая пропускает как исходящую почту (например, веб-приложения в локальной сети), так и учетные записи с аутентификацией SASL, отправляющие почту из произвольных внешних сетей через наш почтовый сервер.

Использование Ubuntu 18.04 со стандартными пакетами, если не указано иное:

Во-первых, мне нужно было добавить пользователя clamav в ту же группу, что и amavis:

$ id clamav
uid=115(clamav) gid=115(clamav) groups=115(clamav),126(amavis)

Изменения в /etc/amavis/conf.dфайлах:

05-идентификатор_домена

@local_domains_acl = ( ".$mydomain" );

# I've got multiple IP addresses on my machine and only want one to be used for mail:
@inet_acl = qw(127.0.0.1 [::1] 185.73.x.x [2001:ba8:0:x::x]); 

15-режим_фильтра_контента: включить проверку на спам и вирусы

20-debian_defaults: Установить и создать каталог карантина (принадлежит пользователю+группе amavis) и установить final_spam_destinyего вD_DISCARD

40-политика_банков:

$interface_policy{'10024'} = 'INTERNAL'; 
$policy_bank{'INTERNAL'} = {  # mail originating from clients in cidr:/etc/postfix/internal_clients_filter
  bypass_spam_checks_maps   => [0],  # spam-check outgoing mail 
  bypass_banned_checks_maps => [0],  # banned-check outgoing mail 
  bypass_header_checks_maps => [0],  # header-check outgoing mail  
  forward_method => 'smtp:[127.0.0.1]:10025', # relay to Postfix listener on port 10025
};

В Postfix main.cf:

smtpd_sender_restrictions =
    check_client_access cidr:/etc/postfix/internal_clients_filter,
    permit_mynetworks, 
    reject_unknown_sender_domain

/etc/postfix/internal_clients_filter:

0.0.0.0/0 FILTER smtp:127.0.0.1:10024
::/0 FILTER smtp:[::1]:10024

В master.cf

127.0.0.1:10025 inet    n    -    n    -    -    smtpd
    -o syslog_name=amavis-reentry
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o smtpd_restriction_classes=
    -o smtpd_delay_reject=no
    -o smtpd_client_restrictions=
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o mynetworks=127.0.0.0/8
    -o smtpd_data_restrictions=
    -o smtpd_end_of_data_restrictions=
    -o local_header_rewrite_clients=
    -o smtpd_error_sleep_time=0
    -o smtpd_soft_error_limit=1001
    -o smtpd_hard_error_limit=1000
    -o smtpd_client_connection_count_limit=0
    -o smtpd_client_connection_rate_limit=0
    -o smtpd_milters=
    -o local_recipient_maps=
    -o relay_recipient_maps=
    -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_address_mappings

Перезагрузите amavis и postfix, чтобы получить новые конфигурации. Найдите "amavis-reentry" в своих журналах, и вы должны увидеть результаты фильтрации.

Связанный контент