DomU en mode Nated et Domu en mode routed Xen 4 sur OpenSuse 11.3

info16natroute

Depuis pas mal de temps j'héberge mes différents serveur sur une plateforme de virtualisation Xen ( Gnu/Linux OpenSuse 11.3 )

Plateforme matérielle:


Dedibox QC
  • Serveur Dell® PowerEdge R210
  • CPU: 1x Intel® Xeon® X3450 4x 2.66GH
  • RAM: 8 Go DDR3 ECC
  • HDD: 2 x 1 To SATA2 Raid 0 / Raid 1 HARD
  • LAN: 1 Gbit/sec
Juqu'a maintenant j'utilisait la fonction NAT de Xen pour tout mes domU
Plateforme logicielle:
  • Dom0 Opensuse 11.3 X86_64 Xen 4
  • DomU(s) Ubuntu 10.04 X86_64 Paravirtualisé


Jusqu'a maintenant j'utilisait le nat/pat via des règles iptables pour faire communiquer mes DomU à l'extérieur: 

Ce schéma résume assez bien l'infra que j'ai mise en place:


En effet n'ayant qu'une adresse IP publique , je dois configurer mes domU avec des ip locale et faire du nat pour qu'elles accèdent à l'exterieur. Pour commencer, paramétrons Xen pour faire du Nat.
Tout se passe dans le fichier /etc/xen/xend-config.sxp

Je ne vais pas refaire l'arcticle que j'ai déjà fait mais en gros de base on modifie

(network-script network-nat)

(vif-script 'vif-bridge bridge=br0')

Cela va permettre au lancement de Xen de mettre en place les règle nat à savoir le masquerading .
Le script vif-script quant à lui va permettre de rattacher l'interface de chaque DomU au bridge br0 à chaque lancement d'un DomU

Il faut bien sur aussi activer le routage sur le Dom0 afin qu'il puisse faire le routage entre les réseau 192.168.1.0 et l'extérieur.


Un exemple d'un fichier de DomU Linux:

name="wwwinfo16"

ostype="linux"

memory=512

vcpus=2

cpu_weight=256

cpu_cap=0

hap=1

apic=1

acpi=1

pae=1

stdvga=0

usb=1

usbdevice="tablet"

serial="pty"

timer_mode=1

localtime=1

extid=0

on_crash="restart"

on_reboot="restart"

on_poweroff="destroy"

######HVM#########

#builder="hvm"

#device_model="/usr/lib64/xen/bin/qemu-dm"

#kernel="/usr/lib/xen/boot/hvmloader"

######PVM#########

builder="linux"

bootloader = '/usr/lib/xen/boot/domUloader.py'

bootargs = '--entry=xvda1:/vmlinuz-xen,/initrd-xen'

extra="root=/dev/xvda2 vga=0x31a console=tty0"

######DEV#########

vfb=[ 'type=vnc,vncunused=1', ]

disk=[ 'phy:/dev/vg0/lv2,xvda,w', 'phy:/dev/vg0/lv3,xvdb,w', ]

vif=[ 'type=netfront,mac=00:16:3a:11:11:00', ]

boot="c"

Tout ceci fonctionne en sortie sans problème, par contre il faut bien sur gérer les entrée avec iptables, en fonction des ports en écoute sur les différents DomU
Par exemple rediriger tous les flux à destination du port 25 vers l'ip locale 192.168.1.2/24

Voiçi un exemple des règles iptables que j'utilise:

$iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 25 -j DNAT --to 192.168.1.2:25
$iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 2222 -j DNAT --to 192.168.1.2:22
$iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 443 -j DNAT --to 192.168.1.2:443
$iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 7071 -j DNAT --to 192.168.1.2:7071
$iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 993 -j DNAT --to 192.168.1.2:993
$iptables -A PREROUTING -t nat -p udp -i eth0 --dport 993 -j DNAT --to 192.168.1.2:993
$iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 7025 -j DNAT --to 192.168.1.2:7025
$iptables -A PREROUTING -t nat -p udp -i eth0 --dport 7025 -j DNAT --to 192.168.1.2:7025

Cela fonctionne fort bien, si on cherche à joindre mon serveur de mail de l'extérieur, les paquets sont redirigés vers l'ip 192.168.1.2
Si mon serveur de mail veut causer à l'exterieur, il envoit à sa passerelle par défaut qui n'est autre que br0, le tout est routé et masqueradé pour aller à l'extérieur.



Tout cela fonctionnait à merveille, mais un amis m'a demandé, si je pouvais lui héberger son site Web/photo a grande audience sur ma plateforme.
Ce dernier en avait franchement marre du support et des performances de son hebergement mutualisé.

Certes je n'ai pas dit non puisque j'aime les défis.

Comme tout site Web, son site doit écouter sur le port 80, manque de pot j'ai déjà un site Web sur mon DomU wwwinfo16 qui écoute sur ce même port....

Plusieurs alternatives s'offre à moi:

  1. héberger son site sur mon serveur wwwinfo16 , avec la magie des vhosts, cela n'est pas compliqué
  2. Monter un serveur de reverse proxy type nginx et diriger soit tu mon serveur soit sur l'autre en fonction de la demande
  3. Activer une ip failover sur le serveur dedibox et l'attribuer à un DomU particulier qui sera en mode routed avec sa probre adresse IP publique
Comme j'aime les nouvelles expériences j'ai tenté l'option 3...

J'ai décidé de monter un nouveau serveur virtuel dédié au site de mon ami que nous appelerons siteclient qui aura sa propre adresse ip publique et qui utilisera le mode routed de Xen...
Ainsi de l'extérieur ce serveur sera totalement disponible sur cette ip publique ( tous les ports qu'on aura décider d'ouvrir)

On veut en fait faire cela:

routed


Tout cela est bien joli mais par quoi commencer ?

J'ai commencé par louer une adresse ip supplémentaire sur la dédibox afin d'avoir une autre ip publique.
Chez dédibox les routeur cisco sont configurés de telle sorte que chaque IP correspond à une adresse Mac bien particulière.

Autrement dit il faut absolument que mon ip publique failover  soit relié à une adresse mac Virtuelle Xen qui sera l'adresse mac du domU siteclient

La console dedibox est bien faite sur ce point, on choisi son ip publiqe failover et il nous fournisse une adresse mac virtuelle en fonction de notre plateforme de virtualisation.

dedi

On se retrouve avec notre ip et notre mac...

Le problème est que toute ma config est basée sur le nat et vif-bridge...

Il faut donc commencer par modfier le fichier /etc/xen/xend-config.sxp
On commente le network-script car on ne veut plus que les règles nat s'applique au lancement de xen

#(network-script network-nat)

(vif-script 'vif-bridge bridge=br0')

Par contre je laise le vif-script en bridge car je veux tout de même que par défaut mes vm soit attaché au bridge ( en effet la plupart des vm que je crées son en nat)

Dans ce cas comment xen va savoir si il faut faire du nat ou du routed pour les domU ??
Et bien c'est dans le fichier de conf de la vm qu'on va lui indiquer pour le mode routed.

Voici le fichier de conf  de siteclient:

######VM PARAM####

name="siteclient"

ostype="linux"

memory=512

vcpus=2

cpu_weight=256

cpu_cap=0

hap=1

apic=1

acpi=1

pae=1

stdvga=0

usb=1

usbdevice="tablet"

serial="pty"

timer_mode=1

localtime=1

extid=0

on_crash="restart"

on_reboot="restart"

on_poweroff="destroy"

######HVM#########

#builder="hvm"

#device_model="/usr/lib64/xen/bin/qemu-dm"

#kernel="/usr/lib/xen/boot/hvmloader"

######PVM#########

builder="linux"

bootloader = '/usr/lib/xen/boot/domUloader.py'

bootargs = '--entry=xvda1:/vmlinuz-xen,/initrd-xen'

extra="root=/dev/xvda2 vga=0x31a console=tty0"

#####PVM-SUSE#####

#builder="linux"

#bootloader = '/usr/lib/xen/boot/domUloader.py'

#bootargs = '--entry=hda1:vmlinuz-xen,initrd-xen'

#root="/dev/hda3"

######DEV#########

vfb=[ 'type=vnc,vncunused=1', ]

vif = ['type=netfront,mac=00:16:3e:00:00:28,script=vif-route,ip=88.190.x.x/32']

disk=[ 'phy:/dev/vg0/lv11,xvda,w','phy:/dev/vg0/lv12,xvdb,w', ]

boot="c"

Grace à cela xen va savoir précisément que la mac de la vm sera 00:16:3e:00:00:28 et qu'il devra router l'ip 88.190.x.x/32

Après avoir préparé votre DomU comme d'habitude avec un template de Ubuntu 10.04, il reste une derniere chose importante à faire, configurer la conf réseau au sein même du domU
Notemment l'ip et la passerelle...

Voici un extrait du fichier /etc/network/interfaces de la vm site client.

auto eth0

iface eth0 inet static

    address 88.190.x.x # votre ip failover

    netmask 255.255.255.0

    network 88.190.224.0

    broadcast 88.190.224.255


    post-up route add -host 88.190.14.1/32 dev eth0

    post-up route add default gw 88.190.14.1



Attention c'est la que ca se complique, la passerelle de votre domU est en fait la même que votre Dom0 d'ou les post-up pour créer des routes statiques.

Pour finir, il ne faut pas oublier que l'on à commenté le network-nat de Xen par conséquent il va falloir creer des règles iptables afin que nos domU nats fonctionnent toujours:

notemment:

echo 1 > /proc/sys/net/ipv4/ip_forward

$iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j  MASQUERADE

Oui en effet on ne veut plus tout masqueradé.. seulement les paquet en provenance de 192.168.1.0


De même si vous vous souvenez les paquets qui arrivent de l'extérieur à destination de votre ip publique vers le port 80 (failover ou pas d'ailleurs) sont redirigés vers 192.168.1.1

Mais cela n'est plus souhaitable, puisque des paquets à destination de siteclient vont aussi arriver sur le port 80

Iptables doit dont distinguer les 2, c'est pour cela qu'il faut etre plus préçis dans nos règles nat et distinguer a qui sont destiner les paquets, l'ip publique ou l'ip failover:

$iptables -t nat -A PREROUTING -i eth0 -p tcp -d 88.190.14.x --dport 80 -j DNAT --to-destination 192.168.1.1:80 #ip publique

ainsi seul les paquets à destination de mon ip publique de base seront natés vers mon domU web :)



 


Script Fréquence CPU

Je met en ligne un petit script que je viens de faire qui me permet de voir en temps réèl la fréquence de mon CPU, et ce quelque soit le nombre de core...

rafraichi toutes les secondes, il est basé sur /proc/cpuinfo


#!/bin/bash # #Antony MARTINEAU 2007 # while [ 1 ] do clear lines=$(cat /proc/cpuinfo | grep processor | wc -l) procname=$(cat /proc/cpuinfo | grep "model name" | awk 'NR == '1' {print;}' | cut -d":" -f2) echo "============$procname=============" for i in `seq 1 $lines` do procnumb=$(cat /proc/cpuinfo | grep processor | awk 'NR == '$i' {print;}' | sed 's/://' |sed 's/ //') frequency=$( cat /proc/cpuinfo | grep "cpu MHz" | awk 'NR == '$i' {print;}' | sed 's/://' |sed 's/ //' | cut -d" " -f3) tableau="$procnumb"" =" tableau[1]="$frequency"" MHz" echo ${tableau[*]} done echo "==========================================================================" sleep 1 done

Mise en place d'un script de surveillance d'un noeud

J'ai eut besoin il y a quelque temps de pouvoir surveiller la connectivité d'un poste distant, et d'être prévenu si ce dernier n'etait plus joignable... Je débute dans l'élaboration des scripts, mais j'ai tout de même réussi à avoir les fonctionnalité que je voulais... A savoir un script qui se lance en tant que daemon et qui peut etre demarrer ou arreter avec les commandes basique start stop...

Pour ne pas perdre ce petit script je préfère le mettre ici...

Le script se divise en deux fichiers... 1- Le script en lui même (/sbin/watchnode.sh) 2- Lz script qui ve permettre son lancement et son arret propre.. (/etc/init.d/watchnode)

Le watchnode.sh (à placer dans /sbin)

#!/bin/bash #Antony MARTINEAU 2007 #Connectivity test whith a node node=192.168.1.115 numofping=2 mail=root@appart.lan while  1          do                 for i in `seq 1 $numofping`                 do                 ping=$(ping -c1 -s16 $node |grep "24 bytes from"|cut -d"=" -f4|cut -d" " -f1)                         if  -z $ping ; then                         date=$(date)                         echo $date Warning: Peer node unreacheable. >> /var/log/watchnode                                 if  "$i" = "$numofping" ; then                                 date=$(date)                                 echo $date Failed: Consider peer node to be dead. >> /var/log/watchnode                                 echo "$node semble etre injoignable" | mail -s "Warning sur $node" $mail                                 fi                         fi                 done         sleep 30         done

Et le watchnode à placer dans /etc/init.d

 #!/bin/bash # #MARTINEAU Antony 2007 # /etc/init.d/watchnode # ### BEGIN INIT INFO # Provides:                     Watchnode plugin # Required-Start:       $network # Required-Stop:        $network # Default-Start:        3 5 # Default-Stop:         0 1 2 4 6 # Description:  Verify conectivity about a node and advise Administrator about node unreachable ### END INIT INFO watchnode_daemon="/sbin/watchnode.sh" watchnodelogpath="/var/log/watchnode" date=$(date) case "$1" in         start)                                 id=$(pgrep -x watchnode.sh)                                 if  ! -z $id ; then                                         echo "Watchnode plugin is already running."                                         exit 0                                 else                                         /sbin/start-stop-daemon start exec $watchnode_daemon &                                         date=$(date)                                         echo $date Watchnode plugin started >> $watchnodelogpath                                         echo "Watchnode plugin started."                                         exit                                 fi                 ;;                 stop)                                 id=$(pgrep -x watchnode.sh)                                 if  ! -z $id ; then                                         kill -9 $id                                 echo $date Watchnode plugin stopped >> $watchnodelogpath                                         while  1 ; do                                                 id=$(pgrep -x xenha.sh)                                                 if  -z $id ; then                                                         echo "Watchnode plugin stopped."                                                         exit 0 else                                                         kill -9 $id                                                 fi                                         done                                 else                                         echo "Watchnode plugin is already stopped."                                         exit 1                                 fi                                 echo $date Watchnode plugin stopped >> $watchnodelogpath                                 ;;                 restart)                                         while  1 ; do                                                 id=$(pgrep -x watchnode.sh)                                                 if  -z $id ; then                                                         $watchnode_daemon                                                         echo "Watchnode plugin restarted."                                                         exit 0                                                 else                                                         kill -9 $id                                                 fi                                         done                 ;;                 status)                                 id=$(pgrep -x watchnode.sh)                                 if  ! -z $id ; then                                         echo "Watchnode plugin is running."                                         exit 0                                 else                                         echo "Watchnode plugin is not running."                                         exit 0                                 fi                                 ;;         *)                 echo "Usage: $0 start"                 exit 1 esac

Comme on peut le constater le script de lancement est plus compliqué que le programme en lui même...

Ce script va faire 2 ping toutes les 30 secondes sur le noeud distant... au bout de deux timeout, il enverra un mail à l'administrateur... de plus il envoie tout ce qu'il fait dans les logs (/var/log/watchnode)

Installer un Webmail pour votre messagerie locale...

Un Webmail est un client de messagerie accessible directement par votre navigateur internet... L'interêt est évident, on peut acceder à ses emails de n'importe ou sans installer un logiciel de méssagerie sur le poste..

Si vous avez suivi les différents tuto pour installer votre serveur de messagerie Postfix, Imap, etc, vos avez un serveur de messagerie qui fonctionne, ce tuto va vous expliquer coment installer un Webmail pour y accéder.

Pour Webmail, j'ai choisi d'utilise squirrelmail, je le trouve convivial, rapide et facile à installer...

Afin d'installer squirrelmail, votre linux doit disposer d'un serveur web, ainsi que le module PHP. Si ce n'est pas le cas, reportez-vous au tutoriel d'installation d'apache.

Allons y, comme d'habitute sur ma distribution préférée Ubuntu on tappe :

sudo apt-get update

sudo apt-get install squirrelmail

Copiez le fichier /usr/share/squirrelmail/config/apache.conf dans le repertoire /etc/apache/conf.d/

sudo cp /usr/share/squirrelmail/config/apache.conf /etc/apache/conf.d/

Renommez le fichier /etc/apache/conf.d/apache.conf en squirrelmail.conf

mv /etc/apache/conf.d/apache.conf /etc/apache/conf.d/squirrelmail.conf

Squirrelmail est très bien fait, car il dispose d'un script de configuration.

/usr/share/squirrelmail/config/conf.pl

à partir de cette interface vous pouvez tout configurer...

Déjà par défaut cela fonctionne, mais vous pouvez tout de même faire des petits ajustement dans Server setting, notemment le nom de votre serveur de messagerie

Serveur de messagerie IMAP (Fetchmail, postfix, procmail, spamassasin)

Ce billet décrit comment installer un Serveur de Messagerie IMAP C'est à dire un serveur autonome en interne dans un réseau local. un serveur permettant de récuperer tous les mails de tous vos comptes (yahoo, free, wanadoo ...) Suppressions des spams...

Il est possible d'installer un serveur de messagerie, au sein même de son réseau local, et par conséquent s'envoyer des mails en interne.

Pour Commencer nous allons aborder Postfix. C'est un serveur de messagerie très puissant et très utilisé...

commençons par installer postfix sur notre distribution préférée.

sudo apt-get install postfix

Une fois installé interessons nous au fichier principal de config de postfix

sudo vi /etc/postfix/main.cf

# See /usr/share/postfix/main.cf.dist for a commented, more complete version # Debian specific:  Specifying a file name will cause the first # line of that file to be used as the name.  The Debian default # is /etc/mailname. #myorigin = /etc/mailname smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) biff = no # appending .domain is the MUA's job. append_dot_mydomain = no # Uncomment the next line to generate "delayed mail" warnings #delay_warning_time = 4h # TLS parameters smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key smtpd_use_tls=yes smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for # information on enabling SSL in the smtp client. myhostname = mail.appart.lan alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = pctest.appart.lan, appart.lan, localhost.appart.lan, localhost relayhost = mynetworks = 127.0.0.0/8 192.168.1.0/24 mailbox_command = /usr/bin/procmail -Y -a $DOMAIN mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all home_mailbox = Maildir/ ##Integration de amavisNew ##content_filter = smtp-amavis:127.0.0.1:10024

Quelques explications:

myhostname = vous l'avez devinez c'est le nom de votre serveur mail... correspondant à l'entrée MX que vous avez configuré dans votre DNS perso ou autre... mydestination : ceci est la concordance des domaines mynetworks = Permet de donner accès aux différents réseaux à votre serveur, ajoutez votre IP extérieure si votre serveur n'est pas sur le même réseau que votre PC home_mailbox = Maildir/ : Ceci est important ! Nous choisissons le format Maildir en accord avec le serveur IMAP ! Vous ne pourrez pas recevoir vos mails par IMAP si cette ligne n'est pas ajoutée au fichier de configuration de Postfix.

Nous verrons le reste plus tartd.

Laissons pour l'instant postfix et interessons nous au protocole IMAP: selons notre brave Wikipedia : Internet Message Access Protocol (IMAP) est un protocole utilisé par les serveurs de messagerie électronique, fonctionnant pour la réception.

Ce protocole permet de laisser les e-mails sur le serveur dans le but de pouvoir les consulter de différents clients e-mails ou webmail. Il comporte des fonctionnalités avancées, comme les boîtes aux lettres multiples, la possibilité de créer des dossiers pour trier ses e-mails… Le fait que les messages soient archivés sur le serveur fait que l'utilisateur peut accéder à tous ses messages depuis n'importe où sur le réseau et que l'administrateur peut facilement faire des copies de sauvegarde.

c'est un protocole beaucoup plus élaboré que pop.. C'est pourquoi il est interessant de l'utiliser...

Et pourquoi pas essayé plus tart de creer un webmail, permettant d'acceder de n'importe ou à son propre serveur de méssagerie ... Ouaaah la classe !!!

Bref on verra ca plus tard, commencons par installer les outils IMAP.

sudo apt-get install courier-imap

Le fichier de configuration de courier-imap se situe dans /etc/courier et se nomme imapd :

Seulement un point nous intéresse dans cette configuration : le MAILPATH (ou MAILDIRPATH), configurez-le comme suit : MAILPATH = Maildir

Retournez dans le dossier de votre utilsateur et tapper :

maildirmake Maildir

Ceci a pour but de creer une boite au lettre complet chez un utilisateur avec la simple commande maildirmake.

Il faut savoir que quand on crée un serveur de messagerie, il faut creer un utilisateur par boite mail...

par exemple j'ai creer un utilisateur pctest, son addresse email sera donc pctest@appart.lan

redemmarer les differents services...

A partir de là votre serveur est deja operationnel... Vous n'avez qu'a le tester en configurant votre logiciel de messagerie préferée. n'oublier pas qu'il s'agit d'un serveur imap, et renseignez l'ip de votre serveur quand on vous demande le serveur smtp

Procmail

Procmail est un outil permettant principalement de filtrer des messages électroniques . Il est très puissant et ses capacités de filtrage lui permettent de délivrer des courriers dans différentes boîtes aux lettres, de les renvoyer, voire d'effectuer n'importe quelle action en fonction du filtre désigné.

Procmail fonctionne grâce à un système de règles, qu'il parcourt les unes après les autres, afin de déterminer si le message qu'il traite satisfait à une règle en particulier, et exécute l'action associée à la règle trouvée, le cas échéant. sudo apt-get install procmail

Pour chaque utilisateur on va donc creer un fichier .procmailrc qui va définir les filtres à appliquer. je rajoute donc le fichier .procmailrc dans le dossier de mon utilisateur pctest.

touch .procmailrc

voici un de mes .procmail

# Prelimiaries SHELL=/bin/bash MAILDIR=$HOME/Maildir/ DEFAULT=$MAILDIR ORGMAIL=$MAILDIR LOGFILE=/var/log/procmailrc.log VERBOSE=yes LOGABSTRACT=all ANOMY=/usr/anomy         :0fw         | /usr/anomy/bin/sanitizer.pl /usr/anomy/anomy.conf         :0fw         * < 256000         | spamassassin         :0:         * ^X-Spam-Status: Yes         $MAILDIR/pourriels/         # Accept all the rest to default mailbox         :0

Installation de spam assassin.

SpamAssassin est un logiciel merveilleux disponible sur de nombreuses stations. C'est un tueur de Spam comme il se définit lui-même.

sudo apt-get install spamassassin

Rendez vous alors dans le fichier /etc/spamassassin/local.cf

# Combien de fois le message devra-t'il être marqué pour être reconnu comme du spam required_hits 4.0 # Doit-on changer le sujet du message considéré comme spam (0=non / 1=oui) rewrite_subject 1 # Texte à rajouter devant l'intitulé du message si le «rewrite_subjet» est activé subject_tag *****SPAM***** # Encapsuler le spam dans le message comme une pièce attachée (0=non / 1=oui) report_safe 1 # Use terse version of the spam report use_terse_report 0 # Utilisation du protocole de Bayes use_bayes 1 # Activation de l'auto-apprentissage Bayesien auto_learn 1 # Autoriser les préférences des utilisateurs (0=non / 1=oui) : peut être considéré comme un # trou de sécurité par certains administrateurs... allow_user_rules 0 # Activer ou pas les agents de contrôles extérieurs (0=non / 1=oui) skip_rbl_checks 0 use_razor2 1 use_dcc 0 use_pyzor 0 # Les mails dont le code pays se termine par le suffixe suivant ne sont pas considérés par défaut comme du spam ok_languages fr # Chaque système d'exploitation utilise un type de «locales» (encodage de caractères qui lui est propre) # selon la région dans laquelle il se situe (c'est en fait l'utilisateur qui définit ses locales lors de l'installation) ok_locales fr en es it be blacklist_from *.lifescript.com

Vous pouvez ainsi définir notamment le score minimal à atteindre pour que le mail soit considéré comme spam. Les whites lists et blacklist Ce fichier défini les préférences pour tous les utilisateurs, si vous voulez affiner en fonction de chaque utilisateurs, il faudra modifier le fichier ~/.spamassassin/user_prefs

FETCHMAIL

C'est bien joli tout ca, mais vous ce que vous souhaiter c'est aussi récuperer vos mails de l'exterieurs, qui sont dejà stockés sur les différents serveurs smtp de vos fournisseur de messagerie... car le vrai spam il vient surtout de là Il faut donc un outil qui permette de se connecter sur vos différentes boites, rappatrie les mails. Pour cela fetchmail est là :

sudo apt-get install fetchmail

il suffit ensuite de creer pour chaque utilisateur un fichier .fetchmailrc dans son repertoire de connexion.

sudo touch ~.fetchmailrc

Voici un exemple de .fetchmailrc

## fai : Yahoo poll pop.mail.yahoo.fr protocol pop3 user bart is pctest password pass ##fai : Free poll pop.free.fr protocol pop3 user bart is pctest password pass

voila à présent vous devriez avoir un serveur de messagerie qui reçoit les courriers de vos différents fournisseurs, les tries, les note et les distribue.

Par contre pour l'instant il faut executer fetchmail pour chaque utilisateur afin qu'il rapatrie les courriers de vos différents fournisseurs, c'est pourquoi je suis passé par une programmation CRON très facilement programmable par l'interface de Webmin.

Je ne me suis contenté pour l'instant que de traiter la reception de vos messages et non leur envoie sur des domaines hors locaux.

Je me sert de postfix comme ca, en utilisant les serveur smtp de mes différents FAI pour l'envoi de messages et de mon serveurs IMAP pour leur receptions.

Mais il est bien sur possible d'envoyer des messages directement par postfix, mais il faut entrer dans les detais de la création de domaines...

On verra ca plus tard ;-)

Il reste une grosse partie à faire sur ce tuto, mais qie je n'ai pas encore totalement maitrisé, c'est le passage des mails à l'antivirus avant leur trie par procmail.

Ainsi on aura des mail scanné trié et distribué, et tout ca gratuit .... :-)

précédente page 2 sur 9 suivante »