« Catégorie:Serveurs:Configuration dun serveur mail avec postfix » : différence entre les versions

De Le Wiki du Forum-Debian.fr
Aller à la navigation Aller à la recherche
([INIT] Création de la page)
 
(Page blanchie)
 
Ligne 1 : Ligne 1 :
= Configuration d'un serveur mail avec postfix  =


Vous ne voulez plus confier vos mails à Gmail, Yahoo ou Hotmail ?
Vous aimeriez héberger vos mails chez vous mais vous pensez que c'est trop dur, trop compliqué ?
Vous pensez qu'il faut être ingénieur pour monter un serveur mail ?
Que nenni !! Nous allons voir dans ce tuto la mise en place d'un serveur mail avec Postfix dans le cadre d'une utilisation personnelle.
Il ne s'agit pas ici de concurrencer Gmail ou Yahoo mais bien d'avoir notre petite boîte mail bien à nous. Faite avec amour. Et qui marche !!
Ici, pas de gestion par base SQL ou annuaire LDAP, je vais tâcher de faire le plus simple possible.
C'est parti !!
= Une adresse mail, c'est quoi ?  =
== kevin@wanadoo.fr  ==
Une adresse mail, c'est un peu comme une adresse postale. Elle se divise en 2 parties :
*un domaine : '''wanadoo.fr'''
*un utilisateur : '''kevin'''
Dans mon exemple, lorsque l'on écrit à Kevin via l'adresse '''kevin@wanadoo.fr''', cela signifie que l'on écrit à l'utilisateur '''kevin''' du domaine '''wanadoo.fr'''.
Plus précisément, le mail arrive sur la '''machine''' sur laquelle se trouve le '''serveur mail''' de wanadoo.fr, pour être ensuite remis dans la '''boîte mail''' de l'utilisateur kevin.
== Identifier le serveur mail de wanadoo.fr  ==
Wanadoo.fr, c'est le domaine. Le service mail se trouve quant à lui sur une machine bien precise. Pour l'identifier, une commande bien pratique :
$ host -t MX wanadoo.fr
wanadoo.fr mail is handled by 10 smtp.wanadoo.fr.
'''smtp''' est un ''sous-domaine'' de '''wanadoo.fr''', et la machine sur laquelle se trouve le serveur mail se nomme justement '''smtp.wanadoo.fr'''…
$ ping smtp.wanadoo.fr
PING smtp.wanadoo.fr (80.12.242.142) 56(84) bytes of data.
… et son adresse IP est '''80.12.242.142'''.
Dans la réalité, l'architecture mail de Wanadoo (Orange maintenant…) est je pense un peu plus compliquée que ça mais ça donne une bonne image de ce que nous allons reproduire pour notre serveur mail.
= Prérequis  =
Pour avoir son serveur mail, il faut donc :
*un nom de domaine
*une IP fixe
*un PC allumé si possible 24h/24
Pourquoi une IP fixe ? Les mails doivent pouvoir toujours trouver le serveur mail, c'est pourquoi l'IP doit être fixe.
L'association nom de domaine ⇔ adresse IP se règle au niveau du serveur DNS. C'est celui-ci que nous allons régler en premier.
== Configurer le serveur DNS  ==
Cette partie se révèle souvent être une prise de tête pour les apprentis auto-hébergés.
On doit spécifier dans le serveur DNS sur quelle IP on peut joindre le serveur mail.
La plupart des registrars (les marchands de noms de domaine) fournissent une interface simplifiée pour le serveur DNS.
=== Le champ A  ===
Il faut tout d'abord configurer le champ '''A''' qui fait le lien entre nom de domaine et l'adresse IP du serveur :
@      IN    A    12.34.56.78
smtp    IN    A    12.34.56.78
'''@''' : signifie que '''monDomaine.com''' est lié à l'IP 12.34.56.78
'''smtp''' : signifie que le sous-domaine '''smtp.monDomaine.com''' est lui aussi lié à l'IP 12.34.56.78
Vous pouvez indiquer des adresses IP différentes si vous possédez plusieurs serveurs et plusieurs IP.
=== Le champ MX  ===
Une fois que le champ '''A''' est complété, il faut pour définir le serveur mail s'occuper du champ '''MX''' ('''M'''ail e'''X'''change).
Nous allons convenir que le serveur mail correspond au serveur '''smtp.monDomaine.com'''. Son adresse IP ayant déjà été définie par le champ '''A''', le champ '''MX''' s'écrit sous cette forme :
monDomaine.com.    IN    MX    10    smtp
Ce qui signifie que '''smtp''' du champ '''A''' sera le serveur '''MX''' de '''monDomaine.com'''.
Vous suivez toujours ??
Lorsque vous enverrez des mails sur le domaine '''monDomaine.com''', ils seront automatiquement acheminés vers le serveur '''smtp.monDomaine.com'''.
'''''Important :'''''
*Un champ '''MX''' se définit toujours sur un champ '''A''', pas sur un '''CNAME''' (non abordé ici)
*Ne pas oublier le point après monDomaine.com.
== Vérifications  ==
Avant même d'installer et configurer son serveur, il faut faire quelques vérifications.
$ host -t MX monDomaine.com
Cette commande doit retourner une ligne de ce genre :
monDomaine.com mail is handled by 10 smtp.monDomaine.com
Bien sûr, ''smtp.monDomaine.com'' doit être associé à votre IP fixe (ici '''12.34.56.78''') :
$ ping smtp.monDomaine.com
PING smtp.monDomaine.com (12.34.56.78) 56(84) bytes of data.
Si ces 2 vérifications ne fonctionnent pas, '''ce n'est pas la peine d'aller plus loin''', votre serveur DNS est mal configuré.
= Ouverture des ports  =
Si votre serveur se trouve derrière une *box, il ne pourra pas communiquer avec le monde extérieur. Il nous faut '''ouvrir des ports'''.
Votre *box possède une '''IP fixe publique''', c'est l'IP que vous avez normalement renseignée dans votre serveur DNS.
Derrière votre *box, il y a votre serveur mail qui lui possède également une adresse IP, '''privée'''. Les adresses privées sont en général 192.168.0.xxx ou 192.168.1.xxx.
Admettons que votre serveur aie comme IP 192.168.0.25 dans votre réseau privé. Il faut alors que votre *box redirige toutes les requètes mail vers l'IP privée 192.168.0.25.
Les ports à ouvrir sont :
*25 : pour que le serveur réceptionne les mails
*110 : pour relever ses mails via POP
*143 : pour relever ses mails via IMAP
Tous ces ports sont à ouvrir en '''TCP'''.
Freebox : [http://www.dslvalley.com/dossiers/freebox/freebox-nat.php http://www.dslvalley.com/dossiers/freebox/freebox-nat.php]
NeufBox : [http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php] (fin de page)
LiveBox : [http://www.dslvalley.com/dossiers/orange/livebox-emule.php http://www.dslvalley.com/dossiers/orange/livebox-emule.php] (fin de page)
= Installation de postfix  =
Votre DNS est correctement configuré ? Les ports sont ouverts ? Bien. Vous avez fait le plus dur.
Vérifiez le nom de votre machine :
$ hostname
Cette commande doit vous retourner '''smtp.monDomaine.com'''. Si ce n'est pas le cas, éditez le fichier '''/etc/hosts''' et vérifiez que vous avez une ligne comme suit :
127.0.0.1 smtp.monDomaine.com smtp
Puis :
<nowiki># hostname smtp.monDomaine.com</nowiki>
Normalement, le hostname est maintenant OK.
Il est important que le '''hostname''' de votre machine soit le même que celui retourné par la commande '''host -t MX monDomaine.com''', sinon Postfix va vous emmerder.
Installons postfix&nbsp;:
<nowiki># aptitude install postfix</nowiki>
Choisissez la configuration '''Internet Site'''. Indiquez ensuite le nom de votre machine&nbsp;: '''smtp.monDomaine.com''' (correspond au ''hostname'')
Au cas où vous voudriez recommencer&nbsp;:
<nowiki># dpkg-reconfigure postfix</nowiki>
= Configuration  =
Le fichier de configuration de postfix est '''/etc/postfix/main.cf'''. Il est par défaut très bien sécurisé.
Nous allons dans un premier temps y ajouter cette ligne&nbsp;:
home_mailbox = Maildir/
Cette ligne dit à postfix que les mails des utilisateurs doivent aller dans un répertoire nommé Maildir.
Commentez (ajoutez un #) la ligne où se trouve '''mailbox_command''' pour que procmail ne soit pas utilisé (en tout cas pas pour le moment):
<nowiki>#mailbox_command = procmail -a "$EXTENSION"</nowiki>
Pour que la modification soit prise en compte, redémarrez postfix&nbsp;:
<nowiki># /etc/init.d/postfix restart</nowiki>
= Création d'un nouveau mail  =
Bien. Vous avez votre domaine, votre serveur mail tourne. Créer une adresse mail est très simple. Il suffit d'ajouter un utilisateur&nbsp;!!
Vous voulez créer une adresse kevin@monDomaine.com&nbsp;? Ajoutez l'utilisateur kevin sur votre machine&nbsp;:
<nowiki># adduser kevin</nowiki>
Répondez aux questions, choisissez un mot de passe à kevin et c'est tout.
= Tester l'adresse en local  =
Nous allons envoyer un mail à Kevin, vérifions que le paquet '''mailx''' est installé&nbsp;:
<nowiki># aptitude install mailx</nowiki>
On envoie le mail&nbsp;:
<nowiki># echo "Le contenu du mail" | mail -s "ceci est le sujet" kevin@monDomaine.com</nowiki>
Le mail sera automatiquement déposé dans le répertoire '''Maildir''' situé dans le home de kevin. S'il n'existe pas, le dossier '''Maildir''' sera automatiquement créé.
<nowiki># ls /home/kevin</nowiki>
Maildir
N'hésitez pas à consulter les logs pour voir tout ce qui se passe sur votre serveur mail&nbsp;:
<nowiki># cat /var/log/mail.log</nowiki>
= Kevin veut lire ses mails&nbsp;!!  =
Envoyer des mails, c'est bien mais pouvoir les lire, c'est mieux&nbsp;!! Pour que Kevin puisse lire ses mails dans un client comme '''Mozilla Thunderbird''', c'est tout simple&nbsp;:
Kevin veut réceptionner ces mails via IMAP&nbsp;:
<nowiki># aptitude install dovecot-imapd</nowiki>
Il préfère POP3&nbsp;? Pas de problèmes&nbsp;:
<nowiki># aptitude install dovecot-pop3d</nowiki>
C'est tout, vous pouvez maintenant utiliser votre client mail favori pour réceptionner vos mails.
Serveur&nbsp;: '''smtp.monDomaine.com'''
Login&nbsp;: '''kevin'''
Password&nbsp;: '''le password défini lors de la création de l'utilisateur kevin'''
= Kevin veut envoyer des mails&nbsp;!!  =
Kevin est content, il peut lire ses mails. Seulement, il aimerait répondre à ses amis mais il ne peut pas.
== Utiliser le SMTP de son FAI  ==
Postfix possède son propre service SMTP, mais ce dernier sera généralement bloqué. Pour limiter les envois de SPAMS, les FAI bloquent généralement l'envoi de mails.
Pour que votre serveur mail puisse envoyer des mails, il faut lui dire d'utiliser le SMTP de votre FAI. C'est le paramètre '''relayhost''' du fichier de configuration '''/etc/postfix/main.cf''' qu'il faut modifier&nbsp;:
relayhost = smtp.votreFAI.com
Principaux SMTP français&nbsp;:
Orange&nbsp;: smtp.orange.fr
Free&nbsp;: smtp.free.fr
Neuf&nbsp;: smtp.neuf.fr
== Utiliser le SMTP de Postfix  ==
Cependant, certains FAI (comme Free) permettent de lever ce blocage via une option dans leur panel de gestion.
Dans ce cas, plus besoin du '''relayhost'''. Vos mails ne passeront plus par votre FAI, c'est VOTRE serveur qui enverra directement les mails.
Le problème est que les mails que vous enverrez vers les boîtes '''Yahoo''' seront classées en tant que SPAM. '''AOL''' ne voudra pas de vos mails (ce sera explicitement marqué dans les logs). Quant à '''Hotmail''', les logs vous diront que les mails ont bien été reçus, mais vos correspondants ne les recevront jamais. '''Gmail''' ne pose quant à lui aucun soucis.
Vous voulez utiliser le plus possible votre propre SMTP mais vous voulez quand même pouvoir envoyer des mails vers vos potes qui restés chez Hotmail&nbsp;?
Créez un fichier '''/etc/postfix/transport''' avec ce contenu&nbsp;:
hotmail.fr    smtp:smtp.free.fr
hotmail.com  smtp:smtp.free.fr
yahoo.fr      smtp:smtp.free.fr
yahoo.com    smtp:smtp.free.fr
Ce fichier dit à postfix que pour les domaines hotmail.fr, hotmail.com, yahoo, etc., il utilisera le SMTP de free. Pour tous les autres domaine, il utilisera le smtp local. A vous d'adapter ce fichier en fonction des domaines qui ne veulent pas de vous.
Bien sûr, si vous n'êtes pas abonné Free, vous ne pourrez pas utiliser le SMTP de Free.
Pour que Postfix prenne en compte ce fichier, executez cette commande&nbsp;:
<nowiki># postmap /etc/postfix/transport</nowiki>
Puis relancez Postfix&nbsp;:
<nowiki># /etc/init.d/postfix restart</nowiki>
A chaque fois que vous modifierez '''/etc/postfix/transport''', n'oubliez pas d'executer la commande précédente (postmap).
== Login... Passwd...  ==
Actuellement, postfix n'accepte d'envoyer les mails que s'ils sont envoyés depuis le serveur mail. Vous avez sûrement l'habitude d'envoyer les mails depuis un autre PC. Généralement, le SMTP demande un login, un password et envoie vos mails.
C'est ce que nous alons régler maintenant.
Problème&nbsp;: Postfix seul ne fournit pas de service d'identification. Il doit utiliser un serveur SASL externe.
Solution&nbsp;: Dovecot, que nous avons précédemment installé pour la réception de mails (IMAP-POP3) peut faire office de serveur SASL.
Pour activer ce service, dans le fichier de configuration '''/etc/dovecot/dovecot.conf''', ajoutez (ou décommentez) ceci dans la section auth default { }&nbsp;:
auth default {
socket listen {
  client {
    path  <nowiki>= /var/spool/postfix/private/auth</nowiki>
    group = postfix
    mode  <nowiki>= 0660</nowiki>
  }
}
Il s'agit pour Dovecot de créer un socket Unix, sur lequel il écoutera les demandes d'identification provenant de Postfix. Comme le service SMTP de Postfix est chrooté (emprisonné) dans le répertoire '''/var/spool/postfix/''', il faut placer ce socket sous ce répertoire. Maintenant, relancez Dovecot&nbsp;:
<nowiki># /etc/init.d/dovecot restart</nowiki>
Dovecot accepte l'identification mais Postfix ne le sait pas&nbsp;!! Il faut lui dire (ajoutez dans '''/etc/postfix/main.cf''')&nbsp;:
<nowiki># Activer l'identification SASL</nowiki>
smtpd_sasl_auth_enable = yes
<nowiki># Utiliser le service d'identification de Dovecot</nowiki>
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
<nowiki># Noter dans les en-tête des messages l'identifiant de l'utilisateur.</nowiki>
smtpd_sasl_authenticated_header = yes
Profitons-en pour paufiner le fichier de configuration de postfix '''/etc/postfix/main.cf'''&nbsp;:
<nowiki># Règles pour accepter ou refuser une connexion :</nowiki>
<nowiki># - on attend une seconde (pour piéger les zombies) ;</nowiki>
<nowiki># - on interdit la parallélisation là où il n'est pas sensé y en avoir.</nowiki>
smtpd_client_restrictions =
    permit_mynetworks, permit_sasl_authenticated,
    sleep 1, reject_unauth_pipelining
<nowiki># Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom</nowiki>
<nowiki># de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) :</nowiki>
<nowiki># - on refuse les noms d'hôte invalides.</nowiki>
smtpd_helo_restrictions = reject_invalid_helo_hostname
<nowiki># Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse</nowiki>
<nowiki># de l'expéditeur :</nowiki>
<nowiki># - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ;</nowiki>
<nowiki># - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ;</nowiki>
<nowiki># - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ;</nowiki>
<nowiki># - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse.</nowiki>
smtpd_sender_restrictions =
    reject_unlisted_sender, reject_unknown_sender_domain,
    permit_mynetworks, permit_sasl_authenticated,
    reject_non_fqdn_sender
<nowiki># Règles pour accepter ou refuser un message, dès lors qu'on connaît le</nowiki>
<nowiki># destinataire (par la commande RCPT TO) :</nowiki>
<nowiki># - s'il est destiné à un expéditeur forgé chez nous, on le rejette ;</nowiki>
<nowiki># - s'il est destiné à un domaine forgé, on le rejette ;</nowiki>
<nowiki># - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ;</nowiki>
<nowiki># - si l'adresse de destination n'est pas sous forme canonique, on le refuse ;</nowiki>
<nowiki># - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour</nowiki>
<nowiki># </nowiki>  lequel on relaie, on le refuse.
smtpd_recipient_restrictions =
    reject_unlisted_recipient, reject_unknown_recipient_domain,
    permit_mynetworks, permit_sasl_authenticated,
    reject_non_fqdn_recipient,
    reject_unauth_destination
Allez, on relance postfix pour qu'il prenne en compte tout ça&nbsp;:
/etc/init.d/postfix restart

Dernière version du 27 mai 2010 à 12:22

Cette catégorie ne contient actuellement aucune page ni fichier multimédia.