Ce billet décrit comment installer un Serveur de Messagerie IMAP, c'est à dire un serveur autonome en interne dans un réseau local, permettant de récupérer les mails de tous vos comptes (yahoo, free, wanadoo ...) et de supprimer les spams...
Il est possible d'installer un serveur de messagerie, au sein même de son réseau local, et par conséquent de 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é...
Postfix : rapatriement des mails
Commençons par installer postfix sur notre distribution préférée (Ubuntu server) :
sudo apt-get install postfix
Une fois installé intéressons-nous au fichier principal de configuration de Postfix avec la commande 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 vous.
- 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 tard.
Laissons pour l'instant postfix et intéressons nous au protocole IMAP. Selon 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 webmails. 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 intéressant de l'utiliser. Commençons 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 utilisateur et tapez :
maildirmake Maildir
Ceci a pour but de créer une boite au lettre complète chez un utilisateur avec la simple commande maildirmake. Il faut savoir que quand on crée un serveur de messagerie, il faut créer un utilisateur par boite mail... Par exemple j'ai créé un utilisateur pctest, son adresse email sera donc pctest@appart.lan
Redémarrez les différents services...
A partir de là votre serveur est opérationnel. Vous n'avez qu'a le tester en configurant votre logiciel de messagerie préféré. N'oubliez pas qu'il s'agit d'un serveur IMAP, et renseignez l'IP de votre serveur quand on vous demande le serveur SMTP.
Procmail : filtrage des mails
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 créer 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
SpamAssassin : protection contre le spam
SpamAssassin est un logiciel merveilleux disponible sur de nombreuses stations. C'est un tueur de Spam comme il se définit lui-même. Installation de spam assassin :
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. Ce fichier défini les préférences pour tous les utilisateurs, si vous voulez affiner en fonction de chaque utilisateur, il faudra modifier le fichier ~/.spamassassin/user_prefs
Fetchmail : rapatriement des mails tiers
C'est bien joli tout ça, mais vous, ce que vous souhaitez c'est récupérer vos mails extérieurs, qui sont déjà stockés sur les différents serveurs SMTP de vos fournisseurs 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, rapatrie les mails. Pour cela fetchmail est là :
sudo apt-get install fetchmail
Il suffit ensuite de créer pour chaque utilisateur un fichier .fetchmailrc dans son répertoire 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 exécuter 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 réception des messages et non leur envoi sur des domaines hors locaux. Je me sert de postfix comme ça, en utilisant les serveur SMTP de mes différents FAI pour l'envoi de messages et de mon serveur IMAP pour leur réception.
Mais il est bien sur possible d'envoyer des messages directement par postfix, mais il faut entrer dans les détails de la création de domaines...
Cet article a été publié par bartounet sur le blog info16. Si vous désirez comme bartounet publier en guest-blogging sur Geek de France, vous pouvez me contacter.