Buts: * Mise en place complète de tout le nécessaire pour un serveur de mail autonome
Niveau: (débutants, confirmés, experts)
Date: vendredi 30 janvier 19h00
Lieu: Tandem
Au programme * todo
Participants:
Les adresses email seront basées sur les utilisateurs UNIX. Par exemple, toto@mondomaine.net correspondra à l'utilisateur toto du serveur mail (monserveur.mondonaine.net). Ses mails arriveront dans le répertoire /home/toto/Maildir/
Cette configuration est à effectuer soit dans le fichier de zone de votre serveur BIND, soit dans l'interface de votre gestionnaire de DNS (ex: GANDI).
# Sur quelle adresse IP pointe monserveur.mondomaine.net ? monserveur.mondomaine.net 10800 IN A 42.42.42.42 # Quelle machine gère les mails XXX@mondomaine.net ? @ 10800 IN MX 10 monserveur.mondomaine.net
On vérifie que le DNS est bien configuré :
$ host monserveur.mondomaine.net monserveur.mondomaine.net has address 42.42.42.42
$ host mondomaine.net mondomaine.net mail is handled by 10 monserveur.mondomaine.net.
Le SMTP gère le transfert de courrier de client à serveur et de serveur à serveur On utilise ici exim ; d'autres existent (postfix, qmail, courier-smtp…)
apt-get install exim4
dpkg-reconfigure exim4-config
Plusieurs questions sont ensuite posées :
Cette manipulation n'est pas nécessaire pour un serveur de mail sur internet. Par défaut, Debian ne distribue pas le courrier sur les adresses privées (type 192.168.0.X par exemple). Pour activer cette distribution : éditer le fichier nano -w /etc/exim4/exim4.conf.template rechercher les lignes suivantes :
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8 : 192.168.0.0/16 :\
172.16.0.0/12 : 10.0.0.0/8 : 169.254.0.0/16 :\
255.255.255.255
et les commenter :
# ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8 : 192.168.0.0/16 :\ # 172.16.0.0/12 : 10.0.0.0/8 : 169.254.0.0/16 :\ # 255.255.255.255
Il faut puis ensuite redémarrer le serveur SMTP:
/etc/init.d/exim4 restart
À ce point, on peut tester l'envoi de mails *depuis une autre machine* vers notre serveur. Sur la tierce machine :
telnet monserveur.mondomaine.net 25
réponse :
220 35.tandem ESMTP Exim 4.69 Fri, 23 jan 2009 20:15:50 +0100 : ok
Le serveur répond « 250 OK » après chaque commande acceptée On envoie une série de commandes au serveur :
helo autremachine mail from: test@testdomain.net rcpt to: utilisateur@mondomaine.net data On écrit ici le corps du message, on indique la fin du message par un point seul sur une ligne. .
Le serveur nous indique que le mail a été envoyé :
250 OK id=RTRTR3
On n'a plus qu'à fermer la connexion :
quit
Sur la machine monserveur.mondomaine.net, on peut vérifier qu'un fichier a été déposé dans /home/toto/Maildir/
Afin d'assurer une connexion SMTP sécurisée entre le client et le serveur, on utilise http://fr.wikipedia.org/wiki/Transport_Layer_Security un chiffrement asymétrique TLS ; il nous faut donc générer des certificats ; un script nous est fourni pour aider, lancer :
# /usr/share/doc/exim4/examples/exim-gencert
Une série de questions sont ensuite posées, y-répondre avec bon sens. Les informations rentrées ici seront présentés au client lorsque celui-ci tentera de se connecter en IMAP + TLS. Une question mérite une attention particulière : serveur name : ; il faut donner le nom de machine de notre serveur ; ici on répond monserveur.mondomaine.net.
Il est également nécessaire d'authentifier nos utilisateurs en ré-utilisant les comptes (login/password) présents sur la machine. Le serveur d'authentification sasl nous permet de faire ça.
apt-get install sasl2-bin
Puis éditer le fichier /etc/default/saslauthd, changer la ligne
START=no
en
START=yes
Il nous faut ensuite dire à exim de passer par sasl pour l'authentification, pour cela, on décommente (on enlève les ”#” en début de ligne) les paragraphes suivants :
plain_saslauthd_server:
driver = plaintext
public_name = PLAIN
server_condition = ${if saslauthd{{$auth2}{$auth3}}{1}{0}}
server_set_id = $auth2
server_prompts = :
.ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}
.endif
login_saslauthd_server:
driver = plaintext
public_name = LOGIN
server_prompts = "Username:: : Password::"
# don't send system passwords over unencrypted connections
server_condition = ${if saslauthd{{$auth1}{$auth2}}{1}{0}}
server_set_id = $auth1
.ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}
.endif
On autorise ensuite exim à utiliser sasl :
sudo adduser Debian-exim sasl
Pour finir on démarre sasl et on redémarre exim :
sudo /etc/init.d/saslauthd start suod /etc/init.d/exim4 restart
Le serveur IMAP permet à un utilisateur de récupérer sa boite aux lettres et ses messages depuis un poste client (par exemple en passant par thunderbird).
sudo apt-get install courier-imap-ssl
Répondre non à la question.
$ sudo apt-get install roundcube
Répondre oui puis choisir la base de données sqlite
Sous ubuntu, il faut installer un paquet supplémentaire :
$ sudo apt-get install php5-sqlite
Dans /etc/apache2/conf.d/roundcubeDécommenter la ligne
# Alias /roundcube /var/lib/roundcube
puis redémarrer apache :
$ sudo /etc/init.d/apache2 restart
Voilà, c'est prêt, bon app' !