Problemas remetentes na lista de autorizações no Amavis - novo

3

Eu tenho um servidor CentOS6 com Amavis 2.9.1 + Postfix 2.6.6 + clamav 0.99 que eu uso como mail relay (também conhecido como mail gateway ), com rede definida da seguinte forma: eth0 ( 10.10.132.104 ) como inteface externa eth1 ( 10.10.133.104 ) como interface interna (onde é enviado correio para usuários internos ou emails de saída)

Eu instalei o postfix com o seguinte master.cf (eu colo apenas partes de rilevant):

#smtp   inet    n       -       y       -       -       smtpd
10.10.133.104:smtp      inet    n       -       y       -       -       smtpd
  -o smtpd_client_restrictions=permit_mynetworks,reject
  -o cleanup_service_name=no-headerchecks
  -o content_filter=
127.0.0.1:smtp  inet    n       -       y       -       -       smtpd
   -o smtpd_client_restrictions=permit_mynetworks,reject
   -o cleanup_service_name=no-headerchecks
   -o content_filter=
10.10.132.104:smtp      inet    n       -       y       -       -       smtpd

127.0.0.1:10025 inet n    -       y       -       -     smtpd
   -o content_filter=
   -o smtpd_delay_reject=no
   -o smtpd_client_restrictions=permit_mynetworks,reject
   -o smtpd_helo_restrictions=
   -o smtpd_sender_restrictions=
   -o smtpd_recipient_restrictions=permit_mynetworks,reject
   -o smtpd_data_restrictions=reject_unauth_pipelining
   -o smtpd_end_of_data_restrictions=
   -o smtpd_restriction_classes=
   -o mynetworks=127.0.0.0/8,10.0.0.0/8
   -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 receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters,no_address_mappings
   -o local_header_rewrite_clients=
   -o smtpd_milters=
   -o local_recipient_maps=
   -o relay_recipient_maps=
….
….
amavisfeed unix    -       -       n        -      2     lmtp
   -o lmtp_data_done_timeout=1200
   -o lmtp_send_xforward_command=yes
   -o disable_dns_lookups=yes
   -o max_use=20

Em outras mãos, o amavis no momento só age em emails recebidos da rede externa. Em main.cf, o amavisfeed é especificado como padrão de filtro:

...
content_filter=amavisfeed:[127.0.0.1]:10024
...

Meu objetivo principal, em amavis, é bloquear todos (além de vírus, cabeçalhos ruins, etc.) arquivos proibidos , incluindo .zip e .rar , mas alguma exceção de remetentes.

Então, no meu amavis.conf, eu mudei $ banned_filename_re, adicionando uma linha para que ela seja lida:

  qr'^\.(zip|rar)$'i,                            # block zip and rar type 

O bloco funciona bem, até que eu use um filtro “bypass_” para evitar bloqueio quando alguns e-mails são recebidos de alguns remetentes. Usando o seguinte banco de políticas (por exemplo, meu domínio é “test.mydomain.com” ):

read_hash(\%whitelist_sender, '/etc/amavisd/whitelist');
@whitelist_sender_maps = (\%whitelist_sender);

$interface_policy{'10024'} = 'EXTERNAL';

# regular incoming mail, originating from anywhere (usually from outside)
$policy_bank{'EXTERNAL'} = {
  # # just use global settings, no special overrides
  log_level => 4,
  auth_required_release => 0,  # do not require secret_id for amavisd-release
   bypass_banned_checks_maps => [[qw( [email protected] [email protected] [email protected] )]],
};

Agora, suponha que usuário externo usuá[email protected] ” envie um e-mail para meu usuário interno usuário @ teste .mydomain.com ”com um anexo .zip. Passa com sucesso, mas PORQUE O RECIPIENTE ESTÁ CORRESPONDENTE (e não o SENDER ) ..: Do log:

….
Mar 16 14:58:57 test-mailgw amavis[10230]: (10230-01) dkim: public key s=s2014 d=libero.it k=rsa, 2048-bit key
Mar 16 14:58:57 test-mailgw amavis[10230]: (10230-01) dkim: VALID Author+Sender+MailFrom signature by d=libero.it, From:
<[email protected]>, a=rsa-sha256, c=relaxed/relaxed, s=s2014, [email protected]
Mar 16 14:58:57 test-mailgw amavis[10230]: (10230-01) Original mail size: 5472196; quota set to: 524288000 bytes (fmin=5,
fmax=500, qmin=102400, qmax=524288000)
Mar 16 14:58:57 test-mailgw amavis[10230]: (10230-01) Checking: xeO-t6yJ68dS EXTERNAL [212.48.25.196] <[email protected]>-> <[email protected]>
Mar 16 14:58:57 test-mailgw amavis[10230]: (10230-01) 2822.From: <[email protected]>
Mar 16 14:58:57 test-mailgw amavis[10230]: (10230-01) lookup_acl([email protected]) matches key ".test.mydomain.com", result=1
Mar 16 14:58:57 test-mailgw amavis[10230]: (10230-01) lookup [local_domains] => true,  "[email protected]" matches, result="1", matching_key=".test.mydomain.com"
Mar 16 14:58:57 test-mailgw amavis[10230]: (10230-01) lookup [bypass_virus_checks] => undef, "[email protected]" does not match
Mar 16 14:58:57 test-mailgw amavis[10230]: (10230-01) lookup_acl([email protected]) matches key "[email protected]", result=1
Mar 16 14:58:57 test-mailgw amavis[10230]: (10230-01) lookup => true,  "[email protected]" matches, result="1", matching_key="[email protected]"
Mar 16 14:58:57 test-mailgw amavis[10230]: (10230-01) lookup [bypass_spam_checks] => undef, "[email protected]" does not match
Mar 16 14:58:57 test-mailgw amavis[10230]: (10230-01) Extracting mime components from a file

De fato, se eu alterar a linha bypass_banned_checks_maps, leia:

   bypass_banned_checks_maps => [[qw( [email protected] [email protected] )]],

e reenviado o mesmo e-mail, o remetente não está na lista de permissões e o e-mail é bloqueado (BANNED e BOUNCED) e colocado em quarentena:

…...
Mar 16 15:14:57 test-mailgw amavis[10611]: (10611-01) Checking: lCsEqup1nnwy EXTERNAL [212.48.25.196] <[email protected]> 
-> <[email protected]>
Mar 16 15:14:57 test-mailgw amavis[10611]: (10611-01) 2822.From: <[email protected]>
Mar 16 15:14:57 test-mailgw amavis[10611]: (10611-01) lookup_acl([email protected]) matches key ".test.mydomain.com", result=1
Mar 16 15:14:57 test-mailgw amavis[10611]: (10611-01) lookup [local_domains] => true, "[email protected]" matches, result="1", matching_key=".test.mydomain.com"
Mar 16 15:14:57 test-mailgw amavis[10611]: (10611-01) lookup [bypass_virus_checks] => undef, "[email protected]" does not match
Mar 16 15:14:57 test-mailgw amavis[10611]: (10611-01) lookup_acl([email protected]), no match
Mar 16 15:14:57 test-mailgw amavis[10611]: (10611-01) lookup => undef, "[email protected]" does not match
Mar 16 15:14:57 test-mailgw amavis[10611]: (10611-01) lookup [bypass_spam_checks] => undef, "[email protected]" does not match
…...
Mar 16 15:14:58 test-mailgw postfix/lmtp[10620]: 64B778287E: to=<[email protected]>, relay=127.0.0.1[127.0.0.1]:10024, delay=2.1, delays=0.63/0.01/0.01/1.4, dsn=2.5.0, status=sent (250 2.5.0 Ok <[email protected]>, DSN was sent (554 5.7.0 Bounce, id=10611-01 - BANNED: .pdf,joomla_15_quickstart.pdf))
Mar 16 15:14:58 test-mailgw postfix/qmgr[631]: 64B778287E: removed
…….

Pelo contrário, ele continua verificando o endereço de e-mail do destinatário em vez do remetente.

E agora, mais um comportamento mais estranho e mais estranho! Se eu alterar meu policy_bank EXTERNAL, usando read_hash de um arquivo de inclusão da lista de desbloqueio, onde eu escrevo um endereço por linha, para ter:

  • meu arquivo / etc / amavisd / whitelist que lê como segue:

    [email protected] externaldomain2.tld

  • e o banco de políticas do amavisd.conf da seguinte forma:

    ... read_hash (\% whitelist_sender, '/ etc / amavisd / whitelist'); @whitelist_sender_maps = (\% whitelist_sender);

    $ interface_policy {'10024'} = 'EXTERNAL';

    $ policy_bank {'EXTERNAL'} = {  log_level = > 5,  auth_required_release = > 0, # não requer secret_id para o lançamento do amavisd   bypass_banned_checks_maps = > ['@whitelist_sender_maps'],
    }; ….

E eu envio o mesmo e-mail do exemplo anterior (externo “ [email protected] ” para o meu “ [email protected] ”), eu obtenha:

…...
Mar 16 15:36:32 test-mailgw amavis[11088]: (11088-01) Checking: S6fD-MRTCySL EXTERNAL [212.48.25.196] <[email protected]> -> <[email protected]>
Mar 16 15:36:32 test-mailgw amavis[11088]: (11088-01) 2822.From: <[email protected]>
Mar 16 15:36:32 test-mailgw amavis[11088]: (11088-01) lookup_acl([email protected]) matches key ".test.mydomain.com", result=1
Mar 16 15:36:32 test-mailgw amavis[11088]: (11088-01) lookup [local_domains] => true,  "[email protected]" matches, result="1",matching_key=".test.mydomain.com"
Mar 16 15:36:32 test-mailgw amavis[11088]: (11088-01) lookup [bypass_virus_checks] => undef, "[email protected]" does not match
Mar 16 15:36:32 test-mailgw amavis[11088]: (11088-01) lookup: (scalar) matches, result="@whitelist_sender_maps"
Mar 16 15:36:32 test-mailgw amavis[11088]: (11088-01) lookup => true, "[email protected]" matches, result="@whitelist_sender_maps", matching_key="(constant:@whitelist_sender_maps)"
Mar 16 15:36:32 test-mailgw amavis[11088]: (11088-01) lookup [bypass_spam_checks] => undef, "[email protected]" does not match
…..

... o email passa como Limpar e chega ao seu destino. (Além disso, por que "result =” @ whitelist_sender_maps "?)

Alguém poderia me ajudar e me sugerir onde e por que estou enganando ???

Agradecemos antecipadamente por qualquer ajuda. Gabo

    
por gabolander 16.03.2016 / 16:17

1 resposta

2

Parece que não é possível fazer isso apenas em amavis. Uma alternativa seria usar um banco de políticas separado, em que a verificação de nomes de arquivos proibidos é desativada e permitir que o Postfix direcione e-mails de endereços de remetentes permitidos para o banco de políticas.

Uma implementação básica pode ser feita da seguinte forma:

Adicione o seguinte ao amavisd.conf:

$interface_policy{'10026'} = 'NOBANNED';

$policy_bank{'NOBANNED'} = {
  # # just use global settings, no special overrides
  log_level => 4,
  auth_required_release => 0,
  bypass_banned_checks_maps => [1],
};

Crie um arquivo /etc/postfix/whitelist_filter , com conteúdos como:

[email protected]  FILTER smtp:[127.0.0.1]:10026

Crie o arquivo de hash para este arquivo:

postmap hash:/etc/postfix/whitelist_filter

E adicione a linha

check_client_access hash:/etc/postfix/whitelist_filter

em algum lugar no smtpd_recipient_restrictions in /etc/postfix/main.cf .

    
por 28.09.2016 / 12:05