Table of Contents

Amavis (amavisd-new)

Postfix and Amavisd-new

Flusso di un messaggio mail

Con la configurazione illustrata in questa pagina, ogni messaggio pulito ricevuto da internet passa in realtà due volte nella coda di Postfix, con due ID differenti.

  1. Il processo postfix/smtpd riceve una connessione SMTP da internet, accetta il messaggio e gli assegna un ID:
    • postfix/smtpd[22477]: D1409260178: client=remote.server.it[185.21.73.197]
  2. A causa della direttiva content_filter il messaggio viene passato ad amavis con un relay su localhost e protocollo LMTP:
    • postfix/lmtp[23426]: D1409260178: … relay=127.0.0.1:10024 … queued as 1A4D52608E1
  3. Il processo amavis esegue il controllo e logga l'esito su mail.log:
    • amavis[23089]: (23089-03) Passed … queued_as: 1A4D52608E1

Nel caso invece di un messaggio SPAM, il messaggio passa una sola volta nella coda di Postfix e quindi viene scartato:

  1. Il processo postfix/smtpd riceve una connessione SMTP da internet, accetta il messaggio e gli assegna un ID:
    • postfix/smtpd[22342]: B1406260800: client=server.rigacci.org[176.29.139.130]
  2. Anche in questo caso avviene il relay verso amavis, su localhost con protocollo LMTP:
    • postfix/lmtp[23050]: B1406260800: … relay=127.0.0.1:10024 … (554 5.7.0 Bounce, id=19320-20 - spam))
  3. Ovviamente amavis logga l'esito dell'operazione (notare l'id del messaggio e il salvataggio in quarantena):
    • amavis[19320]: (19320-20) Blocked SPAM … quarantine: f/spam-fWA5oxc8FrZN.gz

Installazione

Installare il pacchetto Debian amavis. Per abilitare la funziona standard di controllo SPAM bisogna decommentare una riga in /etc/amavis/conf.d/15-content_filter_mode:

@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

L'installazione predefinita Debian non abilita neanche il controllo antivirus con ClamAV, per abilitarlo si deve aggiungere clamav al gruppo amavis e scommentare nello stesso 15-content_filter_mode:

#@bypass_virus_checks_maps = (
#   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);

La configurazione predefinita con Debian Buster è che Amavis considera locale solo il dominio indicato in /etc/mailname ed applica le proprie regole (ad esempio quella di marcare SPAM i messaggi individuati come tali). Se il server gestisce la posta per domini diversi, è necessario editare il file /etc/amavis/conf.d/05-domain_id ed aggiungere gli altri domini:

@local_domains_acl = ( ".$mydomain", "rigacci.org" );

Vedere Fighting spam - Amavisd-new.

Test

Attenzione che un messaggio con l'EICAR test file risulta positivo anche senza antivirus, basta l'antispam. Per verificare il corretto collegamento con ClamAV bisogna utilizzare un virus vero.

Configurazione Postfix

Due aggiunte, la prima in /etc/postfix/main.cf:

# Aggiunti per l'antispam.
# * Aggiungere regole Amavis in /etc/postfix/master.cf
# * Abilitare il bypass_spam_checks_maps in /etc/amavis/conf.d/15-content_filter_mode
# * Se si vuole anche ClamAV ricordarsi di abilitare il bypass_virus_checks_maps,
#   aggiungere clamav al gruppo amavis e abilitare AllowSupplementaryGroups.
content_filter = amavis:[127.0.0.1]:10024
# Passa i messagi ad Amavis senza address mapping (espansione alias, ecc.).
receive_override_options = no_address_mappings

e la seconda in /etc/postfix/master.cf:

# ==========================================================================
# Configurazione per Amavis
# ==========================================================================
amavis unix - - y - 2 lmtp
        -o smtp_data_dont_timeout=1200

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1

Quarantena

Se un messaggio viene filtrato da amavis, nei file di log si trova qualcosa del tipo:

Sep  4 10:11:53 paguma amavis[12651]: (12651-01) Blocked BANNED
    (application/x-msdos-program,.asc,eicar_antivirus_test.com)
    {BouncedOpenRelay,Quarantined}, [2a01:4f8:130:11c7::2]
    <niccolo@rigacci.org> -> <rigacci@faunalia.it>, quarantine: 4/banned-4Lf3p2mP_z3i,
    Message-ID: <20130904081152.GA3389@rigacci.org>, mail_id: 4Lf3p2mP_z3i, Hits: -, size: 1308, 242 ms

e il messaggio viene copiato in un file del tipo /var/lib/amavis/virusmails/4/banned-4Lf3p2mP_z3i

Falsi positivi

Chi invia un messaggio che viene catturato dall'antispam dovrebbe ricevere un messaggio di errore che tra l'altro dice:

Our internal reference code for your message is 16520-10/LNC5bs8JpfwN

Questo significa che sul server esiste un file in /var/lib/amavis/virusmails/L/spam-LNC5bs8JpfwN.gz che contiene negli header i risultati dello SpamAssassin.