Simple install postfix + courier-imap courier-pop + roundcube

Le but de cet article est de montrer comment déployer rapidement un serveur mail de A à Z sans la complexité de configuration d’une usine à gaz anti-spam et authentification ssl.

Vous aurez à la fin de cet article un serveur de mail fonctionnel, simple à administrer avec le webmail roundcube que vous pourrez personaliser à souhait avec ses nombreux skins.

Configuration du nom de domaine

La première étape avant d’entreprendre l’installation de l’artillerie du serveur mail c’est la configuration de votre nom de domaine.

Les éléments indispensables :

  • Un champs de type A faisant la relation entre un nom canonique (mail.mondomaine.fr) et l’ip de votre serveur.
  • Un champs de type MX (mail eXchange)
  • Des champs cname (ex: smtp.yourdomain.fr, imap.yourdomain.fr,webmail.yourdomain.fr etc…)

Dans une zone DNS il peut y avoir plusieurs champs A identifiant des serveurs physiques différent.

Quand un courrier est envoyé (user@mondomain.fr), le serveur de courrier sortant interroge le serveur DNS afin d’obtenir l’enregistrement MX et connaitre le chemin à emprunter pour acheminer le mail. Il peut y en avoir plusieurs par domaine. La configuration DNS du/des champs MX sert à indiquer le chemin à suivre pour le courrier.

Pour avoir un redondance des services, on définit des priorités sur les enregistrements MX afin qu’un serveur secondaire puisse prendre le relais en cas de besoin.

Une priorité avec une valeur pouvant aller de 0 à 65 535.

@ 10800 IN MX 30 mailrescue.mondomaine.fr.

La priorité décroit à mesure que le chiffre de la priorité augmente.

Exemple de configuration de domaine (chez gandi.net) :

mail 10800 IN A x.x.x.x
@ 10800 IN MX 10 mail.mondomaine.fr.
smtp 10800 IN CNAME mail.mondomaine.fr.
imap 10800 IN CNAME mail.mondomaine.fr.
pop 10800 IN CNAME mail.mondomaine.fr.
webmail 10800 IN CNAME mail.mondomaine.fr.

Il faut un petit moment pour que la propagation DNS se fasse.

Plus tard, on vérifiera que le DNS est bien configuré :

host -t MX mmondomain.fr

ex: openwebtech.fr mail is handled by 10 mail.openwebtech.fr.

Pour information voici une petite illustration du fonctionnement des noms de domaine (commentcamarche.net) :

Pensez également à forwarder les ports suivants vers votre serveur :

  • 25 smtp
  • 110 pop3
  • 143 imap

Nous allons maintenant nous assurer que notre /etc/hosts est bien configuré pour le domaine.

Exemple:


127.0.0.1 localhost.yourdomain.fr localhost

127.0.1.1 mail.yourdomain.fr mail

192.168.1.18 mail.yourdomaine.fr

Vérification:

hostname -d
hostname -f

Installation et configuration de postfix/courier-imap/courier-pop

Installation des paquets

apt-get install postfix courier-pop courier-imap

L’installation de courier-pop n’est pas forcément nécéssaire mais dans la mesure où vous voudriez récupérer vos mails avec un téléphone mobile, l’imap n’est pas toujours supporté!

Lors de l’installation de postfix vous devez configurer quelques options de la manière suivante :

  • Configuration type du serveur de messagerie : Site Internet
  • Nom de courrier : votre nom de domaine (e.g openwebtech.fr)
  • Create directories for web-based administration: no

Toutes les éléments n’ont pas été renseignés. Un petit coup de configuration :

dpkg-reconfigure postfix
  • Destinataire des courriels de « root » et de « postmaster » : votre login sur le serveur
  • Autres destinations pour lesquelles le courrier sera accepté : rajoutez votre nom de domaine dans la liste (e.g openwebtech.fr, mail.openwebtech.fr)
  • Forcer des mises à jour synchronisées de la file d’attente des courriels : non (laisser par défaut)
  • Réseaux internes : 127.0.0.0/8, 192.168.1.0/24 (Attention à l’adresse de votre réseau local)
  • Utiliser procmail pour la distribution locale : non
  • Taille maximale des boîtes aux lettres (en octets) : Ici plusieur possibilité soit 0 pour aucune limite ou par exemple la taille exprimée en octet 5Gio (5368709120).
  • Caractère d’extension pour les adresse locales : + (laisser par défaut)
  • Protocoles internet à utiliser : all

Configuration minimale de postfix

Les paramètres de configuration que nous avons définis via l’assistant sont dans /etc/postfix/main.cf il en reste beaucoup d’autres à configurer.

vi /etc/postfix/main.cf

Voici un exemple de configuration minimale que j’ai essayé de commenter au maximum (en anglais) :


# See /usr/share/postfix/main.cf.dist for a commented, more complete version

# domain.tld

mydomain= yourdomain.fr

myorigin= /etc/mailname

#By default this is the fqdn e.g mail.domain.tld

myhostname = mail.yourdomain.fr

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)

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

readme_directory = no

alias_maps = hash:/etc/aliases

alias_database = hash:/etc/aliases

#List of delivered domains by the MTA

#By default Postfix local MDA looks up recipients in /etc/passwd and /etc/aliases

mydestination = yourdomain.fr, mail.yourdomain.fr, localhost.yourdomain.fr, localhost

relayhost =

# trusted networks from where it is accepted to send e-mails

mynetworks = 127.0.0.0/8, 192.168.1.0/24

mailbox_command =

# Maximum size for user's maildir, 0 for unlimited

mailbox_size_limit = 0

recipient_delimiter = +

inet_interfaces = all

inet_protocols = all

#refers to the mail dir format in user's home directory

home_mailbox = Maildir/

Anti-Spam, ajout des directives RBL à Postfix

Description de certaines directives :

Afin d’éviter le spam, les RBL (Realtime Blackhole List) sont des listes noires tenues par des sites spécialisés et qui permettre l’exclusion des destinations, ou origines douteuses. L’intérêt de la mise en place de ces règles rbl est limiter considérablement le spam sur le serveur, mais aussi d’optimiser l’utilisation des ressources dues au filtrage. Il vaut mieux filtrer au maximum au niveau de Postfix plûtot que de laisser le travail à spamassasin par exemple qui est gourmand en ressources.

Dans l’exemple ci-dessous, les règles s’effectuent au niveau du format des mails reçus et émis (smtpd_recipient_restrictions / smtpd_sender_restrictions).

L’utilisation de blacklist est restreinte au niveau des mails reçus (smtpd_recipient_restrictions) : reject_rbl_client sbl-xbl.spamhaus.org. Le cheminement d’un message en passant par l’utilisation d’une blacklist est shématisé de la manière suivante :

Voici quelques exemples de listes noires:

  • http://www.spamcop.net/
  •  http://www.njabl.org/
  •  http://www.sorbs.net/
  • http://www.dsbl.org/
  • http://bl.csma.biz/
  •  http://rhs.mailpolice.com/
  • http://www.spamhaus.org/

Le détails de toutes les directives Postfix en français est disponible ici : http://postfix.traduc.org/index.php/postconf.5.html .

Dans /etc/postfix/main.cf, il vous faut ajouter :


# reject any email unformatted

smtpd_helo_required = yes

smtpd_helo_restrictions = permit_mynetworks,

reject_non_fqdn_hostname

#Avoid spam: RBL rules + the sorting out on mail format

smtpd_sender_restrictions =

permit_mynetworks,

reject_invalid_hostname,

reject_non_fqdn_hostname,

reject_non_fqdn_sender,

reject_unauth_pipelining,

reject_unknown_client,

reject_unknown_hostname,

reject_unknown_sender_domain,

reject_unverified_sender,

permit

smtpd_recipient_restrictions =

reject_non_fqdn_sender,

reject_non_fqdn_recipient,

reject_unknown_sender_domain,

reject_unknown_recipient_domain,

permit_mynetworks,
reject_unauth_destination,
reject_unauth_pipelining,

reject_invalid_hostname,

reject_rbl_client sbl-xbl.spamhaus.org,

permit

sendmail_path = /usr/sbin/sendmail

Nous avons fait le choix d’utiliser les listes xbl et spl de spamhaus.org dont le détails ets le suivant :

SBL sbl.spamhaus.org 127.0.0.2-3 Static UBE sources, verified spam services and ROKSO spammers

XBL xbl.spamhaus.org 127.0.0.4-7 Illegal 3rd party exploits, including proxies, worms and trojan exploits

Configuration d’un utilisateur

Création d’un utilisateur mail :

adduser --shell /bin/false user

Aucun shell : /bin/false

Homedir par défaut : /home/user

Création de sa boite :

maildirmake /home/user/Maildir

L’organisation d’une boite au format maildir différent de mailbox (fichier unique) :

-Maildir

—-cur

—-new

—-tmp

–.sub.maildir

——cur

——new

——tmp

La petite blague c’est de tester l’envoie d’un mail à l’utilisateur nouvellement crée avant d’avoir changé les permissions sur son Maildir :

chown -R user:user /home/user/Maildir

On teste l’envoie d’un mail :

mail -s "test" user@yourdomain.fr
ctrl+d

On vérifie si le mail à bien été reçu :

ls /home/user/Maildir/new

Si vous faite un cat pour voir le contenu du mail :

Return-Path: <root@yourdomain.fr>

X-Original-To: user@yourdomain.fr

Delivered-To: you@yourdomain.fr

Received: by mail.yourdomain.fr (Postfix, from userid 0)

id 1A6D31290E0; Sun, 21 Aug 2011 09:59:55 +0200 (CEST)

To: user@yourdomain.fr

Subject: test

Message-Id: <20110821075955.1A6D31290E0@mail.yourdomain.fr>

Date: Sun, 21 Aug 2011 09:59:55 +0200 (CEST)

From: root@yourdomain.fr (root)

test

Installation de roundcube

Téléchargements et installation des paquets

Télécharger roundcube depuis http://roundcube.net/ à la racine de votre serveur web

Décompressez l’archive :

tar -zxvf roundcubemail-0.5.4.tar.gz
rm roundcubemail-0.5.4.tar.gz
mv roundcubemail-0.5.4 webmail.yourdomain.com

On affecte www-data en tant que propriétaire:

chown -R www-data:www-data webmail.yourdomain.fr/

Configuration de la bdd pour roundcube

Dans phpmyadmin créez une bdd: roundcube en utf8_general_ci

Exécutez le code sql suivant :


CREATE USER 'roundcube'@'localhost' IDENTIFIED BY 'mdp';

GRANT USAGE ON * . * TO 'roundcube'@'localhost' IDENTIFIED BY 'mdp' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

GRANT ALL PRIVILEGES ON roundcube.* TO roundcube@localhost IDENTIFIED BY 'mdp';

Configurer votre vhost le sous domaine préalablement configuré pour votre webmail : webmail.yourdomain.com

Installation des paquets manquant (php5-intl):

apt-get install php5-intl

Configurez l’option date.timezone dans php.ini :

date.timezone = 'Europe/Paris'

Edit: Il est également possible que vous obteniez l’erreur suivante :

suhosin.session.encrypt: NOT OK(is ’1′, should be ’0′)

Pour la résoudre il suffit simplement d’ajouter les lignes suivantes à votre php.ini et redémarrer php:


[suhosin]

suhosin.session.encrypt = Off

Lancez l’installation de roundcube: http://webmail.yourdomain.fr/installer

L’installer check tout les points indispensables.  A ce stade tout devrait être à OK!

Installation de roundcube

Lancez l’installation :

  • Général configuration : laissez par défaut
  • Logging and debugging : idem
  • Database setup : complétez avec vos paramètres
  • imap settings : votre imap.yourdomain.com, laissez le reste par défaut
  • smtp settings : votre smtp.yourdomain.com, laissez le reste par défaut

NB: Nul besoin de s’authentifier au niveau du smtp car le serveur n’acceptera des connexions que depuis les réseaux spécifiés dans « my_networks ».

Display setting and user prefs : language fr_FR et c’est fini !

Les fichiers de configuration sont crée (main.inc.php, db.inc.php) et il reste à les copier dans config/.

On oublie pas de changer les permissions :

chown www-data:www-data db.inc.php
chown www-data:www-data main.inc.php
  • Continue puis Initialize (pour la bdd).

Testez vos paramètre et tout devrait être OK!

Sécurisation

Assurez vous que dans main.inc.php l’installer soit à false pour ne plus pouvoir le lancer :

$rcmail_config['enable_installer'] = false;

Supprimez le répertoire installer.

L’installation est enfin terminé! Amusez vous bien :p

Vus : 8405
Publié par Openwebtech : 26