Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS Administration système, GNU/Linux
Aujourd’hui, je vais présenter l’installation d’un serveur d’e-mails. Ainsi, j’utiliserai le logiciel Postfix comme agent de transfert de courrier (MTA), aussi appelé serveur SMTP. Il assurera l’envoi de messages depuis le serveur et la réception de courriers en provenance d’autres serveurs d’e-mails via leurs MTA. Ainsi, les clients de messagerie (comme Microsoft Outlook ou Mozilla Thunderbird) communiqueront directement avec le MTA pour envoyer un e-mail, via le protocole SMTP. Pour la récupération des courriers reçus sur le serveur par les clients de messagerie, je mettrai en place le logiciel Dovecot. Celui-ci permet de récupérer les e-mails via les protocoles POP et IMAP. Afin d’avoir un serveur d’e-mails complet, je détaillerai la mise en place de l’antivirus ClamAv et du filtre anti-spam Spamassassin. Ces deux logiciels seront exploités par le filtre de contenu Amavis qui analysera directement les courriers stockés sur le serveur. Afin de faciliter la gestion des différents comptes e-mails sur le serveur, j’installerai l’application Web Postfix Admin. Ainsi, il sera possible de gérer plusieurs comptes e-mails mais également plusieurs noms de domaines. Pour terminer, j’aborderai l’installation du Webmail Roundcube afin que les utilisateurs puissent accéder à leurs e-mails depuis n’importe quel navigateur Web.
- Installation des paquets de base
Pour commencer, connectez vous à votre serveur via SSH et basculez sous le compte root, avec la commande suivante:
1 |
root@serveur:~# su |
Ensuite, il est nécessaire d’installer un ensemble de paquets. Pour cela, tapez la commande suivante:
1 |
root@serveur:~# apt-get install postfixadmin postfix-mysql dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve amavisd-new clamav clamav-daemon spamassassin unrar p7zip pyzor razor arj bzip2 cabextract gzip nomarch unzip zip |
L’outil de configuration des paquets va vous poser un ensemble de questions. Ainsi, à la première question, il vous demande s’il est nécessaire de générer un certificat SSL auto-signé pour Dovecot. Nous en générerons un plus tard, en renseignant correctement toutes les informations nécessaires. Répondez donc par Non, comme ici:

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration du paquet dovecot-core
Ensuite, il vous présente les différentes configurations possibles de Postfix. Validez en actionnant le bouton OK, comme ici:

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration du paquet postfix – Partie 1
À la question Configuration type du serveur de messagerie, sélectionnez Site Internet et validez par OK, comme le montre la prise d’écran suivante:

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration du paquet postfix – Partie 2
Ensuite, il nous donne des informations sur le nom de courrier que nous allons devoir choisir. Validez en actionnant OK, comme le montre la capture d’écran ci-dessous:

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration du paquet postfix – Partie 3
Ici, nous comprenons que le nom de courrier doit correspondre au nom de domaine principal du serveur. Les adresses des e-mails envoyés depuis le serveur, qui n’ont pas de nom de domaine prendront ce nom comme nom de domaine. Ainsi, les e-mails envoyés par le serveur lui même, pour par exemple vous informer de l’état d’un service particulier seront envoyés depuis une adresse de ce nom de domaine. Renseignez le nom de courrier que vous avez choisi, comme ici:

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration du paquet postfix – Partie 4
L’outil de configuration des paquets nous demande ensuite quel serveur Web est installé sur le serveur. Celui-ci sera configuré automatiquement pour que Postfix Admin puisse fonctionner correctement. Nous avons installé le serveur Web Apache dans un précédent article. Sélectionnez donc apache2 et validez par OK, comme l’illustre l’image suivante:

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration du paquet postfixadmin – Partie 1
Ensuite, il vous est demandé si la base de données de Postfix Admin doit être configurée par dbconfig-common. Répondez par Oui, comme ici:

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration du paquet postfixadmin – Partie 2
L’outil de configuration demande quel type de serveur de bases de données nous souhaitons utiliser. Nous avons installé le SGBDR MySQL dans le précédent article. Sélectionnez donc mysql, puis actionnez le bouton OK pour confirmer, comme le montre la capture d’écran ci-dessous:

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration du paquet postfixadmin – Partie 3
Pour pouvoir créer la base de données nécessaire au fonctionnement de Postfix Admin, l’outil de configuration a besoin du mot de passe Administrateur (root) de MySQL. Nous l’avons choisi dans la première section de l’article précédent. Renseignez le et validez par OK, comme l’illustre l’image suivante:

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration du paquet postfixadmin – Partie 4
L’outil de configuration va également créer un compte utilisateur pour que Postfix Admin puisse se connecter à sa base de données. Pour le cela, le compte doit être protégé par un mot de passe. Vous pouvez en générer un nouveau et le fournir ou alors laisser le champ vide pour que l’outil de configuration en génère un automatiquement. Personnellement, je préfère en générer un à l’aide de mon script de génération de mots de passe, comme ici:

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration du paquet postfixadmin – Partie 5
Si vous avez fourni un mot de passe, vous devez alors le confirmer, comme le montre la capture d’écran suivante:

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration du paquet postfixadmin – Partie 6
Tous les paquets sont maintenant correctement installés. Nous pouvons désormais passer à la configuration de chaque élément de notre serveur d’e-mails.
- Configuration de Postfix Admin
Le paquet postfixadmin n’installe pas le fichier /etc/apache2/conf.d/postfixadmin au bon endroit. Celui-ci doit se trouver dans le dossier /etc/apache2/conf-available. Il faut donc le déplacer et lui ajouter l’extension .conf, avec la commande suivante:
1 |
root@serveur:~# mv /etc/apache2/conf.d/postfixadmin /etc/apache2/conf-available/postfixadmin.conf |
Puis, il faut activer la configuration postfixadmin du serveur Web Apache avec la commande ci-dessous:
1 |
root@serveur:~# a2enconf postfixadmin |
Il faut également activer le module imap pour PHP avec la commande suivante pour satisfaire toutes les dépendances de Postfix Admin:
1 |
root@serveur:~# php5enmod imap |
Puis, pour tenir compte de ces modifications, nous devons redémarrer le serveur Web Apache, avec cette commande:
1 |
root@serveur:~# service apache2 restart |
Rendez-vous maintenant dans votre navigateur Web et entrez y l’adresse suivante:
1 |
http://IP_SERVEUR/postfixadmin/setup.php |
Vous devriez arriver sur la page d’installation de Postfix Admin. Celle-ci nous informe si toutes les dépendances sont bien installées et configurées. En bas de la page, il vous est demandé de fournir un mot de passe. Celui-ci sera utile uniquement pour l’installation de Postfix Admin. Renseignez un mot de passe suffisamment solide. Vous pouvez vous servir de mon script de génération de mots de passe. Vous devez également le confirmer. Cliquez ensuite sur le bouton Generate password hash, comme le montre la prise d’écran suivante:

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration de Postfix Admin – Partie 1
La page se rafraîchit. Celle-ci nous indique qu’il est nécessaire de modifier une variable dans le fichier de configuration de Postfix Admin, comme ici:

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration de Postfix Admin – Partie 2
Ouvrez et éditez alors le fichier /etc/postfixadmin/config.inc.php, avec par exemple la commande ci-dessous:
1 |
root@serveur:~# nano /etc/postfixadmin/config.inc.php |
Cherchez et modifiez la valeur de la variable $CONF[‘setup_password’] avec celle fournie dans la page d’installation de Postfix Admin.
Cherchez et modifiez également les variables suivantes:
1 2 |
$CONF['domain_path'] = 'NO'; $CONF['domain_in_mailbox'] = 'YES'; |
En:
1 2 |
$CONF['domain_path'] = 'YES'; $CONF['domain_in_mailbox'] = 'NO'; |
Vous pouvez enregistrer et quitter l’éditeur. Ces deux modifications indiquent que les e-mails devront être stockés dans des dossiers sous la forme NOM_DOMAINE/NOM_UTILISATEUR.
Ouvrez et éditez le fichier /etc/postfixadmin/dbconfig.inc.php, avec la commande ci-dessous par exemple:
1 |
root@serveur:~# nano /etc/postfixadmin/dbconfig.inc.php |
Cherchez et modifiez la variable suivante:
1 |
$dbtype='mysql'; |
En:
1 |
$dbtype='mysqli'; |
Enregistrez et quittez l’éditeur.
Retournez ensuite dans votre navigateur, sur la page d’installation de Postfix Admin. Afin, de pouvoir se connecter sur Postfix Admin, nous devons créer un compte administrateur. Ainsi, renseignez une adresse e-mail dans le champ Admin et un mot de passe, que vous aurez choisi suffisamment solide, dans le champ Password et répétez le dans le champ Password (again). Retapez à nouveau le mot de passe d’installation de Postfix Admin, que vous avez choisi plus haut, dans le champ Setup password et validez en cliquant sur le bouton Add Admin, comme l’illustre l’image suivante:

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration de Postfix Admin – Partie 3
La configuration de Postfix Admin est maintenant terminée.
Afin d’éviter qu’une personne mal intentionnée ne se connecte à la page d’installation de Postfix Admin et crée un compte Administrateur dans Postfix Admin, nous allons interdire l’accès à la page. Pour cela, ouvrez et éditez le fichier /etc/apache2/conf-available/postfixadmin.conf, avec la commande suivante par exemple:
1 |
root@serveur:~# nano /etc/apache2/conf-available/postfixadmin.conf |
Ajoutez le contenu suivant à la fin du fichier:
1 2 3 |
<Files "setup.php"> deny from all </Files> |
Pour plus de sécurité, il est possible de modifier l’adresse d’accès (l’URL) à Postfix Admin, de la même façon que je l’ai évoqué avec PHPMyAdmin dans l’article précédent. Ainsi, au lieu de taper:
1 |
http://IP_SERVEUR/postfixadmin |
Vous taperez par exemple:
1 |
http://IP_SERVEUR/mesbal |
Ceci permet d’éviter que certains attaquants aient accès à l’interface de gestion de Postfix Admin. En effet, comme il est courant d’accéder à Postfix Admin via l’adresse http://IP_SERVEUR/postfixadmin ou http://NOM_DOMAINE/postfixadmin, certaines personnes mal intentionnées attaquent Postfix Admin par brute force ou par dictionnaire. Ainsi, elles pourraient modifier les mots de passes des comptes e-mails pour accéder à leur contenu ou encore créer ou supprimer des comptes e-mails.
Pour ce faire, toujours dans le fichier /etc/apache2/conf-available/postfixadmin.conf, cherchez et modifiez la ligne suivante:
1 |
Alias /postfixadmin /usr/share/postfixadmin |
En:
1 |
Alias /NOM_ACCESS /usr/share/postfixadmin |
Bien entendu, modifiez le nom d’accès par un de votre choix.
Pour prendre en compte ces modifications, il est nécessaire de redémarrer le serveur Web Apache, avec la commande ci-dessous:
1 |
root@serveur:~# service apache2 restart |
J’expliquerai dans un prochain article, comment créer des comptes e-mails ainsi que des noms de domaines dans Postfix Admin.
- Création et configuration de l’espace de stockage des boîtes aux lettres
Il est nécessaire de créer un espace dédié au stockage des boîtes aux lettres, là où seront stockés les e-mails des différents comptes e-mails. Pour les mêmes raisons qu’évoquées dans les précédents articles, nous allons stocker les boîtes aux lettres sur la partition montée sur /srv. Ceci permet de conserver les données des différents services du serveur en cas de réinstallation. Pour y arriver, il suffira de ne pas formater la partition /srv lors de la réinstallation. Ainsi, les boîtes aux lettre seront stockées dans le dossier /srv/mail. Pour ce faire, nous allons créer le dossier /srv/mail, modifier ses droits d’accès, son propriétaire et son groupe, avec les commandes suivantes:
1 2 3 4 |
root@serveur:~# mkdir /srv/mail root@serveur:~# chmod 770 /srv/mail root@serveur:~# chown mail:mail /srv/mail root@serveur:~# usermod -d /srv/mail mail |
Pour continuer la suite de la configuration du serveur d’e-mails, nous devons récupérer l’UID et le GID de l’utilisateur mail, propriétaire du dossier /srv/mail. L’UID correspond à l’identifiant unique de l’utilisateur et le GID correspond à celui du groupe du dossier. Pour ce faire, entrez la commande suivante:
1 2 3 |
root@serveur:~# grep mail /etc/passwd mail:x:8:8:mail:/srv/mail:/usr/sbin/nologin dovecot:x:107:115:Dovecot mail server,,,:/usr/lib/dovecot:/bin/false |
La commande affiche plusieurs lignes. Celle qui nous intéresse est la suivante:
1 |
mail:x:8:8:mail:/srv/mail/:/usr/sbin/nologin |
L’UID correspond au nombre indiqué après le 2ème deux-points (:), soit ici 8 et le GID correspond au nombre indiqué après le 3ème deux-points (:), soit ici 8.
- Configuration de Postfix
Les noms de domaines et les comptes e-mails sont gérés par Postfix Admin. Celui-ci les stockent dans une base de données MySQL. Ainsi, nous allons devoir configurer Postfix pour qu’il utilise cette base de données et lui indiquer comment lire les informations dont il aura besoin. Pour cela, il est nécessaire de créer un ensemble de fichiers qui seront stockés dans le dossier /etc/postfix. Commencez par créer et éditer le fichier /etc/postfix/mysql_virtual_alias_domainaliases_maps.cf, avec la commande suivante par exemple:
1 |
root@serveur:~# nano /etc/postfix/mysql_virtual_alias_domainaliases_maps.cf |
Ajoutez y le contenu suivant, en remplaçant la valeur de la variable password par le mot de passe du compte utilisateur de postfixadmin sur le serveur MySQL, défini lors de la configuration du paquet postfixadmin:
1 2 3 4 5 6 7 8 |
user = postfixadmin password = MOT_DE_PASSE_POSTFIXADMIN hosts = 127.0.0.1 dbname = postfixadmin query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' AND alias.address=concat('%u', '@', alias_domain.target_domain) AND alias.active = 1 |
Créez et éditez le fichier /etc/postfix/mysql_virtual_alias_maps.cf, avec la commande ci-dessous par exemple:
1 |
root@serveur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf |
Ajoutez y le contenu suivant, en remplaçant la valeur de la variable password par le mot de passe du compte utilisateur de postfixadmin sur le serveur MySQL, défini lors de la configuration du paquet postfixadmin:
1 2 3 4 5 6 7 8 |
user = postfixadmin password = MOT_DE_PASSE_POSTFIXADMIN hosts = 127.0.0.1 dbname = postfixadmin table = alias select_field = goto where_field = address additional_conditions = and active = '1' |
Ensuite, créez et éditez le fichier /etc/postfix/mysql_virtual_domains_maps.cf, par exemple avec la commande suivante:
1 |
root@serveur:~# nano /etc/postfix/mysql_virtual_domains_maps.cf |
Ajoutez y le contenu suivant, en remplaçant la valeur de la variable password par le mot de passe du compte utilisateur de postfixadmin sur le serveur MySQL, défini lors de la configuration du paquet postfixadmin:
1 2 3 4 5 6 7 8 |
user = postfixadmin password = MOT_DE_PASSE_POSTFIXADMIN hosts = 127.0.0.1 dbname = postfixadmin table = domain select_field = domain where_field = domain additional_conditions = and backupmx = '0' and active = '1' |
Créez et éditez ensuite le fichier /etc/postfix/mysql_virtual_mailbox_domainaliases_maps.cf, avec la commande ci-dessous par exemple:
1 |
root@serveur:~# nano /etc/postfix/mysql_virtual_mailbox_domainaliases_maps.cf |
Ajoutez y le contenu suivant, en remplaçant la valeur de la variable password par le mot de passe du compte utilisateur de postfixadmin sur le serveur MySQL, défini lors de la configuration du paquet postfixadmin:
1 2 3 4 5 6 7 8 |
user = postfixadmin password = MOT_DE_PASSE_POSTFIXADMIN hosts = 127.0.0.1 dbname = postfixadmin query = SELECT maildir FROM mailbox, alias_domain WHERE alias_domain.alias_domain = '%d' AND mailbox.username=concat('%u', '@', alias_domain.target_domain ) AND mailbox.active = 1 |
Puis, créez et éditez le fichier /etc/postfix/mysql_virtual_mailbox_maps.cf, avec la commande ci-dessous par exemple:
1 |
root@serveur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf |
Ajoutez y le contenu suivant, en remplaçant la valeur de la variable password par le mot de passe du compte utilisateur de postfixadmin sur le serveur MySQL, défini lors de la configuration du paquet postfixadmin:
1 2 3 4 5 6 7 8 |
user = postfixadmin password = MOT_DE_PASSE_POSTFIXADMIN hosts = 127.0.0.1 dbname = postfixadmin table = mailbox select_field = CONCAT(domain, '/', local_part) where_field = username additional_conditions = and active = '1' |
Ensuite, nous pouvons configurer Postfix lui même. Pour ce faire, ouvrez et éditez le fichier /etc/postfix/main.cf, par exemple avec la commande suivante:
1 |
root@serveur:~# nano /etc/postfix/main.cf |
Cherchez et modifiez les variables suivantes:
1 2 |
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key |
En:
1 2 |
smtpd_tls_cert_file=/etc/ssl/private/mail.crt smtpd_tls_key_file=/etc/ssl/private/mail.key |
Commentez les variables suivantes, en mettant un dièse (#) en début de ligne:
1 2 |
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache |
Ensuite, modifiez la ligne suivante:
1 |
mydestination = NOM_COURRIER, kimsufi, localhost.localdomain, localhost |
En:
1 |
mydestination = kimsufi, localhost.localdomain, localhost |
Ici, nous supprimons, de la variable mydestination, le nom de courrier choisi. Kimsufi correspond au nom du serveur choisi lors de l’installation d’Ubuntu Server 14.04 LTS.
Ajoutez maintenant le contenu suivant à la fin du fichier en modifiant l’UID et le GID par ceux trouvés dans la section précédente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# SASL parameters smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes broken_sasl_auth_clients = yes smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = smtpd_sasl_authenticated_header = yes # TLS parameters smtp_tls_security_level = may smtpd_tls_security_level = may #smtpd_tls_auth_only = no smtp_tls_note_starttls_offer = yes smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom # SMTPD parameters unknown_local_recipient_reject_code = 450 maximal_queue_lifetime = 7d minimal_backoff_time = 1000s maximal_backoff_time = 8000s smtp_helo_timeout = 60s smtpd_recipient_limit = 50 smtpd_soft_error_limit = 3 smtpd_hard_error_limit = 12 smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname, permit smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unknown_sender_domain, reject_unauth_pipelining, permit smtpd_client_restrictions = reject_rbl_client blackholes.easynet.nl smtpd_recipient_restrictions = reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_unknown_recipient_domain, reject_unauth_destination, permit smtpd_data_restrictions = reject_unauth_pipelining smtpd_discard_ehlo_keyword_address_maps = cidr:/etc/postfix/esmtp_access smtpd_helo_required = yes smtpd_delay_reject = yes disable_vrfy_command = yes # General host and delivery info mynetworks_style = host virtual_mailbox_base = /srv/mail virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf, mysql:/etc/postfix/mysql_virtual_mailbox_domainaliases_maps.cf virtual_uid_maps = static:UID_TROUVE virtual_gid_maps = static:GID_TROUVE virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf, mysql:/etc/postfix/mysql_virtual_alias_domainaliases_maps.cf virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf # Integration with other packages virtual_transport = dovecot dovecot_destination_recipient_limit = 1 # Use amavis for virus and spam scanning content_filter = amavis:[127.0.0.1]:10024 # Header manipulation header_checks = regexp:/etc/postfix/header_checks enable_original_recipient = no |
Ensuite, ouvrez et éditez le fichier /etc/postfix/master.cf, avec la commande suivante par exemple:
1 |
root@serveur:~# nano /etc/postfix/master.cf |
Décommentez les lignes suivantes, en enlevant le dièse (#) en début de ligne:
1 2 3 4 5 6 7 |
#submission inet n - - - - smtpd # -o syslog_name=postfix/submission # -o smtpd_tls_security_level=encrypt # -o milter_macro_daemon_name=ORIGINATING # smtps inet n - - - - smtpd # -o syslog_name=postfix/smtps # -o smtpd_tls_wrappermode=yes |
Sous la ligne suivante:
1 |
pickup unix n - - 60 1 pickup |
Ajoutez les deux lignes ci-dessous:
1 2 |
-o content_filter= -o receive_override_options=no_header_body_checks |
Modifiez la ligne suivante:
1 2 |
maildrop unix - n n - - pipe flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient} |
En:
1 2 |
maildrop unix - n n - - pipe flags=DRhu user=mail argv=/usr/bin/maildrop -d ${recipient} |
Puis, ajoutez les lignes suivantes à la fin du fichier:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# # The next two entries integrate with Amavis for anti-virus/spam checks. # amavis unix - - - - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20 127.0.0.1:10025 inet n - - - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions=reject_unauth_pipelining -o smtpd_end_of_data_restrictions= -o mynetworks=127.0.0.0/8 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks # # Integration with Dovecot - hand mail over to it for local delivery, and # run the process under the mail user and mail group. # dovecot unix - n n - - pipe flags=DRhu user=mail:mail argv=/usr/lib/dovecot/dovecot-lda -d $(recipient) |
Pour éviter que certaines en-têtes ne sont analysées inutilement, nous allons créer et éditer le fichier /etc/postfix/header_checks, avec la commande ci-dessous par exemple:
1 |
root@serveur:~# nano /etc/postfix/header_checks |
Ajoutez y les lignes suivantes:
1 2 3 4 5 6 |
/^Received:/ IGNORE /^User-Agent:/ IGNORE /^X-Mailer:/ IGNORE /^X-Originating-IP:/ IGNORE /^x-cr-[a-z]*:/ IGNORE /^Thread-Index:/ IGNORE |
Pour activer les accusés de réception, il faut créer le fichier /etc/postfix/esmtp_access et l’éditer, avec par exemple cette commande:
1 |
root@serveur:~# nano /etc/postfix/esmtp_access |
Ajoutez y le contenu suivant:
1 2 3 4 |
# Allow DSN requests from local subnet only 192.168.1.0/28 silent-discard 0.0.0.0/0 silent-discard, dsn ::/0 silent-discard, dsn |
- Configuration de Dovecot
De la même façon que pour Postfix, nous allons devoir lier Dovecot à la base de données de Postfix Admin, pour que celui-ci puisse authentifier les utilisateurs qui tentent de se connecter via les protocoles POP et IMAP, afin de récupérer les courriers stockés sur le serveur.
Pour commencer, créez et éditez le fichier /etc/dovecot/dovecot-sql.conf.ext, par exemple avec la commande ci-dessous:
1 |
root@serveur:~# nano /etc/dovecot/dovecot-sql.conf.ext |
Puis, ajoutez les lignes suivantes à la fin du fichier, en modifiant l’UID et le GID par ceux trouvés plus haut dans cet article et MOT_DE_PASSE_POSTFIXADMIN par le mot de passe du compte utilisateur de postfixadmin sur le serveur MySQL, défini lors de la configuration du paquet postfixadmin:
1 2 3 4 5 6 7 8 9 10 11 |
driver = mysql connect = host=localhost dbname=postfixadmin user=postfixadmin password=MOT_DE_PASSE_POSTFIXADMIN default_pass_scheme = MD5-CRYPT password_query = \ SELECT username as user, password, '/srv/mail/%d/%n' as userdb_home, \ 'maildir:/srv/mail/%d/%n' as userdb_mail, UID_TROUVE as userdb_uid, GID_TROUVE as userdb_gid \ FROM mailbox WHERE username = '%u' AND active = '1' user_query = \ SELECT '/srv/mail/%d/%n' as home, 'maildir:/srv/mail/%d/%n' as mail, \ UID_TROUVE AS uid, GID_TROUVE AS gid, concat('dirsize:storage=', quota) AS quota \ FROM mailbox WHERE username = '%u' AND active = '1' |
Ouvrez et éditez ensuite le fichier /etc/dovecot/conf.d/10-auth.conf, avec la commande ci-dessous par exemple:
1 |
root@serveur:~# nano /etc/dovecot/conf.d/10-auth.conf |
Modifiez la ligne suivante:
1 |
auth_mechanisms = plain |
En:
1 |
auth_mechanisms = plain login |
Commentez la ligne suivante, en ajoutant un dièse en début de ligne:
1 |
!include auth-system.conf.ext |
Et décommentez les lignes ci-dessous, en enlevant le dièse (#) en début de ligne:
1 2 |
#disable_plaintext_auth = yes #!include auth-sql.conf.ext |
Vous pouvez enregistrer et quitter l’éditeur.
Il est maintenant nécessaire d’ouvrir et d’éditer le fichier /etc/dovecot/conf.d/10-mail.conf, par exemple avec cette commande:
1 |
root@serveur:~# nano /etc/dovecot/conf.d/10-mail.conf |
Cherchez et modifiez la ligne suivante:
1 |
mail_location = mbox:~/mail:INBOX=/var/mail/%u |
En:
1 |
mail_location = maildir:/srv/mail/%d/%n |
Décommentez et modifiez également les variables suivantes:
1 2 3 4 |
#mail_uid = #mail_gid = #first_valid_uid = 500 #last_valid_uid = 0 |
En:
1 2 3 4 |
mail_uid = mail mail_gid = mail first_valid_uid = UID_TROUVE last_valid_uid = UID_TROUVE |
Bien entendu, remplacez UID_TROUVE par celui trouvé plus haut dans cet article.
Ouvrez et éditez maintenant le fichier /etc/dovecot/conf.d/10-ssl.conf, grâce à la commande ci-dessous par exemple:
1 |
root@serveur:~# nano /etc/dovecot/conf.d/10-ssl.conf |
Décommentez la ligne suivante en retirant le dièse (#) en début de ligne:
1 |
#ssl = yes |
Puis, modifiez les deux lignes suivantes:
1 2 |
ssl_cert = </etc/dovecot/dovecot.pem ssl_key = </etc/dovecot/private/dovecot.pem |
En:
1 2 |
ssl_cert = </etc/ssl/private/mail.crt ssl_key = </etc/ssl/private/mail.key |
Ouvrez et éditez ensuite le fichier /etc/dovecot/conf.d/10-master.conf, avec la commande suivante par exemple:
1 |
root@serveur:~# nano /etc/dovecot/conf.d/10-master.conf |
Décommentez et modifiez les lignes suivantes:
1 2 3 4 5 6 7 8 9 10 |
unix_listener auth-userdb { #mode = 0666 #user = #group = } # Postfix smtp-auth #unix_listener /var/spool/postfix/private/auth { # mode = 0666 #} |
En:
1 2 3 4 5 6 7 8 9 10 11 12 |
unix_listener auth-userdb { mode = 0600 user = mail group = mail } # Postfix smtp-auth unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix } |
Ouvrez et éditez ensuite le fichier /etc/dovecot/conf.d/15-lda.conf, avec la commande suivante par exemple:
1 |
root@serveur:~# nano /etc/dovecot/conf.d/15-lda.conf |
Décommentez et modifiez les variables suivantes:
1 2 3 4 5 6 |
#postmaster_address= #hostname = protocol lda { #mail_plugins = $mail_plugins } |
En:
1 2 3 4 5 6 |
postmaster_address=ADRESSE_ADMINISTRATEUR hostname=NOM_COURRIER protocol lda { mail_plugins = sieve } |
Modifiez ADRESSE_ADMINISTRATEUR par l’adresse de l’administrateur du serveur et NOM_COURRIER par le nom de courrier, c’est à dire le nom de domaine principal du serveur, choisi lors de l’installation des paquets.
Ici, nous avons activé le plugin sieve pour Dovecot. Celui-ci va nous permettre de déplacer automatiquement les spams dans le dossier IMAP Spam de la boîte aux lettres. Ainsi, ouvrez et éditez le fichier /etc/dovecot/conf.d/90-sieve.conf, par exemple, avec la commande suivante:
1 |
root@serveur:~# nano /etc/dovecot/conf.d/90-sieve.conf |
Décommentez et modifiez les lignes suivantes:
1 2 3 |
sieve = ~/.dovecot.sieve #sieve_default = /var/lib/dovecot/sieve/default.sieve sieve_dir = ~/sieve |
En:
1 2 3 |
sieve = /srv/mail/%d/%n/.dovecot.sieve sieve_default = /srv/mail/sieve.default sieve_dir = /srv/mail/%d/%n/sieve |
Puis, créez et éditez le fichier /srv/mail/sieve.default, par exemple avec la commande ci-dessous:
1 |
root@serveur:~# nano /srv/mail/sieve.default |
Placez y le contenu suivant:
1 2 3 4 |
require ["fileinto"]; if header :contains "X-Spam-Flag" "YES" { fileinto "Spam"; } |
Afin de profiter de la création automatique de certains dossiers IMAP (Envoyés, Brouillons, Spams…), nous allons modifier le fichier /etc/dovecot/conf.d/15-mailboxes.conf, avec la commande ci-dessous par exemple:
1 |
root@serveur:~# nano /etc/dovecot/conf.d/15-mailboxes.conf |
Commentez les lignes suivantes en ajoutant un dièse (#) en début de chaque ligne:
1 2 3 |
mailbox "Sent Messages" { special_use = \Sent } |
Puis, modifiez la ligne suivante:
1 |
mailbox Junk { |
En:
1 |
mailbox Spam { |
Ajoutez la ligne suivante:
1 |
auto=subscribe |
Sous chaque ligne commençant par mailbox.
Pour terminer la configuration de Dovecot, nous allons modifier les droits d’accès à son répertoire de configuration afin que personne ne puisse y accéder. Pour cela, entrez les commandes suivantes:
1 2 |
root@serveur:~# chown -R mail:dovecot /etc/dovecot root@serveur:~# chmod -R o-rwx /etc/dovecot |
- Configuration du filtre anti-spam Spamassassin et de l’antivirus ClamAv
Pour commencer la configuration du filtre anti-spam Spamassassin et de l’antivirus ClamAv, nous devons ajouter l’utilisateur amavis au groupe clamav, avec la commande suivante:
1 |
root@serveur:~# adduser clamav amavis |
Ensuite ouvrez et éditez le fichier /etc/amavis/conf.d/05-node_id, par exemple avec la commande suivante:
1 |
root@serveur:~# nano /etc/amavis/conf.d/05-node_id |
Décommentez et modifiez la ligne suivante:
1 |
#$myhostname = "mail.example.com"; |
En:
1 |
$myhostname = "NOM_COURRIER"; |
Remplacez NOM_COURRIER par votre nom de courrier défini plus haut, lors de l’installation des paquets.
Ensuite, ouvrez et éditez le fichier /etc/amavis/conf.d/15-content_filter_mode, grâce à la commande ci-dessous par exemple:
1 |
root@serveur:~# nano /etc/amavis/conf.d/15-content_filter_mode |
Décommentez les lignes suivantes en enlevant le dièse (#) en début de chaque ligne:
1 2 3 4 |
#@bypass_virus_checks_maps = ( # \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re); #@bypass_spam_checks_maps = ( # \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re); |
Ouvrez et éditez le fichier /etc/amavis/conf.d/21-ubuntu_defaults, par exemple avec la commande suivante:
1 |
root@serveur:~# nano /etc/amavis/conf.d/21-ubuntu_defaults |
Modifiez la variable suivante:
1 |
$final_spam_destiny = D_DISCARD; # (defaults to D_REJECT) |
En:
1 |
$final_spam_destiny = D_PASS; # (defaults to D_REJECT) |
Ceci permet aux spams d’arriver dans la boîte aux lettres et d’être marqués comme spam au lieu d’être purement et simplement détruits.
Ensuite, ouvrez et éditez le fichier /etc/default/spamassassin, avec la commande ci-dessous par exemple:
1 |
root@serveur:~# nano /etc/default/spamassassin |
Cherchez et modifiez les lignes suivantes:
1 2 |
ENABLED=0 CRON=0 |
En:
1 2 |
ENABLED=1 CRON=1 |
Ceci permet d’activer le filtre anti-spam Spamassassin et la mise à jour automatique de ses règles.
Par défaut, lorsqu’un courrier est détecté comme spam, le sujet de l’e-mail se voit précédé de la notion ***SPAM***. Si vous souhaitez désactiver ce comportement, ouvrez et éditez le fichier /etc/amavis/conf.d/20-debian_defaults, avec la commande suivante par exemple:
1 |
root@serveur:~# nano /etc/amavis/conf.d/20-debian_defaults |
Et commentez la ligne suivante en ajoutant un dièse (#) en début de ligne:
1 |
$sa_spam_subject_tag = '***SPAM*** '; |
Pour terminer l’installation de l’antivirus ClamAv, il nous reste encore à mettre à jour sa base de données virales. Pour cela, entrez la commande ci-dessous:
1 |
root@serveur:~# freshclam |
- Génération du certification SSL
Afin de profiter du chiffrement SSL lors de la communication entre le client de messagerie et le serveur d’e-mails ainsi que le serveur et les autres serveurs d’e-mails, il nous faut un certificat SSL. Celui-ci garantit l’authentification du serveur et le chiffrement des communications. Il existe des certificats SSL payants. Ceux-ci sont signés par des autorités reconnues qui garantissent, en termes financiers, la validité du certificat. Cependant, ceux-ci sont relativement chers. Il est possible de générer des certificats nous mêmes. Pour cela, il est nécessaire de créer dans un premier temps une autorité de certification. Celle-ci nous permettra de signer les certificats que créeront par la suite. Elle se compose d’une paire clé privée/certificat. Son certificat sera auto-signé par le serveur. Il sera, par contre, nécessaire d’installer ce certificat sur chaque poste utilisateur, qui relèvera le courrier via un client de messagerie, pour que le serveur soit reconnu. Pour ce faire, nous allons devoir créer un ensemble de fichiers. Pour cela, créez un dossier quelque part sur le serveur et placez-vous dedans, par exemple le dossier /root/certificats comme ici:
1 2 |
root@serveur:~# mkdir ~/certificats root@serveur:~# cd ~/certificats |
Ensuite, il est nécessaire de créer le fichier index.txt qui sera vide et le fichier serial qui aura pour contenu la valeur 1000, avec les commandes suivantes par exemple:
1 2 |
root@serveur:~/certificats# touch index.txt root@serveur:~/certificats# echo 1000 > serial |
Il faut ensuite copier le fichier /etc/ssl/openssl.cnf dans le dossier, par exemple avec la commande ci-dessous:
1 |
root@serveur:~/certificats# cp /etc/ssl/openssl.cnf ~/certificats |
Ouvrez et éditez le fichier openssl.cnf, avec la commande suivante par exemple:
1 |
root@serveur:~/certificats# nano openssl.cnf |
Décommentez et modifiez les variables suivantes:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[ CA_default ] dir = ./demoCA # Where everything is kept [ req_distinguished_name ] countryName_default = AU stateOrProvinceName_default = Some-State 0.organizationName_default = Internet Widgits Pty Ltd #organizationalUnitName_default = |
En:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[ CA_default ] dir = . # Where everything is kept [ req_distinguished_name ] countryName_default = FR stateOrProvinceName_default = VOTRE_DÉPARTEMENT 0.organizationName_default = VOTRE_SOCIÉTÉ organizationalUnitName_default = LE_SERVICE_DE_VOTRE_ENTREPRISE |
Bien entendu, renseignez les bonnes informations afin que nous puissions générer un certificat correct.
Ajoutez les lignes suivantes à la fin de la section [ req_distinguished_name ], normalement avant la ligne [ req_attributes ]:
1 2 3 |
localityName_default = VOTRE_VILLE commonName_default = NOM_DOMAINE emailAddress_default = EMAIL_ADMINISTRATEUR |
Bien entendu, fournissez les bonnes informations.
Enregistrez et quittez l’éditeur.
Ensuite, il convient de générer le couple clé privée/certificat de l’autorité de certification. Pour cela, tapez la commande suivante:
1 |
root@serveur:~/certificats# openssl req -new -x509 -days 1825 -nodes -out ca.crt -keyout ca.key -config openssl.cnf |
Le paramètre -days précise la durée de validité du certificat en nombre de jours, ici environ 5 ans.
La commande openssl va vous demander certaines informations afin de générer un certificat en bonne et due forme. Celles-ci sont automatiquement pré-remplies à partir du fichier openssl.cnf. Normalement, vous n’aurez qu’à valider l’ensemble des réponses en appuyant sur la touche Entrée, comme ici:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Generating a 1024 bit RSA private key .............++++++ ................................................................++++++ writing new private key to 'ca.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]: FR State or Province Name (full name) [Some-State]: VOTRE_DÉPARTEMENT Locality Name (eg, city) []: VOTRE_VILLE Organization Name (eg, company) [Internet Widgits Pty Ltd]: VOTRE_SOCIETE Organizational Unit Name (eg, section) []: LE_SERVICE_DE_VOTRE_ENTREPRISE Common Name (e.g. server FQDN or YOUR name) []: NOM_DOMAINE Email Address []: EMAIL_ADMINISTRATEUR |
Nous pouvons maintenant générer la clé privée du serveur d’e-mails qui nous permettra de crypter toutes les communications avec le client de messagerie et avec les autres serveurs d’e-mails. En plus de cette clé, nous allons générer une demande de signature. Celle-ci nous permettra de générer le certificat du serveur d’e-mails. Pour cela, entrez la commande suivante:
1 |
root@serveur:~/certificats# openssl req -new -nodes -days 1825 -out mail.csr -keyout mail.key -config openssl.cnf |
De la même façon que pour la génération du certificat de l’autorité de certification, la commande openssl va vous demander certaines informations afin de générer un certificat en bonne et due forme. Celles-ci sont automatiquement pré-remplies à partir du fichier openssl.cnf. Seule la variable Common Name est à modifier. Celle-ci prendra la valeur *.NOM_DOMAINE. Ceci nous permet de pouvoir identifier le serveur sous les sous-domaines imap.NOM_DOMAINE, pop.NOM_DOMAINE et smtp.NOM_DOMAINE. Ainsi, si vos besoins évoluent et qu’il vous faut un serveur SMTP différent d’un serveur IMAP et POP, vous n’aurez qu’à modifier votre nom de domaine. Normalement, pour les autres variables, vous n’aurez qu’à valider l’ensemble des réponses en appuyant sur la touche Entrée, comme ici:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Generating a 1024 bit RSA private key .............++++++ ................................................................++++++ writing new private key to 'mail.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]: FR State or Province Name (full name) [Some-State]: VOTRE_DÉPARTEMENT Locality Name (eg, city) []: VOTRE_VILLE Organization Name (eg, company) [Internet Widgits Pty Ltd]: VOTRE_SOCIETE Organizational Unit Name (eg, section) []: LE_SERVICE_DE_VOTRE_ENTREPRISE Common Name (e.g. server FQDN or YOUR name) []: *.NOM_DOMAINE Email Address []: EMAIL_ADMINISTRATEUR Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: |
Les champs A challenge password et An optional company name sont optionnels. Il n’est donc pas nécessaire de les remplir.
Ensuite, nous allons générer le certificat du serveur d’e-mails signé par l’autorité de certification en utilisant son certificat. Pour ce faire, tapez la commande ci-dessous:
1 2 3 4 |
root@serveur:~/certificats# openssl x509 -req -out mail.crt -in mail.csr -CA ca.crt -CAkey ca.key -CAcreateserial Signature ok subject=/C=FR/ST=VOTRE_DÉPARTEMENT/L=VOTRE_VILLE/O=VOTRE_SOCIÉTÉ/CN=*.NOM_DOMAINE/emailAddress=EMAIL_ADMINISTRATEUR Getting CA Private Key |
Le certificat et la clé du serveur d’e-mails sont maintenant correctement générés. Il ne nous reste plus qu’à les déplacer dans le dossier /etc/ssl/private, avec la commande suivante:
1 |
root@serveur:~/certificats# mv mail.crt mail.key /etc/ssl/private |
Nous pouvons supprimer le fichier mail.csr qui ne nous est plus utile, par exemple avec la commande ci-dessous:
1 |
root@serveur:~/certificats# rm mail.csr |
Nous pouvons, par contre, garder le dossier /root/certificats afin de pouvoir générer de la même manière d’autres certificats SSL en gardant la même autorité de certification. Pour cela, il suffira de relancer les deux dernières commandes openssl ci-dessus en les ajustant.
- Redémarrage des services
Pour terminer, il ne nous reste plus qu’à redémarrer les différents services qui composent notre serveur d’e-mails avec les commandes ci-dessous:
1 2 3 4 5 |
root@serveur:~# service postfix restart root@serveur:~# service spamassassin restart root@serveur:~# service clamav-daemon restart root@serveur:~# service amavis restart root@serveur:~# service dovecot restart |
- Installation et configuration de Roundcube
Afin de permettre aux utilisateurs du serveur d’e-mails d’accéder à leurs e-mails depuis leur navigateur Web, nous allons installer et configurer le Webmail Roundcube. Pour cela, il est nécessaire d’installer les paquets roundcube et roundcube-mysql, avec la commande suivante:
1 |
root@serveur:~# apt-get install roundcube roundcube-mysql |
L’outil de configuration des paquets va vous poser un ensemble de questions. Ainsi, à la première question, il vous demande s’il faut configurer la base de données de Roundcube avec db-config. Répondez par Oui, comme le montre la capture d’écran suivante:

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration de Roundcube – Partie 1
Ensuite, il demande quel est le type de base de données à utiliser pour stocker les données de Roundcube. Nous avons installé MySQL dans le précédent article. Sélectionnez donc mysql puis validez en actionnant le bouton OK, comme l’illustre l’image suivante:

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration de Roundcube – Partie 2
Pour pouvoir créer la base de données nécessaire au fonctionnement de Roundcube, l’outil de configuration a besoin du mot de passe Administrateur (root) de MySQL. Nous l’avons choisi dans la première section de l’article précédent. Renseignez le et validez par OK, comme le montre la prise d’écran ci-dessous:

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration de Roundcube – Partie 3
L’outil de configuration va également créer un compte utilisateur pour que Roundcube puisse se connecter à sa base de données. Pour cela, le compte doit être protégé par un mot de passe. Vous pouvez en générer un nouveau et le fournir ou alors laisser le champ vide pour que l’outil de configuration en génère un automatiquement. Personnellement, je préfère en générer un à l’aide de mon script de génération de mots de passe, comme ici:

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration de Roundcube – Partie 4
Si vous avez fourni un mot de passe, vous devez alors le confirmer, comme le montre la capture d’écran suivante:

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration de Roundcube – Partie 5
Ensuite, pour éviter que Roundcube ne demande sur quel serveur IMAP il doit se connecter, quand l’utilisateur se connecte au Webmail, ouvrez et éditez le fichier /etc/roundcube/main.inc.php, avec la commande ci-dessous par exemple:
1 |
root@serveur:~# nano /etc/roundcube/main.inc.php |
Cherchez et modifiez la ligne suivante:
1 |
$rcmail_config['default_host'] = ''; |
En:
1 |
$rcmail_config['default_host'] = 'localhost'; |
Pour plus de sécurité, il est possible de modifier l’adresse d’accès (l’URL) à Roundcube, de la même façon que je l’ai évoqué avec Postfix Admin plus haut dans cet article. Ainsi, au lieu de taper:
1 |
http://IP_SERVEUR/roundcube |
Vous taperez par exemple:
1 |
http://IP_SERVEUR/mesmails |
Ceci permet d’éviter que certains attaquants aient accès à Roundcube. En effet, comme il est courant d’accéder à Roundcube via l’adresse http://IP_SERVEUR/roundcube ou http://NOM_DOMAINE/roundcube, certaines personnes mal intentionnées attaquent Roundcube par brute force ou par dictionnaire. Ainsi, elles pourraient se connecter à la place des utilisateurs pour accéder au contenu des boîtes aux lettres ou envoyer des e-mails.
Pour ce faire, ouvrez et éditez fichier /etc/apache2/conf-available/roundcube.conf, par exemple avec cette commande:
1 |
root@serveur:~# nano /etc/apache2/conf-available/roundcube.conf |
Puis, décommentez et modifiez les lignes suivantes:
1 2 |
# Alias /roundcube/program/js/tiny_mce/ /usr/share/tinymce/www/ # Alias /roundcube /var/lib/roundcube |
En:
1 2 |
Alias /NOM_ACCES/program/js/tiny_mce/ /usr/share/tinymce/www/ Alias /NOM_ACCESS /var/lib/roundcube |
Bien entendu, modifiez le nom d’accès par un de votre choix.
Pour prendre en compte ces modifications, il est nécessaire de redémarrer le serveur Web Apache, avec la commande ci-dessous:
1 |
root@serveur:~# service apache2 restart |
Vous pouvez dès à présent, vous connecter au Webmail Roundcube en entrant l’adresse suivante dans votre navigateur, en modifiant le nom d’accès par celui choisi:
1 |
http://IP_SERVEUR/NOM_ACCESS |
- Débogage et configuration exemple
La configuration est maintenant terminée. Étant donné qu’elle est longue et compliquée, il est possible que votre serveur d’e-mails ne fonctionne pas du premier coup. Ainsi, pour vous aider à trouver le problème, vous pouvez consulter les fichiers journaux du serveur d’e-mails /var/log/mail.log et /var/log/mail.err. Pour cela, utilisez au choix une des commandes suivantes:
1 2 |
root@serveur:~# cat /var/log/mail.log root@serveur:~# cat /var/log/mail.err |
Je vous mets également à disposition l’ensemble des fichiers de configuration que nous avons modifié: Configuration exemple d’un serveur d’e-mails sous Ubuntu Server 14.04 LTS. La structure des fichiers de configuration, évolue au fil du temps, ils peuvent ne pas être à jour; il s’agit seulement d’une aide afin de comparer les fichiers de configuration. Ils ne doivent pas être utilisés directement comme fichiers de configuration du serveur d’e-mails.
Notre serveur d’e-mails est maintenant opérationnel. Avant de pouvoir envoyer votre premier e-mail, nous devons encore configurer le nom de domaine du serveur et créer les comptes e-mails. Ces deux étapes seront le sujet de mes deux prochains articles.
EDIT du 16/08/2104: j’ai apporté quelques modifications à cet article. Ainsi, pour créer le certificat SSL et la clé du serveur d’e-mails, nous créons en premier une autorité de certification. Le certificat et la clé du serveur d’e-mails sont renommés respectivement en /etc/ssl/private/mail.crt et en /etc/ssl/private/mail.key. Les fichiers de configuration de Postfix et Dovecot sont modifiés en conséquence. Une autre modification a été faite sur le fichier /etc/postfix/master.cf. Trois lignes de plus ont été décommentées afin d’ajouter le support du cryptage SSL en plus du support du cryptage TLS lors de l’utilisation du protocole SMTP.
Bonjour,
J’ai suivi de près tous vos tutos pour mettre en place un serveur de mail sur mon kimsufi fraîchement acquis !
Tout s’est plutôt bien passé jusqu’à la connexion à mon mail depuis roundcube.
Lorsque je tente de me connecter avec roundcube, ça mouline pas mal et puis plus rien.
Lorsque je regarde les erreurs dans mail.log j’ai :
Error: mysql(localhost): Connect failed to database (postfixadmin): Access denied for user ‘postfixadmin’@’localhost’ (using password: YES) – waiting for 125 seconds before retry
Je ne pense pas m’etre trompé dans mes mots de passe …
Vous auriez une idée du soucis ?
En tout cas félicitation pour tous vos tuto. Merci encore.
Bonjour,
Je me permet de commenter à nouveau. Depuis hier je tente de comprendre ce qui ne fonctionne pas dans ma réception de mail. Les envoie fonctionnent cette fois-ci. En revanche ce sont les réception qui ne se font pas. Lorsque je tente d’envoyer un mail à l’un de mes comptes courrier (francois-g@jhiki.com) j’obient une réponse de type Recipient address rejected: User unknown in local recipient table.
J’avoue ne plus trop savoir ou chercher depuis hier. Mon main.cf ressemble à ceci :
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
# appending .domain is the MUA’s job.
append_dot_mydomain = no
# Uncomment the next line to generate « delayed mail » warnings
#delay_warning_time = 4h
readme_directory = no
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/private/mail.crt
smtpd_tls_key_file=/etc/ssl/private/mail.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
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_un$
myhostname = jhiki.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = ns346448.ip-91-121-143.eu, localhost.localdomain, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
# SASL parameters
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain =
smtpd_sasl_authenticated_header = yes
# TLS parameters
smtp_tls_security_level = may
smtpd_tls_security_level = may
#smtpd_tls_auth_only = no
smtp_tls_note_starttls_offer = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
# SMTPD parameters
unknown_local_recipient_reject_code = 450
maximal_queue_lifetime = 7d
minimal_backoff_time = 1000s
maximal_backoff_time = 8000s
smtp_helo_timeout = 60s
smtpd_recipient_limit = 50
smtpd_soft_error_limit = 3
smtpd_hard_error_limit = 12
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname, permit
smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks, rejec$
smtpd_client_restrictions = reject_rbl_client blackholes.easynet.nl
smtpd_recipient_restrictions = reject_unauth_pipelining, permit_mynetworks, per$
smtpd_data_restrictions = reject_unauth_pipelining
smtpd_discard_ehlo_keyword_address_maps = cidr:/etc/postfix/esmtp_access
smtpd_helo_required = yes
smtpd_delay_reject = yes
disable_vrfy_command = yes
# General host and delivery info
mynetworks_style = host
virtual_mailbox_base = /home/mail
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf, mysql:$
virtual_uid_maps = static:8
virtual_gid_maps = static:8
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf, mysql:/etc$
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
# Integration with other packages
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
# Use amavis for virus and spam scanning
content_filter = amavis:[127.0.0.1]:10024
# Header manipulation
header_checks = regexp:/etc/postfix/header_checks
enable_original_recipient = no
Peut-etre que tu y trouveras l’erreur …
Merci !
Bonjour François,
j’ai comparé ton fichier avec le mien et il me paraît correct. Certains paramètres sont différents, tel que virtual_mailbox_base qui a pour valeur /home/mail alors que dans mon exemple, j’ai mis /srv/mail. L’emplacement du dossier qui contiendra les e-mails du serveur est une question de préférence (comme je l’indique dans cet article). Certaines lignes ne sont pas complètes comme les paramètres smtpd_relay_restrictions et smtpd_sender_restrictions mais je pense que c’est le système de commentaires de ce blog qui les a tronquées.
Ton utilisateur existe bien en base de données ? Lorsqu’un e-mail est envoyé à destination de ton domaine, le serveur MTA d’expédition lit l’enregistrement MX de ton domaine. Celui-ci doit pointer vers ton serveur (voir mon article sur la configuration des noms de domaines). Si tu l’as déjà correctement configuré, il est nécessaire d’attendre 24h pour que les modifications soient prises en compte. Ensuite, le serveur MTA d’expédition se connecte sur ton serveur Postfix et lui transmet l’e-mail. Pour t’aider à trouver l’origine du problème, je te conseille de consulter les fichiers /var/log/mail.log et /var/log/mail.err (avec la commande tail -f par exemple). Si tu ne peux pas te connecter avec un client de messagerie (Microsoft Outlook ou Mozilla Thunderbird), vérifies également les fichiers de configuration de Dovecot. Il s’agit du serveur Imap et du serveur Pop et il est lié au serveur Postfix.