Quantcast
Channel: BSD – Unix Experience
Viewing all articles
Browse latest Browse all 28

[Serveur Dédié] Serveur Mail

$
0
0

Introduction

Dans cette article nous allons voir la mise en place d’un serveur mail utilisant OpenSMTPD comme service SMTP et Dovecot en tant que service IMAP ainsi que Roundcube comme webmail.

OpenSMTPD a été vu dans un précédent article.

Dovecot est un service permettant la mise en place de serveur imap ou pop3. Dovecot a été vu sur ce site sur ce lien.

Nous allons présenter la configuration de OpenSMTPD ainsi que celle de Dovecot puis nous détaillerons les modifications qui on été nécessaires au fonctionnement des deux services ainsi que son utilisation d’un point de vue utilisateur via le déploiement de Roundcube sur un serveur web Nginx hébergé  par FreeBSD 9.2.

Configuration

Pare-feu

Ouverture ports IMAP via pf.conf sur le serveur OpenBSD pour les service IMAP et SMTP:

set skip on lo

tcp_services = "{ ssh, smtp, smtps, domain, imap, www, auth, https }"
udp_services = "{ domain }"
icmp_types = "{echoreq, unreach}"

block in log all
pass out quick all

pass in inet proto icmp all icmp-type $icmp_types
pass in proto tcp to any port $tcp_services
pass in proto udp to any port $udp_services

OpenSMTPD

OpenSMTPD v5.4.2:

# This is the smtpd server system-wide configuration file.
# See smtpd.conf(5) for more information.

# To accept external mail, replace with: listen on all
#
pki dev.unix-experience.fr certificate "/etc/mail/certs/pcn0.crt"
pki dev.unix-experience.fr key  "/etc/mail/certs/pcn0.key"

listen on pcn0 port 25 tls-require pki dev.unix-experience.fr auth-optional hostname "dev.unix-experience.fr"
listen on pcn0 port 465 smtps pki dev.unix-experience.fr auth-optional  hostname "dev.unix-experience.fr"

table aliases db:/etc/mail/aliases.db

# Uncomment the following to accept external mail for domain "example.org"
#
# accept from any for domain "example.org" alias <aliases> deliver to mbox
accept from any for domain "dev.unix-experience.fr" alias <aliases> deliver to maildir
accept for local alias <aliases> deliver to maildir
accept from local for any relay

expire 10d
bounce-warn 1h

Dans cette configuration, nous stockons les mails  sous le format Maildir et non Mbox car plus flexible avec dovecot.

Nous avons donc une action manuel en cas de nouvel utilisateur. En effet, nous devons créer ou modifier un alias présent dans /etc/mail/aliases, enfin nous devons exécuter la commande newaliases pour régénérer le fichier /etc/mail/aliases.db qui est utilisé par OpenSMTPD .

Dovecot

Dovecot est un serveur IMAP/POP3 disponible dans les ports de OpenBSD.

Nous l’installons avec la commande suivante:

pkg_add -i dovecot

Et nous l’activons au démarrage par l’ajout d’une ligne dans le fichier “/etc/rc.conf.local” avec un éditeur de texte.

pkg_scripts="dovecot"

Pour plus d’informations sur la variable pkg_scripts :

man 8 rc.d

La configuration de dovecot étant expliquée dans l’article lui étant consacré, je ne vais indiquer ici que les actions effectuées

Nous commençons par le fichier /etc/dovecot/dovecot.conf

# Protocols we want to be serving.
protocols = imap

Le fichier /etc/dovecot/conf.d/10-logging.conf:

auth_verbose = yes
verbose_ssl = yes

Le fichier /etc/dovecot/conf.d/10-ssl.conf :

# SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
ssl = yes

# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
# dropping root privileges, so keep the key file unreadable by anyone but
# root. Included doc/mkcert.sh can be used to easily generate self-signed
# certificate, just make sure to update the domains in dovecot-openssl.cnf
ssl_cert = </etc/ssl/certs/dovecotcert.pem
ssl_key = </etc/ssl/private/dovecotkey.pem

ssl_protocols = !SSLv2

En utilisant les paramètres de bases nous avons donc un Dovecot fonctionnel. Dovecot va aller chercher les mails dans les emplacement /home/$user/.Maildir pour les traiter. Les certificats ssl peuvent être généré via le script indiqué ou à la main en suivant de bon nombres de tutoriels.

Dovecot peux ce lance avec la commande ci-dessous dans le cadre d’un démarrage manuel du service:

/etc/rc.d/dovecot start

RoundCube

Roundcube est un webmail écrit en PHP dont la première version stable a été rendue publique en 2008. Roundcube nécessite une base de données pour fonctionner, nous installons MYSQL.

Nous allons déployé ce webmail sur un serveur utilisant la distribution FreeBSD.

Installation

Classique méthode d’installation.

pkg install mysql56-server roundcube nginx

Roundcube est installé à l’emplacement suivant:

/usr/local/www/roundcube

Configuration

Toute le paramétrage initial de Roundcube se réalise via un navigateur internet, mais nous devons d’abord le rendre accessible par la configuration d’un virtualhost sur le serveur web Nginx.

############################Roundcube###################################
    server {
                listen 80;
                server_name mail.unix-experience.fr;
                return 301 https://$server_name$request_uri;  # enforce https
        }

        server {
                listen 443 ssl;
                server_name mail.unix-experience.fr;

                ssl_certificate /etc/ssl/nginx/unix-experience.crt;
                ssl_certificate_key /etc/ssl/nginx/unix-experience.key;
                ssl_session_timeout  5m;
                ssl_protocols  SSLv2 SSLv3 TLSv1;
                ssl_ciphers  HIGH:!aNULL:!MD5;
                ssl_prefer_server_ciphers   on;

        access_log /var/log/mail.unix-experience.log;

        # Path to the root of your installation
                root /usr/local/www/roundcube;
                index index.php;
        if ($http_host != "mail.unix-experience.fr") {
                rewrite ^ https://mail.unix-experience.fr$request_uri permanent;
        }

               location ~ ^/favicon.ico$ {
                root /usr/local/www/roundcube//skins/classic/images;
                log_not_found off;

                expires max;
               }

               location = /robots.txt {
                allow all;
                log_not_found off;

               }

               location ~ ^/(README|INSTALL|LICENSE|CHANGELOG|UPGRADING)$ {
                deny all;
               }

               location ~ ^/(bin|SQL)/ {
                deny all;
               }

           # Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).
               location ~ /\. {
                deny all;

                log_not_found off;
               }

                location ~ \.php$ {
                try_files $uri =404;
                include fastcgi_params;                
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_index index.php;
                fastcgi_keep_conn on;
                fastcgi_split_path_info       ^(.+\.php)(.*)$;
                fastcgi_param PATH_INFO       $fastcgi_path_info;
                fastcgi_param PATH_TRANSLATED    $document_root$fastcgi_path_info;
               }
     }

Pour la configuration de la base de données il faut créer un utilisateur, une base de données et lui donner tout les droits uniquement sur celle-ci. Cette base de donnée sera alors utilisé lors de la configuration de roundcube.

CREATE USER username IDENTIFIED BY 'password';
CREATE DATABASE roundcubemail;
GRANT ALL PRIVILEGES ON roundcubemail.* TO username@localhost IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

Afin de d’accéder à l’installeur de Roundcube, il ne vous reste qu’à ajouter les enregistrements DNS correspondant au serveur Nginx précédemment configuré.

Enfin entrez l’url suivante: http://url-to-roundcube/installer/ afin de renseigner les options concernant les service SMTP, IMAP et la base de donnée MYSQL précédemment créée.

Il est possible que lors de la vérification de la tranche horaire échoue, pour résoudre ce problème configurez la variable date.timezone dans le fichier php.ini de votre serveur.

date.timezone= 'Europe/Paris'

Nous verrons dans un prochain article la mise en place de services de stockage et d’applications diverses en ligne par le produit Owncloud. Ceci dans la démarche de cette série d’article consacré sur l’auto-hébergement par un serveur dédié.


Viewing all articles
Browse latest Browse all 28

Trending Articles