
Ensuite c'est au tour du fichier master.cf
ou l'on va notamment dire à
Postfix de fonctionner avec amavis-new et spamassasin
|
|
debian:/etc/postfix# telnet 192.168.0.2 25 Trying 192.168.0.2... Connected to 192.168.0.2. Escape character is '^]'. 220 bienvenue sur mon serveur courrier: spammeur éconduit ! quit 221 Bye Connection closed by foreign host. debian:/etc/postfix# telnet 192.168.0.2 110 Trying 192.168.0.2... Connected to 192.168.0.2. Escape character is '^]'. +OK Qpopper (version 4.0.5) at debian starting. <4529.1143541577@debian> |
Il me faut ajouter ici que les ports 25 et 110 de mon firewall sont redirigés sur mon poste
192.168.0.2 pour éviter de mettre mon serveur de courrier directement accessible au web par les lignes
suivantes de mon iptables :
/sbin/iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 110 -j DNAT --to 192.168.0.2:110 /sbin/iptables -A FORWARD -p tcp -i eth0 -d 192.168.0.2 --dport 110 -j ACCEPT /sbin/iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 25 -j DNAT --to 192.168.0.2:25 /sbin/iptables -A FORWARD -p tcp -i eth0 -d 192.168.0.2 --dport 25 -j ACCEPT
Spamassassin est un logiciel qui va nous permettre de neutraliser les spams en les filtrant d'après des règles préétablies.
installer spamassassin
apt-get install spamassassin spamc
le paramétrage dans postfix a déjà été fait
Pour la configuration de spamassassin ,j'utilise cette utilitaire en ligne :
http://www.yrex.com/spam/spamconfig.php
et je copie le fichier généré dans /etc/spamassassin/local.cf
Ensuite éditez /etc/default/spamassassin et fixez ENABLED=1 pour que spamd se lance au démarrage
spamc sera lancé grace a la ligne que nous avons rajoute dans le master.cf de postfix
Relancer postfix et spamd , et envoyez-vous un simple message de test
:vérifier alors que dans les headers de votre message de test vous avez bien les lignes similaires :
X-Spam-Checker-Version: SpamAssassin on server.com
X-Spam-Level:
X-Spam-Status: No, hits=-1.3 required=5.0 tests=AWL,BAYES_01,
DATE_IN_PAST_96_XX,HTML_MESSAGE autolearn=no
Amavis est un antivirus qui s'installe comme suit:
apt-get install amavis-new
La configuration se passe dans le fichier : /etc/amavis/conf.d/50.user
qui provient du fichier exemple dans usr/share/doc/amavisd-new/examples/amavisd.conf-default
voici les lignes importantes :
|
## GENERAL Les lignes qui indiquent le nom de domaine et l'utilisateur $myhostname = 'linux-pour-lesnuls.com'; $mydomain = 'linux-pour-lesnuls.com'; $daemon_user = 'amavis'; $daemon_group = 'amavis'; $MYHOME = '/var/amavis'; Pour renvoyer les mails scannés sur le serveur $forward_method = 'smtp:127.0.0.1:10025'; # where to forward checked mail $notify_method = $forward_method; # where to submit notifications Pour que le serveur supporte la charge $max_servers = 5; # number of pre-forked children (default 2) $max_requests = 15; # retire a child after that many accepts (default 10) $child_timeout=10*60; # abort child if it does not complete each task in n sec # (default: 8*60 seconds) Ne pas permettre le relais $relayhost_is_client = 0; # (defaults to false) Bloquer les connections à l'interface locale $inet_socket_bind = '127.0.0.1'; # limit socket bind to loopback interface # (default is '127.0.0.1') @inet_acl = qw( 127.0.0.1 ); # allow SMTP access only from localhost IP # (default is qw( 127.0.0.1 ) ) $relayhost_is_client = 0; # (defaults to false) Si on trouve un virus remplacer le mail par un autre (configuré selon la locale dans le répertoire de configuration de amavisd-new), si c'est une adresse émail bannie, on renvoi un mail d'erreur, si c'est un spam ou un mauvais en-téte le mail continue normalement sa trajectoire mais son sujet est changé( on verra plus tard comment ) : $final_virus_destiny = D_DISCARD; # (defaults to D_BOUNCE) $final_banned_destiny = D_BOUNCE; # (defaults to D_BOUNCE) $final_spam_destiny = D_PASS; # (defaults to D_REJECT) $final_bad_header_destiny = D_PASS; # (defaults to D_PASS), D_BOUNCE suggested On veut que la personne qui a envoyé le mail soit avertie : $warnvirussender = 1; # (defaults to false (undef)) On veut que celui qui a envoyé un mail et qui est banni soit aussi averti : $warnbannedsender = 1; # (defaults to false (undef)) On veut que ceux a qui étaient destinés les mails recoivent des mails d'avertissement : $warnvirusrecip = 1; # (defaults to false (undef)) $warnbannedrecip = 1; # (defaults to false (undef)) On indique un admin qui recevra un avertissement pour tous les mails refusé sur le serveur : $virus_admin = "postmaster\@$mydomain"; # due to D_DISCARD default On indique les tags a rajouter dans les mails scannés par l'antivirus : # Add X-Virus-Scanned header field to mail? $X_HEADER_TAG = 'X-Virus-Scanned'; # (default: undef) # Leave empty to add no header # (default: undef) $X_HEADER_LINE = "by $myversion (Debian) at $mydomain"; On n'enléve pas les en-tétes comme quoi le mail a déjà été scanné si c'est le cas : $remove_existing_x_scanned_headers = 0; # leave existing X-Virus-Scanned alone $remove_existing_spam_headers = 0; # remove existing spam headers if On indique qu'il n'y a pas de fichiers bannis, comme cela cela permet l'envoi de fichiers .exe, .com, .bat, mais ils restent quand meme scannes : $banned_filename_re = new_RE( # qr'^UNDECIPHERABLE$', # is or contains any undecipherable components # qr'\.[^.]*\.(exe|vbs|pif|scr|bat|cmd|com|dll)$'i, # some double extensions # qr'[{}]', # curly braces in names (serve as Class ID extensions - CLSID) # qr'.\.(vbs|pif|scr|bat|cmd|com)$'i, # banned extension - basic # qr'.\.(ade|adp|bas|bat|chm|cmd|com|cpl|crt|exe|hlp|hta|inf|ins|isp|js| # jse|lnk|mdb|mde|msc|msi|msp|mst|pcd|pif|reg|scr|sct|shs|shb|vb| # vbe|vbs|wsc|wsf|wsh)$'ix, # banned extension - long # qr'.\.(mim|b64|bhx|hqx|xxe|uu|uue)$'i, # banned extension - WinZip? vulnerab. # qr'^\.(zip|lha|tnef|cab)$'i, # banned file(1) types # qr'^\.exe$'i, # banned file(1) types # qr'^application/x-msdownload$'i, # banned MIME types # qr'^application/x-msdos-program$'i, # qr'^message/partial$'i, qr'^message/external-body$'i, # block rfc2046 ); On indique les quotas pour SpamAssassin : $sa_tag_level_deflt = 0; # add spam info headers if at, or above that level $sa_tag2_level_deflt = 5.0; # add 'spam detected' headers at that level $sa_kill_level_deflt = 99; # triggers spam evasive actions SpamAssassin doit changer le sujet du message si il dépasse $sa_tag2_level_deflt, et ajouter *SPAM* : $sa_spam_subject_tag = '*SPAM* '; # (defaults to undef, disabled) Maintenant on indique les scanners antivirus : @av_scanners = ( ['Clam Antivirus-clamd', \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.ctl"], qr/\bOK$/, qr/\bFOUND$/, qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ], ); @av_scanners_backup = ( # http://www.clamav.net/ ['Clam Antivirus - clamscan', 'clamscan', "--stdout --no-summary -r {}", [0], [1], qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ], ); |
Ensuite on teste spamassassin:
Télécharger cet exemple de spam
http://www.y0m.net/tutos/qmail-debian/spam
et lancer la commande
deny@debian:~$ spamc -c < spam.eml
17.3/5.0
Le message obtient la note faramineuse de 17.3
Ensuite on procéde à l'installation de l'antivirus clamav ainsi que de ses listes :
apt-get install clamav-daemon clamav-testfiles
voici mon clamav.conf
|
LocalSocket /var/run/clamav/clamd.ctl FixStaleSocket User clamav AllowSupplementaryGroups ScanMail ScanArchive ArchiveMaxRecursion 5 ArchiveMaxFiles 1000 ArchiveMaxFileSize 10M ArchiveMaxCompressionRatio 200 MaxDirectoryRecursion 100 ReadTimeout 0 MaxThreads 12 MaxConnectionQueueLength 30 LogFile /var/log/clamav/clamav.log LogTime LogFileMaxSize 0 PidFile /var/run/clamav/clamd.pid DatabaseDirectory /var/lib/clamav/ SelfCheck 3600 ScanOLE2 ScanRAR ScanPE DetectBrokenExecutables ScanHTML ArchiveBlockMax Et le freshclam.conf pour faire des mises-à-jour régulières DatabaseOwner clamav UpdateLogFile /var/log/clamav/freshclam.log LogFileMaxSize 0 MaxAttempts 5 # Check for new database 24 times a day Checks 1 DatabaseMirror db.fr.clamav.net DatabaseMirror database.clamav.net DatabaseDirectory /var/lib/clamav/ NotifyClamd DNSDatabaseInfo current.cvd.clamav. |
Pour tester clamav :
telecharger ce virus à l'adresse :
http://www.y0m.net/tutos/qmail-debian/virus
ensuite scanner-le à l'aide de la commande :
# clamdscan /home/deny/virus.eml
/home/deny/virus.eml: Worm.SomeFool.P FOUND ----------- SCAN SUMMARY ----------- Infected files: 1 Time: 0.066 sec (0 m 0 s)
On voit ici que notre virus a été bien détecté.
N'oubliez pas de redemarrer les services affèrents.