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

Documents pareils