Ceci est une ancienne révision du document !
Table des matières
Mettre en place un serveur mail (sous slackware)
Mon but est d'installer un serveur mail basé sur postfix, dovecot, puis de configurer ses outils pour l'utiliser uniquement en webmail via roundcube en utilisant le protocole IMAP. L'installation de roundcube étant assez simple, je ne parlerai que de postfix et dovecot.
Le SMTP avec Postfix
Installation
Prenons le slackbuild de slackbuilds.org disponible ici pour slackware-13.1.
Avant de l'installer, il faut créer un groupe postfix et postdrop ainsi qu'un utilisateur postfix dont son groupe sera postfix.
Vous pouvez les créer avec les commandes suivantes en root :
# groupadd -g 200 postfix # groupadd -g 201 postdrop # useradd -u 200 -d /dev/null -s /bin/false -g postfix postfix
Je vous laisse le soin d'exécuter le slackbuild puis d'installer le paquet.
Configuration
Voici ce que j'ai dans mon fichier /etc/postfix/main.cf
# Path sample_directory = /etc/postfix config_directory = /etc/postfix sendmail_path = /usr/sbin/sendmail newaliases_path = /usr/bin/newaliases mailq_path = /usr/bin/mailq queue_directory = /var/spool/postfix command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix data_directory = /var/lib/postfix # Général setgid_group = postdrop mail_owner = postfix myhostname = smtp.domain.tld mydomain = domain.tld myorigin = $mydomain mydestination = $mydomain, $myhostname, localhost.$mydomain, localhost mynetworks = 127.0.0.0/8 192.168.0.2 unknown_local_recipient_reject_code = 550 alias_database = hash:/etc/postfix/aliases alias_maps = hash:/etc/postfix/aliases transport_maps = hash:/etc/postfix/transport # Règles pour accepter ou refuser un message, dès lors qu'on connaît le # destinataire (par la commande RCPT TO) : # - s'il est destiné à un expéditeur forgé chez nous, on le rejette ; # - s'il est destiné à un domaine forgé, on le rejette ; # - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ; # - si l'adresse de destination n'est pas sous forme canonique, on le refuse ; # - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour # 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 # Règles pour accepter ou refuser une connexion : # - on attend une seconde (pour piéger les zombies) ; # - on interdit la parallélisation là où il n'est pas sensé y en avoir. smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, sleep 1, reject_unauth_pipelining # Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom # de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) : # - on refuse les noms d'hôte invalides. smtpd_helo_restrictions = reject_invalid_helo_hostname # Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse # de l'expéditeur : # - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ; # - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ; # - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ; # - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse. smtpd_sender_restrictions = reject_unlisted_sender, reject_unknown_sender_domain, permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender # SASL smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes smtpd_sasl_authenticated_header = yes broken_sasl_auth_clients = yes # TLS client smtp_tls_cert_file = /etc/ssl/private/smtp.pem smtp_tls_key_file = $smtp_tls_cert_file smtp_tls_session_cache_database = btree:/var/lib/postfix/smtp_scache smtp_tls_session_cache_timeout = 3600s smtp_tls_security_level = may tls_daemon_random_bytes = 32 # TLS server smtpd_tls_cert_file = /etc/ssl/private/smtpd.pem smtpd_tls_key_file = $smtpd_tls_cert_file smtpd_tls_received_header = yes smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache smtpd_tls_security_level = encrypt smtpd_tls_auth_only = yes smtpd_tls_security_level = may # Maildir home_mailbox = Maildir/ mail_spool_directory = /srv/mail # Syslog syslog_facility = mail syslog_name = ${multi_instance_name:postfix}${multi_instance_name?$multi_instance_name} smtp_tls_loglevel = 1 smtpd_tls_loglevel = 1 # Debug debug_peer_level = 2 debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5 # Doc manpage_directory = /usr/man readme_directory = /usr/doc/postfix-2.7.1/README_FILES html_directory = /usr/doc/postfix-2.7.1/html
Les lignes suivantes du fichier /etc/postfix/master.cf
doivent être décommentées :
smtp inet n - n - - smtpd submission inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes
On peut lancer postfix avec la commande :
# postfix start
Dovecot
Installation
Comme pour postfix, utilisons le slackbuild de slackbuilds.org disponible ici pour slackware-13.1.
Comme postfix, il faut créer un groupe et un utilisateur dovecot comme ceci :
# groupadd -g 202 dovecot # useradd -d /dev/null -s /bin/false -u 202 -g 202 dovecot
Ensuite exécutez le slackbuild et installez le paquet.
Configuration
Copiez l'intégralité des fichiers de configurations au bon endroit :
# cp -r /usr/doc/dovecot-2.0.0/example-config/* /etc/dovecot/
Les lignes suivantes sont nécessaires dans le fichier /etc/dovecot/dovecot.conf
:
protocols = imap listen = 192.168.0.2
En effet, comme le but est de n'utiliser le serveur mail que depuis une webmail, seul le protocole imap est nécessaire. Enfin il faut écouter sur l'adresse du serveur (ne pas mettre 127.0.0.1).
Ensuite le fichier /etc/dovecot/conf.d/auth-system.conf.ext
doit contenir :
passdb { driver = shadow # [blocking=no] #args = } userdb { # <doc/wiki/AuthDatabase.Passwd.txt> driver = passwd # [blocking=no] #args = }
Dans ce cas ce sont les comptes unix qui sont utilisés.
Maintenant le fichier /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir
Le but est donc d'utiliser une boîte de type maildir situé dans le $HOME de chaque utilisateur.
Reste plus qu'à lancer dovecot :
# /etc/rc.d/rc.dovecot start