Aujourd'hui, nous voyons comment créer un serveur mail sécurisé et qui tient bien la route. Comme je suis seul utilisateur du serveur, je ne voyais pas trop l'intérêt de créer des comptes utilisateurs sur le serveur juste pour pouvoir bénéficier d'un serveur mail.

J'ai donc opté pour la solution suivante : un serveur mail Postfix (sécurisé avec Saslauthd et certificat SSL) et un serveur Courier (accès POP et IMAP) qui utilisent MySQL (utilisateurs et domaines virtuels) pour la redirection des messages des utilsateurs/domaines.

Le tutoriel est certainement le plus long de la série, j'estime que cela prend à peu près 50 minutes à compléter (en 15 étapes!). Attention au niveau des copier/coller, une simple erreur peut vous faire perdre pas mal de temps !

Etape 1 : configurer le hostname

Le hostname est le nom du serveur en général. Mon domaine est skyminds.net donc mon serveur s'appelle mail.skyminds.net

Il est également important que ce nom soit présent dans la configuration bind du serveur.

Pour connaitre le nom de votre machine, tapez :

hostname -f

Pour le modifiez, il faut éditer /etc/hostname :

nano /etc/hostname

Remplacez ce qui s'y trouve avec le nom de votre serveur. J'y mets 'mail.skyminds.net'.

Ensuite, éditez /etc/hosts:

nano /etc/hosts

On ne touche pas à la première ligne mais on ajoute l'adresse IP du serveur suivie de notre nom de machine :

127.0.0.1       localhost.localdomain localhost
xxx.xxx.xxx.xxx  mail.skyminds.net

Il ne vous reste plus qu'à rebooter le serveur pour que les modifications soient prises en compte :

/sbin/reboot

Vérifiez bien que le nouveau nom a bien changé :

hostname -f

J'obtiens bien :

mail.skyminds.net

Si vous obtenez une erreur du style "name or service not found", vérifiez que les enregistrements DNS du serveur sont bien corrects.

Etape 2 : création de l'utilisateur vmail et des boîtes mail

Nous allons utiliser MySQL pour détailler tous nos utilisateurs et domaines mais le groupe et utilisateur "vmail" vont nous permettre d'accueillir le courrier physiquement sur le serveur. L'utilisateur vmail ne pourra pas s'identifier sur le serveur, il sert uniquement pour les mails.

On commence par créer le groupe vmail, en lui assignant le group ID 5000 :

groupadd -g 5000 vmail

Ensuite, on crée l'utilisateur vmail :

useradd -s /usr/sbin/nologin -g vmail -u 5000 vmail -d /home/vmail -m

Il ne peut pas se logguer, est ajouté au groupe 'vmail' et son répertoire de travail est créé sous /home/vmail.

Etape 3 : installation de Postfix

Je présuppose que MySQL est déjà installé sur le serveur donc nous installons Postfix, mailx et quelques paquets supplémentaires pour l'authentification (SASL et openssl) :

apt-get install postfix postfix-mysql libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl heirloom-mailx gamin

Lors de l'installation de Postfix, choisissez Internet Site et appuyer sur Entrée.

L'écran suivant vous demande le nom d'hôte dans System mail name. Entrez le nom que vous avez défini dans l'étape 1 :

mail.skyminds.net

Vous pouvez maintenant tester Postfix en vous envoyant un email de test, comme ceci :

mail address@example.com

Remplacez 'address@example.com' par votre adresse mail habituelle. Vous aurez à entrer le sujet puis le corps du message. Tapez un point (.) puis Entrée pour mettre fin au message et l'envoyer.

Voici ce que ça donne :

mail matt@gmail.com 
Subject: test from skyminds.net
this is a test by Matt!
.
Cc:

Quelques secondes plus tard, vous recevez votre message de test. Il est envoyé de 'root@mail.skyminds.net' mais nous verrons comment changer l'expéditeur ultérieurement.

Etape 4 : création de la base de données MySQL

MySQL et Postfix sont installés, nous allons maintenant créer la base de données qui va accueillir le détail de nos domaines et de nos utilisateurs.

On commence par créer la base SQL que l'on nomme 'mail' :

mysqladmin -u root -p create mail

Entrez votre mot de passe root MySQL, qui a été défini lors de l'installation de MySQL.

Ensuite, nous devons nous identifier dans MySQL pour créer les différentes tables :

mysql -u root -p

Nous avons besoin de créer un utilisateur qui aura la main sur notre base. On crée l'utilisateur 'mailadmin' avec le mot de passe 'newpassword' :

CREATE USER 'mailadmin'@'localhost' IDENTIFIED BY 'newpassword';
Remplacez 'newpassword' avec un mot de passe de votre cru. Notez-le bien !

Ensuite, on effectue un flush des privilèges :

FLUSH PRIVILEGES;

On passe aux permissions de notre utilisateur, il a besoin de SELECT, INSERT, UPDATE, DELETE sur la base 'mail' :

GRANT SELECT, INSERT, UPDATE, DELETE ON `mail` . * TO 'mailadmin'@'localhost';

On flush les privilèges de nouveau :

FLUSH PRIVILEGES;

On sélectionne notre base :

USE mail;

Le serveur nous informe que la base a été sélectionnée. Nous allons créer 3 tables:

  • la table domains va accueillir tous nos différents domaines,
  • la table forwards va nous permettre de rediriger le courrier d'un alias vers une autre adresse email,
  • la table users accueillera les comptes utilisateurs.
A lire :  16 dépôts Cydia pour votre iPhone ou iPod Touch

Toujours dans MySQL, entrez :

CREATE TABLE domains (
domain varchar(50) NOT NULL,
PRIMARY KEY (domain)
)
ENGINE=MyISAM;

Puis :

CREATE TABLE users (
email varchar(80) NOT NULL,
password varchar(20) NOT NULL,
PRIMARY KEY (email)
)
ENGINE=MyISAM;

Et :

CREATE TABLE forwards (
source varchar(80) NOT NULL,
destination TEXT NOT NULL,
PRIMARY KEY (source)
)
ENGINE=MyISAM;

On peut quitter MySQL:

quit;

Notre base et nos tables sont créées, notre utilisateur SQL également. Le champs password n'est pas encrypté car le mot de passe sera encrypté par MySQL lors de l'insertion des données.

Etape 5 : configurer Postfix avec MySQL

Pour que Postfix puisse utiliser MySQL, nous allons créer quelques fichiers texte. Postfix utilisera ces fichiers pour se connecter à MySQL et exécuter des requêtes.

Soyez attentifs aux requêtes : elles contiennent le nom de la base, de l'utilisateur et de son mot de passe.

On crée le fichier utilisé pour les domaines :

nano /etc/postfix/mysql-domains.cf

On y met :

user = mailadmin
password = newpassword
dbname = mail
query = SELECT domain AS virtual FROM domains WHERE domain='%s'
hosts = 127.0.0.1
N'oubliez pas de changer le mot de passe de l'utilisateur SQL !

Puis on crée le fichier utilisé pour les redirections :

nano /etc/postfix/mysql-forwards.cf

On y met :

user = mailadmin
password = newpassword
dbname = mail
query = SELECT destination FROM forwards WHERE source='%s'
hosts = 127.0.0.1
N'oubliez pas de changer le mot de passe de l'utilisateur SQL !

Et les boîtes mail de nos utilisateurs :

nano /etc/postfix/mysql-mailboxes.cf

On y met :

user = mailadmin
password = newpassword
dbname = mail
query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM users WHERE email='%s'
hosts = 127.0.0.1
N'oubliez pas de changer le mot de passe de l'utilisateur SQL !

Et enfin on crée le fichier pour les adresses email :

nano /etc/postfix/mysql-email.cf

On y met :

user = mailadmin
password = newpassword
dbname = mail
query = SELECT email FROM users WHERE email='%s'
hosts = 127.0.0.1
N'oubliez pas de changer le mot de passe de l'utilisateur SQL !

Ces quatre fichiers permettent à Postfix d'interagir avec la base de données 'mail' et d'assigner correctement les détails à chaque mail.

Il reste à changer la permission de ces fichiers pour empêcher que quelqu'un ne regarde nos identifiants SQL. Il suffit de retirer les droits du groupe 'other':

chmod o= /etc/postfix/mysql-*

Nos fichiers appartiennent actuellement au groupe 'root'. Il faut les mettre dans le groupe 'postfix' pour que Postfix et Courier puissent y avoir accès :

chgrp postfix /etc/postfix/mysql-*

Etape 6 : configuration de Postfix

On passe à la configuration de Postfix:

nano /etc/postfix/main.cf

Le fichier inclut par défaut notre hostname, qui a été défini lors de l'installation de Postfix. A la fin du fichier, on trouve :

myhostname = mail.skyminds.net
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
#myorigin = /etc/mailname
myorigin = skyminds.net
mydestination =
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

Supprimez toute information du champs 'mydestination'.

A la fin du fichier, nous ajoutons le détail des quatre fichiers que nous avons créés dans l'étape 5 :

virtual_alias_domains =
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-forwards.cf, mysql:/etc/postfix/mysql-email.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-mailboxes.cf
virtual_mailbox_base = /home/vmail
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000

proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps

Postfix peut désormais effectuer des requêtes sur la base de données quand il veut.

Etape 7 : configurer Saslauthd pour sécuriser la connexion

Saslauthd permet d'authentifier la connexion à notre serveur mail. On édite le fichier de configuration :

nano /etc/default/saslauthd

ll faut éditer la première ligne pour lancer saslauthd lors du login :

# Should saslauthd run automatically on startup? (default: no)
START=yes

Il faut ensuite modifier les options qui se trouvent au bas du fichier. Voici les options par défaut :

#
# Example for postfix users: "-c -m /var/spool/postfix/var/run/saslauthd"
OPTIONS="-c -m /var/run/saslauthd"

Supprimez et remplacez par :

#
# Example for postfix users: "-c -m /var/spool/postfix/var/run/saslauthd"
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"

Sauvegardez le fichier. Il nous faut créer le répertoire que nous venons de définir :

mkdir -p /var/spool/postfix/var/run/saslauthd

Pour donner au processus d'authorisation accès à la base de données, il nous faut créer deux fichiers :

nano /etc/pam.d/smtp

On y rentre les identifiants de notre base de données :

auth    required   pam_mysql.so user=mailadmin passwd=newpassword host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1
account sufficient pam_mysql.so user=mailadmin passwd=newpassword host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1
N'oubliez pas de changer le mot de passe de l'utilisateur SQL !

Cela permet au processus d'identification d'accéder à la base pour vérifier l'email et le mot de passe. La colonne 'passwordcolumn' est encryptée donc il faudra que le mot de passe soit encrypté lors de l'insertion des données.

Et le second fichier :

nano /etc/postfix/sasl/smtpd.conf

avec :

pwcheck_method: saslauthd
mech_list: plain login
allow_plaintext: true
auxprop_plugin: sql
sql_engine: mysql
sql_hostnames: 127.0.0.1
sql_user: mailadmin
sql_passwd: newpassword
sql_database: mail
sql_select: select password from users where email = '%u@%r'
N'oubliez pas de changer le mot de passe de l'utilisateur SQL !

Il faut ajouter Postfix au groupe 'sasl' pour qu'il puisse avoir accès au processus saslauthd que nous venons de créer :

adduser postfix sasl

et on sécurise les droits des fichiers :

chgrp sasl /etc/pam.d/smtp
chmod 640 /etc/pam.d/smtp
chgrp postfix /etc/postfix/sasl/smtpd.conf
chmod 640 /etc/postfix/sasl/smtpd.conf

On redémarre nos deux services pour que la nouvelle configuration soit prise en compte :

/etc/init.d/postfix restart
/etc/init.d/saslauthd restart

Etape 8 : création d'un certificat SSL pour notre connexion sécurisée

Nous allons créer un certificat SSL pour certifier notre connexion lorsque nous allons chercher notre courrier. Ce certificat sera self-signed donc affichera un message d'avertissement dans les clients mails mais bon, ce n'est pas bien gênant vu que nous sommes les seuls utilisateurs du serveur.

Nous créons notre certificat et le plaçons sous /etc/ssl/certs:

make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/ssl/certs/mailcert.pem

On nous pose une série de questions. L'important est de bien respecter l'adresse du hostname, 'mail.skyminds.net' dans notre cas. Notre propre certificat se trouve donc ici :

/etc/ssl/certs/mailcert.pem

Nous allons maintenant configurer Postfix pour qu'il utilise notre certificat.

Etape 9 : configurer Postfix avec le certificat SSL

On édite la configuration Postfix:

nano /etc/postfix/main.cf

A peu près au milieu du fichier, se trouve la section TLS Parameters avec ceci :

smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

Supprimez ces lignes et remplacez-les par :

# TLS parameters
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
#no relay
smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_non_fqdn_sender, reject_unknown_sender_domain, reject_unauth_pipelining, permit
#
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/ssl/certs/mailcert.pem
smtpd_tls_key_file = $smtpd_tls_cert_file


# TLS Ciphers - PFS
tls_preempt_cipherlist = yes
smtp_tls_ciphers = $smtpd_tls_ciphers
smtpd_tls_ciphers = high
smtp_tls_mandatory_ciphers = $smtpd_tls_mandatory_ciphers
smtpd_tls_mandatory_ciphers = high
smtpd_tls_exclude_ciphers = aNULL, MD5, DES, 3DES, DES-CBC3-SHA, RC4-SHA, AES256-SHA, AES128-SHA

# TLSv1.2+
smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_protocols = $smtpd_tls_protocols
smtp_tls_mandatory_protocols = $smtpd_tls_mandatory_protocols
tls_high_cipherlist = ECDH+aRSA+AES256:ECDH+aRSA+AES128:AES256-SHA:DES-CBC3-SHA
smtp_tls_note_starttls_offer = yes
smtpd_tls_received_header = yes

# ECDH
smtpd_tls_eecdh_grade = ultra

Nous venons d'activer les connexions sécurisées et indiquer l'emplacement de notre certificat.

A lire :  PHP : résoudre l'erreur "assigning the return value of new by reference is deprecated"

NOTE : si jamais vous avez acheté un certificat, nous n'avez pas de .pem mais un .cert et un .key. Il faudra alors remplacer les deux dernières lignes du bloc de code précédent par:

smtpd_tls_cert_file = /etc/ssl/cert/mailcert.cert
smtpd_tls_key_file = /etc/ssl/private/mailcert.key

Etape 10 : installation de Courier

Maintenant, on installe Courier qui va nous permettre l'accès au serveur mail via POP et IMAP (et aussi POPS et IMAPS, sécurisés) :

apt-get install courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl

Pendant l'installation, on nous demande si on veut créer les répertoires pour l'administration par le web : choisissez No et appuyez sur Entrée.

A l'écran suivant, appuyez encore sur Entrée. Nous allons maintenant configurer Courier pour accéder à la base MySQL 'mail' pour les autorisations :

nano /etc/courier/authdaemonrc

Trouvez l'option :

authmodulelist="authpam"

Et changez-la en :

authmodulelist="authmysql"

Sauvegardez le fichier.

Ensuite, nous allons modifier le fichier de Courier qui contient les identifiants MySQL mais on en fait une copie avant :

cp /etc/courier/authmysqlrc /etc/courier/authmysqlrc.original

On édite ensuite :

nano /etc/courier/authmysqlrc

Supprimez tout le contenu du fichier et mettez-y ceci :

MYSQL_SERVER localhost
MYSQL_USERNAME mailadmin
MYSQL_PASSWORD newpassword
MYSQL_PORT 0
MYSQL_DATABASE mail
MYSQL_USER_TABLE users
MYSQL_CRYPT_PWFIELD password
MYSQL_UID_FIELD 5000
MYSQL_GID_FIELD 5000
MYSQL_LOGIN_FIELD email
MYSQL_HOME_FIELD "/home/vmail"
MYSQL_MAILDIR_FIELD CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/')
N'oubliez pas de changer le mot de passe de l'utilisateur SQL !

Nous devons maintenant appliquer tous nos changements en redémarrant les 5 daemons de Courier :

find /etc/init.d/ | grep courier | while read line; do $line restart; done

En éditant deux fichiers, nous venons d'établir un accès pop, secure pop, imap et secure imap à notre serveur de mail. Il nous faut maintenant ouvrir les ports dans le firewall pour donner accès à ces services.

Etape 11 : ouverture des ports dans iptables

On ouvre le fichier /etc/iptables.test.rules :

nano /etc/iptables.test.rules

Juste avant les entrées HTTP et HTTPS, on rajoute :

# Allows SMTP
-A INPUT -p tcp --dport 25 -j ACCEPT

# Allows pop and pops connections
-A INPUT -p tcp --dport 110 -j ACCEPT
-A INPUT -p tcp --dport 995 -j ACCEPT

# Allows imap and imaps connections 
-A INPUT -p tcp --dport 143 -j ACCEPT
-A INPUT -p tcp --dport 993 -j ACCEPT

On applique les nouvelles règles :

iptables-restore < /etc/iptables.test.rules

On vérifie que les règles sont appliquées:

iptables -L

Résultat :

ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:smtp 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:pop3 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:pop3s 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:imap2 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:imaps

Pour rendre les règles permanentes:

iptables-save > /etc/iptables.up.rules

Puis :

exit

Etape 12 : ajouter des domaines et des utilisateurs à notre base

Vous n'avez plus qu'à peupler votre base de données avec vos domaines et vos utilisateurs : soit vous utilisez une solution graphique (personnellement, je fais cela via Webmin), soit vous utilisez la ligne de commande.

Connexion à MySQL :

mysql -u root -p

Entrez votre mot de passe root MySQL. Sélectionnez la base 'mail' :

USE mail;

Pour ajouter un domaine :

INSERT INTO `domains` (`domain`) VALUES ('skyminds.net');
INSERT INTO `domains` (`domain`) VALUES ('sky.com');
On met des backslashes (`) pour les champs, des quotes (') pour les valeurs.

Pour ajouter des utilisateurs :

INSERT INTO `users` (`email`, `password`) VALUES ('matt@sky.com', ENCRYPT('secretpassword'));

Pour changer le mot de passe d'un utilisateur :

UPDATE users SET password = ENCRYPT("secretpassword") where email='matt@sky.com';

Remarquez qu'on utilise la fonction ENCRYPT de MySQL. Si vous utilisez une solution graphique, pensez à sélectionner ENCRYPT pour encrypter les mots de passe.

On quitte MySQL :

quit;

et on relance Postfix:

postfix reload

Etape 13 : Corriger le nom de domaine d'envoi des mails

Par défaut, lorsqu'on envoie un mail depuis le terminal, c'est le hostname qui est pris en compte, ce qui fait que nous envoyons avec un utilisateur@mail.skyminds.net - or nous voulons envoyer avec utilsateur@skyminds.net donc pour cela, il faut éditer le fichier /etc/postfix/main.cf :

nano /etc/postfix/main.cf

et remplacer le contenu de myorigin par votre nom de domaine:

myorigin = skyminds.net

Etape 14 : activer le SMTPS

Une dernière étape, activer les protocoles sécurisés pour envoyer les mails en SMTPs. Il suffit d'éditer le fichier master.cf :

nano /etc/postfix/master.cf

Puis de décommenter les lignes suivantes :

smtp      inet  n       -       -       -       -       smtpd
submission	inet	n	-	-	-	-	smtpd -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING
smtps	inet	n	-	-	-	-	smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING

smtp doit être décommenté par défaut, il faut décommenter aussi submission et smtps.

Etape 15 : forcer IMAPS et POP3S

Pour forcer les connexions sécurisées en IMAPS et POP3S, il suffit d'éditer deux fichiers : /etc/courier/pop3d-ssl et /etc/courier/imapd-ssl.

1. On commence par /etc/courier/pop3d-ssl :

nano /etc/courier/pop3d-ssl

Changez la configuration pour adopter ces valeurs :

POP3DSSLSTART=NO

POP3_STARTTLS=YES

POP3_TLS_REQUIRED=1

TLS_PROTOCOL=TLS1

TLS_STARTTLS_PROTOCOL=TLS1

TLS_CIPHER_LIST="TLSv1:HIGH:!SSLv3:!SSLv2:!LOW:!MEDIUM:!EXP:!NULL:!aNULL@STRENGTH"

On édite maitenant le fichier de service courier-pop-ssl:

nano /etc/init.d/courier-pop-ssl

On recherche :

case "$POP3DSSLSTART" in
        [yY]*)START=yes;;
esac

et juste en dessous de ce bloc, on ajoute :

# Matt : start TLS
case "$POP3DSTARTTLS" in
        [yY]*)START=yes;;
esac
#

2. On passe ensuite à /etc/courier/imapd-ssl :

nano /etc/courier/imapd-ssl

Changez les directives suivantes pour y mettre ces valeurs :

IMAPDSSLSTART=NO

IMAPDSTARTTLS=YES

IMAP_TLS_REQUIRED=1

TLS_PROTOCOL=TLS1

TLS_STARTTLS_PROTOCOL=TLS1

TLS_CIPHER_LIST="TLSv1:HIGH:!SSLv3:!SSLv2:!LOW:!MEDIUM:!EXP:!NULL:!aNULL@STRENGTH"

Cela désactive SSL et active TLS. La dernière directive permet d'assigner à Courier le fichier de certificat créé à l'étape 2.

A lire :  Chalk And Numbers - Parade EP

On édite maintenant le fichier de service courier-imap-ssl:

nano /etc/init.d/courier-imap-ssl

on recherche :

case "$IMAPDSSLSTART" in
        [yY]*)START=yes;;
esac

et juste en-dessous on ajoute :

# Matt : start TLS
case "$IMAPDSTARTTLS" in
        [yY]*)START=yes;;
esac
#

Cela évite l'erreur de démarrage du service imap-ssl (référence).

3. Et on redémarre tous les services associés à Courier :

find /etc/init.d/ | grep courier | while read line; do $line restart; done

Il ne reste plus qu'à ouvrir les ports sécurisés (993 et 995) dans iptables (voir étape 11).

Fini !

Conclusion

Voilà, nous avons un serveur mail complètement fonctionnel Postfix/Courier, sécurisé avec Saslauthd+SSL qui utilise une base SQL d'utilisateurs/domaines virtuels. Je trouve cette solution très pratique. Pour mes besoins, j'ai poussé jusqu'à créer un script PHP qui me permet de créer des redirections mail à la volée.

Sommaire de la série Monter un serveur dédié de A à Z

  1. Serveur dédié : installation d'Apache, PHP, MySQL et Webmin
  2. Serveur dédié : créer la base de données MySQL et importer WordPress
  3. Serveur dédié : créer et activer un Virtual Host sous Apache
  4. Serveur dédié : changer les DNS du nom de domaine et le faire pointer vers le serveur
  5. Serveur dédié : sécurisation des services avec iptables et fail2ban
  6. Serveur dédié : sécurisation de la couche TCP/IP
  7. Serveur dédié : création d'un serveur mail Postfix (sécurisé avec Saslauthd et certificat SSL) et Courier (accès POP et IMAP) utilisant une base MySQL d'utilisateurs/domaines virtuels
  8. Serveur dédié : sécuriser Apache 2 avec ModSecurity
  9. Serveur dédié : CHMOD récursif sur des fichiers ou répertoires en ligne de commande
  10. Serveur dédié : installer APC comme système de cache et configurer Varnish comme reverse-proxy pour Apache pour améliorer les performances
  11. Serveur dédié : afficher la véritable IP derrière un reverse-proxy comme Varnish
  12. Serveur dédié : intégrer SSH à WordPress pour mettre à jour le core, les plugins et les thèmes
  13. Serveur dédié : installer la dernière version d'APC par SVN
  14. Serveur dédié : analyse des performances du serveur
  15. Serveur dédié : mettre à jour le noyau Debian de la Kimsufi
  16. Serveur dédié : sauvegarde automatique des fichiers avec Backup Manager sur le serveur de sauvegarde OVH
  17. Serveur dédié : configurer la limite mémoire pour PHP et Suhosin
  18. Bash : supprimer tous les fichiers et sous-répertoires d'un répertoire
  19. Serveur dédié : impossible de se connecter à un port distant
  20. Rsync: rapatrier les fichiers du serveur à la maison
  21. Bash : réparer les tables MySQL en cas de crash
  22. Serveur dédié : création d'une seedbox avec Transmission
  23. Serveur dédié : des paquets LAMP à jour sous Debian
  24. Serveur dédié : mise à jour vers Debian 7 Wheezy
  25. Serveur dédié : activer X11 forwarding pour SSH
  26. Serveur dédié : optimiser toutes les images JPG et PNG avec OptiPNG et JpegOptim
  27. Postfix : résoudre l'erreur "fatal: www-data(33): message file too big"
  28. Serveur dédié : mise en place de l'IPv6
  29. WordPress : accorder les bonnes permissions aux fichiers et dossiers avec chown et chmod
  30. WordPress : héberger les images sur un sous-domaine
  31. Serveur dédié : ajouter l'authentification SPF, Sender-ID et DKIM à Postfix et Bind9 avec opendkim
  32. Apache : lorsque le domaine seul (sans WWW) renvoie une erreur 403
  33. Serveur dédié : sécuriser Apache avec HTTPS (HTTP avec la couche TLS/SSL) en Perfect Forward Secrecy
  34. Serveur dédié : passer WordPress en HTTPS (TLS/SSL)
  35. Serveur dédié : configurer Webmin en TLS avec un certificat SSL
  36. Serveur dédié : configurer Transmission pour accéder au WebUI via TLS-SSL
  37. Serveur dédié : installer et configurer Varnish 4
  38. Serveur dédié : passage au mod FastCGI et PHP-FPM avec Apache MPM Worker
  39. J'ai planté le serveur... ou comment récupérer un serveur Kimsufi après un plantage de kernel avec le mode rescue OVH
  40. Serveur dédié : configurer Postfix et Courier pour utiliser TLS-SSL en Perfect Forward Secrecy
  41. Serveur dédié : retirer Varnish, devenu inutile avec HTTPS
  42. Serveur dédié : ajout de mod_spdy pour accélérer la connexion TLS-SSL sous Apache
  43. Serveur dédié : installer la dernière version d'OpenSSL sous Debian
  44. Serveur dédié : activer l'IP canonique du serveur sous Apache
  45. Serveur dédié : mise à jour vers PHP 5.6
  46. MySQL : convertir les tables MyISAM au format InnoDB
  47. Serveur dédié : optimiser toutes les images GIF avec GIFsicle
  48. Serveur dédié : migration de MySQL vers MariaDB
  49. BASH : lister, bloquer et débloquer des adresses IP avec iptables
  50. Serveur dédié : produire une meilleure réserve d'entropie avec haveged
  51. Serveur dédié : mettre en place DNSSEC pour sécuriser les DNS du domaine
  52. Serveur dédié : mise en place du protocole DANE
  53. 8 règles d'or pour bien déployer DNSSEC et DANE
  54. Serveur dédié : installer PHP7 FPM avec FastCGI sous Debian
  55. Serveur dédié : réduire les connexions TIME_WAIT des sockets et optimiser TCP
  56. Fail2Ban: protéger Postfix contre les attaques DoS de types AUTH, UNKNOWN et EHLO
  57. Serveur dédié : mettre à jour Apache et configurer le mod_http2 pour HTTP/2
  58. Serveur dédié : ajouter le domaine à la liste HSTS preload
  59. Serveur dédié : ajouter l'authentification DMARC à Postfix et BIND
  60. Serveur dédié : à la recherche de l'inode perdue ou comment résoudre le problème "no space left on device"
  61. Serveur dédié : installer NginX avec support HTTP2 et certificat SSL, PHP, MariaDB sous Debian

Pour développer votre projet WordPress ou Woocommerce, faites appel à mon expertise pour réaliser un site rapide, performant et fonctionnel.

Je soumets mon projet

Si vous avez trouvé une faute d’orthographe, informez-nous en sélectionnant le texte en question et en appuyant sur Ctrl + Entrée s’il vous plaît.

Articles en rapport:

Serveur dédié : création d'un serveur mail Postfix (sécurisé avec Saslauthd et certificat SSL) et Courier (accès P…

par Matt Lecture: 18 min

Pin It on Pinterest

Share This

Spelling error report

The following text will be sent to our editors: