GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Configurazione di Amavis e ClamAV su Ubuntu Mail Server

Questa è la parte 11 della serie di tutorial da zero del server di posta Ubuntu. In questo articolo ti mostrerò come usare Amavis e ClamAV per eseguire la scansione dei virus nei messaggi di posta elettronica.

Amavi (A Mail Virus Scanner) è un'interfaccia ad alte prestazioni tra un agente di trasferimento messaggi (MTA) come Postfix e filtri di contenuto. Un filtro del contenuto è un programma che esegue la scansione delle intestazioni e del corpo di un messaggio di posta elettronica e di solito esegue alcune azioni in base a ciò che trova. Gli esempi più comuni sono Scanner antivirus ClamAV e SpamAssassin .

Amavis parla il protocollo SMTP standard e può anche utilizzare l'interfaccia del milter di Sendmail. È comunemente usato per

  • Scansione antivirus mediante integrazione con ClamAV (Clam AntiVirus)
  • controllo dello spam mediante l'integrazione con SpamAssassin
  • Firma e verifica DKIM. (In realtà, preferisco usare OpenDKIM per la firma e la verifica DKIM.)

Prerequisiti

Dovresti aver completato almeno la parte 1 (server SMTP Postfix) e la parte 2 (server IMAP Dovecot) della serie di tutorial da zero del server di posta Ubuntu. Nota che se hai utilizzato iRedMail o Modoboa per configurare il tuo server di posta, Amavis e ClamAV sono già installati e configurati, quindi non è necessario seguire questo tutorial.

Avviso :Amavis e ClamAV richiedono una discreta quantità di RAM. Assicurati di avere almeno 1,3 GB di RAM libera sul tuo server prima di installare Amavis e ClamAV. L'intero stack del server di posta (Postfix, Dovecot, Amavis, ClamAV, SpamAssassin, OpenDKIM, MySQL/MariaDB, PostfixAdmin e Roundcube Webmail) richiede almeno 3 GB RAM per funzionare senza problemi. Se la tua RAM si esaurisce, avrai problemi come il server di posta che va offline o non risponde.

Passaggio 1:installa Amavis su Ubuntu

Amvis è disponibile dal repository Ubuntu predefinito, quindi esegui il comando seguente per installarlo.

sudo apt install amavisd-new -y

Una volta installato, si avvia automaticamente. Puoi verificarne lo stato con:

stato systemctl amavis

Uscita:

● amavis.service - LSB:avvia amavisd-new mailfilter Caricato:caricato (/etc/init.d/amavis; generato) Attivo:attivo (in esecuzione) da ven 2020-08-07 15:43:40 HKT; 1min 1s fa Documenti:man:systemd-sysv-generator(8) Compiti:3 (limite:9451) Memoria:75,4 milioni CGroup:/system.slice/amavis.service ├─1794260 /usr/sbin/amavisd-new (master ) ├─1794263 /usr/sbin/amavisd-new (bambino vergine) └─1794264 /usr/sbin/amavisd-new (bambino vergine)

Se non è in esecuzione, puoi avviarlo con:

sudo systemctl start amavis

Abilita l'avvio automatico all'avvio.

sudo systemctl enable amavis

Per impostazione predefinita, è in ascolto su 127.0.0.1:10024 , come si può vedere con:

sudo netstat -lnpt | grep amavis

E funziona come amavis utente. Per controllare il numero di versione, esegui

amavisd-new -V

Esempio di output:

amavisd-nuovo-2.11.0 (20160426)

Per controllare i log di Amavis, puoi eseguire

sudo journalctl -eu amavis

I virus vengono comunemente diffusi come allegati ai messaggi di posta elettronica. Installa i seguenti pacchetti per consentire ad Amavis di estrarre e scansionare i file di archivio nei messaggi di posta elettronica come .7z , .cab , .doc , .exe , .iso , .jar e .rar file.

sudo apt install arj bzip2 cabextract cpio rpm2cpio file gzip lhasa nomarch pax rar unrar p7zip-full unzip zip lrzip lzip liblz4-tool lzop unrar-free

Se usi Ubuntu 18.04, installa anche ripole pacchetto.

sudo apt install ripole

Tieni presente che se il tuo server non utilizza un nome di dominio completo (FQDN) come nome host, Amavis potrebbe non avviarsi. E il nome host del sistema operativo potrebbe cambiare, quindi si consiglia di impostare un nome host valido direttamente nel file di configurazione di Amavis.

sudo nano /etc/amavis/conf.d/05-node_id

Trova la riga seguente.

#$myhostname ="mail.example.com";

Rimuovi il carattere del commento (#) e modifica mail.example.com al tuo vero nome host.

$miohostname ="mail.linuxbabe.com";

Salva e chiudi il file. Riavvia Amavis per rendere effettive le modifiche.

sudo systemctl riavvia amavis

Fase 2:integra il server SMTP Postfix con Amavis

Amavisd-new funziona come proxy SMTP. L'e-mail viene inviata tramite SMTP, elaborata e restituita all'MTA tramite una nuova connessione SMTP.

Modifica il file di configurazione principale di Postfix.

sudo nano /etc/postfix/main.cf

Aggiungi la riga seguente alla fine del file. Questo dice a Postfix di attivare il filtro dei contenuti inviando ogni messaggio di posta elettronica in arrivo ad Amavis, che è in ascolto su 127.0.0.1:10024 .

filtro_contenuto =smtp-amavis:[127.0.0.1]:10024

Inoltre, aggiungi la seguente riga.

smtpd_proxy_options =regolazione_velocità

Ciò ritarderà la connessione di Postfix al filtro dei contenuti fino alla ricezione dell'intero messaggio e-mail, il che può impedire ai filtri dei contenuti di sprecare tempo e risorse per i client SMTP lenti.

Salva e chiudi il file. Quindi modifica il master.cf file.

sudo nano /etc/postfix/master.cf

Aggiungi le seguenti righe alla fine del file. Questo indica a Postfix di utilizzare uno speciale componente client SMTP chiamato smtp-amavis per recapitare messaggi di posta elettronica ad Amavis. Si prega di consentire almeno uno spazio vuoto (tab o barra spaziatrice) prima di ogni -o . Nelle configurazioni suffisso, uno spazio vuoto precedente significa che questa riga è la continuazione della riga precedente.

smtp-amavis unix - - n - 2 smtp -o syslog_name=postfix/amavis -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20 -o smtp_tls_security_level=none

Quindi aggiungi le seguenti righe alla fine del file. Questo dice a Postfix di eseguire un demone smtpd aggiuntivo in ascolto su 127.0.0.1:10025 per ricevere messaggi di posta elettronica da Amavis.

127.0.0.1:10025 inet n - n - - smtpd -o syslog_name=postfix/10025 -o content_filter=-o mynetworks_style=host -o mynetworks=127.0.0.0/8 -o local_recipient_maps=-o relay_recipient_maps=-o strict_rfc821_envelopes =yes -o smtp_tls_security_level =nessuno -o smtpd_tls_security_level =nessuno -o smtpd_restriction_classes =-o smtpd_delay_reject =no -o smtpd_client_restrictions =permit_mynetworks, respingere -o smtpd_helo_restrictions =-o smtpd_sender_restrictions =-o smtpd_recipient_restrictions =permit_mynetworks, respingere -o smtpd_end_of_data_restrictions =-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 receiver_override_options=no_header_body_checks, no_unknown_client_addressmapping,spredress_recipient_checks 

Salva e chiudi il file. Riavvia Postfix per rendere effettive le modifiche.

sudo systemctl restart postfix

Fase 3:integra Amavis con ClamAV

Ora che Postfix può passare le e-mail in arrivo ad Amavis, dobbiamo installare lo scanner antivirus ClamAV e integrarlo con Amavis, in modo che le e-mail in arrivo possano essere scansionate da ClamAV.

Installa ClamAV su Ubuntu.

sudo apt install clamav clamav-daemon

Ci saranno due servizi systemd installati da ClamAV:

  • clamav-daemon.service :il demone dello spazio utente di Clam AntiVirus
  • clamav-freshclam.service :il programma di aggiornamento del database dei virus ClamAV

Innanzitutto, controlla lo stato di clamav-freshclam.service .

stato systemctl clamav-freshclam

Come puoi vedere, è attivo (in esecuzione) e utilizza 217,6 M di RAM sul mio server di posta. Quindi controlla il diario/registro.

sudo journalctl -eu clamav-freshclam

Uscita:

Suggerimento:se il comando precedente non si chiude immediatamente, premi il tasto Q per chiuderlo.

Possiamo vedere che freshclam scaricato 3 database di virus. CVD sta per ClamAV Virus Database.

  • cvd.giornaliero
  • main.cvd
  • bytecode.cvd

Tuttavia, clamd non è stato notificato perché freshclam non può connettersi a clamd tramite /var/run/clamav/clamd.ctl . Controlla lo stato di clamav-daemon.service .

stato systemctl clamav-daemon

Uscita:

Come puoi vedere, non è stato avviato perché una condizione non è stata soddisfatta. In /lib/systemd/system/clamav-daemon.service file, ci sono due condizioni:

ConditionPathExistsGlob=/var/lib/clamav/main.{c[vl]d,inc}ConditionPathExistsGlob=/var/lib/clamav/daily.{c[vl]d,inc}

Il clamav-daemon.service non è stato avviato perché main.cvd e daily.cvd non sono stati ancora scaricati all'avvio. Quindi dobbiamo solo riavviare questo servizio.

sudo systemctl restart clamav-daemon

Ora dovrebbe essere in esecuzione. A proposito, utilizza 731,4 M di RAM sul mio server di posta. Se il tuo server di posta non dispone di RAM sufficiente, il servizio fallirà.

stato systemctl clamav-daemon.service

Il clamav-freshclam.service controllerà gli aggiornamenti del database dei virus ClamAV una volta all'ora.

Ora dobbiamo attivare il controllo dei virus in Amavis.

sudo nano /etc/amavis/conf.d/15-content_filter_mode

Decommenta le seguenti righe per abilitare il controllo antivirus.

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

Salva e chiudi il file. Ci sono molti scanner antivirus in /etc/amavis/conf.d/15-av_scanners file. ClamAV è l'impostazione predefinita. Amavis chiamerà ClamAV tramite /var/run/clamav/clamd.ctl Presa Unix. Dobbiamo aggiungere l'utente clamav agli amavis gruppo.

sudo adduser clamav amavis

Quindi riavvia Amavis e il demone ClamAV per rendere effettive le modifiche.

sudo systemctl restart amavis clamav-daemon

Controlla i log.

sudo journalctl -eu amavis

Puoi vedere che Amavis ora sta usando ClamAV per scansionare i virus.

08 agosto 17:26:19 mail.linuxbabe.com amavis[1233432]:Utilizzo del codice dello scanner av interno primario per ClamAV-clamdAug 08 17:26:19 mail.linuxbabe.com amavis[1233432]:Trovato scanner av secondario ClamAV-clamscan su /usr/bin/clamscan

Ora, se invii un'e-mail da altri server di posta come Gmail al tuo server di posta e controlli le intestazioni delle e-mail, puoi trovare una riga come quella di seguito, che indica che questa e-mail è stata scansionata da Amavis.

X-Virus-Scanned:Debian amavisd-new su linuxbabe.com

Dovresti anche controllare il registro della posta (/var/log/mail.log ) per trovare eventuali errori.

Fase 4:utilizza una porta dedicata per gli invii e-mail

ClamAV può ora scansionare sia le email in entrata che quelle in uscita. Amavis è in ascolto sulla porta 10024 per i messaggi di posta elettronica in entrata e in uscita. Tuttavia, è buona norma utilizzare una porta diversa come 10026 per gli invii di posta elettronica da utenti autenticati. Modifica il file di configurazione di Amavis.

sudo nano /etc/amavis/conf.d/50-user

Le impostazioni personalizzate dovrebbero essere aggiunte tra use strict; e 1; linea. Per impostazione predefinita, Amavis è in ascolto solo sulla porta 10024. Aggiungi la seguente riga per farlo ascoltare anche sulla porta 10026.

$ inet_socket_port =[10024,10026];

Quindi aggiungi la seguente riga, che imposta la politica "ORIGINATING" per la porta 10026.

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

Successivamente, aggiungi le seguenti righe, che definiscono la politica "ORIGINATING".

$policy_bank{'ORIGINATING'} ={ # posta presumibilmente originata dai nostri utenti originata => 1, # dichiarare che la posta è stata inviata dal nostro client smtp allow_disclaimers => 1, # abilita l'inserimento del disclaimer se disponibile # notifica all'amministratore locale malware di origine virus_admin_maps => ["virusalert\@$mydomain"], spam_admin_maps => ["virusalert\@$mydomain"], warnbadhsender => 1, # forza la conversione MTA a 7 bit (ad es. prima della firma DKIM) smtpd_discard_ehlo_keywords => ['8BITMIME'], bypass_banned_checks_maps => [1], # consenti l'invio di qualsiasi nome e tipo di file terminate_dsn_on_notify_success => 0, # non rimuovere NOTIFY=opzione SUCCESS};

Salva e chiudi il file. Riavvia Amavis.

sudo systemctl riavvia amavis

Controlla il suo stato per vedere se il riavvio è riuscito.

stato systemctl amavis

Quindi, modifica il file di configurazione principale di Postfix.

sudo nano /etc/postfix/master.cf

Aggiungi la seguente riga al submission servizio, quindi le e-mail dai client SMTP autenticati verranno passate ad Amavis in ascolto sulla porta 10026. Questa riga sovrascriverà (-o ) il content_filter parametro in /etc/postfix/main.cf file che abbiamo aggiunto nel passaggio 2.

 -o content_filter=smtp-amavis:[127.0.0.1]:10026

In questo modo:

Se hai abilitato smtps servizio per gli utenti di Microsoft Outlook, è necessario aggiungere anche questa riga a smtps servizio.

Salva e chiudi il file. Riavvia Postfix per rendere effettive le modifiche.

sudo systemctl restart postfix

Controlla il suo stato per vedere se il riavvio è riuscito.

postfisso dello stato systemctl

Filtro antispam in Amavis

Nota :Se hai seguito il mio tutorial SpamAssassin, non è necessario abilitare il controllo dello spam in Amavis. Se lo abiliti, ogni email verrà controllata due volte da SpamAssassin.

Per abilitare il controllo dello spam in Amavis, installa SpamAssassin e i relativi pacchetti.

sudo apt install spamassassin libnet-dns-perl libmail-spf-perl pyzor razor

Modifica un file di configurazione Amavis.

sudo nano /etc/amavis/conf.d/15-content_filter_mode

Decommenta le seguenti righe per abilitare il controllo dello spam.

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

Salva e chiudi il file. Quindi riavvia Amavis.

sudo systemctl riavvia amavis

DKIM in Amavis

Due software comuni che possono eseguire la firma e la verifica DKIM su Linux sono OpenDKIM e Amavis. Preferisco usare OpenDKIM perché funziona meglio con OpenDMARC. Quindi non spiegherò come DKIM firmare la tua email in Amavis.

Per impostazione predefinita, Amavis può verificare la firma DKIM dei messaggi di posta elettronica in arrivo. Se hai OpenDKIM in esecuzione sul tuo server di posta, puoi disabilitare la verifica DKIM in Amavis.

sudo nano /etc/amavis/conf.d/21-ubuntu_defaults

Trova la riga seguente e cambia 1 a 0 , quindi Amavis non verificherà le firme DKIM.

$enable_dkim_verification =1;

Salva e chiudi il file. Quindi riavvia Amavis.

sudo systemctl riavvia amavis

Quando riceve le e-mail in arrivo, Postfix chiamerà OpenDKIM tramite l'interfaccia di sendmail milter per verificare le firme DKIM, quindi passerà l'e-mail ad Amavis per il controllo dei virus. Quando invia e-mail in uscita, Postfix chiamerà OpenDKIM per firmare le e-mail, quindi le passerà ad Amavis per il controllo antivirus.

Miglioramento delle prestazioni di Amavis

Per impostazione predefinita, Amavis esegue 2 processi. Se vedi le seguenti righe nel registro della posta (/var/log/mail.log ), significa che Amavis non può elaborare le email abbastanza velocemente.

postfix/qmgr[1619188]:avviso:la posta per [127.0.0.1]:10024 sta utilizzando fino a 4001 di 4008 voci di coda attivepostfix/qmgr[1619188]:avviso:potrebbe essere necessario ridurre smtp-amavis connect e helo timeoutspostfix /qmgr[1619188]:avviso:in modo che Postfix salti rapidamente hostspostfix non disponibile/qmgr[1619188]:avviso:potrebbe essere necessario aumentare main.cf minimal_backoff_time e maximal_backoff_timepostfix/qmgr[1619188]:avviso:in modo che Postfix perda meno tempo su posta non consegnabile postfix/qmgr[1619188]:avviso:potrebbe essere necessario aumentare il processo master.cf smtp-amavis limitmail postfix/qmgr[1619188]:avviso:evitare di svuotare l'intera coda quando si dispone di posta postfix/qmgr[1619188]:avviso:un sacco di posta in differita, che è dannoso per le prestazioni

Per migliorare le prestazioni, modifica il file di configurazione di Amavis.

sudo nano /etc/amavis/conf.d/50-user

Aggiungi la seguente riga nel file tra use strict; e 1; linea. Questo farà eseguire ad Amavis 4 processi. Se hai 10 core della CPU, puoi cambiarne da 4 a 10. Tieni presente che l'esecuzione di più di 10 processi Amavis ha scarso effetto sulle prestazioni.

$max_server =4;

Salva e chiudi il file. Quindi modifica il file di configurazione principale di Postifx.

sudo nano /etc/postfix/master.cf

Trova smtp-amavis definizione del servizio e modificare il limite di processo da 2 a 4.

smtp-amavis unix - - n - 4 smtp -o syslog_name=postfix/amavis -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20 -o smtp_tls_security_level=none

Salva e chiudi il file. Quindi riavvia Amavis e Postfix per rendere effettive le modifiche.

sudo systemctl restart amavis postfix

Ora esegui il seguente comando. Dovresti vedere che ora ci sono 4 processi Amavis.

sudo amavisd-tata

Premi Ctrl+C per fermare amavisd-nanny.

Salta il controllo antivirus per le tue newsletter

Se utilizzi il tuo server di posta per inviare newsletter e abiliti Amavis e ClamAV, molte risorse di CPU e RAM verranno utilizzate per il controllo antivirus quando invii newsletter ai tuoi abbonati. Potrebbe far sì che il tuo server di posta non risponda. Puoi saltare il controllo antivirus per le tue newsletter utilizzando il metodo seguente.

Modifica il file di configurazione principale di Postfix.

sudo nano /etc/postfix/master.cf

Aggiungi le seguenti righe all'inizio di questo file. Questo abiliterà smtpd sulla porta 2525 del localhost e può accettare connessioni client avviate dallo stesso server. Se c'è un altro processo in ascolto sulla porta 2525, puoi cambiare 127.0.0.1:2525 con qualcos'altro, come 127.0.0.1:2552. Nota che il content_filter il parametro è impostato su none , il che significa che le email non verranno scansionate da ClamAV.

127.0.0.1:2525 inet n - - - 1 smtpd -o syslog_name=postfix/2525 -o postscreen_greet_action=ignore -o content_filter=

Quindi aggiungi le seguenti righe alla fine di questo file. Sostituisci 12.34.56.78 con l'indirizzo IP pubblico del server di posta. Questo creerà un altro demone di invio Postfix in ascolto sulla porta 10587. Questo è per le connessioni client da un altro server.

 12.34.56.78:10587 inet n - y - - smtpd -o syslog_name =postfix / 10587 -o smtpd_tls_security_level =cifrare -o smtpd_tls_wrappermode =no -o smtpd_sasl_auth_enable =yes -o smtpd_relay_restrictions =permit_sasl_authenticated, respingere -o smtpd_recipient_restrictions =permit_mynetworks, permit_sasl_authenticated,reject -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth -o content_filter=

Salva e chiudi il file. Quindi riavvia postfix.

sudo systemctl restart postfix

Se la tua applicazione newsletter viene eseguita sul server di posta, specifica 127.0.0.1:2525 come host SMTP, senza autenticazione SMTP. Se la tua applicazione newsletter viene eseguita su un server diverso, specifica 12.34.56.78:10587 come host SMTP, con autenticazione SMTP.

Risoluzione dei problemi

Se il tuo server Postfix SMTP non è in grado di inviare e-mail in uscita e trovi il seguente messaggio di errore nel registro della posta (/var/log/mail.log ),

relay=none, delay=239, delays=239/0.04/0/0, dsn=4.3.0, status=deferred (server non disponibile o non in grado di ricevere la posta)

potrebbe essere che amavis non sia in esecuzione, quindi è necessario verificarne lo stato:

sudo systemctl status amavis

Puoi riavviarlo con:

sudo systemctl riavvia amavis

Un'altra causa di questo errore è che stai applicando la connessione TLS per Postfix quando invii e-mail in uscita con la seguente impostazione in /etc/postfix/main.cf file.

smtp_tls_security_level =applica

Poiché Postfix non può stabilire una connessione TLS ad Amavis, l'e-mail viene rinviata. Dovresti usare la seguente impostazione.

smtp_tls_security_level =maggio

Quindi riavvia Postfix.


Ubuntu
  1. Come installare DKIM sul server Ubuntu

  2. Impostazione NTP su Centos e Ubuntu

  3. Installazione e configurazione di Php e Nginx su Ubuntu 20.04

  4. Installa il server di posta Postfix e Dovecot su Ubuntu o Debian

  5. Installa server e client vnc su Ubuntu

Installa e configura VNC su Ubuntu 20.04

Installazione e configurazione di Plex Media Server su Ubuntu

Come installare Postfix Mail Server su Ubuntu 20.04

Configurazione di un server OpenVPN con Ubuntu e Viscosity

Installazione del server di posta Postfix su Ubuntu 14.04

Installazione del server di posta Postfix su Ubuntu 20.04