Postfix: 나가는 SMTP SASL 인증 사용자의 악성 코드 및 스팸을 검사하는 방법은 무엇입니까?

Postfix: 나가는 SMTP SASL 인증 사용자의 악성 코드 및 스팸을 검사하는 방법은 무엇입니까?

비록 내가 찾았지만 답변이에 대해 실제로 구현하는 방법을 알아낼 수 없으며 그중 적어도 하나는 실제로 질문에 대답하지 않습니다. 누구든지 공유할 경험이 있다면 매우 감사하겠습니다.

Postfix를 실행하는 서버(Ubuntu 18.04)가 있습니다. 저는 이미 postfwd를 사용하여 SASL 발신자의 속도를 제한하고 있으며, 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 인증 사용자는 다음과 같습니다.~이었다필터링 중입니다. 그러나 master.cf에서 smtpd 리스너에 대해 지정하지 않았 syslog_name으므로 모든 소음 속에서 작동한다는 증거를 볼 수 없었습니다(SASL 인증 발신자는 아마도 로그에 있는 모든 트래픽의 1%일 것입니다).

따라서 다음은 약간 수정된 전체 구성에 대한 전체 설명입니다. 이 구성은 나가는 메일(예: 로컬 네트워크의 웹 앱)과 임의의 외부 네트워크에서 메일을 보내는 SASL 인증 계정을 메일 서버를 통해 전달합니다.

달리 명시되지 않는 한 기본 패키지와 함께 Ubuntu 18.04 사용:

먼저 amavis와 동일한 그룹에 clamav 사용자를 추가해야 했습니다.

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

파일 변경 사항 /etc/amavis/conf.d:

05-domain_id

@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-content_filter_mode: 스팸 및 바이러스 백신 검사 활성화

20-debian_defaults: 격리 디렉터리(amavis 사용자+그룹 소유)를 설정 및 생성하고 final_spam_destiny다음으로 설정합니다.D_DISCARD

40-policy_banks:

$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"를 찾으면 필터링 결과가 표시됩니다.

관련 정보