GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Configuration d'Amavis et de ClamAV sur le serveur de messagerie Ubuntu

Ceci est la partie 11 de la série de tutoriels sur le serveur de messagerie Ubuntu à partir de zéro. Dans cet article, je vais vous montrer comment utiliser Amavis et ClamAV pour analyser les virus dans les e-mails.

Amavis (A Mail Virus Scanner) est une interface performante entre un agent de transfert de messages (MTA) tel que Postfix et les filtres de contenu. Un filtre de contenu est un programme qui analyse les en-têtes et le corps d'un message électronique et prend généralement des mesures en fonction de ce qu'il trouve. Les exemples les plus courants sont le scanner de virus ClamAV et SpamAssassin .

Amavis parle le protocole SMTP standard et peut également utiliser l'interface Sendmail milter. Il est couramment utilisé pour

  • analyse antivirus en s'intégrant à ClamAV (Clam AntiVirus)
  • vérification anti-spam en s'intégrant à SpamAssassin
  • Signature et vérification DKIM. (En fait, je préfère utiliser OpenDKIM pour la signature et la vérification DKIM.)

Prérequis

Vous devez avoir terminé au moins la partie 1 (serveur SMTP Postfix) et la partie 2 (serveur Dovecot IMAP) de la série de tutoriels sur le serveur de messagerie Ubuntu à partir de zéro. Notez que si vous avez utilisé iRedMail ou Modoboa pour configurer votre serveur de messagerie, alors Amavis et ClamAV sont déjà installés et configurés, vous n'avez donc pas besoin de suivre ce tutoriel.

Avertissement :Amavis et ClamAV nécessitent une bonne quantité de RAM. Assurez-vous d'avoir au moins 1,3 Go de RAM libre sur votre serveur avant d'installer Amavis et ClamAV. L'ensemble de la pile de serveurs de messagerie (Postfix, Dovecot, Amavis, ClamAV, SpamAssassin, OpenDKIM, MySQL/MariaDB, PostfixAdmin et Roundcube Webmail) nécessite au moins 3 Go RAM pour fonctionner correctement. Si votre RAM s'épuise, vous allez avoir des problèmes comme le serveur de messagerie qui se déconnecte ou ne répond pas.

Étape 1 :Installez Amavis sur Ubuntu

Amvis est disponible à partir du référentiel Ubuntu par défaut, alors exécutez la commande suivante pour l'installer.

sudo apt install amavisd-new -y

Une fois installé, il démarre automatiquement. Vous pouvez vérifier son statut avec :

statut systemctl amavis

Sortie :

● amavis.service - LSB :Démarre amavisd-new mailfilter Chargé :chargé (/etc/init.d/amavis ; généré) Actif :actif (en cours d'exécution) depuis le ven. 2020-08-07 15:43:40 HKT ; 1min Il y a 1s Docs :man:systemd-sysv-generator(8) Tâches :3 (limite :9451) Mémoire :75,4 Mo CGroup :/system.slice/amavis.service ├─1794260 /usr/sbin/amavisd-new (master ) ├─1794263 /usr/sbin/amavisd-new (enfant vierge) └─1794264 /usr/sbin/amavisd-new (enfant vierge)

S'il ne fonctionne pas, vous pouvez le démarrer avec :

sudo systemctl démarrer amavis

Activer le démarrage automatique au démarrage.

sudo systemctl activer amavis

Par défaut, il écoute sur 127.0.0.1:10024 , comme on peut le voir avec :

sudo netstat -lnpt | grep amavis

Et il fonctionne comme le amavis utilisateur. Pour vérifier le numéro de version, exécutez

amavisd-new -V

Exemple de sortie :

amavisd-new-2.11.0 (20160426)

Pour vérifier les journaux d'Amavis, vous pouvez exécuter

sudo journalctl -eu amavis

Les virus se propagent généralement sous forme de pièces jointes aux messages électroniques. Installez les packages suivants pour Amavis pour extraire et analyser les fichiers d'archive dans les messages électroniques tels que .7z , .cab , .doc , .exe , .iso , .jar , et .rar fichiers.

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

Si vous utilisez Ubuntu 18.04, installez également le ripole paquet.

sudo apt install ripole

Notez que si votre serveur n'utilise pas un nom de domaine complet (FQDN) comme nom d'hôte, Amavis peut ne pas démarrer. Et le nom d'hôte du système d'exploitation peut changer, il est donc recommandé de définir un nom d'hôte valide directement dans le fichier de configuration Amavis.

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

Trouvez la ligne suivante.

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

Supprimez le caractère de commentaire (#) et modifiez mail.example.com à votre vrai nom d'hôte.

$myhostname ="mail.linuxbabe.com";

Enregistrez et fermez le fichier. Redémarrez Amavis pour que les modifications prennent effet.

sudo systemctl redémarrer amavis

Étape 2 :Intégrer le serveur SMTP Postfix avec Amavis

Amavisd-new fonctionne comme un proxy SMTP. Le courrier électronique lui est acheminé via SMTP, traité et renvoyé au MTA via une nouvelle connexion SMTP.

Modifiez le fichier de configuration principal de Postfix.

sudo nano /etc/postfix/main.cf

Ajoutez la ligne suivante à la fin du fichier. Cela indique à Postfix d'activer le filtrage de contenu en envoyant chaque e-mail entrant à Amavis, qui écoute sur 127.0.0.1:10024 .

content_filter =smtp-amavis :[127.0.0.1]:10024

Ajoutez également la ligne suivante.

smtpd_proxy_options =speed_adjust

Cela retardera la connexion de Postfix au filtre de contenu jusqu'à ce que l'intégralité de l'e-mail ait été reçue, ce qui peut empêcher les filtres de contenu de faire perdre du temps et des ressources aux clients SMTP lents.

Enregistrez et fermez le fichier. Modifiez ensuite le master.cf fichier.

sudo nano /etc/postfix/master.cf

Ajoutez les lignes suivantes à la fin du fichier. Cela indique à Postfix d'utiliser un composant client SMTP spécial appelé smtp-amavis pour envoyer des messages électroniques à Amavis. Veuillez autoriser au moins un caractère d'espacement (tabulation ou barre d'espace) avant chaque -o . Dans les configurations postfixées, un caractère d'espacement précédent signifie que cette ligne est la continuation de la ligne précédente.

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

Ajoutez ensuite les lignes suivantes à la fin du fichier. Cela indique à Postfix d'exécuter un démon smtpd supplémentaire écoutant sur 127.0.0.1:10025 pour recevoir des e-mails en retour d'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 =none -o smtpd_tls_security_level =aucun -o -o smtpd_restriction_classes =smtpd_delay_reject =no -o smtpd_client_restrictions =permit_mynetworks, rejeter -o -o =smtpd_helo_restrictions smtpd_sender_restrictions =-o smtpd_recipient_restrictions permit_mynetworks, rejeter -o -o =smtpd_end_of_data_restrictions 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_dress_checks,no_unknown_body_dress_checks,no_unknown_body_recipients 

Enregistrez et fermez le fichier. Redémarrez Postfix pour que les modifications prennent effet.

sudo systemctl redémarrer le suffixe

Étape 3 :Intégrer Amavis à ClamAV

Maintenant que Postfix peut transmettre les e-mails entrants à Amavis, nous devons installer le scanner de virus ClamAV et l'intégrer à Amavis, afin que les e-mails entrants puissent être analysés par ClamAV.

Installez ClamAV sur Ubuntu.

sudo apt install clamav clamav-daemon

Il y aura deux services systemd installés par ClamAV :

  • clamav-daemon.service :le démon de l'espace utilisateur Clam AntiVirus
  • clamav-freshclam.service :le programme de mise à jour de la base de données virale ClamAV

Tout d'abord, vérifiez l'état de clamav-freshclam.service .

statut systemctl clamav-freshclam

Comme vous pouvez le voir, il est actif (en cours d'exécution) et utilise 217,6 Mo de RAM sur mon serveur de messagerie. Vérifiez ensuite le journal/journal.

sudo journalctl -eu clamav-freshclam

Sortie :

Astuce :si la commande ci-dessus ne se ferme pas immédiatement, appuyez sur la touche Q pour la faire quitter.

Nous pouvons voir que freshclam téléchargé 3 bases de données virales. CVD signifie ClamAV Virus Database.

  • quotidien.cvd
  • main.cvd
  • bytecode.cvd

Cependant, clamd n'a pas été notifié car freshclam ne peut pas se connecter à clamd via /var/run/clamav/clamd.ctl . Vérifier l'état de clamav-daemon.service .

statut systemctl clamav-daemon

Sortie :

Comme vous pouvez le voir, il n'a pas pu démarrer car une condition n'était pas remplie. Dans le /lib/systemd/system/clamav-daemon.service fichier, il y a deux conditions :

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

Le clamav-daemon.service n'a pas pu démarrer car main.cvd et daily.cvd n'ont pas encore été téléchargés au démarrage. Il nous suffit donc de redémarrer ce service.

sudo systemctl redémarrer clamav-daemon

Maintenant, il devrait fonctionner. Au fait, il utilise 731,4 Mo de RAM sur mon serveur de messagerie. Si votre serveur de messagerie ne dispose pas de suffisamment de RAM, le service échouera.

statut systemctl clamav-daemon.service

Le clamav-freshclam.service vérifiera les mises à jour de la base de données virale ClamAV une fois par heure.

Nous devons maintenant activer la vérification antivirus dans Amavis.

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

Décommentez les lignes suivantes pour activer la vérification antivirus.

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

Enregistrez et fermez le fichier. Il y a beaucoup de scanners antivirus dans le /etc/amavis/conf.d/15-av_scanners dossier. ClamAV est la valeur par défaut. Amavis appellera ClamAV via le /var/run/clamav/clamd.ctl Prise Unix. Nous devons ajouter l'utilisateur clamav à l'amavis groupe.

sudo adduser clamav amavis

Redémarrez ensuite les démons Amavis et ClamAV pour que les modifications prennent effet.

sudo systemctl redémarre amavis clamav-daemon

Vérifiez les journaux.

sudo journalctl -eu amavis

Vous pouvez voir qu'Amavis utilise maintenant ClamAV pour analyser les virus.

Aug 08 17:26:19 mail.linuxbabe.com amavis[1233432] :Utilisation du code de scanner AV interne principal pour ClamAV-clamdAug 08 17:26:19 mail.linuxbabe.com amavis[1233432] :Scanner AV secondaire trouvé ClamAV-clamscan à /usr/bin/clamscan

Maintenant, si vous envoyez un e-mail depuis d'autres serveurs de messagerie comme Gmail vers votre propre serveur de messagerie et vérifiez les en-têtes d'e-mail, vous pouvez trouver une ligne comme ci-dessous, qui indique que cet e-mail a été scanné par Amavis.

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

Vous devriez également vérifier le journal de messagerie (/var/log/mail.log ) pour trouver s'il y a des erreurs.

Étape 4 :Utilisez un port dédié pour les envois par e-mail

ClamAV peut désormais analyser les e-mails entrants et sortants. Amavis écoute sur le port 10024 les messages électroniques entrants et sortants. Cependant, il est recommandé d'utiliser un port différent, tel que 10026, pour les envois par e-mail d'utilisateurs authentifiés. Modifiez le fichier de configuration Amavis.

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

Les paramètres personnalisés doivent être ajoutés entre use strict; et 1; doubler. Par défaut, Amavis n'écoute que sur le port 10024. Ajoutez la ligne suivante pour qu'il écoute également sur le port 10026.

$inet_socket_port =[10024,10026] ;

Ajoutez ensuite la ligne suivante, qui définit la politique "ORIGINATING" pour le port 10026.

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

Ensuite, ajoutez les lignes suivantes, qui définissent la politique "ORIGINATING".

$policy_bank{'ORIGINATING'} ={ # courrier censé provenir de nos utilisateurs originating => 1, # déclare que le courrier a été soumis par notre client smtp allow_disclaimers => 1, # active l'insertion de clause de non-responsabilité si disponible # avertit l'administrateur de localement malware d'origine virus_admin_maps => ["virusalert\@$mydomain"], spam_admin_maps => ["virusalert\@$mydomain"], warnbadhsender => 1, # force la conversion MTA en 7 bits (par exemple avant la signature DKIM) smtpd_discard_ehlo_keywords => ['8BITMIME'], bypass_banned_checks_maps => [1], # autoriser l'envoi de tous les noms et types de fichiers terminate_dsn_on_notify_success => 0, # ne pas supprimer l'option NOTIFY=SUCCESS} ;

Enregistrez et fermez le fichier. Redémarrez Amavis.

sudo systemctl redémarrer amavis

Vérifiez son état pour voir si le redémarrage a réussi.

statut systemctl amavis

Ensuite, éditez le fichier de configuration principal de Postfix.

sudo nano /etc/postfix/master.cf

Ajoutez la ligne suivante à la submission service, ainsi les e-mails des clients SMTP authentifiés seront transmis à Amavis écoutant sur le port 10026. Cette ligne remplacera (-o ) le content_filter paramètre dans /etc/postfix/main.cf fichier que nous avons ajouté à l'étape 2.

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

Comme ceci :

Si vous avez activé le smtps service pour les utilisateurs de Microsoft Outlook, vous devez également ajouter cette ligne au smtps services.

Enregistrez et fermez le fichier. Redémarrez Postfix pour que les modifications prennent effet.

sudo systemctl redémarrer le suffixe

Vérifiez son état pour voir si le redémarrage a réussi.

suffixe d'état systemctl

Filtrage des spams dans Amavis

Remarque :Si vous avez suivi mon tutoriel SpamAssassin, vous n'avez pas besoin d'activer la vérification des spams dans Amavis. Si vous l'activez, chaque e-mail sera vérifié deux fois par SpamAssassin.

Pour activer la vérification des spams dans Amavis, installez SpamAssassin et les packages associés.

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

Modifier un fichier de configuration Amavis.

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

Décommentez les lignes suivantes pour activer la vérification anti-spam.

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

Enregistrez et fermez le fichier. Puis redémarrez Amavis.

sudo systemctl redémarrer amavis

DKIM à Amavis

OpenDKIM et Amavis sont deux logiciels courants capables de signer et de vérifier DKIM sous Linux. Je préfère utiliser OpenDKIM car cela fonctionne mieux avec OpenDMARC. Je n'expliquerai donc pas comment signer votre e-mail avec DKIM dans Amavis.

Par défaut, Amavis peut vérifier la signature DKIM des messages électroniques entrants. Si vous avez OpenDKIM en cours d'exécution sur votre serveur de messagerie, vous pouvez désactiver la vérification DKIM dans Amavis.

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

Trouvez la ligne suivante et modifiez 1 à 0 , donc Amavis ne vérifiera pas les signatures DKIM.

$enable_dkim_verification =1 ;

Enregistrez et fermez le fichier. Puis redémarrez Amavis.

sudo systemctl redémarrer amavis

Lors de la réception d'e-mails entrants, Postfix appellera OpenDKIM via l'interface sendmail milter pour vérifier les signatures DKIM, puis transmettra l'e-mail à Amavis pour la vérification des virus. Lors de l'envoi d'e-mails sortants, Postfix appellera OpenDKIM pour signer les e-mails, puis les transmettra à Amavis pour la vérification antivirus.

Améliorer les performances d'Amavis

Par défaut, Amavis exécute 2 processus. Si vous voyez les lignes suivantes dans le journal de messagerie (/var/log/mail.log ), cela signifie qu'Amavis ne peut pas traiter les e-mails assez rapidement.

postfix/qmgr[1619188] :avertissement :le courrier pour [127.0.0.1] :10024 utilise 4001 des 4008 entrées de file d'attente activespostfix/qmgr[1619188] :avertissement :vous devrez peut-être réduire les délais de connexion smtp-amavis et helopostfix /qmgr[1619188] :avertissement :pour que Postfix ignore rapidement les hôtes indisponiblespostfix/qmgr[1619188] :avertissement :vous devrez peut-être augmenter le main.cf minimal_backoff_time et maximal_backoff_timepostfix/qmgr[1619188] :avertissement :pour que Postfix perde moins de temps sur mail postfix/qmgr[1619188] non distribuable :avertissement :vous devrez peut-être augmenter le processus master.cf smtp-amavis limitmail postfix/qmgr[1619188] :avertissement :veuillez éviter de vider toute la file d'attente lorsque vous avez postfix mail/qmgr[1619188] :avertissement :beaucoup de messages différés, ce qui nuit aux performances

Pour améliorer les performances, modifiez le fichier de configuration Amavis.

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

Ajoutez la ligne suivante dans le fichier entre use strict; et 1; doubler. Cela obligera Amavis à exécuter 4 processus. Si vous avez 10 cœurs de processeur, vous pouvez passer de 4 à 10. Notez que l'exécution de plus de 10 processus Amavis a peu d'effet sur les performances.

$max_servers =4 ;

Enregistrez et fermez le fichier. Modifiez ensuite le fichier de configuration maître Postifx.

sudo nano /etc/postfix/master.cf

Trouvez le smtp-amavis définition de service et modifiez la limite de processus de 2 à 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

Enregistrez et fermez le fichier. Redémarrez ensuite Amavis et Postfix pour que les modifications prennent effet.

sudo systemctl redémarre amavis postfix

Exécutez maintenant la commande suivante. Vous devriez voir qu'il y a maintenant 4 processus Amavis.

sudo amavisd-nanny

Appuyez sur Ctrl+C pour arrêter amavisd-nanny.

Ignorer la vérification des virus pour vos newsletters

Si vous utilisez votre serveur de messagerie pour envoyer des newsletters et que vous activez Amavis et ClamAV, de nombreuses ressources CPU et RAM seront utilisées pour la vérification antivirus lorsque vous envoyez des newsletters à vos abonnés. Cela pourrait empêcher votre serveur de messagerie de répondre. Vous pouvez ignorer la vérification antivirus de vos newsletters en utilisant la méthode ci-dessous.

Modifiez le fichier de configuration principal de Postfix.

sudo nano /etc/postfix/master.cf

Ajoutez les lignes suivantes au début de ce fichier. Cela activera smtpd sur le port 2525 de l'hôte local et il peut accepter les connexions client initiées à partir du même serveur. Si un autre processus écoute sur le port 2525, vous pouvez remplacer 127.0.0.1:2525 par autre chose, comme 127.0.0.1:2552. Notez que le content_filter le paramètre est défini sur none , ce qui signifie que les e-mails ne seront pas analysés par ClamAV.

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

Ajoutez ensuite les lignes suivantes à la fin de ce fichier. Remplacez 12.34.56.78 par l'adresse IP publique du serveur de messagerie. Cela créera un autre démon de soumission Postfix écoutant sur le port 10587. Ceci est pour les connexions client d'un autre serveur.

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

Enregistrez et fermez le fichier. Puis Redémarrez postfix.

sudo systemctl redémarrer le suffixe

Si votre application de newsletter s'exécute sur le serveur de messagerie, spécifiez 127.0.0.1:2525 en tant qu'hôte SMTP, sans authentification SMTP. Si votre application de newsletter s'exécute sur un autre serveur, spécifiez 12.34.56.78:10587 en tant qu'hôte SMTP, avec authentification SMTP.

Dépannage

Si votre serveur SMTP Postfix ne peut pas envoyer d'e-mails sortants et que vous trouvez le message d'erreur suivant dans le journal des e-mails (/var/log/mail.log ),

relay=none, delay=239, delays=239/0.04/0/0, dsn=4.3.0, status=deferred (serveur indisponible ou incapable de recevoir du courrier)

il se peut qu'amavis ne fonctionne pas, vous devez donc vérifier son statut :

sudo systemctl statut amavis

Vous pouvez le redémarrer avec :

sudo systemctl redémarrer amavis

Une autre cause de cette erreur est que vous appliquez la connexion TLS pour Postfix lors de l'envoi d'e-mails sortants avec le paramètre suivant dans /etc/postfix/main.cf fichier.

smtp_tls_security_level =appliquer

Étant donné que Postfix ne peut pas établir de connexion TLS à Amavis, l'e-mail est donc différé. Vous devez utiliser le paramètre suivant.

smtp_tls_security_level =mai

Redémarrez ensuite Postfix.


Ubuntu
  1. Comment installer DKIM sur le serveur Ubuntu

  2. Installation et configuration de Php et Nginx sur Ubuntu 20.04

  3. Configurer le serveur Web Ubuntu ?

  4. Installez le serveur de messagerie Postfix et Dovecot sur Ubuntu ou Debian

  5. Installer le serveur vnc et le client sur Ubuntu

Installer et configurer VNC sur Ubuntu 20.04

Installation et configuration de Plex Media Server sur Ubuntu

Comment installer Postfix Mail Server sur Ubuntu 20.04

Configurer un serveur OpenVPN avec Ubuntu et Viscosity

Configuration du serveur de messagerie Postfix sur Ubuntu 14.04

Configuration du serveur de messagerie Postfix sur Ubuntu 20.04