Lundi, 8 août 2016
Transcription
Lundi, 8 août 2016
Mardi, 3 janvier 2017 Ajouter du swap On peut ajouter soit un fichier , soit une partition de swap. • fichier : creer un fichier (ici 512Mo) dd if=/dev/zero of=/path/swapfile1 bs=1024 count=524288 chmod 0600 /path/swapfile1 mkswap /path/swapfile1 mkswap generate a UUID = x montage du swap swapon /path/swapfile1 pereniser le fichier swap en rajouttant dans /etc/fstab : UUID=x none swap sw 0 0 • partition : creer une partition mkswap /dev/sdx mkswap generate a UUID = x montage du swap swapon -U x pereniser le fichier swap en rajouttant dans /etc/fstab : UUID=x none swap sw 0 0 Posté par pra dans Server, Systeme à 11:57 1/60 Lundi, 8 août 2016 Taille du logo de la page de connexion Taille : 62/34 px Référence Posté par pra dans Own-Nex-Cloud, Software - Progiciel, web à 2/60 10:39 Jeudi, 4 août 2016 Générer un CSR avec openssl apache CSR : Certificate Signing Request https://fr.wikipedia.org/wiki/Demande_de_signature_de_certificat Pour générer un CSR il faut commencer par créer une clé privé, elle doir rester secrète (chmod 600) Génération de la clé openssl genrsa -out csr.key 2048 Un CSR peut etre fait pour : • un domaine (toto.com • plusieurs domaines / sous-domaines (toto.com , titi.toto.com, titi.com, toto.titi.com) • plusieurs sous-domain du même niveau : wildcard (*.toto.com) Générer un CSR pour un domaine (URL) openssl req -new -out domain.csr -key csr.key -config domain.cnf Example de ficher cnf • pour un domaine : www.example.net : www.example.net.cnf º adapter selon votre vesoin pour les variables : ■ countryName_default ■ localityName_default ■ 0.organizationName_default ■ commonName_default (votre domaine correspondant à votre URL certifiée) ■ emailAddress_default • pour mutiple domaines : www.example.net , test.example.net, titi.toto.com, toto.titi.fr : multidomaines.cnf º adapter selon votre vesoin pour les variables : ■ countryName_default ■ localityName_default ■ 0.organizationName_default ■ commonName_default (votre domaine principal) ■ emailAddress_default ■ subjectAltName (liste des autres domaines) • pour plusieurs sous-domaines du même niveau : wildcard ( www.example.net, api.example.net, test.example.net, ... , *.example.net ) : wildcard.cnf º adapter selon votre vesoin pour les variables : ■ countryName_default ■ localityName_default ■ 0.organizationName_default ■ commonName_default (votre domaine correspondant à votre URL certifiée) 3/60 ■ emailAddress_default PS : attention abus de language pour le mot domaine en effet net. est un domaine , example.net. est un sous domaine de net. (. est le domaine racine donc com. , net. est un sous domaine de .) Posté par pra dans Sécurité, web à 13:55 4/60 Mercredi, 1 juin 2016 Comment mesurer la requête et les temps de réponse en même temps d'un site web? Pour cela on peut utiliser cURL Dans un premier temps créer un fichier texte par example form.txt : time_namelookup: time_connect: time_appconnect: time_pretransfer: time_redirect: time_starttransfer: %{time_namelookup}\n %{time_connect}\n %{time_appconnect}\n %{time_pretransfer}\n %{time_redirect}\n %{time_starttransfer}\n ----------\n time_total: %{time_total}\n Puis taper la commande : curl -w "@form.txt" -o /dev/null -s "votre URL" example : curl -w "@form.txt" -o /dev/null -s "http://wordpress.com/" cela vous renvoie : time_namelookup: time_connect: time_appconnect: time_pretransfer: time_redirect: time_starttransfer: 0,029 0,041 0,000 0,041 0,000 0,053 ---------time_total: 0,053 Posté par pra dans Utilitaires, web à 18:22 5/60 Dimanche, 22 mai 2016 Owncloud : mise à jour, montée de version - plugin galleryplus Ce post est valable uniquement si vous utilisez le plugin "galleryplus" 1. 2. 3. 4. 5. Dans le répertoire d'origine supprimer tout SAUF les répertoires : Désactivé upgrade sudo les-u différents www-dataplugins php occ app:enable <plugin_name> Faire une sauvegarde de la base de données Copier le répertoire contenant Owncloud (cela sert de backup) 1. data 2. config 3. monitor (répertoire n'appartenant pas à l'application Owncloud) Faire la mise à jour en ligne de commande : Réactivez les plugins en ligne de commande 1. /!\ TERMINER PAR LE PLUGIN "galleryplus" /!\ Posté par pra dans Own-Nex-Cloud, Software - Progiciel, web à 6/60 sudo -u www-data php occ 16:05 Mercredi, 4 mai 2016 Encryption native des disques ssd intel test fait sur un disque Intel enterprise SSD DCS3700 (/!\ vrai disque Intel pas du rebrandé hp) si le disque est sdc : Visualisation hdparm -I /dev/sdc ATA device, with non-removable media Model Number: INTEL SSDSC2BA400G3 ... Security: Master password revision code = 65534 supported not enabled not locked not frozen not expired: security count supported: enhanced erase 4min for SECURITY ERASE UNIT. 4min for ENHANCED SECURITY ERASE UNIT. mettre un mot de passe : hdparm --user-master u --security-mode m --security-set-pass password /dev/sdc security_password="password" Vérification hdparm -I /dev/sdc ... Security: Master password revision code = 65534 supported enabled not locked not frozen not expired: security count supported: enhanced erase Security level maximum 4min for SECURITY ERASE UNIT. 4min for ENHANCED SECURITY ERASE UNIT. Ilfaut faire un arret electrique de la machine (poweroff) et non pas un simple reboot 7/60 Après le démarage, le disque est présent mais illisible. Vérification : hdparm -I /dev/sdc ... Security: Master password revision code = 65534 supported enabled locked not frozen not expired: security count supported: enhanced erase Security level maximum 4min for SECURITY ERASE UNIT. 4min for ENHANCED SECURITY ERASE UNIT. Trying to read from the disk trigger these errors : sd 4:0:2:0: [sdc] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE sd 4:0:2:0: [sdc] Sense Key : Illegal Request [current] sd 4:0:2:0: [sdc] Add. Sense: Security conflict in translated device sd 4:0:2:0: [sdc] CDB: Read(10): 28 00 00 00 00 00 00 00 20 00 end_request: I/O error, dev sdc, sector 0 Buffer I/O error on device sdc, logical block 0 Buffer I/O error on device sdc, logical block 1 Buffer I/O error on device sdc, logical block 2 Buffer I/O error on device sdc, logical block 3 sd 4:0:2:0: [sdc] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE sd 4:0:2:0: [sdc] Sense Key : Illegal Request [current] sd 4:0:2:0: [sdc] Add. Sense: Security conflict in translated device sd 4:0:2:0: [sdc] CDB: Read(10): 28 00 00 00 00 00 00 00 08 00 end_request: I/O error, dev sdc, sector 0 Buffer I/O error on device sdc, logical bogical block 0 Commande pour utiliser le disque (mettre le mot de passe) : hdparm --user-master u --security-unlock password /dev/sdc security_password="password" /dev/sdc: Issuing SECURITY_UNLOCK command, password="password", user=user Le disque est maintenant accessible (lancer partprobe pour que le kernel scanne la table de partition). Pour annuler l'encryption du disque, faire : hdparm --user-master u --security-disable password /dev/sdc Posté par pra dans Accès, Sécurité, Server, Système à 8/60 05:27 Mercredi, 13 avril 2016 Généré un password pour apache ou nginx sans la commande htpasswd taper la commande : printf "pra:$(openssl passwd -apr1 laureelsa)\n">.htpasswd Posté par pra dans Sécurité, Server, web à 15:20 9/60 Samedi, 1 août 2015 Transformer un certificat en format pem en format crt et extraire sa clé Il faut pour cela utiliser la commande openssl Transformation en crt openssl x509 -outform pem -in <nom_fichier>.pem -out <nom_fichier>.crt lire le certificat : openssl x509 -in <nom_fichier>.crt -text -noout Si vous obtenez un message de type : 139844075071120:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE cela signifie que vous n'utilisez pas le bon format dans -outform pem extraire la clé: openssl pkey -in <nom_fichier>.pem -out <nom_fichier>.key verifier la clé openssl rsa -in <nom_fichier>.key -check Posté par pra dans Sécurité, Système, web à 21:15 10/60 Vendredi, 24 octobre 2014 Proxy sftp ... avec ssh Pré-requis : • • • • 2 servers (un reverse, cible) 1 client remote sshd sur les 2 servers avoir le meme compte sur les 2 servers (les 2 servers s'authentifie via cles ) Sur le server servant de proxy Config de sshd_config Subsystem sftp /usr/lib/openssh/sftp-server UsePAM yes Match User jojo ForceCommand /usr/bin/ssh -i /home/jojo/.ssh/id_rsa -p 2221 [email protected] Sur le server cible Config de sshd_config Subsystem sftp /usr/lib/openssh/sftp-server Match User jojo ForceCommand exec /usr/lib/openssh/sftp-server Posté par pra dans Accès, Sécurité, Server, Système à 11/60 07:14 Samedi, 8 mars 2014 Repositorie Postgres pour Debian Pour bénéficier des dernière mise à jour, il y a un repositorie dédié fait et maintenu par les personnes de PosgreSQL Ajouter dans /etc/apt/sources.list : deb http://apt.postgresql.org/pub/repos/apt/ VOTRE_VERION_DEBIAN-pgdg main Si vous utilisé une une version testing actuellement jessie , mettre pour VOTRE_VERION_DEBIAN sid (deb http://apt.postgresql.org/pub/repos/apt/ sid-pgdg main) il est aussi possible de créer un fichier ayant le même contenu dans /etc/apt/sources.list.d/, le nom du fichier peut être par exemple pgdg.list dans le répertoire /etc/apt/preferences.d, créer le fichier pgdg.pref ayant le contenu : Package: * Pin: release o=apt.postgresql.org Pin-Priority: 500 Importez la cle gpg : wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc |apt-key add Puis faites un update de la base (apt-get update) SOURCE : http://www.postgresql.org/download/linux/debian/ Posté par pra dans DB, PostgreSQL, Sécurité, Server, Système à 12/60 08:21 Jeudi, 28 novembre 2013 Postgresql - Debian - Clé de signature des paquet Si une erreur signalant un problème de signature de paquet apparaît lors de la commande apt-get update , tapper la commande : wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | apt-key add - ; rm -f /etc/apt/trusted.gpg.d/apt.postgresql.org.gpg Posté par pra dans DB, PostgreSQL, Sécurité, Server, Système à 13/60 05:08 Dimanche, 27 novembre 2011 Apache2 cohabitation Virtuals Hosts http et https Apache2 est un server web complet modulaire, il permet de faire du reverse proxy, du rewriting, du http, https, il représente 50% des servers web sur la toile. On va voir la configuration des sites webs hébergés par le server (virtual hosts = VirtualHost ) pour faire cohabité des sites webs utilisant le protocole HTTP et le proocole HTTPS, sur une machine Debian. Pré-requis : • connaitre vi ou alors utiliser un éditeur de texte propre par ex :emacs (qui ne rajoute pas de caractère en fin de ligne) • Avoir un pc fixe , portable .... • Avoir une version de linux Debian avec un server apache2 fonctionnel, avec ou sans modules complémentaires.... • Avoir comme système d'exploitation linux debian : un kernel 2.4 ou supérieur (cela marche très bien sur Lenny (debian) kernel 2.6.22-3-686) Activation du module ssl Taper la commande : a2enmod ssl (commande Debian) Aller dans le répertoire • Sinon /etc/apache2/mods-enabled de manière manuelle : (comande cd) º Taper les commandes : ln -s ../mods-available/ssl.conf ln -s ../mods-available/ssl.load ajouter dans le fichier /etc/apache2/ports.conf les 3 lignes suivantes pour qu'apache2 écoute sur le port choisi (port par défaut : 443): <IfModule mod_ssl.c> Listen 443 </IfModule> • recharger ou redémarrer le server apache2 (invoke-rc.d apache2 reload) Configuration des VirtualHosts Il y a un fichier de configuration par site web (VirtualHost), qui se trouve dans le répertoire : /etc/apache2/sites-available 14/60 • Créer Aller dans le fichier le répertoire de configuration /etc/apache2/sites-available de préférence le nom du site : mon-site On décide que ce site sera uniquement en https, il faudra donc prévoir le cas ou il y a un accès https et un accès http qui redirigera automatiquement en https. Cela donne : • ajouter les lignes : NameVirtualHost mon-site.com:443 <IfModule mod_ssl.c> <VirtualHost mon-site.com:443> NameVirtualHost mon-site.com SSLEngine on SSLCertificateFile /etc/apache2/ssl/ nom_certificat.cert.cert SSLCertificateKeyFile /etc/apache2/ssl/nom_certificat.cert.key ServerAdmin [email protected] DocumentRoot /chemin/de/la/racine/du/site ServerName mon-site.com CustomLog /var/log/apache2/access-ssl-mon-site.com.log combined ErrorLog /var/log/apache2/error-ssl-mon-site.com.log LogLevel debug </VirtualHost> </IfModule> <VirtualHost mon-site.com:80> NameVirtualHost mon-site.com ServerAdmin [email protected] DocumentRoot /chemin/de/la/racine/du/site ServerName mon-site.com RedirectMatch permanent / https://mon-site.com CustomLog /var/log/apache2/access-mon-site.com.log combined ErrorLog /var/log/apache2/error-mon-site.com.log LogLevel debug </VirtualHost> • Création du deuxième site pour le protocole HTTP • Créer le fichier de configuration de préférence le nom du site : mon-site1 • ajouter les lignes : NameVirtualHost mon-site1.com:80 <VirtualHost mon-site1.com:80> NameVirtualHost mon-site.com ServerAdmin [email protected] DocumentRoot /chemin/de/la/racine/du/site ServerName mon-site1.com CustomLog /var/log/apache2/access-mon-site1.com.log combined ErrorLog /var/log/apache2/error-mon-site1.com.log LogLevel debug </VirtualHost> 15/60 • Procéder de cette façon pour vos autres sites Posté par pra dans Sécurité, Server, Système, web à 16/60 07:42 Samedi, 26 novembre 2011 Solution Mail multi-domaines : Postfix / mysql - Courier-imap(s) - Spamassassin - Dspam Cette solution concerne les serveur mail devant héberger plusieurs domaines différents. Il sert à la connexion des clients mail (thunderbird, outlook, ....) ou au webmail. Cette technique utilise des boites mails virtuelles c'est à dire que les utilisateurs n'ont pas de comptes systèmes sur le serveur, pour l'authentification , la définitions du répertoire de stockage des mails , ... en un mot la gestion des utilisateurs et des mails se fait via une base de données ici Mysql Pré-requis : • connaitre vi ou alors utiliser un éditeur de texte propre par ex :emacs (qui ne rajoute pas de caractère en fin de ligne) • un server mysql 5.0 ou 5.1 fonctionnel et correctement configuré (si c'est un autre machine que le futur compte postfix soit autorisé quand il est éxécuté à partir du serveur de mail, que ce compte n'accède uniquement à sa base postfix, idem pour lecompte dspam pour la base dspam, ainsi que spam pour la base spam) • Avoir comme système d'exploitation linux (debian utilisé ici mais une autre distribution est valide) • Avoir des noms de domaines valides • Avoir configuré correctement les MX au niveau du server DNS Postfix / Mysql : Rappel : le server de base de données mysql est sur un autre server et est fonctionnel. • Installation des packages debian sur le futur serveur de mail (je suppose que ssh , vim sont installés et configuré à votre convenance) la commande : apt-get install postfix postfix-mysql mysql-client-5.1 courier-imap courier-imap-ssl courier-authdaemon courier-authlib-mysql libsasl2-2 libsasl2-modules sasl2-bin libpam-mysql openssl ntpdate fam tmpreaper whois Connectez vous en ssh sur le server distant, puis avec la commande créez la base de données postfix: mysqladmin -h localhost -u root -p create postfix ' (mettre le mot de passe à l'invitation : Enter password: ). Créez l'utilisateur "" postfix"" ayant tous les droits sur la base de données "" postfix "" avec la commande : mysql -h localhost -u root -p (mettre le mot de passe à l'invitation : Enter password: ) , puis GRANT ALL PRIVILEGES ON postfix. TO ""postfix""@""nom_server_mail"" IDENTIFIED BY 'votre_mot_de_passe'; • Créez les 3 tables suivantes : Table domain : Stockage des domaines hébergés sur le server. 17/60 CREATE TABLE domain ( domain varchar(255) NOT NULL default '', description varchar(255) NOT NULL default '' , aliases int(10) NOT NULL default '0', mailboxes int(10) NOT NULL default '0', maxquota int(10) NOT NULL default '0', quota int(10) NOT NULL default '0', transport varchar(255) default NULL , backupmx tinyint(1) NOT NULL default '0', created datetime NOT NULL default '0000-00-00 00:00:00', modified datetime NOT NULL default '0000-00-00 00:00:00', active tinyint(1) NOT NULL default '1', PRIMARY KEY (domain) ) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Domains'; Table mailbox : Stockage des noms de boites aux lettres avec leur mot de passe associé. CREATE TABLE mailbox ( username varchar(255) NOT NULL default '' , password varchar(255) NOT NULL default '', name varchar(255) NOT NULL default '', maildir varchar(255) NOT NULL default '' , quota varchar(20) NOT NULL default '0', domain varchar(255) NOT NULL default , created datetime NOT NULL default '0000-00-00 00:00:00', modified datetime NOT NULL default '0000-00-00 00:00:00', active tinyint(1) NOT NULL default '1', PRIMARY KEY (username) ) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Mailboxes'; Table alias : Stockage des alias pour 'router' les mails sur une autre boite au lettre interne ou externe des domaines hébergés. CREATE TABLE alias ( address varchar(255) NOT NULL default '' , goto text NOT NULL default '' , domain varchar(255) NOT NULL default '' , created datetime NOT NULL default '0000-00-00 00:00:00', modified datetime NOT NULL default '0000-00-00 00:00:00', active tinyint(1) NOT NULL default '1', PRIMARY KEY (address) 18/60 ) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Aliases'; 19/60 Récupération des scripts de création des tables : tables.zip Exemple : Voici un exemple de requête sql pour créer un domaine, une boite au lettre, un alias. Pour créer les mot de passe des utilisateur utilisez la commande mkpasswd -5 Création du domaine exemple.com : INSERT INTO domain (domain,description) VALUES ('exemple.com','Domaine exemple'); Création de la boite au lettre de l'utilisateur toto avec le mot de passe secret : INSERT INTO mailbox (username,password,name,maildir,domain) VALUES ( '[email protected] ','$1$caea3837$gPafod/Do/8Jj5M9HehhM.','Mailbox de l\'utilisateur toto', '[email protected] /','exemple.com'); Création de l'alias root vers la boite au lettre de toto : INSERT INTO alias (address,goto,domain) VALUES ('[email protected]', '[email protected] ','exemple.com'); Création de l'alias titi vers une boite au lettre externe par exemple [email protected] : INSERT INTO alias (address,goto,domain) VALUES ('[email protected]', '[email protected] ','yahoo.fr'); Configuration basique de Postfix : La configuration de postfix se fait via 2 fichiers : main.cf et master.cf. On va remplacer le contenu du fichier main.cf, puis modifier une ligne de master.cf en rajoutant 2 options. • Remplacement de main.cf par : 20/60 smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) biff = no append_dot_mydomain = no myhostname = mail.example.com alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = t2.example.com mydestination = localhost.localdomain, localhost mynetworks = 127.0.0.1, localhost mailbox_command = /usr/bin/procmail -a ""$EXTENSION"" mailbox_size_limit = 0 recipient_delimiter = + best_mx_transport = local local_transport = local home_mailbox = Maildir/ notify_classes = 2bounce, bounce, delay, policy, protocol, resource, software masquerade_domains = t2.example.com smtpd_helo_required = yes strict_rfc821_envelopes = yes virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf virtual_gid_maps = static:20001 virtual_mailbox_base = /home/virtual virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf virtual_mailbox_limit = 51200000 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf virtual_minimum_uid = 20001 virtual_uid_maps = static:20001 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_recipient_restrictions $smtpd_sender_login_maps message_size_limit = 50240000 smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, permit smtpd_data_restrictions = reject_unauth_pipelining, permit • Modification du fichier master.cf : 21/60 Remplacer : pickup fifo n 60 1 pickup par : pickup fifo n 60 1 pickup -o receive_override_options=no_header_body_checks Création du répertoire hébergeant les mails : -o content_filter= mkdir /home/virtualCréation de l'utilisateur et groupe système vmail ayant comme uid et gid 2001 : groupadd -g 20001 vmail useradd -g vmail -u 20001 vmail -d /home/vmail -m On sécurise : chown -R vmail: /home/virtual • Création chmod -R des 770fichiers /home/virtual permettant à postfix d'interroger la base de données : /etc/postfix/mysql_virtual_alias_maps.cf user = postfix password = **** hosts = localhost dbname = postfix query = SELECT goto FROM alias WHERE address='%s' and active = '1' /etc/postfix/mysql_virtual_domains_maps.cf user = postfix password = **** hosts = localhost dbname = postfix query = SELECT domain FROM domain WHERE domain='%s' and active = '1' /etc/postfix/mysql_virtual_mailbox_maps.cf 22/60 user = postfix password = **** hosts = localhost dbname = postfix query = SELECT maildir FROM mailbox WHERE username='%s' and active = '1' On utilise dropmail comme mail delivery agent (MDA) : agent qui dépose les mails dans les boites, cet agent doit pouvoir communiquer avec la base de donnée, et gérer les quotas. Les outils de compilations doivent être présents sur le server, car on ne va pas utiliser le package de la distribution. On installe ces packages avec la commande : apt-get install bzip2 gcc libpcre3-dev libpcre++-dev courier-authlib-dev g++ libtool libmysqlclient15-dev make libssl-dev Récupération de 'maildrop' : La dernière version de maildrop au 29/03/2010 est la 2.4.3, utiliser la commande wget pour télécharger la bonne version. Aller sur le site pour vérifier la dernière version : http://sourceforge.net/projects/courier/files/ ; placer vous dans le répertoire de votre choix pour télécharger les sources wget http://heanet.dl.sourceforge.net/sourceforge/courier/maildrop-version.tar.bz2 . Décompression des sources avec la commande tar -xvjf maildrop-version.tar.bz2 Se placer dans le répertoire decompressé : cd maildrop-version Préparation à la compilation : Tapez la commande : ./configure -prefix=/usr/local/courier --with-etcdir=directory=/etc/courier --enable-maildrop-uid=20001 --enable-maildrop-gid=20001 --enable-maildirquota --without-db Cette commande est longue et peut durer plusieurs minutes. la compilation à proprement parlé : Tapez la commande : make L'installation : Tapez la commande : make install En post-install, faut attribuer les bonnes appartenance et permission : chown vmail: /usr/local/courier/bin/* chmod 775 /var/run/courier/ • Compilation chmod 775 :/var/run/courier/authdaemon/ • Vérification de la bonne installation de maildrop : Tapez la commande : /usr/local/courier/bin/maildrop -v maildrop 2.4.2 Copyright 1998-2005 Double Precision, Inc. Courier Authentication Library extension enabled. Maildir quota extension are now always enabled. This program is distributed under the terms of the GNU General Public License. See COPYING for additional information. La configuration de maildrop se fait via les fichiers /etc/courier/authmysqlrc et /etc/courier/authdaemonrc : authmysqlrc : Il faut faire très attention à la syntaxe de ce fichier et bien mettre un tab entre le paramètre et sa valeur. Il ne doit y avoir aucun espace à la fin d’un paramètre. La moindre erreur entraine le dysfonctionnement 23/60 de l’authentification. MYSQL_SERVERnom_du_server_mysql MYSQL_USERNAMEpostfix MYSQL_PASSWORDmot_de_passe_de connexion_au_server_mysql #MYSQL_SOCKET/var/run/mysqld/mysqld.sock # valide uniquement si le server mysql est local MYSQL_PORT3306 MYSQL_OPT0 MYSQL_DATABASEpostfix MYSQL_USER_TABLEmailbox MYSQL_CRYPT_PWFIELDpassword MYSQL_UID_FIELD'20001' MYSQL_GID_FIELD'20001' MYSQL_LOGIN_FIELDusername MYSQL_HOME_FIELD'/home/virtual' MYSQL_NAME_FIELDname MYSQL_MAILDIR_FIELDmaildir MYSQL_QUOTA_FIELDconcat(quota,'S') authdaemonrc : remplacer authmodulelist=""authpam"" par authmodulelist=""authpam authmysql"" Intégration de maildrop dans postfix : Cette intégration se fait au travers des 2 fichiers de configuration : /etc/postfix/main.cf et /etc/postfix/master.cf Ajouter dans le fichier main.cf : virtual_transport = maildrop Remplacez dans le fichier master.cf : Remplacer : maildrop unix n n pipe flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient} par : maildrop_destination_recipient_limit maildrop unix n n pipe = 1 flags=DRhu user=vmail argv=/usr/local/courier/bin/maildrop -w 90 -d ${user}@${nexthop} ${extension} ${recipient} ${user} ${nexthop} ${sender} Activer les logs et la création des répertoires des boites virtuelles, mais aussi créer des filtres globaux et personnel se fait via le fichier .mailfilter. 24/60 Pour que les règles s'applique au niveau global : pour toutes les boites hébergées il faut placer le fichier dans le répertoire /home/virtual/ . Pour que les règles s'applique au niveau individuelle il faut placer le fichier dans le répertoire /home/virtual/nom@domaine . .mailfilter global: logfile ""/home/virtual/.maildrop.log"" `[ -d $DEFAULT ] || (maildirmake $DEFAULT && maildirmake -f Spam $DEFAULT && maildirmake -f sent-mail $DEFAULT && maildirmake -f Spam.BlackList $DEFAULT && maildirmake -f Spam.WhiteList $DEFAULT)` `test -r $HOME/$DEFAULT.mailfilter` if( $RETURNCODE == 0 ) { log ""(==) Including $HOME/$DEFAULT.mailfilter"" exception { include $HOME/$DEFAULT.mailfilter } } Exemple d'un .mailfilter personnel: #elimine les messages en provenance de l'adresse ci-dessous if( \ /^From: .*actu@b\.linternaute\.com/:h \ ) exception { to ""/dev/null"" } #Place les mails en provenance des adresses ci-dessous dans le répertoire annonces if( \ /^From: .*alerte@avendrealouer\.fr/:h \ || /^From: .*mailing_pap@pap\.fr/:h \ || /^Sender: .*alertemail@pap\.fr/:h \ ) exception { to ""${DEFAULT}/.annonces/"" } Sécurisation du fichier : chown vmail .mailfilter et chmod 600 .mailfilter • Redémarrage du démon d'authentification et de postfix : /etc/init.d/courier-authdaemon restart /etc/init.d/postfix restart • On test cette configuration de base : 25/60 authtest [email protected], on doit avoir un résultat de la forme : Authenticated: [email protected] (uid 20001, gid 20001) Home Directory: /home/virtual Maildir: [email protected]/ Quota: 0S Encrypted Password: escaped=""$caea3837$gPafod/Do/8Jj5M9HehhM. Cleartext Password: (none) Options: (none) En cas d'erreur, le fichier authmysqlrc est surement la cause vérifiez les log : tail /var/log/mail.log ou tail /var/log/mail.info /usr/local/courier/bin/maildrop -V 7 -d [email protected], on doit avoir un résultat de la forme : maildrop: authlib: groupid=20001 maildrop: authlib: userid=20001 maildrop: authlib: [email protected], home=/home/virtual, [email protected]/ maildrop: Changing to /home/virtual Pour sortir, appuyez sur les touche ""Ctrl""+""C"" on envoie un mail à [email protected] : mail [email protected], dans les log ( tail /var/log) la présence de : ...status=sent (delivered via maildrop service)... On teste avec la commande telnet en direct sur le port 25 (ce qu’il faut taper est précédé de --->, le reste c’est le retour du serveur) : ---> telnet localhost 25 220 [127.0.0.1] ESMTP Postfix ---> HELO localhost 250 [127.0.0.1] ---> MAIL FROM: <> 250 2.1.0 Sender OK ---> RCPT TO: <[email protected]> 250 2.1.5 OK ---> DATA 354 End data with <CR><LF>.<CR><LF> ---> . 250 2.0.0 Ok: queued as 079474CE44 ---> QUIT 221 2.0.0 Bye Connection closed by foreign host On vérifie dans les logs Courier-imap Démarrez les démons : courier-authdaemon, courier-imap, courier-imap-ssl. On teste la connexion depuis un client mail (outlook, thunderbird..) 26/60 Ne pas oublier de spécifier [email protected] comme login de la boite et non ’toto’ tout seul. On rappelle que le password est ’secret’. Paramétrer le SMTP sans authentification pour le moment. On doit pouvoir consulter les mail envoyés localement tout à l’heure. On teste un envoi de mail depuis le client sur sa propre adresse. On vérifie les logs et l’arrivée du nouveau mail dans la boîte. Sécurité • Sécurisation : authentification Sasl Pour le moment Postfix utilise l’adresse IP du client qui se connecte pour déterminer si il peut relayer ou non les mails (ou accepter seulement des mails pour les users locaux). Pour pouvoir utiliser son serveur mail depuis l’extérieur (cas des laptops) on doit permettre une authentification sécurisée. On crée le fichier /etc/pam.d/smtp et on met les 2 lignes : auth required pam_mysql.so user=postfix passwd=mot_de_passe host=nom_du_server_de_base_de_données db=postfix table=mailbox usercolumn=username passwdcolumn=password crypt=1 md5=1 account sufficient pam_mysql.so user=postfix passwd=mot_de_passe host=nom_du_server_de_base_de_données db=postfix table=mailbox usercolumn=username passwdcolumn=password crypt=1 md5=1 • On sécurise le fichier : chmod 640 /etc/pam.d/smtp On crée le fichier /etc/postfix/sasl/smtpd.conf et on mets les 3 lignes : pwcheck_method: saslauthd #Attention selon la version de postfix pwcheck_method: saslauthd devra être changé par pwcheck_method: pam mech_list: PLAIN LOGIN log_level: 5 On édite le fichier /etc/default/saslauthd pour avoir : START=yes MECHANISMS=""pam"" OPTIONS=""-c -r -m 27/60 /var/spool/postfix/var/run/saslauthd"" • On crée le répertoire du socket et on lui donne les droits adaptés : mkdir -p /var/spool/postfix/var/run/saslauthd chown -R root:sasl /var/spool/postfix/var/ chmod 710 /var/spool/postfix/var/run/saslauthd adduser postfix sasl 28/60 29/60 • On crée un lien symbolique au cas où : ln -s /var/spool/postfix/var/run/saslauthd /var/run/saslauthd On ajoute ceci au /etc/postfix/main.cf : smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes On ajoute également ' permit_sasl_authenticated' dans ' smtpd_recipient_restrictions ' pour valider les restrictions (attention à bien placer le paramètre exactement à l’endroit indiqué) : ..... permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, ...... On édite /etc/init.d/postfix, on recherche la variable FILES et on ajoute etc/postfix/sasl/smtpd.conf à la liste : FILES=""etc/localtime etc/services etc/resolv.conf etc/hosts \ etc/nsswitch.conf etc/nss_mdns.config • On redémarre Postfix et Saslauthd : etc/postfix/sasl/smtpd.conf"" /etc/init.d/postfix restart /etc/init.d/saslauthd restart • On vérifie que les paramètres sont bien passés au daemon Saslauthd : ps waux | grep saslauthd • doit donner plusieurs lignes avec comme paramètres : /usr/sbin/saslauthd -a pam -c -r -m /var/spool/postfix/var/run/saslauthd -n 5 • Activation de TLS º Création du certificat SSL : mkdir /etc/postfix/tls cd /etc/postfix/tls openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024 openssl req -new -key smtpd.key -out smtpd.csr Note : le paramètre le plus important est le Common Name qui doit être le nom de domaine de votre serveur de mail : exemple.com On laisse ""challenge password"" vide. 30/60 openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt openssl rsa -in smtpd.key -out smtpd.key.unencrypted mv -f smtpd.key.unencrypted smtpd.key openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650 • Sécurité sur les fichiers : chmod 400 /etc/postfix/tls/* Modification du fichier /etc/postfix/main.cf par l'ajout de : smtp_tls_security_level = may smtpd_tls_security_level = may smtpd_tls_auth_only = yes smtpd_tls_key_file = /etc/postfix/tls/smtpd.key smtpd_tls_cert_file = /etc/postfix/tls/smtpd.crt smtpd_tls_CAfile = /etc/postfix/tls/cacert.pem smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom • Redémarre de Postfix : /etc/init.d/postfix restart • Vérification : On la fait depuis un client mail configuré pour l’authentification SASL sur un chiffrement TLS avec les mêmes identifiants que pour la connection IMAP (ne pas oublier le @exemple.com). Pour le type d’authentication, il faut sélectionner ""en clair"" (le terme dépend du client mail) ou laisser décoché ""Utiliser une authentification sécurisée"" pour Thunderbird 3.x. C’est le chiffrage de la connection par le TLS qui sécurisera le transfert du password. Note : la directive ""smtpd_tls_auth_only = yes"" impose l’usage d’une connection sécurisée pour l’authentification SASL, ce qui limitera les erreurs de configuration des utilisateurs. • Antispam - Antivirus • Paramétrage de Postfix • On édite le fichier /etc/postfix/main.cf et on remplace tout le smtpd_recipient_restrictions par celui ci : 31/60 smtpd_recipient_restrictions = reject_non_fqdn_recipient, reject_unknown_sender_domain, reject_non_fqdn_sender, reject_unknown_recipient_domain, reject_invalid_helo_hostname, reject_unlisted_recipient, reject_unlisted_sender, permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_helo_hostname, reject_unauth_destination, check_client_access hash:/etc/postfix/internal_networks, check_sender_access hash:/etc/postfix/not_our_domain_as_sender, check_helo_access proxy:mysql:/etc/postfix/mysql-hello.cf, check_sender_access proxy:mysql:/etc/postfix/mysql-sender.cf, check_client_access proxy:mysql:/etc/postfix/mysql-client.cf, reject_rbl_client list.dsbl.org, reject_rbl_client zen.spamhaus.org, permit • Toujours dans le fichier /etc/postfix/main.cf, on place au dessus du bloc smtpd_recipient_restrictions = : smtpd_sender_login_maps = proxy:mysql:/etc/postfix/mysql-sasl-sender-check.cf smtpd_sender_restrictions = reject_unknown_sender_domain, reject_authenticated_sender_login_mismatch smtpd_reject_unlisted_sender = yes smtpd_restriction_classes = has_our_domain_as_sender has_our_domain_as_sender = check_sender_access hash:/etc/postfix/our_domain_as_sender, reject • On crée le fichier /etc/postfix/internal_networks : vim /etc/postfix/internal_networks. • On bloque ainsi les clients SMTP extérieurs qui se présentent avec un HELO qui est le notre : 10.0.0 has_our_domain_as_sender 90.46.134.64 has_our_domain_as_sender • On postmap ce fichier : postmap /etc/postfix/internal_networks On crée le fichier /etc/postfix/mysql-hello.cf qui appelle une table SQL. 32/60 Cette table SQL listera les HELO de nos domaines email (on peut en posséder plusieurs dans le cas d’un serveur multidomaine). vim /etc/postfix/mysql-hello.cf user = postfix password = mot_de_passe_de_postfix_pour_mysql hosts = nom_du_serveur_mysql dbname = postfix query = SELECT access FROM postfix_hello WHERE source='%s' • Sécurisation du fichier : chown postfix /etc/postfix/mysql-hello.* chmod 640 /etc/postfix/mysql-hello.* On crée ensuite le fichier /etc/postfix/mysql-sender.cf. Il sert à blacklister ou whitelister les MAILFROM, c’est à dire les expéditeurs, selon leur adresse email ou juste le domaine de celle ci : vim /etc/postfix/mysql-sender.cf user = postfix password = mot_de_passe_de_postfix_pour_mysql hosts = nom_du serveur_mysql dbname = postfix query = SELECT access FROM postfix_access WHERE source='%s' AND type = 'sender' • Sécurisation du fichier : chown postfix /etc/postfix/mysql-sender.* chmod 640 /etc/postfix/mysql-sender.* On crée le fichier /etc/postfix/mysql-client.cf. Il sert à blacklister ou whitelister les clients par leur connection (ip/domaine) : vim /etc/postfix/mysql-client.cf user = postfix password = mot_de_passe_de_postfix_pour_mysql hosts = nom_du_serveur_mysql dbname = postfix query = SELECT access FROM postfix_access WHERE source='%s' AND type = 'client' • Sécurisation du fichier : chown postfix /etc/postfix/mysql-client.* chmod 640 /etc/postfix/mysql-client.* On crée le fichier /etc/postfix/mysql-sasl-sender-check.cf . Il sert à spécifier les adresses que les utilisateurs authentifiés par SASL peuvent utiliser comme MAIL FROM : 33/60 vim /etc/postfix/mysql-sasl-sender-check.cf user = postfix password = mot_de_passe_de_postfix_pour_mysql hosts = nom_du_serveur_mysql dbname = postfix query = SELECT goto FROM alias WHERE address='%s' • Sécurisation du fichier : chown postfix /etc/postfix/mysql-sasl-sender-check.* chmod 640 /etc/postfix/mysql-sasl-sender-check.* On crée le fichier /etc/postfix/our_domain_as_sender . Il sert à spécifier les domaines autorisés comme MAIL FROM pour les users internes authentifiés par leur IP (les clients en local peuvent envoyer un email local sans s’authentifier dans notre configuration) vim /etc/postfix/our_domain_as_sender exemple.com OK <> OK • On postmap ce fichier : postmap /etc/postfix/our_domain_as_sender On crée enfin le fichier /etc/postfix/not_our_domain_as_sender . Il sert à spécifier les domaines refusés comme MAIL FROM pour les users externes non authentifiés (c’est à dire quelqu’un de l’extérieur qui nous envoie un mail). Si il spécifie un de nos domaines en MAIL FROM, le message sera refusé. vim /etc/postfix/not_our_domain_as_sender exemple.com 554 You are not in our domain • On postmap ce fichier : postmap /etc/postfix/not_our_domain_as_sender • On crée les tables en question : 34/60 mysql -h nom_du_servuer_mysql -u postfix -p use postfix; CREATE TABLE `postfix_hello` ( `id` int(10) unsigned NOT NULL auto_increment, `source` varchar(128) NOT NULL default , `access` varchar(128) NOT NULL default , PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=37 DEFAULT CHARSET=latin1 AUTO_INCREMENT=37 ; INSERT INTO `postfix_hello` (`id`, `source`, `access`) VALUES (36, 'exemple.com', 'REJECT you are not me'); CREATE TABLE `postfix_access` ( `id` int(10) unsigned NOT NULL auto_increment, `source` varchar(128) NOT NULL default , `access` varchar(128) NOT NULL default , `type` enum('recipient','sender','client') NOT NULL default 'sender', PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=107 DEFAULT CHARSET=latin1 AUTO_INCREMENT=107 ; INSERT INTO `postfix_access` (`id`, `source`, `access`, `type`) VALUES (1, 'yahoo.com', 'OK', 'client'), (14, '[email protected]', '554 Spam not tolerated here', 'sender'); • On relance postfix invoke-rc.d postfix reload • On vérifie les logs et on teste. • On a inséré des exemples de blacklist et de whitelist. On peut utiliser PhpMyadmin pour gérer ces tables SQL. • Vérification des Headers, du Body et du Type Mime par Postfix. Postfix peut vérifier les mails entrants très simplement en analysant le header, le body et le type mime des pièces jointes. Ce type de blocage est très efficace, plus rapide que de laisser faire Amavisd ou SA (SpamAssassin), mais manque de souplesse. Il s’avère cependant très efficace pour bloquer des types de fichiers par exemple sans que le mail ne soit envoyé au serveur puis traité (économie de bande passante et de CPU). Cependant une trop grande quantité de règles et un fort trafic aurait l’effet inverse sur les performances. Il faut donc utiliser ces règles avec précaution. • On crée les fichiers nécessaires : cd /etc/postfix/ wget http://www.worm-fr.com/wiki/linux/upload/Debian/body_checks.cf wget http://www.worm-fr.com/wiki/linux/upload/Debian/header_checks.cf wget http://www.worm-fr.com/wiki/linux/upload/Debian/mime_headers_checks.cf Les fichiers sont : body_checks.cf header_checks.cf mime_headers_checks.cf 35/60 On édite le /etc/postfix/main.cf et on ajoute les lignes : header_checks = regexp:/etc/postfix/header_checks.cf body_checks = regexp:/etc/postfix/body_checks.cf mime_header_checks = • On relance postfix : regexp:/etc/postfix/mime_headers_checks.cf invoke-rc.d postfix reload • On teste en envoyant un mail classique puis un autre qui contient un des mots ou type bloqués par ces règles. Le blocage est immédiat et se traduit par un retour d’erreur au moment de l’envoi. • Amavisd On va faire une installation manuelle de Amavis sans utiliser les packages amavis pour Debian. Pour ce faire on a besoin du package libdb4.4-dev. º Installation du prérequis : apt-get install libdb4.4-dev • Lancement de CPAN en console : Si c’est la première fois, on répond par défaut aux questions qu’il pose pour la configuration de l’interface. perl -MCPAN -e shell • On met à jour Cpan et on installe les modules : install Bundle::CPAN reload cpan install Archive::Zip install Convert::TNEF install Convert::UUlib install Net::Server install Time::HiRes install Unix::Syslog install BerkeleyDB install Mail::Sendmail install Email::Valid install MIME::Charset install MIME::EncWords • Installation des softs nécessaires (les decoders ) si ils ne sont pas déjà installés : apt-get install file libcompress-bzip2-perl nomarch arc p7zip-full arj zoo lzop freeze tnef pax cabextract • Le compresseur rar. Il est très important également d’installer RAR depuis le site de rarlabs (http://www.rarlab.com/download.htm). Suivre les instructions d’installation sur le site. 36/60 • Télécharger les sources chez amavisd : º Positionnez vous dans votre répertoire de téléchargement ou de sources º Récupérez la dernière version d'amavisd sur http://www.ijs.si/software/amavisd/#download, actuellement la 2.6.4 (au 11/04/2010) wget http://www.ijs.si/software/amavisd/amavisd-new-2.6.4.tar.gz tar xvzf amavisd-new-2.6.4.tar.gz cd amavisd-new-2.6.4 • Création de l'utilisateur et du groupe amavis : addgroup amavis adduser --disabled-password --home /var/amavis --ingroup amavis amavis • Création un home pour l'utilisateur amavis : mkdir /var/amavis mkdir /var/amavis/tmp /var/amavis/var /var/amavis/db /var/amavis/home chown -R amavis: /var/amavis • Création Pour celade on2modifie lecteur le tmpfs fstabpour avechéberger vi : /etc/fstab les répertoires : db et tmp d’amavis. Cela accroit notablement les performance de traitement. tmpfs /var/amavis/db tmpfs rw,size=10m,mode=700,uid=amavis,gid=amavis 0 0 tmpfs /var/amavis/tmp tmpfs rw,size=150m,mode=700,uid=amavis,gid=amavis • Puis : 0 0 mount /var/amavis/tmp mount /var/amavis/db • Vérifie par un mount -l • Copie de l’exécutable : cp amavisd /usr/local/sbin/ chown root /usr/local/sbin/amavisd chmod 755 /usr/local/sbin/amavisd • Copie du fichier de conf : cp amavisd.conf /etc/ chown root:amavis /etc/amavisd.conf chmod 640 /etc/amavisd.conf • Création de la quarantaine : 37/60 mkdir /var/virusmails chown amavis:amavis /var/virusmails chmod 750 /var/virusmails Edition du fichier /etc/amavisd.conf : Ci dessous les paramètres à modifier. Le reste du fichier reste le même. Evidemment il faut bien préciser son réseau local dans @mynetworks : $daemon_user = 'amavis'; $daemon_group = 'amavis'; $mydomain = 't2.example.com'; $myhostname = 'mail.t2.example.com'; $MYHOME = '/var/amavis'; $log_level = 2; @mynetworks = qw( 127.0.0.0/8 10.0.0.0/24 ); • Désactivation temporairement l’antispam et l’antivirus pour tester : On décommente pour cela les lignes (au début du fichier de conf) : @bypass_virus_checks_maps = (1); @bypass_spam_checks_maps = (1); • Démarrer amavisd en console pour voir si il manque des prérequis : Noter les erreurs éventuelles. Si amavisd ne démarre pas, arrêter la et résoudre les problèmes. /usr/local/sbin/amavisd debug • Configuration de Postfix : º A la fin du fichier /etc/postfix/master.cf : • 38/60 smtp-amavis unix --y-2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20 127.0.0.1:10025 inet n-y-- 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 smtpd_data_restrictions=reject_unauth_pipelining -o smtpd_end_of_data_restrictions= -o mynetworks=127.0.0.0/8 -o strict_rfc821_envelopes=yes -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 Dans le fichier /etc/postfix/main.cf content_filter = smtp-amavis:[127.0.0.1]:10024 receive_override_options = • Relancer postfix : no_address_mappings invoke-rc.d postfix reload • Surveillance des logs : tail -f /var/log/mail.log receive_override_options=no_header_body_checks,no_unknown_recipient_checks • Si tout est ok, lancer à nouveau amavisd debug /usr/local/sbin/amavisd debug • Dans une autre console tapez : telnet 127.0.0.1 10024 Il doit répondre : 39/60 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. 220 [127.0.0.1] ESMTP amavisd-new service ready quit pour sortir Pareil pour tester le retour de Postfix : telnet 127.0.0.1 10025 La réponse doit être du style : Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. 220 mail.exemple.com ESMTP Postfix (Debian/GNU) QUIT pour sortir (en majuscules) Si les connections sont ok : Tester le fonctionnement de base (ce qu’il faut taper est précédé de ---> , le reste c’est le retour du serveur) : ---> telnet localhost 10024 220 [127.0.0.1] ESMTP amavisd-new service ready ---> HELO localhost 250 [127.0.0.1] ---> MAIL FROM: <> 250 2.1.0 Sender <> OK ---> RCPT TO: <postmaster> 250 2.1.5 Recipient <postmaster> OK ---> DATA 354 End data with <CR><LF>.<CR><LF> ---> From: virus-tester ---> To: undisclosed-recipients:; ---> Subject: amavisd test - simple - no spam test pattern ---> This is a simple test message from the amavisd-new test-messages. ---> . 250 2.6.0 Ok, id=30897-02, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 079474CE44 ---> QUIT 221 2.0.0 [127.0.0.1] amavisd-new closing transmission channel L’aller-retour postfix/amavisd fonctionne bien ! (on peut arréter le debug d’amavisd par un CTRL + C) • Clamav On va faire une installation manuelle de Clamav et de son démon sans utiliser les packages clamav pour Debian. Pour ce faire on a besoin du package zlib1g zlib1g-dev libgmpxx4ldbl libgmp3-dev. º Installation du prérequis : apt-get install zlib1g zlib1g-dev libgmpxx4ldbl libgmp3-dev • Télécharger les sources chez clamav : º Positionnez vous dans votre répertoire de téléchargement ou de sources 40/60 º Récupérez la dernière version de clamav sur http://sourceforge.net/projects/clamav/files/, actuellement la 0.96 (au 11/04/2010) Mise à jour: 26 Mai 2010 - Version : 0.96.1 Utilisation du code durci de clamav : http://seclamav.avcave.org/ 4 Octobre 2010 - Version : 0.92.2. wget • On met a jour les fichiers de configuration : cd /etc mv clamd.conf clamd.conf.orig http://downloads.sourceforge.net/project/clamav/clamav/0.96/clamav-0.96.tar.gz?use_mir mv freshclam.conf freshclam.conf.orig tar clamav-0.96.tar.gz wgetxvzf http://www.worm-fr.com/wiki/linux/upload/Debian/clamd.conf cd clamav-0.96 wget http://www.worm-fr.com/wiki/linux/upload/Debian/freshclam.conf ./configure Les fichiers : --sysconfdir=/etc --with-user=amavis --with-group=amavis --with-dbdir=/var/lib/clamav clamd.conf make freshclam.conf make install mkdir /var/run/clamav chown -R amavis: /var/run/clamav • Modification de la crontab de l’utilisateur amavis pour planifier la mise à jour de la base antivirale : chmod -R 750 /var/run/clamav mkdir /var/lib/clamav crontab -e -u amavis chown -R amavis: /var/lib/clamav chmod -R 770 /var/lib/clamav • On ajoute : 0 0,6,12,18 /usr/local/bin/freshclam --log-verbose • Création : mkdir /var/log/clamav chown -R amavis:amavis /var/log/clamav • Création du /etc/init.d/clamd 41/60 vim /etc/init.d/clamd On écrit : #!/bin/sh # clamd case "" escaped="""" in 'start') /usr/local/bin/freshclam; sleep 10; /usr/local/sbin/clamd ;; 'stop') /usr/bin/killall clamd > /dev/null 2>&1 && echo -n 'Clamd stopped' ;; ) echo ""Usage: perl -MCPAN -e shell o conf prerequisites_policy ask install HTML::Parser install LWP install IO::Zlib install Archive::Tar install DB_File install Net::SMTP install Net::DNS install Net::DNS::Resolver::Programmable install Error install NetAddr::IP install IP::Country::Fast install Mail::SPF install DBI install DBD::mysql install Mail::DKIM force install Encode::Detect install Mail::SpamAssassin { start | stop }"" ;; esac exit 0 • Sécurisation et démarrage au boot : chmod 755 /etc/init.d/clamd update-rc.d clamd defaults • Mise à jour de la base virale : ./freshclam • Vérification que les fichiers soient bien présents dans le répertoire : 42/60 ls -la /var/lib/clamav • On lance clamd : /etc/init.d/clamd start • Vérification dans les logs : tail -f /var/log/clamav/clamd.log • Vérification du bon fonctionnement du processus Clam : ps aux | grep clam • Teste du fonctionnement (le dossier \""test\"" est dans le répertoire clamav-0.96) : clamav-x.yz etant un des fichiers de test présents dans le répertoire test cd /chemin/d/installation/clamav-0.96/test/ clamdscan -l scan.txt clam-x.yz Installation des signatures additionnelles pour Clam (détection du spam, phising...) Il s’agit de fichiers supplémentaires que l’on place dans le dossier /var/lib/clamav apt-get install curl rsync mkdir /var/tmp/clamdb chown amavis: /var/tmp/clamdb chmod 660 /var/tmp/clamdb cd /usr/sbin wget http://www.worm-fr.com/wiki/linux/upload/Debian/UpdateSaneSecurity.sh chmod 755 UpdateSaneSecurity.sh Le fichier : UpdateSaneSecurity.sh • Lancement du script : Attention le script mets 5 minutes pour se lancer ./UpdateSaneSecurity.sh • Vérification : la présence des fichiers dans le répertoire de clam : ls -l /var/lib/clamav On doit trouver les fichiers suivants en plus des fichers classiques : MSRBL-Images.hdb MSRBL-SPAM.ndb phish.ndb phish.ndb.gz scam.ndb scam.ndb.gz 43/60 • Création d'une tache cron pour mettre à jour ces fichiers : crontab -e -u amavis 5 /4 /usr/sbin/UpdateSaneSecurity.sh • Installation de ClamdMon pour la surveillance du demon clam : installer le script de surveillance fourni dans les sources de clam (récupérer pour cela la version 0.95 de clamav): cd /root/clamav-0.95/contrib/clamdmon tar xvzf clamdmon-1.0.tar.gz cd clamdmon-1.0 make make install Edition du fichier /usr/local/sbin/clamdmon.sh comme ceci : /usr/local/sbin/clamdmon -p /var/run/clamav/clamd.ctl && (killall clamd; sleep 5; killall -9 clamd; sleep 1; freshclam; sleep 1; clamd) • Edition la crontab de root crontab -e • On écrit : */5 /usr/local/sbin/clamdmon.sh • SpamAssassin On va faire une installation manuelle de SpamAssassin sans utiliser les packages SA pour Debian. Pour ce faire on va installer SpamAssassin par CPAN. º Installation : 44/60 lock_method flock required_score4.3 rewrite_header Subject *****SPAM**** report_safe 0 clear_internal_networks clear_trusted_networks #trusted networks doit TOUJOURS contenir les memes entrées que internal. On ajoutera eventuellement des réseaux de confiance dans ce paramètre. internal_networks 90.46.134.64 127.0.0.1 10.0.0/24 192.168.2/24 trusted_networks 90.46.134.64 127.0.0.1 10.0.0/24 192.168.2/24 use_bayes 1 bayes_auto_expire 0 bayes_store_module Mail::SpamAssassin::BayesStore::MySQL bayes_sql_dsn DBI:mysql:spam:localhost bayes_sql_usernamespam bayes_sql_passwordmot_de_passe_de_spam_pour_mysql bayes_sql_override_usernameamavis bayes_auto_learn 1 bayes_auto_learn_threshold_nonspam 0.1 bayes_auto_learn_threshold_spam 5.0 use_auto_whitelist0 skip_rbl_checks 0 dns_available yes ## Optional Score Increases score BAYES_99 4.300 score BAYES_80 3.000 score MISSING_MIMEOLE 0.501 0.501 0.241 0.200 score BAYES_60 0 0 2.502 2.502 score NO_RELAYS -3.2 • Edition du fichier /etc/mail/spamassassin/local.cf comme ceci : GRANT SELECT, INSERT, UPDATE, DELETE ON spam. TO 'spam'@'nom_du_serveur_de_mail' IDENTIFIED BY 'mot_de_passe'; FLUSH PRIVILEGES; • Sécurisation : chown amavis: /etc/mail/spamassassin/local.cf chmod 640 /etc/mail/spamassassin/local.cf • Heuristiques (ensemble de règles) • Bayesiens (apprentissage et statistiques) • Création de la base : º Se connecter au serveur mysql : • 45/60 mysql -u root -p create database spam; mysql -u root -p USE spam; ALTER TABLE bayes_expire TYPE=InnoDB; ALTER TABLE bayes_global_vars TYPE=InnoDB; ALTER TABLE bayes_seen TYPE=InnoDB; ALTER TABLE bayes_token TYPE=InnoDB; ALTER TABLE bayes_vars TYPE=InnoDB; ANALYZE TABLE bayes_expire; ANALYZE TABLE bayes_global_vars; ANALYZE TABLE bayes_seen; ANALYZE TABLE bayes_token; ANALYZE TABLE bayes_vars; quit • Importation la base sql toujours sur le serveur mysql: wget http://svn.apache.org/repos/asf/spamassassin/tags/spamassassin_current_release_3.3.x/sql/bayes_mysql.sql wget http://spamassassin.apache.org/gtube/gtube.txt mysql -u root -p spam < bayes_mysql.sql • Initialisation de la base : su amavis -c 'sa-learn -D --spam gtube.txt' • Vérification avec phpmyadmin que la base s’est bien remplie. • Amélioration des performances de la base en changeant le moteur : MyIsam en InnoDB : º Se connecter au serveur mysql 46/60 #!/bin/bash sa-update code1=$? if [[ $code1 > 1 ]]; then echo ""problem with sa-update"" fi sa-update --channelfile /etc/mail/spamassassin/sare-sa-update-channels.txt --gpgkey 856AA88A code2=$? if [[ $code2 > 1 ]]; then echo ""problem with sare update"" fi if [[ `expr $code1 + $code2` < 2 ]]; then spamassassin --lint code3=$? if $code3 = 0 ; then /etc/init.d/amavis stop && /etc/init.d/amavis start >/dev/null else echo ""spamassassin failed to lint"" fi fi Pour améliorer les performances, on a désactivé le \""opportunistic (automatic) Bayes auto-expiry\"" en • Création spécifiantd'une \"" bayes_auto_expire tache cron quotidienne 0\"" dans pour /etc/mail/spamassassin/local.cf effectuer l’expiration (la crontab . de l’user amavis fera l’affaire) : crontab -e -u amavis • Ajout de : 16 3 sa-learn --sync --force-expire • Mise à jour des Rules de SA et ajout des Rules SARE : º Mise à jour les règles de SA et en installer de nouvelles depuis le site de SARE : º l’update des règles de SA : sa-update -D ->Note Cela aura pour effet de télécharger les règles à jour. Elles seront installés dans un dossier différent des règles d’origine : /var/lib/spamassassin/3.003001. (ce qui correspond à la version 3.3.1 de SA) SA considèrera désormais ce dossier comme celui par défaut. • Vérification que tout soit OK : su -c ""spamassassin -D --lint"" amavis • Préparation de l’installation des rules SARE : 47/60 cd /etc/mail/spamassassin/ wget http://daryl.dostech.ca/sa-update/sare/GPG.KEY sa-update --import GPG.KEY • Installation du fichier contenant la liste des Rules : wget http://www.worm-fr.com/wiki/linux/upload/Debian/sare-sa-update-channels.txt Le fichier : sare-sa-update-channels.txt • Mise à jour : sa-update --channelfile /etc/mail/spamassassin/sare-sa-update-channels.txt --gpgkey 856AA88A Note : Les fichiers seront placés dans /var/lib/spamassassin : ls -la /var/lib/spamassassin/3.003001/ • Nouvelle vérification que tout soit OK : su -c ""spamassassin -D --lint"" amavis • Mise à jour régulière (1 fois par jour maximum) on pourra créer une tache cron en n’oubliant pas de relancer amavisd à la fin du script. Création du fichier sa-update.sh : vim /etc/sa-update.sh • On écrit : #!/bin/bash if [ -x /usr/bin/re2c -a -x /usr/local/bin/sa-compile -a -d /var/lib/spamassassin/compiled ]; then /usr/local/bin/sa-compile > /dev/null 2>&1 fi code1=$? if [[ $code1 > 0 ]]; then echo ""problem with sa-compile, turning off Rule2XSBody plugin"" sed -i 's/loadplugin Mail::SpamAssassin::Plugin::Rule2XSBody/#loadplugin Mail::SpamAssassin::Plugin::Rule2XSBody/' /etc/mail/spamassassin/v320.pre test -x /usr/local/sbin/amavisd || exit 0 /etc/init.d/amavis stop && /etc/init.d/amavis start >/dev/null else sed -i 's/#loadplugin Mail::SpamAssassin::Plugin::Rule2XSBody/loadplugin Mail::SpamAssassin::Plugin::Rule2XSBody/' /etc/mail/spamassassin/v320.pre test -x /usr/local/sbin/amavisd || exit 0 /etc/init.d/amavis stop && /etc/init.d/amavis start >/dev/null 48/60 fi 49/60 • Sécurisation : chmod 755 /etc/sa-update.sh • Edition la crontab pour ajouter la ligne : crontab -e 15 2 /etc/sa-update.sh • Compilation des Rulesets Depuis la version 3.2, SA est un peu plus lent dans le traitement des messages. En revanche une nouvelle fonctionnalité est apparue : la compilation des règles. Pour celles qui le permettent, cela accelère sensiblement le traitement. Pour cela il faut installer au préalable le paquet re2c : apt-get install re2c • Exécuter la commande sa-compile -D Cela prend un certain temps avant de se terminer. Les règles compilées seront placées dans le répertoire /var/lib/spamassassin/compiled. Il faut maintenant activer l’usage de ces règles grace au plugin Rule2XSBody : Edition du fichier /etc/mail/spamassassin/v320.pre et on décommente la ligne suivante : loadplugin Mail::SpamAssassin::Plugin::Rule2XSBody • Vérification que tout soit ok : su -c 'spamassassin -D --lint' amavis Planifier d'une compilation hebdomadaire des règles. Création du fichier /etc/cron.weekly/sa-compile vim /etc/cron.weekly/sa-compile • On écrit : $sa_tag_level_deflt = -9999.9; # add spam info headers if at, or above that level $sa_tag2_level_deflt = 4.3; # add 'spam detected' headers at that level $sa_kill_level_deflt = 9999.9; # triggers spam evasive actions $sa_mail_body_size_limit = 500*1024; # don't waste time on SA if mail is larger $sa_spam_subject_tag = '***SPAM_SCORE_** '; $sa_spam_report_header = 1; $final_spam_destiny = D_PASS; 50/60 • On rend le fichier executable : 51/60 chmod 755 /etc/cron.weekly/sa-compile Activation du plugin DKIM pour les vérification DKIM Edition du fichier /etc/mail/spamassassin/v312.pre vim /etc/mail/spamassassin/v312.pre • Décommenter la ligne : loadplugin Mail::SpamAssassin::Plugin::DKIM • Activer SA dans amavisd : Edition du fichier amavisd.conf et on commente la ligne : # @bypass_spam_checks_maps = (1); • Démarrage en debug-sa : /usr/local/sbin/amavisd debug-sa • On doit trouver dans la liste ceci : dbg: bayes: using username: amavis [30527] dbg: bayes: database connection established [30527] dbg: bayes: found bayes db version 3 [30527] dbg: bayes: Using userid: 1 [30527] dbg: bayes: not available for scanning, only 1 spam(s) in bayes DB < 200 Note : Bayes n’est pas encore disponible car il n’a pas analysé assez de mails pour fonctionner. Ceci est normal. On envoie un mail et on doit voir dans le debug le bon fonctionnement. On arrête amavisd par un CTRL + C. On édite le fichier amavisd.conf et on change les lignes suivantes de cette manière : 52/60 #!/bin/sh # amavisd-new case "" escaped="""" in 'start') /usr/local/sbin/amavisd start ;; 'stop') /usr/local/sbin/amavisd stop ;; ) echo ""Usage: logfile ""/home/virtual/.maildrop.log"" `[ -d $DEFAULT ] || (maildirmake $DEFAULT && maildirmake -f Spam $DEFAULT && maildirmake -f sent-mail $DEFAULT && maildirmake -f Spam.BlackList $DEFAULT && maildirmake -f Spam.WhiteList $DEFAULT)` `test -r $HOME/$DEFAULT.mailfilter` if( $RETURNCODE == 0 ) { log ""(==) Including $HOME/$DEFAULT.mailfilter"" exception { include $HOME/$DEFAULT.mailfilter } } { start | stop }"" ;; esac exit 0 • Création du fichier /etc/init.d/amavis avec vi : #!/bin/bash chown amavis:amavis /home/spamtrap/ > /dev/null 2>&1 chown amavis:amavis /home/hamtrap/ > /dev/null 2>&1 chmod 777 /home/spamtrap/ > /dev/null 2>&1 chmod 777 /home/hamtrap/ > /dev/null 2>&1 mv /home/virtual/[email protected]/new/ /home/spamtrap/ > /dev/null 2>&1 mv /home/virtual/[email protected]/cur/ /home/spamtrap/ > /dev/null 2>&1 mv /home/virtual/[email protected]/new/ /home/hamtrap/ > /dev/null 2>&1 mv /home/virtual/[email protected]/cur/ /home/hamtrap/ > /dev/null 2>&1 cp /home/virtual/*/.Spam.BlackList/cur/ /home/spamtrap/ > /dev/null 2>&1 cp /home/virtual/*/.Spam.BlackList/new/ /home/spamtrap/ > /dev/null 2>&1 cp /home/virtual/*/.Spam.WhiteList/new/ /home/hamtrap/ > /dev/null 2>&1 cp /home/virtual/*/.Spam.WhiteList/cur/ /home/hamtrap/ > /dev/null 2>&1 su -c ""/usr/local/bin/sa-learn -D --spam /home/spamtrap/"" amavis su -c ""/usr/local/bin/sa-learn -D --ham /home/hamtrap/"" amavis 53/60 rm /home/spamtrap/ > /dev/null 2>&1 rm /home/hamtrap/ > /dev/null 2>&1 54/60 • Sécurisation : chmod 755 /etc/init.d/amavis update-rc.d amavis defaults • Lancement de amavisd : /etc/init.d/amavis start • Vérification Edition du fichier des logs. /home/virtual/.mailfilter et on le modifie comme ceci : • On envoie un mail et on regarde l’entête de celui ci. on doit voir les X-Spam- headers. • On paramètre Maildrop pour déposer le courier détecté comme spam dans le dossier spam de chaque utilisateur. # ### http://www.clamav.net/ ['ClamAV-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/ - backs up clamd or Mail::ClamAV ['ClamAV-clamscan', 'clamscan', ""--stdout --no-summary -r --tempdir=$TEMPBASE {}"", [0], qr/:.*\sFOUND$/, qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ], ); • Le filtre bayesien • Création des boites [email protected] et [email protected]. • Création des deux répertoires spéciaux de transit : mkdir /home/spamtrap chown amavis: /home/spamtrap chmod 777 /home/spamtrap mkdir /home/hamtrap chown amavis: /home/hamtrap chmod 777 /home/hamtrap Création du fichier /etc/sa-learn , édition via vi: Trust amavis #MySQLServer /var/run/mysqld/mysqld.sock # si mysql est local MySQLServer nom_du_serveur_mysql #MySQLPort MySQLUser dspam MySQLPass mot_de_passe_pour mysql MySQLDb dspam #MySQLCompresstrue 55/60 56/60 • Sécurisation et ""exécutabilité"" : chmod 755 /etc/sa-learn • Création d'une tache cron qu’on lance par root : (une fois par jour ou plus suivant la puissance de la machine, cette tache etant tres gourmande en ressources) crontab -e 30 3,10,15,22 /etc/sa-learn • Activation de Clam dans Amavisd On paramètre ensuite l’antivirus pour fonctionner avec amavisd : • Edition du fichier /etc/amavisd.conf : On remplace à la fin du fichier tout ce qui se trouve entre : @av_scanners = ( et 1; # insure a defined return par : header DSPAM_SPAM X-DSPAM-Result =~ /^Spam$/ describe DSPAM_SPAM DSPAM claims it is spam score DSPAM_SPAM 2.8 header DSPAM_HAM X-DSPAM-Result =~ /^Innocent$/ describe DSPAM_HAM DSPAM claims it is ham score DSPAM_HAM -0.2 On commente : @bypass_virus_checks_maps = (1); • On relance amavisd : /etc/init.d/amavis stop && /etc/init.d/amavis start • L’antivirus est chargé. • Création de l’alias email : [email protected] vers [email protected] • Dspam Dspam et SpamAssassin sont complémentaires. Amavis sait gérer les deux en parallèle. On va faire une installation manuelle de Dspam sans utiliser les packages dspam pour Debian. Pour ce faire on va installer Dspam en compilant les sources. • Installation : º Télécharger les sources chez dspam : 57/60 º Positionnez vous dans votre répertoire de téléchargement ou de sources. º Récupérez la dernière version de dspam sur http://sourceforge.net/projects/dspam/files/, actuellement la 3.9.0 (au 11/04/2010) wget http://downloads.sourceforge.net/project/dspam/dspam/dspam-3.9.0/dspam-3.9.0.tar.gz?use_mirror=freefr tar xvzf dspam-3.9.0.tar.gz cd dspam-3.9.0 ./configure --with-dspam-home=/var/amavis/dspam --enable-signature-headers --without-delivery-agent --without-quarantine-agent --with-storage-driver=mysql_drv --with-mysql-includes=/usr/include/mysql make make install • Modification les droits sur les exécutables (même utilisateur qu’amavisd) et le dspam.conf chown amavis: /usr/local/bin/dspam* chown amavis: /usr/local/etc/dspam.conf chmod 750 /usr/local/bin/dspam* chmod 640 /usr/local/etc/dspam.conf • Création de la base sql (se connecte sur le serveur mysql) : mysql -u root -p create database dspam; GRANT SELECT, INSERT, UPDATE, DELETE ON dspam. TO 'dspam'@'nom_du_serveur_de_mail' IDENTIFIED BY 'mot_de_passe'; FLUSH PRIVILEGES; quit • Importation de la base sql (on est toujours connecté sur le serveur mysql) : mysql -u root -p dspam < /chemin/du/répertoire/contenant/mysql_objects-4.1.sql Modification du fichier /usr/local/etc/dspam.conf : exemple de fichier fonctionnel. On modifie ou on ajoute les lignes suivantes : START TRANSACTION; optimize table dspam_signature_data, dspam_token_data; COMMIT; • Création du répertoire de dspam dans le home d’amavisd : mkdir /var/amavis/dspam chown -R amavis: /var/amavis/dspam • Activation de dspam, il faut décommenter la ligne suivante dans amavisd.conf : 58/60 On a : # $dspam = 'dspam'; pour avoir : $dspam = 'dspam'; • Relancement d'amavisd : /etc/init.d/amavis stop && /etc/init.d/amavis start • Vérification des logs. On doit voir : Found $dspam at /usr/local/bin/dspam Vérification des logs, les headers des email pour les tags X-DSPAM et le remplissage de la base de données. Principe de fontionnement : Dans cette configuration, Dspam marque simplement les mails (il ajoute un tag dans le header). Pour que le filtrage devienne effectif, il faut donc indiquer à Spamassasssin le score à attribuer en fonction de la valeur du tag X-DSPAM dans le header. De préférence, il vaut mieux attendre quelques jours après l’installation de dspam afin de le laisser apprendre sur un volume de mail conséquent, avant d’activer ces rules SA. Dès que l’on estime que les tags sont pertinents dans les headers (c’est à dire que Dspam détecte bien du spam et du non-spam (ham) correctement), on peut ajouter ceci au • On /etc/mail/spamassassin/local.cf envoie un email : : header DSPAM_SPAM X-DSPAM-Result =~ /^Spam$/ describe DSPAM_SPAM DSPAM claims it is spam score DSPAM_SPAM 2.8 header DSPAM_HAM X-DSPAM-Result =~ /^Innocent$/ describe DSPAM_HAM DSPAM claims it is ham score DSPAM_HAM -0.2 • Amélioration des performances de la base en changeant le moteur : passage de MyIsam en InnoDB (se connecter sur le serveur mysql) mysql -u root -p USE dspam; ALTER TABLE dspam_preferences TYPE=InnoDB; ALTER TABLE dspam_signature_data TYPE=InnoDB; ALTER TABLE dspam_stats TYPE=InnoDB; ALTER TABLE dspam_token_data TYPE=InnoDB; ANALYZE TABLE dspam_preferences; ANALYZE TABLE dspam_signature_data; ANALYZE TABLE dspam_stats; ANALYZE TABLE dspam_token_data; • Création des taches de maintenance de dspam : º Une tache cron avec l'utilisateur amavis (crontab -e -u amavis) : 14 2 /usr/bin/mysql -u dspam -p'******' dspam < /root/dspam-3.8.0/src/tools.mysql_drv/purge-4.1.sql Modification du fichier /répertoire/ou/se/trouve/dspam-3.9.0/src/tools.mysql_drv/purge-4.1.sql pour rajouter à la fin : 59/60 START TRANSACTION; optimize table dspam_signature_data, dspam_token_data; COMMIT; • Création d'une tache cron de purge des log avec l'utilisateur amavis (crontab -e -u amavis): 3 3 1 * /usr/local/bin/dspam_logrotate -a 30 -v -d /var/amavis/dspam • Filtrage par extensions et type mime dans amavisd. On peut également renforcer le blocage des fichiers par extension et type mime dans amavisd, indépendamment de l’antivirus. Ce blocage est très efficace et peut être complémentaire du premier blocage par postfix sur ces fichiers (headers, body, type mime), car il utilise cette fois les capacités de décodage et de décompression d’Amavisd. Par exemple, on pourra facilement bloquer un fichier exe à l’intérieur d’un fichier zip. Voir mon fichier amavisd.conf pour des exemples de type mime et d’extensions de fichiers. Le serveur de mail et le filtrage sont configurés ! Mon fichier amavisd.conf Posté par pra dans Mail, Server à 06:26 60/60