Tout le site

Transcription

Tout le site
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 Ã
1/96
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)
2/96
■
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
3/96
Mercredi,
6 juillet 2016
Connaitre l'état d'un appareil usb
Pour connaitre l'état d'un device usb il faut utiliser la commande lsusb
la commande à taper dans ce cas est :
lsusb -D /dev/bus/abc/xyz
example :
lsusb -D /dev/bus/usb/004/003
Device: ID 0951:162b Kingston Technology
Device Descriptor:
bLength
18
bDescriptorType
1
bcdUSB
3.00
bDeviceClass
0 (Defined at Interface level)
bDeviceSubClass
0
bDeviceProtocol
0
bMaxPacketSize0
9
idVendor
0x0951 Kingston Technology
idProduct
0x162b
bcdDevice
1.10
iManufacturer
1 Kingston
iProduct
2 DT HyperX 3.0
iSerial
3 20CF30E1165CBDC02200135A
bNumConfigurations
1
Configuration Descriptor:
bLength
9
bDescriptorType
2
wTotalLength
44
bNumInterfaces
1
bConfigurationValue 1
iConfiguration
0
bmAttributes
0x80
(Bus Powered)
MaxPower
224mA
Interface Descriptor:
bLength
9
bDescriptorType
4
bInterfaceNumber
0
bAlternateSetting
0
bNumEndpoints
2
bInterfaceClass
8 Mass Storage
bInterfaceSubClass
6 SCSI
bInterfaceProtocol 80 Bulk-Only
4/96
iInterface
0
Endpoint Descriptor:
bLength
7
bDescriptorType
5
bEndpointAddress 0x81 EP 1 IN
bmAttributes
2
Transfer Type
Bulk
Synch Type
None
Usage Type
Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval
0
bMaxBurst
14
Endpoint Descriptor:
bLength
7
bDescriptorType
5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes
2
Transfer Type
Bulk
Synch Type
None
Usage Type
Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval
0
bMaxBurst
14
Binary Object Store Descriptor:
bLength
5
bDescriptorType
15
wTotalLength
22
bNumDeviceCaps
2
USB 2.0 Extension Device Capability:
bLength
7
bDescriptorType
16
bDevCapabilityType
2
bmAttributes 0x00000002
Link Power Management (LPM) Supported
SuperSpeed USB Device Capability:
bLength
10
bDescriptorType
16
bDevCapabilityType
3
bmAttributes
0x00
wSpeedsSupported 0x000e
Device can operate at Full Speed (12Mbps)
Device can operate at High Speed (480Mbps)
Device can operate at SuperSpeed (5Gbps)
bFunctionalitySupport 2
Lowest fully-functional device speed is High Speed (480Mbps)
bU1DevExitLat
10 micro seconds
bU2DevExitLat
2047 micro seconds
Device Status: 0x000c
(Bus Powered)
U1 Enabled
U2 Enabled
5/96
Posté par pra dans Commandes Ã
13:36
vmWare Workstation Pro 12.x and linux kernel 4.4 et 4.6 - impossible de compiler
Pour pouvoir compiler vmWare (vmmon et vmnet) il faut changer une variable dans les fichier hostif.c et userif.c pour ce
faire procéder comme suis :
1°) Aller dans le répertoire : /usr/lib/vmware/modules/source
2°) vmmon
a°) faire une copie de vmmon.tar (cp vmmon.tar vmmon.tar.ori par example)
b°) détarer vmmon.tar avec la commande tar -xvf vmmon.tar
c°) liste des fichier de vmmon.tar :
.patched
vmmon-only/
vmmon-only/COPYING
vmmon-only/Makefile
vmmon-only/Makefile.kernel
vmmon-only/include/
vmmon-only/include/vcpuset_types.h
vmmon-only/include/cpu_defs.h
vmmon-only/include/compat_sched.h
vmmon-only/include/vm_basic_asm_x86_64.h
vmmon-only/include/vm_assert.h
vmmon-only/include/uccostTable.h
vmmon-only/include/pagelist.h
vmmon-only/include/memDefaults.h
vmmon-only/include/x86cpuid_asm.h
vmmon-only/include/monitorAction_exported.h
vmmon-only/include/pageLock_defs.h
vmmon-only/include/vcpuid.h
vmmon-only/include/community_source.h
vmmon-only/include/driver-config.h
vmmon-only/include/vmmem_shared.h
vmmon-only/include/vm_basic_asm_x86_common.h
vmmon-only/include/x86sel.h
vmmon-only/include/vmware_pack_init.h
vmmon-only/include/x86msr.h
vmmon-only/include/vmware_pack_begin.h
vmmon-only/include/modulecallstructs.h
vmmon-only/include/compat_highmem.h
vmmon-only/include/versioned_atomic.h
vmmon-only/include/compat_interrupt.h
vmmon-only/include/vm_basic_asm_x86.h
vmmon-only/include/compat_kernel.h
vmmon-only/include/vmware.h
vmmon-only/include/x86vt.h
6/96
vmmon-only/include/vmm_constants.h
vmmon-only/include/vm_asm.h
vmmon-only/include/compat_pci.h
vmmon-only/include/x86svm.h
vmmon-only/include/iocontrols.h
vmmon-only/include/basic_initblock.h
vmmon-only/include/initblock.h
vmmon-only/include/x86apic.h
vmmon-only/include/x86perfctr.h
vmmon-only/include/compat_autoconf.h
vmmon-only/include/compat_cred.h
vmmon-only/include/pgtbl.h
vmmon-only/include/vm_basic_math.h
vmmon-only/include/compat_spinlock.h
vmmon-only/include/vcpuset.h
vmmon-only/include/hashFunc.h
vmmon-only/include/contextinfo.h
vmmon-only/include/includeCheck.h
vmmon-only/include/perfctr_generic.h
vmmon-only/include/x86cpuid.h
vmmon-only/include/crossgdt.h
vmmon-only/include/compat_ioport.h
vmmon-only/include/mon_assert.h
vmmon-only/include/compat_module.h
vmmon-only/include/usercalldefs.h
vmmon-only/include/modulecall.h
vmmon-only/include/vm_time.h
vmmon-only/include/compat_pgtable.h
vmmon-only/include/address_defs.h
vmmon-only/include/vm_asm_x86.h
vmmon-only/include/vm_basic_types.h
vmmon-only/include/numa_defs.h
vmmon-only/include/compat_semaphore.h
vmmon-only/include/vm_basic_asm.h
vmmon-only/include/compat_page.h
vmmon-only/include/vm_basic_defs.h
vmmon-only/include/pshare_ext.h
vmmon-only/include/circList.h
vmmon-only/include/vm_asm_x86_64.h
vmmon-only/include/x86_basic_defs.h
vmmon-only/include/vmware_pack_end.h
vmmon-only/include/ptsc.h
vmmon-only/include/cpuid_info.h
vmmon-only/include/x86vt-vmcs-fields.h
vmmon-only/include/x86vtinstr.h
vmmon-only/include/x86segdescrs.h
vmmon-only/include/rateconv.h
vmmon-only/include/overheadmem_types.h
vmmon-only/include/vm_atomic.h
vmmon-only/include/compat_version.h
vmmon-only/include/pcip_defs.h
vmmon-only/include/x86vendor.h
vmmon-only/include/x86types.h
7/96
vmmon-only/include/x86desc.h
vmmon-only/vmcore/
vmmon-only/vmcore/driver_vmcore.h
vmmon-only/vmcore/moduleloop.c
vmmon-only/common/
vmmon-only/common/apic.h
vmmon-only/common/hashFunc.c
vmmon-only/common/vmx86.c
vmmon-only/common/hostKernel.h
vmmon-only/common/vmx86.h
vmmon-only/common/phystrack.h
vmmon-only/common/task.c
vmmon-only/common/apic.c
vmmon-only/common/hostif.h
vmmon-only/common/memtrack.h
vmmon-only/common/phystrack.c
vmmon-only/common/memtrack.c
vmmon-only/common/cpuid.c
vmmon-only/common/cpuid.h
vmmon-only/common/comport.c
vmmon-only/common/task.h
vmmon-only/common/hostifGlobalLock.h
vmmon-only/common/hostifMem.h
vmmon-only/common/comport.h
vmmon-only/linux/
vmmon-only/linux/driverLog.h
vmmon-only/linux/driver.c
vmmon-only/linux/vmmonInt.h
vmmon-only/linux/hostif.c
vmmon-only/linux/driver.h
vmmon-only/linux/hostif_priv.h
vmmon-only/linux/driverLog.c
vmmon-only/linux/vmhost.h
vmmon-only/Makefile.normal
vmmon-only/README
vmmon-only/autoconf/
vmmon-only/autoconf/tsc_khz.c
vmmon-only/autoconf/geninclude.c
vmmon-only/autoconf/smpcall.c
d°) effacer le ficher vmmon.tar avec la commande rm vmmon.tar
e°) éditer le fichier vmmon-only/linux/hostif.c
1. remplacer la variable : get_user_pages par la variable get_user_pages_remote
2. retarer avec la commande tar -cvf vmmon.tar .patched vmmon-only
3°) vmnet
a°) faire une copie de vmmon.tar (cp vmnet.tar vmnet.tar.ori par example)
b°) détarer vmmon.tar avec la commande tar -xvf vmnet.tar
8/96
c°) liste des fichier de vmnet.tar :
vmnet-only/
vmnet-only/compat_module.h
vmnet-only/vnetEvent.c
vmnet-only/vnet.h
vmnet-only/nfhook_uses_skb.c
vmnet-only/compat_sock.h
vmnet-only/vmware_pack_init.h
vmnet-only/vm_basic_asm.h
vmnet-only/netif.c
vmnet-only/compat_netdevice.h
vmnet-only/compat_autoconf.h
vmnet-only/vnetKernel.h
vmnet-only/vm_basic_defs.h
vmnet-only/skblin.c
vmnet-only/userif.c
vmnet-only/vnetEvent.h
vmnet-only/compat_version.h
vmnet-only/Makefile.kernel
vmnet-only/vm_oui.h
vmnet-only/smac.c
vmnet-only/driver-config.h
vmnet-only/net.h
vmnet-only/vnetInt.h
vmnet-only/vmware_pack_begin.h
vmnet-only/monitorAction_exported.h
vmnet-only/Makefile
vmnet-only/vm_device_version.h
vmnet-only/vnetFilter.h
vmnet-only/smac.h
vmnet-only/vm_basic_asm_x86_64.h
vmnet-only/includeCheck.h
vmnet-only/vm_assert.h
vmnet-only/smac_compat.h
vmnet-only/vnetFilterInt.h
vmnet-only/smac_compat.c
vmnet-only/netdev_has_dev_net.c
vmnet-only/hub.c
vmnet-only/vm_basic_types.h
vmnet-only/x86cpuid.h
vmnet-only/vm_atomic.h
vmnet-only/vnetUserListener.c
vmnet-only/vm_basic_asm_x86_common.h
vmnet-only/geninclude.c
vmnet-only/community_source.h
vmnet-only/vm_basic_asm_x86.h
vmnet-only/bridge.c
vmnet-only/compat_skbuff.h
vmnet-only/driver.c
vmnet-only/COPYING
9/96
vmnet-only/procfs.c
vmnet-only/Makefile.normal
vmnet-only/vmnetInt.h
vmnet-only/netdev_has_net.c
vmnet-only/vmware_pack_end.h
d°) effacer le ficher vmmon.tar avec la commande rm vmnet.tar
e°) éditer le fichier vmnet-only/userif.c
1. remplacer la variable : get_user_pages par la variable get_user_pages_remote
2. retarer avec la commande tar -cvf vmnet.tar vmmon-only
Posté par pra dans Software - Progiciel, VmWare Ã
10/96
07:21
Vendredi, 10 juin 2016
Comment récupérer des vidéos sous youtube et d'autre : cclive
Pour cela il suffit d'installer le package cclive
liste des sites ou l'on peut récuperer des vidéos avec cclive :
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
101greatgoals.com
1tv.ru
audioboo.fm
beeg.com
bikeradar.com
canalplus.fr|d17.tv|d8.tv
cbsnews.com
city.lego.com
clipfish.de
collegehumor.com
dailymotion.com
deviantclip.com
dorkly.com
empflix.com
flix.tapuz.co.il
funnyordie.com
gaskrank.tv
jizzhut.com
keezmovies.com
liveleak.com
metacafe.com
myspass.de
publicsenat.fr
redtube.com
sevenload.com
soundcloud.com
spankwire.com
spiegel.de
tagtele.com
tcmag.com
ted.com
theguardian.com
theonion.com
tmunderground.com
tnaflix.com
totallynsfw.com
tvlux.be
tvrain.ru
videa.hu
video.foxnews.com
videobash.com
videos.sapo.pt
11/96
•
•
•
•
•
•
•
•
•
•
videos.senat.fr
vimeo.com
wimp.com
www.ardmediathek.de
www.arte.tv
xhamster.com
xnxx.com
xvideos.com
youjizz.com
youtube.com
Posté par pra dans Software - Progiciel, Utilitaires Ã
12/96
21:33
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
13/96
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 Ã
14/96
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
15/96
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 Ã
16/96
05:27
Vendredi, 29 avril 2016
Requetes systèmes
Quelques requêtes utiles :
Taille des tables et index avec proportion:
SELECT
e1.relname AS table,
pg_size_pretty(pg_relation_size(e1.oid)) AS "table size",
CASE
WHEN e3.oid IS NULL THEN 'O bytes'
WHEN e3.oid IS NOT NULL THEN pg_size_pretty(pg_total_relation_size(e3.oid))
END AS "TOAST size",
pg_size_pretty(sum(pg_relation_size(e2.oid))) AS "Index size",
pg_size_pretty(pg_total_relation_size(e1.oid)) AS "total table size",
round(sum(pg_relation_size(e2.oid))*100/pg_total_relation_size(e1.oid)) AS "ratio"
FROM pg_class e1
JOIN pg_index i ON e1.oid=i.indrelid
JOIN pg_class e2 ON i.indexrelid=e2.oid
LEFT JOIN pg_class e3 ON e1.reltoastrelid=e3.oid
WHERE
(e1.relkind='r' OR e1.relkind='t')
AND pg_relation_size(e1.oid) != 0
GROUP BY e1.relname, e1.oid, e3.oid
ORDER BY sum(pg_relation_size(e2.oid)) DESC;
Taille des tables avec taille des index non compris
SELECT
e1.relname AS table,
e2.relname AS "index name",
pg_size_pretty(pg_relation_size(e1.oid)) AS "table size",
CASE
WHEN e3.oid IS NULL THEN '0 bytes'
WHEN e3.oid IS NOT NULL THEN pg_size_pretty(pg_relation_size(e3.oid))
END AS "TOAST size",
CASE
WHEN e2.oid IS NULL THEN '0 bytes'
WHEN e2.oid IS NOT NULL THEN pg_size_pretty(pg_relation_size(e2.oid))
END AS "Index size",
pg_size_pretty(pg_total_relation_size(e1.oid)) AS "total table size"
FROM pg_class e1
JOIN pg_index i ON e1.oid=i.indrelid
JOIN pg_class e2 ON i.indexrelid=e2.oid
LEFT JOIN pg_class e3 ON e1.reltoastrelid=e3.oid
WHERE
(e1.relkind='r' OR e1.relkind='t')
AND pg_relation_size(e1.oid) != 0
ORDER BY pg_total_relation_size(e1.oid) DESC;
17/96
Les 5 plus grosses tables :
SELECT nspname || '.' || relname AS "relation",pg_size_pretty(pg_relation_size(C.oid)) AS "size"
FROM pg_class C LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
WHERE nspname NOT IN ('pg_catalog', 'information_schema')
ORDER BY pg_relation_size(C.oid) DESC
LIMIT 5;
Tables avec des lignes mortes dans la base
select relname,n_dead_tup,n_live_tup from pg_stat_all_tables order by n_dead_tup desc;
Taille des lignes mortes pour chaque table (postgres superieur à 9)
CREATE EXTENSION pgstattuple;
SELECT relname as table_name, pg_size_pretty(dead_tuple_len) AS dead_tuple_size
FROM
(SELECT relname, (pgstattuple(oid)).dead_tuple_len AS dead_tuple_len FROM pg_class WHERE
relkind='r')
AS stattuple
ORDER BY dead_tuple_len DESC;
Taille des lignes mortes pour la base (postgres superieur à 9)
SELECT pg_size_pretty(sum((pgstattuple(oid)).dead_tuple_len)) AS total_dead_tuple_len FROM pg_class
WHERE relkind='r';
Taille des tables de TOAST
SELECT a, n, pg_relation_size(t), pg_size_pretty(pg_relation_size(t))
FROM (SELECT c.relname, c.reltoastrelid, d.relname
FROM pg_class c JOIN pg_class d ON c.reltoastrelid = d.oid
) AS x(a, t, n)
WHERE t > 0 AND pg_relation_size(t) > 0
ORDER BY 3 DESC;
Posté par pra dans DB, PostgreSQL Ã
05:29
18/96
Mercredi, 27 avril 2016
Supprimer le mot de passe d'un utilisateur
Pour le mot de passed'un utilisateur on peut le faire via la commande :
usermod -p '*' <user>
Pour rappel cela ne mets pas un mot de passe vide, il supprime purement et simplement le mot de passe, ce
qui a comme résultat l'impossibilité de se connecter avec un mot de passe
Posté par pra dans Sécurité, Système Ã
07:41
Mettre un umask dans /etc/password
Pour forcer un umask particulier à un utilisateur donné on peut le faire dans /etc/password via la commande :
chfn -o 'umask=<valeur_umask>' <user>
Posté par pra dans Sécurité, Système Ã
07:38
19/96
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
20/96
Vendredi, 25 mars 2016
Dupliquer une base de données sur le même moteur sous un nom différent
Pour copier une base de données en une commande sur le même moteur postgresql.
• Copie à l'identique :
create database <nom_nouvelle_base> with template <base_convoitée> ;
• Copie en changeant le tablespace et le propriétaire
create database <nom_nouvelle_base> with template <base_convoitée> tablespace
<nouveau_tablespace> owner <nouveau_propriétaire>;
Sur le modèle ci-dessus on peut changer soit le tablespace uniquement soit le propriétaire uniquement ...
Posté par pra dans DB, PostgreSQL Ã
21:30
21/96
Dimanche,
3 janvier 2016
Ctrl + Alt + Suppr VmWare - Fusion
Sur un clavier de portable Mac, appuyez sur :
Fn + Ctrl + Option + Suppr
La touche 'Option' est la touche 'Alt' :
Posté par pra dans Apple, Newbie, Software - Progiciel, VmWare Ã
22/96
05:20
Jeudi, 24 septembre 2015
Utilisation d'une puce FREE avec Ipad
Et oui avec un abonnement Free a 15€ on a 50Go sur un Ipad Pro / Ipad / Ipad mini.
Allez sur Réglage :
Vous obtenez voir l'image ci-dessous, cliquer sur 'Nom du point d'accès':
Vous Obtenez la page :
il suffit de tapper free au niveau de : 'Nom du point d'accès' des deux zones : 'Données cellulaires' et '
Config LTE (facultatif)'. Laissez les champs 'Nom d'utilisateur' et 'Mot de passe' vide
Posté par pra dans Apple Ã
06:07
23/96
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
24/96
Lundi,
2 février 2015
Postgres : Résultat d'une requête dans un fichier csv
Le but est de récupérer le résultat d'une requête dans un fichier dans un format particulier :
Pré-requis : se connecter avec un compte superuser, et aller dans la base concernée.
=> format csv avec entête des colonnes :
• requête :
copy (<ecrire_ici_la_requête>) to '</directory/du/fichier/résultat.csv>' with header csv ;
• ex : copy (select * from alf_content_url ) to '/tmp/test.csv' with header csv ;
=> format csv sans entête des colonnes :
• requête :
copy (<ecrire_ici_la_requête>) to '</directory/du/fichier/résultat.csv>' with csv ;
• ex : copy (select * from alf_content_url ) to '/tmp/test.csv' with csv ;
=> format texte avec entête des colonnes et séparateur de notre choix :
• requête :
copy (<ecrire_ici_la_requête>) to '</directory/du/fichier/résultat.txt>' with header delimiter
'<symbole>' csv ;
• ex : copy (select * from alf_content_url ) to '/tmp/test.txt' with header delimiter '|' csv ;
Posté par pra dans DB, PostgreSQL Ã
21:35
25/96
Samedi, 17 janvier 2015
Tableau résumant les droits associés à umask
Voici la lise des permissions et leurs actions sur les fichiers et répertoires de la commande umask.
Comme vous pouvez le constater pour root il est préférable d'avoir un umask configuré à 077.
Vous pouvez mettre l'umask dans .profile ou .bashrc
umask
000
001
002
003
004
005
006
007
010
011
012
013
014
015
016
017
020
021
022
023
024
025
026
027
030
031
032
033
034
035
036
037
040
041
042
Permissions sur les fichiers
rw-rw-rwrw-rw-rwrw-rw-r-rw-rw-r-rw-rw--wrw-rw--wrw-rw---rw-rw---rw-rw-rwrw-rw-rwrw-rw-r-rw-rw-r-rw-rw--wrw-rw--wrw-rw---rw-rw---rw-r--rwrw-r--rwrw-r--r-rw-r--r-rw-r---wrw-r---wrw-r----rw-r----rw-r--rwrw-r--rwrw-r--r-rw-r--r-rw-r---wrw-r---wrw-r----rw-r----rw--w-rwrw--w-rwrw--w-r--
Permissions sur les répertoires
rwxrwxrwx
rwxrwxrwrwxrwxr-x
rwxrwxr-rwxrwx-wx
rwxrwx-wrwxrwx--x
rwxrwx--rwxrw-rwx
rwxrw-rwrwxrw-r-x
rwxrw-r-rwxrw--wx
rwxrw--wrwxrw---x
rwxrw---rwxr-xrwx
rwxr-xrwrwxr-xr-x
rwxr-xr-rwxr-x-wx
rwxr-x-wrwxr-x--x
rwxr-x--rwxr--rwx
rwxr--rwrwxr--r-x
rwxr--r-rwxr---wx
rwxr---wrwxr-----x
rwxr-----rwx-wxrwx
rwx-wxrwrwx-wxr-x
26/96
043
044
045
046
047
050
051
052
053
054
055
056
057
060
061
062
063
064
065
066
067
070
071
072
073
074
075
076
077
100
101
102
103
104
105
106
107
110
111
112
113
114
115
116
117
120
121
122
rw--w-r-rw--w--wrw--w--wrw--w---rw--w---rw--w-rwrw--w-rwrw--w-r-rw--w-r-rw--w--wrw--w--wrw--w---rw--w---rw----rwrw----rwrw----r-rw----r-rw-----wrw-----wrw------rw------rw----rwrw----rwrw----r-rw----r-rw-----wrw-----wrw------rw------rw-rw-rwrw-rw-rwrw-rw-r-rw-rw-r–
rw-rw--wrw-rw--wrw-rw---rw-rw---rw-rw-rwrw-rw-rwrw-rw-r-rw-rw-r-rw-rw–wrw-rw–wrw-rw---rw-rw---rw-r--rwrw-r--rwrw-r--r--
rwx-wxr-rwx-wx-wx
rwx-wx-wrwx-wx–x
rwx-wx--rwx-w-rwx
rwx-w-rwrwx-w-r-x
rwx-w-r-rwx-w--wx
rwx-w--wrwx-w---x
rwx-w---rwx--xrwx
rwx--xrwrwx--xr-x
rwx--xr-rwx--x-wx
rwx--x-wrwx--x--x
rwx--x--rwx---rwx
rwx---rwrwx---r-x
rwx---r-rwx----wx
rwx----wrwx-----x
rwx-----rw-rwxrwx
rw-rwxrwrw-rwxr-x
rw-rwxr-rw-rwx-wx
rw-rwx-wrw-rwx--x
rw-rwx--rw-rw-rwx
rw-rw-rwrw-rw-r-x
rw-rw-r-rw-rw--wx
rw-rw--wrw-rw---x
rw-rw---rw-r-xrwx
rw-r-xrwrw-r-xr-x
27/96
123
124
125
126
127
130
131
132
133
134
135
136
137
140
141
142
143
144
145
146
147
150
151
152
153
154
155
156
157
160
161
162
163
164
165
166
167
170
171
172
173
174
175
176
177
200
201
202
rw-r--r-rw-r---wrw-r---wrw-r----rw-r----rw-r--rwrw-r--rwrw-r--r-rw-r--r-rw-r---wrw-r---wrw-r----rw-r----rw--w-rwrw–w-rwrw--w-r-rw--w-r-rw--w--wrw--w--wrw--w---rw--w---rw--w-rwrw--w-rwrw--w-r-rw--w-r-rw--w--wrw--w--wrw--w---rw--w---rw----rwrw----rwrw----r-rw----r-rw-----wrw-----wrw------rw------rw----rwrw----rwrw----r-rw----r-rw-----wrw-----wrw------rw------r--rw-rwr--rw-rwr--rw-r--
rw-r-xr-rw-r-x-wx
rw-r-x-wrw-r-x--x
rw-r-x--rw-r--rwx
rw-r--rwrw-r--r-x
rw-r--r-rw-r---wx
rw-r---wrw-r----x
rw-r----rw--wxrwx
rw--wxrwrw--wxr-x
rw--wxr-rw--wx-wx
rw--wx-wrw--wx--x
rw--wx--rw--w-rwx
rw--w-rwrw--w-r-x
rw--w-r-rw--w--wx
rw--w--wrw--w---x
rw--w---rw---xrwx
rw---xrwrw---xr-x
rw---xr-rw---x-wx
rw---x-wrw---x--x
rw---x--rw----rwx
rw----rwrw----r-x
rw----r-rw----wx
rw----wrw-----x
rw-----r-xrwxrwx
r-xrwxrwr-xrwxr-x
28/96
203
204
205
206
207
210
211
212
213
214
215
216
217
220
221
222
223
224
225
226
227
230
231
232
233
234
235
236
237
240
241
242
243
244
245
246
247
250
251
252
253
254
255
256
257
260
261
262
r--rw-r-r--rw--wr--rw--wr--rw---r--rw---r--rw-rwr--rw-rwr--rw-r-r--rw-r-r--rw--wr--rw--wr--rw---r--rw---r--r--rwr--r--rwr--r--r-r--r--r-r--r---wr--r---wr--r----r--r----r--r--rwr--r--rwr--r--r-r--r--r-r--r---wr--r---wr--r----r--r----r---w-rwr---w-rwr---w-r-r---w-r-r---w--wr---w--wr---w---r---w---r---w-rwr---w-rwr---w-r-r---w-r-r---w--wr---w--wr---w---r---w---r-----rwr-----rwr-----r--
r-xrwxr-r-xrwx-wx
r-xrwx-wr-xrwx--x
r-xrwx--r-xrw-rwx
r-xrw-rwr-xrw-r-x
r-xrw-r-r-xrw--wx
r-xrw–wr-xrw---x
r-xrw---r-xr-xrwx
r-xr-xrwr-xr-xr-x
r-xr-xr-r-xr-x-wx
r-xr-x-wr-xr-x--x
r-xr-x--r-xr--rwx
r-xr--rwr-xr--r-x
r-xr--r-r-xr---wx
r-xr---wr-xr----x
r-xr----r-x-wxrwx
r-x-wxrwr-x-wxr-x
r-x-wxr-r-x-wx-wx
r-x-wx-wr-x-wx--x
r-x-wx--r-x-w-rwx
r-x-w-rwr-x-w-r-x
r-x-w-r-r-x-w--wx
r-x-w--wr-x-w---x
r-x-w---r-x--xrwx
r-x--xrwr-x--xr-x
29/96
263
264
265
266
267
270
271
272
273
274
275
276
277
300
301
302
303
304
305
306
307
310
311
312
313
314
315
316
317
320
321
322
323
324
325
326
327
330
331
332
333
334
335
336
337
340
341
342
r-----r-r------wr------wr-------r-------r-----rwr-----rwr-----r-r-----r-r------wr------wr-------r-------r--rw-rwr--rw-rwr--rw-r-r--rw-r-r--rw--wr--rw--wr--rw---r--rw---r--rw-rwr--rw-rwr--rw-r-r--rw-r-r--rw--wr--rw--wr--rw---r--rw---r--r--rwr--r--rwr--r--r-r--r--r-r--r---wr--r---wr--r----r--r----r--r--rwr--r--rwr--r--r-r--r--r-r--r---wr--r---wr--r----r--r----r---w-rwr---w-rwr---w-r--
r-x--xr-r-x--x-wx
r-x--x-wr-x--x--x
r-x--x--r-x---rwx
r-x---rwr-x---r-x
r-x---r-r-x----wx
r-x----wr-x-----x
r-x-----r--rwxrwx
r--rwxrwr--rwxr-x
r--rwxr-r--rwx-wx
r--rwx-wr--rwx--x
r--rwx--r--rw-rwx
r--rw-rwr--rw-r-x
r--rw-r-r--rw--wx
r--rw--wr--rw---x
r--rw---r--r-xrwx
r--r-xrwr–r-xr-x
r--r-xr-r--r-x-wx
r--r-x-wr--r-x--x
r--r-x--r--r--rwx
r--r--rwr--r--r-x
r--r--r-r--r---wx
r--r---wr--r----x
r--r----r---wxrwx
r---wxrwr---wxr-x
30/96
343
344
345
346
347
350
351
352
353
354
355
356
357
360
361
362
363
364
365
366
367
370
371
372
373
374
375
376
377
400
401
402
403
404
405
406
407
410
411
412
413
414
415
416
417
420
421
422
r---w-r-r---w--wr---w--wr---w---r---w---r---w-rwr---w-rwr---w-r-r---w-r-r---w--wr---w--wr---w---r---w---r-----rwr-----rwr-----r-r-----r-r------wr------wr-------r-------r-----rwr-----rwr-----r-r-----r-r------wr------wr-------r--------w-rw-rw-w-rw-rw-w-rw-r--w-rw-r--w-rw--w-w-rw--w-w-rw----w-rw----w-rw-rw-w-rw-rw-w-rw-r--w-rw-r--w-rw--w-w-rw--w-w-rw----w-rw----w-r--rw-w-r--rw-w-r--r--
r---wxr-r---wx-wx
r---wx-wr---wx--x
r---wx--r---w-rwx
r---w-rwr---w-r-x
r---w-r-r---w--wx
r---w--wr---w---x
r---w---r----xrwx
r----xrwr----xr-x
r----xr-r----x-wx
r----x-wr----x--x
r----x--r-----rwx
r-----rwr-----r-x
r-----r-r------wx
r------wr-------x
r--------wxrwxrwx
-wxrwxrw-wxrwxr-x
-wxrwxr--wxrwx-wx
-wxrwx-w-wxrwx--x
-wxrwx---wxrw-rwx
-wxrw-rw-wxrw-r-x
-wxrw-r--wxrw--wx
-wxrw--w-wxrw---x
-wxrw----wxr-xrwx
-wxr-xrw-wxr-xr-x
31/96
423
424
425
426
427
430
431
432
433
434
435
436
437
440
441
442
443
444
445
446
447
450
451
452
453
454
455
456
457
460
461
462
463
464
465
466
467
470
471
472
473
474
475
476
477
500
501
502
-w-r--r--w-r---w-w-r---w-w-r-----w-r-----w-r--rw-w-r--rw-w-r--r--w-r--r--w-r---w-w-r---w-w-r-----w-r-----w--w-rw-w--w-rw-w--w-r--w--w-r--w--w--w-w--w--w-w--w----w--w----w--w-rw-w--w-rw-w--w-r--w--w-r--w--w--w-w--w--w-w--w----w--w----w----rw-w----rw-w----r--w----r--w-----w-w-----w-w-------w-------w----rw-w----rw-w----r--w----r--w-----w-w-----w-w-------w-------w-rw-rw-w-rw-rw-w-rw-r--
-wxr-xr--wxr-x-wx
-wxr-x-w-wxr-x–x
-wxr-x---wxr--rwx
-wxr--rw-wxr--r-x
-wxr--r--wxr---wx
-wxr---w-wxr-----x
-wxr------wx-wxrwx
-wx-wxrw-wx-wxr-x
-wx-wxr--wx-wx-wx
-wx-wx-w-wx-wx--x
-wx-wx---wx-w-rwx
-wx-w-rw-wx-w-r-x
-wx-w-r--wx-w--wx
-wx-w–w-wx-w---x
-wx-w----wx--xrwx
-wx--xrw-wx--xr-x
-wx--xr--wx--x-wx
-wx--x-w-wx--x--x
-wx--x---wx---rwx
-wx---rw-wx---r-x
-wx---r--wx----wx
-wx----w-wx-----x
-wx------w-rwxrwx
-w-rwxrw-w-rwxr-x
32/96
503
504
505
506
507
510
511
512
513
514
515
516
517
520
521
522
523
524
525
526
527
530
531
532
533
534
535
536
537
540
541
542
543
544
545
546
547
550
551
552
553
554
555
556
557
560
561
562
-w-rw-r--w-rw--w-w-rw--w-w-rw----w-rw----w-rw-rw-w-rw-rw-w-rw-r--w-rw-r--w-rw--w-w-rw--w-w-rw----w-rw----w-r--rw-w-r--rw-w-r--r--w-r--r--w-r---w-w-r---w-w-r-----w-r-----w-r--rw-w-r--rw-w-r--r--w-r--r--w-r---w-w-r---w-w-r-----w-r-----w--w-rw-w--w-rw-w--w-r--w--w-r--w--w--w-w--w--w-w--w----w--w----w--w-rw-w--w-rw-w--w-r--w--w-r--w--w--w-w--w--w-w--w----w--w----w----rw-w----rw-w----r--
-w-rwxr--w-rwx-wx
-w-rwx-w-w-rwx–x
-w-rwx---w-rw-rwx
-w-rw-rw-w-rw-r-x
-w-rw-r--w-rw--wx
-w-rw--w-w-rw---x
-w-rw----w-r-xrwx
-w-r-xrw-w-r-xr-x
-w-r-xr--w-r-x-wx
-w-r-x-w-w-r-x--x
-w-r-x---w-r--rwx
-w-r--rw-w-r--r-x
-w-r--r--w-r---wx
-w-r---w-w-r----x
-w-r-----w--wxrwx
-w--wxrw-w--wxr-x
-w--wxr--w--wx-wx
-w--wx-w-w--wx--x
-w--wx---w--w-rwx
-w--w-rw-w--w-r-x
-w--w-r--w--w--wx
-w--w--w-w--w---x
-w--w----w---xrwx
-w---xrw-w---xr-x
33/96
563
564
565
566
567
570
571
572
573
574
575
576
577
600
601
602
603
604
605
606
607
610
611
612
613
614
615
616
617
620
621
622
623
624
625
626
627
630
631
632
633
634
635
636
637
640
641
642
-w----r--w-----w-w-----w-w-------w-------w----rw-w----rw-w----r--w----r--w-----w-w-----w-w-------w---------rw-rw---rw-rw---rw-r----rw-r----rw--w---rw–w---rw------rw------rw-rw---rw-rw---rw-r----rw-r----rw--w---rw--w---rw------rw------r--rw---r--rw---r--r----r--r----r---w---r---w---r-------r-------r--rw---r--rw---r--r----r--r----r---w---r---w---r-------r--------w-rw----w-rw----w-r--
-w---xr--w---x-wx
-w---x-w-w---x--x
-w---x---w----rwx
-w----rw-w----r-x
-w----r--w-----wx
-w-----w-w------x
-w--------xrwxrwx
--xrwxrw--xrwxr-x
--xrwxr---xrwx-wx
--xrwx-w--xrwx--x
--xrwx----xrw-rwx
--xrw-rw--xrw-r-x
--xrw-r---xrw--wx
--xrw--w--xrw---x
--xrw-----xr-xrwx
--xr-xrw--xr-xr-x
--xr-xr---xr-x-wx
--xr-x-w--xr-x--x
--xr-x----xr-rwx
--xr--rw--xr--r-x
--xr--r---xr---wx
--xr---w--xr----x
--xr------x-wxrwx
--x-wxrw--x-wxr-x
34/96
643
644
645
646
647
650
651
652
653
654
655
656
657
660
661
662
663
664
665
666
667
670
671
672
673
674
675
676
677
700
701
702
703
704
705
706
707
710
711
712
713
714
715
716
717
720
721
722
----w-r-----w--w----w--w----w-------w-------w-rw----w-rw----w-r-----w-r-----w--w----w--w----w-------w------rw------rw------r-------r--------w-------w----------------------rw------rw------r-------r--------w-------w-------------------rw-rw---rw-rw---rw-r----rw-r----rw--w---rw--w---rw------rw------rw-rw---rw-rw---rw-r----rw-r----rw--w---rw--w---rw------rw------r--rw---r--rw---r--r--
--x-wxr---x-wx-wx
--x-wx-w--x-wx--x
--x-wx----x-w-rwx
--x-w-rw--x-w-r-x
--x-w-r---x-w--wx
--x-w--w--x-w---x
--x-w-----x--xrwx
--x--xrw--x--xr-x
--x--xr---x--x-wx
--x--x-w--x--x--x
--x--x----x---rwx
--x---rw--x---r-x
--x---r---x----wx
--x----w--x-----x
--x--------rwxrwx
---rwxrw---rwxr-x
---rwxr----rwx-wx
---rwx-w---rwx--x
---rwx-----rw-rwx
---rw-rw---rw-r-x
---rw-r----rw--wx
---rw--w---rw---x
---rw------r-xrwx
---r-xrw---r-xr-x
35/96
723
724
725
726
727
730
731
732
733
734
735
736
737
740
741
742
743
744
745
746
747
750
751
752
753
754
755
756
757
760
761
762
763
764
765
766
767
770
771
772
773
774
775
776
777
---r--r----r---w---r---w---r-------r-------r--rw---r--rw---r--r----r--r----r---w---r---w---r-------r--------w-rw----w-rw----w-r-----w-r-----w--w----w--w----w-------w-------w-rw----w-rw----w-r-----w-r–
----w--w----w--w----w-------w---------rw------rw------r-------r--------w-------w----------------------rw------rw------r-------r--------w-------w-----------------
---r-xr----r-x-wx
---r-x-w---r-x--x
---r-x-----r--rwx
---r--rw---r--r-x
---r--r----r---wx
---r---w---r----x
---r--------wxrwx
----wxrw----wxr-x
----wxr-----wx-wx
----wx-w----wx--x
----wx------w-rwx
----w-rw----w-r-x
----w-r-----w--wx
----w--w----w---x
----w--------xrwx
-----xrw-----xr-x
-----xr------x-wx
-----x-w-----x--x
-----x--------rwx
------rw------r-x
------r--------wx
-------w--------x
---------
Posté par pra dans Sécurité, Système Ã
19:14
36/96
Jeudi,
1 janvier 2015
Thunderbird IMAP(s) : Supprimer définitivement des mails effacés
La suppression définitive des mails sur le server (commande expung) ce que ne fait pas Thunderbird par défaut.
Pour faire que Thunderbird efface/détruite les mails il faut mettre la variable
mail.imap.expunge_after_delete à true.Pour ce faire :
Aller dans :
•
•
•
•
Dans la barre de recherche de la nouvelle fenêtre chercher ' mail.imap.expunge_after_delete' Vous
"Préférences"",
pouvez constater que la valeur est à false, il suffit de cliquer sur la ligne pour la faire passer à true .
"Avancé".
º Puis cliquer sur l'onglet "Général",
º enfin cliquer sur le bouton ""Éditeur de configuration...'.
Fermer les fenêtres
Lorsque vous voulez supprimer les mails il faut compacter les dossiers
Posté par pra dans Messagerie (client), Software - Progiciel Ã
37/96
06:54
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 Ã
38/96
07:14
Mercredi, 21 mai 2014
Controle md5 sous mac
2 possibilités :
1°) utiliser la commande md5 :
md5 /chemin/du/fichier/a/controler
2°) utiliser la commande openssl :
openssl md5 /chemin/du/fichier/a/controler
Posté par pra dans Apple, Sécurité, Système Ã
39/96
07:45
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 Ã
40/96
08:21
Lundi, 24 février 2014
Thunderbird et les profiles sous Mac OS X
Pour lancer le gestionnaire de profile lancer la commande ci-dessous dans un terminal :
/Applications/Thunderbird.app/Contents/MacOS/thunderbird-bin -p &
Le répertoire des profiles utilisateur se trouve ici :
/Users/<login>/Library/Thunderbird/Profiles
Posté par pra dans Apple, Messagerie (client), Newbie, Software - Progiciel Ã
41/96
08:14
Vendredi, 21 février 2014
Mac : raccourci clavier pour locker mettre en veille
Pour locker ou mettre en veille, il faut associer les touches :
'alt' + 'ctrl' + 'on/off'
Posté par pra dans Apple, Newbie Ã
14:41
42/96
Samedi, 15 février 2014
Mac : clavier faire l'antislash : \
Pour faire l'antislash : "\", il faut associer les touches :
'schift' + 'alt' + ':' ou 'alt' + '/'
Posté par pra dans Apple, Newbie Ã
19:39
43/96
Jeudi, 13 février 2014
Mac : clavier faire le pipe : |
Pour faire le pipe : "|", il faut associer les touches : 'schift' + 'alt' + 'l' ou 'alt' + 'L'
Posté par pra dans Apple, Newbie Ã
17:32
Mac : clavier faire les crochets : [ ]
Pour faire le crochet ouvert : "[", il faut associer les touches :
'schift' + 'alt' + '(' ou 'alt' + '5'
Pour faire le crochet fermé : "]", il faut associer les touches :
'schift' + 'alt' + ')' ou 'alt' + '°'
Posté par pra dans Apple, Newbie Ã
08:21
Mac clavier faire le tilde : ~
Pour faire le tilde : ""~"", il faut associer les touches : 'alt' + 'n'
Posté par pra dans Apple, Newbie Ã
05:41
Mac clavier faire les accolades : {}
Pour faire l'accolade ouverte : ""{"", il faut associer les touches : 'alt' + '('
Pour faire l'accolade fermée : ""}"", il faut associer les touches : 'alt' + ')'
Posté par pra dans Apple, Newbie Ã
05:38
44/96
Jeudi, 30 janvier 2014
Copier / coller dans firefox
Garder la présentation d'un copier / coller dans firefox
Pour pouvoir faire des copier / coller dans firefox il faut activer des scripts.
Pour ce faire il faut modifier le fichier prefs.js sous linux , user.js pour windows.
Voici la procédure pour activer les scripts.
1. fermer firefox
2. faire une copie de sauvegarde du fichier si il existe de prefs.js ou user.js
3. ajouter les 4 lignes suivantes :
4.
user_pref(""capability.policy.policynames"", ""allowclipboard"");
user_pref(""capability.policy.allowclipboard.sites"",""https://www.mozilla.org"");
user_pref(""capability.policy.allowclipboard.Clipboard.cutcopy"",""allAccess"");
user_pref(""capability.policy.allowclipboard.Clipboard.paste"", ""allAccess"");
1. sauvegarder le fichier
2. lancer firefox
Posté par pra dans firefox, Software - Progiciel Ã
45/96
08:11
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 Ã
46/96
05:08
Dimanche, 27 octobre 2013
Taille des tables sous postgresql
Pour passer la requête sql il faut être connecté à la base concernée.
Tailles des tables d'une base de données :
select schema,name, pg_size_pretty(CASE WHEN is_index THEN 0 ELSE s END) AS size,
pg_size_pretty(CASE WHEN is_index THEN s ELSE st - s END) AS index, CASE WHEN st = 0 THEN 0
WHEN is_index THEN 100 ELSE 100 - ((s*100) / st) END || '%' as ratio, pg_size_pretty(st) as total
FROM (SELECT *,st = s AS is_index FROM (SELECT nspname as schema, relname as name,
pg_relation_size(nspname || '.' || relname) as s, pg_total_relation_size(nspname || '.' || relname) as st
FROM pg_class JOIN pg_namespace ON (relnamespace = pg_namespace.oid)) AS p) AS pp;
Les 50 plus grosses tables :
select schema,name, pg_size_pretty(CASE WHEN is_index THEN 0 ELSE s END) AS size,
pg_size_pretty(CASE WHEN is_index THEN s ELSE st - s END) AS index, CASE WHEN st = 0 THEN 0
WHEN is_index THEN 100 ELSE 100 - ((s*100) / st) END || '%' as ratio, pg_size_pretty(st) as total
FROM (SELECT *,st = s AS is_index FROM (SELECT nspname as schema, relname as name,
pg_relation_size(nspname || '.' || relname) as s, pg_total_relation_size(nspname || '.' || relname) as st
FROM pg_class JOIN pg_namespace ON (relnamespace = pg_namespace.oid)) AS p) AS pp LIMIT 50;
Les 50 plus grosses tables triée de la plus grosse à la moins grosse :
select schema,name, pg_size_pretty(CASE WHEN is_index THEN 0 ELSE s END) AS size,
pg_size_pretty(CASE WHEN is_index THEN s ELSE st - s END) AS index, CASE WHEN st = 0 THEN 0
WHEN is_index THEN 100 ELSE 100 - ((s*100) / st) END || '%' as ratio, pg_size_pretty(st) as total FROM
(SELECT *,st = s AS is_index FROM (SELECT nspname as schema, relname as name,
pg_relation_size(nspname || '.' || relname) as s, pg_total_relation_size(nspname || '.' || relname) as st
FROM pg_class JOIN pg_namespace ON (relnamespace = pg_namespace.oid)) AS p) AS pp ORDER
BY st DESC LIMIT 50;
Posté par pra dans DB, PostgreSQL Ã
20:41
47/96
Samedi, 14 septembre 2013
Création base de données sur postgres 9.3 par l'example en utilisant de tablespace, encodage,
template collation
Créer une base toto ayant comme propriétaire titi avec un encodage SQL ASCII et une collation C dans l'espace de
fichier nommé database (tablespace)
CREATE DATABASE toto ENCODING 'SQL_ASCII' TEMPLATE TEMPLATE0 lc_COLLATE 'C' LC_TYPE
'C' OWNER titi TABLESPACE database;
Posté par pra dans DB, Newbie, PostgreSQL Ã
21:08
48/96
Lundi,
9 avril 2012
les couleurs sous bash (scripts)
Définition des couleurs
!/bin/sh
VERT="\033[1;32m"
NORMAL="\033[0;39m"
ROUGE="\033[1;31m"
ROSE="\033[1;35m"
BLEU="\033[1;34m"
BLANC="\033[0;02m"
BLANCLAIR="\033[1;08m"
JAUNE="\033[1;33m"
CYAN="\033[1;36m"
Posté par pra dans bash, Newbie, scripts Ã
05:46
49/96
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
50/96
• 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>
51/96
• Procéder de cette façon pour vos autres sites
Posté par pra dans Sécurité, Server, Système, web Ã
52/96
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.
53/96
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)
54/96
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Aliases';
55/96
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 :
56/96
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 :
57/96
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
58/96
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
59/96
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.
60/96
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 :
61/96
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..)
62/96
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
63/96
/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
64/96
65/96
• 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.
66/96
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 :
67/96
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.
68/96
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 :
69/96
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 :
70/96
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
71/96
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.
72/96
• 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 :
73/96
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 :
•
74/96
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 :
75/96
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
76/96
º 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
77/96
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 :
78/96
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
79/96
• 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 :
80/96
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 :
•
81/96
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
82/96
#!/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 :
83/96
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
84/96
fi
85/96
• 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;
86/96
• On rend le fichier executable :
87/96
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 :
88/96
#!/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
89/96
rm /home/spamtrap/ > /dev/null 2>&1
rm /home/hamtrap/ > /dev/null 2>&1
90/96
• 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
91/96
92/96
• 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 :
93/96
º 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 :
94/96
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 :
95/96
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
96/96

Documents pareils