Image

(Dernier changement: 22.04.2024)

Debian 12 Linux Mail Server (Nginx, MariaDB, PHP, Postfix (DNSBL, DKIM, SPF), Dovecot, PostfixAdmin, SpamAssassin (Base, Self-learning by Spam folder), Sieve, Quota, Fail2Ban, Roundcube (Calendar, Managesieve), Fetchmail, Imapsync)

Ce guide montre comment configurer un serveur de messagerie à part entière sur un VPS avec Linux Debian 12. La tâche consiste à obtenir un serveur d'entreprise prêt à l'emploi avec la possibilité de gérer des domaines et des boîtes aux lettres via une interface Web. Nous installerons les services de messagerie de base, l'outil d'administration postfixadmin avec lequel vous pouvez ajouter des domaines, des adresses e-mail, ainsi que l'interface Web roundcube pour un travail pratique avec le courrier via un navigateur. Dans ce guide, nous installons en tant que root, si vous avoir une utilisation normale de la commande sudo.


Apparition de l'interface web du système de messagerie et d'administration:

Questions les plus fréquemment posées:

  • Je souhaite acheter Kaspersky Security pour me protéger contre les spams et les virus. Voulez-vous l'installer pour moi ?

    Oui, si vous commandez un assemblage de serveur de messagerie et une licence pour Kaspersky Security, l'installation et la configuration sont gratuites. Ajoutez licence sur le bon de commande et spécifiez le nombre requis de boîtes aux lettres.

  • Ce serveur dispose-t-il d'un outil de migration pour transférer tous les e-mails et dossiers en respectant toute la hiérarchie de la structure ?

    Oui, imapsync est installé sur le serveur, ce qui permet de transférer toutes les boîtes aux lettres et tous les dossiers en respectant la structure d'origine, il vous suffira de configurer les règles de tri elles-mêmes dans l'interface web de la boîte aux lettres.

  • Vais-je obtenir un serveur prêt à l'emploi tout de suite, et après avoir créé des boîtes aux lettres dans l'interface d'administration, fonctionneront-elles ?

    Oui, le serveur est entièrement configuré et prêt à fonctionner, tout ce que vous avez à faire est d'entrer un enregistrement MX dans l'éditeur DNS et de spécifier l'adresse IP du serveur de messagerie pour votre domaine.

  • Si vous avez des questions sur la configuration correcte des enregistrements DNS, la migration des boîtes aux lettres et d'autres questions, pouvez-vous effectuer ces réglages ?

    Oui, puisque tout le monde a des noms de domaine différents, le serveur est livré avec un domaine de test pour un exemple, vous devrez ajouter le vôtre, cela ne prend pas beaucoup de temps et si nécessaire, nous pouvons faire ces paramètres pour vous, il vous suffit de fournir des noms de domaine.

  • Puis-je modifier moi-même les paramètres des services, ainsi que définir les miens, par exemple, héberger plusieurs sites sur le serveur de messagerie ?

    Oui bien sûr. Après paiement, vous recevrez un serveur configuré selon la description, le login et le mot de passe pour la gestion des boîtes aux lettres, ainsi qu'un accès root complet. Le guide fourni réduit considérablement le temps à la fois pour la configuration elle-même et pour les tests, et ce que nous configurons exactement est indiqué dans la description. Le principal avantage est une configuration de serveur de messagerie réalisable sans aucune restriction.

  • Nous voulons que toutes les données soient avec nous. Pouvez-vous faire tout ce réglage sur nos équipements ?

    Oui, vous pouvez commander l'installation et le paramétrage de cette configuration sur votre équipement en utilisant le lien.

  • Comme nous le comprenons, l'assemblage fini est proposé uniquement sur un serveur VPS, mais nous souhaitons vous commander un serveur VDS pour plusieurs raisons.

    Nous pouvons configurer cette description en payant un serveur VDS (Debian 12) pendant un an d'un coup. L'installation prendra 2 à 3 jours à compter de la date de paiement.

La configuration serveur préconfigurée est disponible sur le bon de commande.

1. Mettre à jour les progiciels

apt update
apt upgrade

2. Installer LEMP

Installation de LEMP décrit dans l'un des montages, nous aurons besoin de cet ensemble pour le fonctionnement de l'interface Web de messagerie, du système d'administration et de gestion de la boîte aux lettres, ainsi que de la base de données pour stocker les paramètres.

3. Configurer un pare-feu pour les services de messagerie

iptables -I INPUT 1 -p tcp --match multiport --dports 25,110,143,465,587,993,995 -j ACCEPT

Gardons les règles 

apt install iptables-persistent
netfilter-persistent save

4. Installer et configurer PostfixAdmin

Ce package vous permet de gérer notre serveur de messagerie via l'interface Web sans recourir à la console.

4.1 Installez le paquet lui-même

apt install php-mysql php-mbstring php-imap
systemctl restart php8.2-fpm
wget https://sourceforge.net/projects/postfixadmin/files/latest/download -O postfixadmin.tar.gz
mkdir /usr/share/nginx/html/postfixadmin
tar -C /usr/share/nginx/html/postfixadmin -xvf postfixadmin.tar.gz --strip-components 1
mkdir /usr/share/nginx/html/postfixadmin/templates_c
chown -R www-data:www-data /usr/share/nginx/html/postfixadmin

4.2 Créons maintenant la base de données:

mysql -u root -p

> CREATE DATABASE postfix DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
> GRANT ALL ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'postfix1HuRaf92';
> \q

4.3 Créons un fichier de configuration avec le contenu suivant:

vi /usr/share/nginx/html/postfixadmin/config.local.php


$CONF['configured'] = true;
$CONF['default_language'] = 'ru';
$CONF['database_password'] = 'postfix1HuRaf92';
$CONF['emailcheck_resolve_domain']='NO';

?>

Ouvrez un navigateur et entrez l'adresse http://host-ip/postfixadmin/public/setup.php

Vous devez trouver un mot de passe, puis cliquer sur le bouton Generate setup_password hash, pour générer un hachage.

Copiez la ligne entière et ajoutez-la au fichier:

 vi /usr/share/nginx/html/postfixadmin/config.local.php

Vous devez actualiser la page après l'enregistrement http://host-ip/postfixadmin/public/setup.php et connectez-vous avec le mot de passe donné. PostfixAdmin sera installé.

Ensuite, nous devons ajouter un super utilisateur (un utilisateur avec tous les droits). Dans le champ Admin, vous devez spécifier l'utilisateur sous forme de mail root@mail-domain.tld

Passons maintenant à la page http://host-ip/postfixadmin/public/login.php et entrez les données de l'utilisateur créé:

5. Installer et configurer le service Postfix

apt install postfix postfix-mysql

Lors de l'installation, la fenêtre de configuration de Postfix apparaîtra - laissez l'élément Site Internet

5.1 Créons un groupe et des utilisateurs pour travailler avec les dossiers sweatbox

groupadd -g 1024 vmail
useradd -d /home/mail -g 1024 -u 1024 vmail -m
chown vmail:vmail /home/mail

5.2 Apportons des modifications au fichier de configuration 

 vi /etc/postfix/main.cf

mydestination = localhost.$mydomain, localhost, localhost.localdomain

...

inet_protocols = ipv4

...

smtpd_tls_cert_file = /etc/ssl/mail/public.pem
smtpd_tls_key_file = /etc/ssl/mail/private.key

Ensuite, ajoutez les lignes suivantes à la fin du fichier de configuration:

 /etc/postfix/main.cf

virtual_mailbox_base = /home/mail
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 1024
virtual_uid_maps = static:1024
virtual_gid_maps = static:1024
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1

smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

smtp_use_tls = yes
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_helo_required = yes

Créer un fichier avec des paramètres d'alias pour accéder à la base de données

vi /etc/postfix/mysql_virtual_alias_maps.cf

user = postfix
password = postfix1HuRaf92
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'

Créer un fichier avec les paramètres de domaine pour accéder à la base de données

vi /etc/postfix/mysql_virtual_domains_maps.cf

user = postfix
password = postfix1HuRaf92
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%u'

Créons un fichier avec les paramètres de la boîte aux lettres pour accéder à la base de données

vi /etc/postfix/mysql_virtual_mailbox_maps.cf

user = postfix
password = postfix1HuRaf92
hosts = localhost
dbname = postfix
query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'

Ouvrez le fichier de configuration principal et ajoutez à la toute fin de la ligne:

vi /etc/postfix/master.cf

submission   inet  n  -  n  -  -  smtpd
  -o smtpd_tls_security_level=may
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=/var/spool/postfix/private/auth
  -o smtpd_sasl_security_options=noanonymous
  -o smtpd_sasl_local_domain=$myhostname
smtps   inet  n  -  n  -  -  smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
dovecot   unix  -  n  n  -  -  pipe
  flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}

Créons des certificats de sécurité à l'aide de la commande: 

mkdir -p /etc/ssl/mail
openssl req -new -x509 -days 1461 -nodes -out /etc/ssl/mail/public.pem -keyout /etc/ssl/mail/private.key -subj "/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=mail-domain.tld"

Dans ce cas, nous avons créé un certificat auto-signé, pour qu'il fonctionne sans avertissement de sécurité, vous devez acheter Certificat SSL.

Configuration finale du service:

systemctl enable postfix
systemctl restart postfix

6. Installer et configurer Dovecot

apt install dovecot-imapd dovecot-pop3d dovecot-mysql

6.1 Configuration du stockage du courrier

vi /etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:/home/mail/%d/%u/

6.2 Configuration de l'autorisation

vi /etc/dovecot/conf.d/10-master.conf

service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }

  unix_listener auth-userdb {
    mode = 0600
    user = vmail
    group = vmail
  }
}

Modifier les paramètres d'autorisation de la base de données

vi /etc/dovecot/conf.d/10-auth.conf

#!include auth-system.conf.ext
!include auth-sql.conf.ext

Commentons la ligne par défaut et activons la ligne avec le mot sql dans le texte.

6.3 Configuration des certificats SSL

vi /etc/dovecot/conf.d/10-ssl.conf

ssl = required
ssl_cert =
ssl_key =

Configurons la création automatique de dossiers lors de la première autorisation de l'utilisateur dans le courrier.

vi /etc/dovecot/conf.d/15-lda.conf

lda_mailbox_autocreate = yes

6.4 Configurer une connexion à la base de données

vi /etc/dovecot/conf.d/auth-sql.conf.ext

passdb {
  …
  args = /etc/dovecot/dovecot-sql.conf.ext
}

userdb {
  …
  args = /etc/dovecot/dovecot-sql.conf.ext
}

6.5 Ajouter des paramètres au fichier de configuration

vi /etc/dovecot/dovecot-sql.conf.ext

driver = mysql
connect = host=localhost dbname=postfix user=postfix password=postfix1HuRaf92
default_pass_scheme = MD5-CRYPT
password_query = SELECT password FROM mailbox WHERE username = '%u'
user_query = SELECT maildir, 1024 AS uid, 1024 AS gid FROM mailbox WHERE username = '%u'
user_query = SELECT CONCAT('/home/mail/',LCASE(`domain`),'/',LCASE(`maildir`)), 1024 AS uid, 1024 AS gid FROM mailbox WHERE username = '%u'

6.6 Configurer l'interface sur laquelle le service s'exécutera

vi /etc/dovecot/dovecot.conf

listen = *

Configuration finale du service

systemctl enable dovecot
systemctl restart dovecot

7. Configurer un domaine et des boîtes aux lettres

Allons à l'interface Web et configurons le domaine pour qu'il fonctionne avec le courrier: http://host-ip/postfixadmin/public/.

Ensuite, ajoutez un domaine au menu du haut:

Après avoir ajouté le domaine, créons une boîte aux lettres.

8. Installer et configurer le service de messagerie Web, Roundcube

Téléchargez la dernière version LTS du package et déployez-la sur notre serveur

wget https://github.com/roundcube/roundcubemail/releases/download/1.6.2/roundcubemail-1.6.2-complete.tar.gz
mkdir /usr/share/nginx/html/webmail
tar -C /usr/share/nginx/html/webmail -xvf roundcubemail-*.tar.gz --strip-components 1
cp /usr/share/nginx/html/webmail/config/config.inc.php.sample /usr/share/nginx/html/webmail/config/config.inc.php
chown -R www-data:www-data /usr/share/nginx/html/webmail

Ouvrez le fichier de configuration et modifiez

vi /usr/share/nginx/html/webmail/config/config.inc.php

$config['db_dsnw'] = 'mysql://roundcube:roundcube1Yusm24M@localhost/roundcubemail';
$config['enable_installer'] = true;

Trouvons également le paramètre et rendons-le vide: $config['smtp_pass'] = '';  

Ajouter un timing à ce fichier de configuration:

vi /usr/share/nginx/html/webmail/config/config.inc.php

$config['drafts_mbox'] = 'Drafts';
$config['junk_mbox'] = 'Junk';
$config['sent_mbox'] = 'Sent';
$config['trash_mbox'] = 'Trash';
$config['create_default_folders'] = true;

Créons une base pour roundcubemail dans MariaDB, spécifiée dans le fichier de configuration:

mysql -uroot -p

> CREATE DATABASE roundcubemail DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
> GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY 'roundcube1Yusm24M';
> quit

Importation de la base de données:

mysql -uroot -p roundcubemail < /usr/share/nginx/html/webmail/SQL/mysql.initial.sql

Installez les packages php nécessaires:

apt install php-pear php-intl php-ldap php-net-smtp php-gd php-imagick php-zip php-curl php-dom php-xml php-mcrypt

Si une erreur s'est produite lors de l'installation de php-mcrypt, installez-le manuellement

apt install php-dev libmcrypt-dev
pecl channel-update pecl.php.net
pecl install mcrypt-1.0.5

vi /etc/php/8.2/fpm/conf.d/99-mcrypt.ini

extension=mcrypt.so

Configurez le service php:

vi /etc/php/8.2/fpm/php.ini

date.timezone = "Europe/Moscow"
post_max_size = 50M
upload_max_filesize = 50M

Des limites de 50 mégaoctets sont présentées à titre d'exemple, vous pouvez définir les vôtres, elles vous permettront de joindre des pièces jointes plus volumineuses à la lettre.

systemctl restart php8.2-fpm

Fixons les limites dans nginx lui-même

vi /etc/nginx/nginx.conf

http {

    ...
    client_max_body_size 50M;
    ...
systemctl restart nginx

Ensuite, nous continuerons l'installation dans le navigateur en utilisant le lien http://host-ip/webmail/installer/

En suivant les instructions, installez rouncube, puis sur la page suivante, nous vérifions que tous les éléments sont dans l'état OK. Installation terminée.

Supprimez le programme d'installation et désactivez l'installation dans le fichier de configuration

rm -rf /usr/share/nginx/html/webmail/installer
vi /usr/share/nginx/html/webmail/config/config.inc.php

$config['enable_installer'] = false;

Suivons le lien http://host-ip/webmail/ et accédez à la messagerie Web en utilisant l'adresse e-mail complète et le mot de passe comme identifiant.

9. Dernière étape de configuration

Notre serveur VPS est configuré pour fonctionner avec le courrier, nous devons maintenant enregistrer ou remplacer l'enregistrement MX par l'adresse IP de notre serveur dans les paramètres du nom de domaine :

В Éditeur DNS les lignes ressembleront à ceci:

Une fois les entrées enregistrées, il est nécessaire spécifier la zone inverse pour l'adresse IP (PTR)

Le serveur de messagerie Linux Debain 12 Enterprise est prêt à fonctionner, la version comprend également la configuration des services et des options répertoriés ci-dessous:




Nilsen
21.12.2023 18:14
Quelqu un peut m aider pour l envoie de mail car il dit toujours " SMTP error() : Authentification failed "
Synay Support
21.12.2023 18:25
Vérifiez votre connexion à la base de données, puisque dans cet exemple l'autorisation passe par elle. Ceux. Une fois qu'un utilisateur est créé, il doit être créé dans la base de données.

Dans l'exemple, vous pouvez utiliser à la fois SSL et aucun certificat requis. Cette option peut être temporairement désactivée

vi /etc/dovecot/conf.d/10-ssl.conf
ssl = required

vi /etc/postfix/main.cf
smtpd_tls_auth_only = yes

et en désactivant ces paramètres et en redémarrant les services, essayez de vous connecter sans certificat