Comment configurer le serveur de courrier postfix et Dovecot avec la base de données (MARIADB) en toute sécurité - partie 1

Comment configurer le serveur de courrier postfix et Dovecot avec la base de données (MARIADB) en toute sécurité - partie 1
Configuration du serveur de messagerie postfix dans CentOS 7

Dans ce 3 articles série Nous allons discuter de la façon de créer un Postfix serveur de messagerie avec antivirus et protection de spam dans un Centos 7 boîte. Veuillez noter que ces instructions fonctionnent également sur d'autres distributions telles que Rhel/ /Feutre et Debian/ /Ubuntu.

Partie 1: Comment créer et configurer la base de données du serveur de messagerie postfix (MARIADB) en toute sécurité Partie 2: Comment configurer Postfix et Dovecot avec des utilisateurs de domaine virtuel dans Linux Partie 3: Comment ajouter l'antivirus et la protection du spam au serveur de courrier post-fixe avec cllamav et spamassassin Partie 4: Comment installer et configurer le client de la carte Web Roundcube avec des utilisateurs virtuels dans Postfix Partie 5: Comment utiliser Sagator, une passerelle antivirus / antipam pour protéger votre serveur de messagerie

Notre plan consiste à stocker des comptes de messagerie et des alias dans un Mariadb la base de données qui est pour notre commodité sera gérée par phpmyadmin.

Si vous choisissez de ne pas installer phpmyadmin, ou traitez avec un serveur CLI uniquement, nous fournirons également le code équivalent pour créer les tables de base de données qui seront utilisées tout au long de cette série.

Étant donné que le maintien d'un serveur de message.

Créer des enregistrements A et MX pour le domaine dans DNS

Avant de poursuivre, il y a quelques conditions préalables qui doivent être respectées:

1. Vous aurez besoin d'un domaine valide enregistré via un registraire du domaine. Dans cette série, nous utiliserons www.linuxnewz.com, qui a été enregistré via Allez papa.

2. Un tel domaine doit être signalé vers l'IP externe de votre VPS ou fournisseur d'hébergement cloud. Si vous hébergez votre serveur de messagerie, vous pouvez utiliser le service offert par Freedns (nécessite l'inscription).

En tout cas, vous devez configurer UN et Mx Enregistrements pour votre domaine également (vous pouvez en savoir plus sur les enregistrements MX dans cette FAQ de Google).

Une fois ajouté, vous pouvez les rechercher à l'aide d'un outil en ligne tel que Mxtoolbox ou Voir Pour s'assurer qu'ils sont correctement configurés.

Important: Veuillez noter que cela peut prendre un certain temps (1-2 jours) jusqu'à ce que les enregistrements DNS soient propagés et que votre domaine soit disponible. En attendant, vous pouvez accéder à votre VPS via son adresse IP pour effectuer les tâches indiquées ci-dessous.

3. Configurer le Fqdn (Nom de domaine complet) de vos VP:

# hostnamectl set-hostname yourhostname 

Pour définir le nom d'hôte système, puis modifiez / etc / hôtes comme suit (remplacer Aaa.BBB.CCC.DDD, Votre nom, et ton domaine avec l'IP publique de votre serveur, votre nom d'hôte et votre domaine enregistré):

Aaa.BBB.CCC.Ddd yourhostname.ton domaine.com yourhostname 

Votre nom Le nom d'hôte du système est-il défini précédemment hostnamectl commande.

Installation des packages logiciels requis

4. Pour installer des packages logiciels requis tels que Apache, Postfix, Dovecot, MariADB, PhpMyAdmin, Spamassassin, Clamav, etc., vous devez activer le Epel dépôt:

# yum installer EPEL-Release 

5. Une fois que vous avez suivi les étapes ci-dessus, installez les packages nécessaires:

Dans les systèmes basés sur CentOS:

# yum Update && yum install httpd httpd-devel postfix dovecot dovecot-mysql spamassassin cllamav cllamav-scanner cllamav-scanner-systemd cllamav-data cllamav-update Mariadb Mariadb php php phpmyadmingin 

Dans Debian et dérivés:

# Aptitude Update && aptitude installer apache2 postfix dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-mysql spamassassin cllamav cllamav-daemon cllamav-bask mariaDB-Client mariadb phpmyadmin cllamav-bask 

6. Démarrez et activez les serveurs Web et de base de données:

Dans les systèmes basés sur CentOS:

# SystemCTL Activer httpd mariaDB # systemctl start httpd mariaDB 

Dans Debian et dérivés:

# systemctl activer apache2 mariaDB # systemctl start apache2 mariaDb 

Une fois l'installation terminée et que le service ci-dessus est activé et en cours d'exécution, nous commencerons par configurer la base de données et les tables pour stocker des informations sur les comptes de messagerie postfix.

Création de la base de données des comptes de messagerie postfix

Pour plus de simplicité, nous utiliserons phpmyadmin, un outil destiné à gérer l'administration de Mysql / / Mariadb Bases de données via une interface Web, pour créer et gérer la base de données de messagerie.

Cependant, afin de se connecter et d'utiliser cet outil, nous devons suivre ces étapes:

7. Activer le Mariadb compte (vous pouvez le faire en exécutant le mysql_secure_installation Utilitaire à partir de la ligne de commande, attribuant un mot de passe pour la racine de l'utilisateur et définition des paramètres par défaut proposés par l'outil sauf "Interdire la connexion racine à distance?«:

Désactiver la connexion racine mysql

ou autrement créer un nouvel utilisateur de base de données:

MariaDB [(Aucun)]> Créer l'utilisateur «dba« @ «localhost» identifié par «yourPasswordHere»; MariaDb [(aucun)]> accorder tous les privilèges sur * . * À 'dba' @ 'localhost'; MariaDb [(aucun)]> Privilèges de rinçage; 
Créer un nouvel utilisateur de base de données

Sécuriser Apache avec un certificat

8. Étant donné que nous utiliserons une application Web pour gérer la base de données du serveur de messagerie, nous devons prendre les précautions nécessaires pour protéger les connexions avec le serveur. Sinon, notre phpmyadmin Les informations d'identification se déplaceront en texte brut sur le fil.

Installer Sécurité de la couche de transport (TLS) Dans votre serveur, suivez les étapes décrites dans Partie 8 de la série RHCE: implémentation de HTTPS via TLS à l'aide du service de sécurité réseau (NSS) pour Apache avant de poursuivre.

Note: Si vous n'avez pas accès à la console du serveur, vous devrez trouver un autre moyen de générer l'entropie nécessaire pendant la création de clés. Dans ce cas, vous voudrez peut-être envisager d'installer outils RNG et courir rngd -r / dev / urandom.

Configurer et sécuriser PhpmyAdmin

9. Dans / etc / httpd / confre.d / phpmyadmin.confli (Centos) ou / etc / phpmyadmin / apache.confli (Debian et dérivés), localisez toutes les occurrences des lignes suivantes et assurez-vous qu'ils pointent vers l'IP publique de votre serveur:

Exiger une ip aaa.BBB.CCC.DDD Autoriser de AAA.BBB.CCC.DDD 

De plus, désactivez les alias par défaut et créez-en un nouveau pour accéder à votre page de connexion PhpMyAdmin. Cela aidera à sécuriser le site contre les bots et les attaquants externes qui ciblent www.ton domaine.com / phpmyadmin ou www.ton domaine.com / phpmyadmin.

#Alias ​​/ phpmyadmin / usr / share / phpmyadmin #alias / phpmyadmin / usr / share / phpmyadmin alias / managedb / usr / share / phpmyadmin 

Aussi, ajoutez la ligne suivante à l'intérieur :

Exiger tous les accords 
Sécuriser phpmyadmin

Créer Apache VirtualHost pour le domaine

dix. Assurez-vous que votre domaine est ajouté aux sites activés. Créer / etc / httpd / sites-disponible / linuxnewz.com.confli (Centos) ou / etc / apache2 / sites-disponible / linuxnewz.com (Debian) avec le contenu suivant (assurez-vous que le Document de document, les sites disponibles, et compatible avec les sites Les répertoires existent):

 Servername www.linuxnewz.com Serveralias LinuxNewz.com documentroot / var / www / linuxnewz.com / public_html errorlog / var / www / linuxnewz.com / erreur.journal Customlog / var / www / linuxnewz.com / demandes.Les index d'options combinées de journal suivent  

et le lien symbolique:

Sur Centos:
# ln -s / etc / httpd / sites-disponible / linuxnewz.com.conf / etc / httpd / sites compatible / linuxnewz.com.confli 
Sur Debian:
# a2ensite linuxnewz.com 

et tu as fini.

Configuration de la base de données de messagerie postfix

11. Maintenant, vous pouvez ouvrir votre phpmyadmin interface à https: // www.ton domaine.com / managedb (noter que managedb est l'alias que nous avons mis en place plus tôt pour le répertoire de données PhpMyAdmin).

Si cela ne fonctionne pas (qui peut être causé par un retard dans la propagation ou le manque de configuration des enregistrements DNS) pour le moment, vous pouvez essayer d'utiliser l'adresse IP publique de votre serveur au lieu de www.ton domaine.com:

Connexion phpmyadmin

Quoi qu'il en soit, après vous vous connecter à PhpMyAdmin, vous verrez l'interface suivante. Cliquez sur Nouveau Dans la section de gauche:

Créer une nouvelle base de données dans phpmyadmin

Entrez un nom pour la base de données (EmailServer_DB Dans ce cas, pas besoin de sélectionner un collation) et de cliquer Créer:

Entrez le nom de la base de données

12. Sur l'écran suivant, choisissez un nom Pour le premier tableau (où nous stockons les domaines que ce serveur de messagerie gérera.

Veuillez noter que même lorsque dans cette série, nous ne gérerons qu'un seul domaine, vous pouvez ajouter plus tard) et le nombre de champs que vous souhaitez, puis cliquez sur Aller. Vous serez invité à nommer et à configurer ces deux champs, où vous pouvez procéder en toute sécurité comme indiqué dans les images suivantes:

Créer un tableau de base de données

Lorsque vous choisissez PRIMAIRE sous Indice pour Domainid, Acceptez les valeurs par défaut et cliquez Aller:

Ajouter l'index de la base de données

Alternativement, vous pouvez cliquer Aperçu SQL Pour voir le code sous le capot:

Créer une table 'e-mailserver_db'.'Domain_tbl' ('domainid' int not null auto_increment, 'domainName' varchar (50) pas null, key primaire ('domainid')) moteur = innodb; 
Code d'index de la table de base de données

Lorsque vous êtes prêt, cliquez Sauvegarder Pour confirmer les modifications. Vous pourrez alors cliquer Nouveau sous EmailServer_DB Pour continuer à créer des tables:

Créer des tables sous la base de données

13. Maintenant, suivez ces étapes pour créer le reste des tables. Clique sur le SQL onglet et entrez le code indiqué pour chaque objet de base de données.

Notez que dans ce cas, nous avons choisi de créer le tableau à l'aide d'une requête SQL en raison des relations qui doivent être établies entre différentes tables:

Users_tbl

Créer une table 'users_tbl' ('userId' int not null auto_increment, 'domainId' int not null, 'mot de passe' varchar (100) pas nul Clé 'e-mail' ('e-mail'), clé étrangère (domaineID) références domains_tbl (domainId) sur supprimer cascade) moteur = innodb; 
Créer une table utilisateur postfix

Vous devriez obtenir un message de confirmation (sinon, PhpMyAdmin provoquera des erreurs de syntaxe):

Confirmation mysql

Alias_tbl

Créer la table 'alias_tbl' ('aliasid' int not null auto_increment, 'domainId' int not null, 'source' varchar (100) pas nul Key (domainID) références domains_tbl (domainID) sur delete cascade) moteur = innodb; 

(Cliquez sur Aller en bas pour poursuivre la création du tableau).

Jusqu'à présent, vous devriez avoir la structure de la base de données suivante:

Structure de base de données

Ce qui signifie que vous êtes prêt à commencer à ajouter des enregistrements dans la section suivante.

Création d'un domaine postfix, utilisateurs et alias

14. Nous allons maintenant insérer les enregistrements suivants dans les trois tables. Les mots de passe pour [Protégé par e-mail] et [Protégé par e-mail] sera crypté et le Insérer dans users_tbl déclaration.

Veuillez également noter que les e-mails envoyés à [Protégé par e-mail] sera redirigé vers [Protégé par e-mail]:

Insérer dans DOMAIS_TBL (DomainName) Valeurs ('LinuxNewz.com '); Insérer dans users_tbl (domainid, mot de passe, e-mail) VALEURS (1, Encrypt ('PasswordForFirstemailAccount', Concat ('6 $ $', substring (sha (rand ()), -16))), '[e-mail protégé]'); INSERT IN USERS_TBL (DomainId, Mot de passe, Email) Valeurs (1, Encrypt ('PasswordForsEcondeMailAccount', Concat ('6 $ $', substring (sha (rand ()), -16))), '[e-mail protégé]'); Insérer dans Alias_tbl (DomainId, Source, Destination) VALEURS (1, '[EMAIL Protégé]', '[Protégé par e-mail]'); 

Après avoir ajouté notre domaine, deux comptes d'utilisateurs et un alias e-mail, nous sommes prêts à continuer de configurer notre serveur de messagerie dans le prochain article de cette série, où nous allons configurer Dovecot et Postfix.

Résumé

Dans cet article, nous avons répertorié les packages requis pour installer un serveur de messagerie postfix dans un CENTOS 7 VPS, et expliqué comment gérer la base de données sous-jacente à l'aide de phpmyadmin.

Dans les deux prochains articles, nous passerons en revue la configuration des deux programmes qui prendront en charge la distribution des e-mails pour notre domaine (Partie 2) et vous montrer comment ajouter une protection contre le spam et les virus (Partie 3) pour votre serveur.

Jusque-là, n'hésitez pas à nous contacter en utilisant le formulaire ci-dessous si vous avez des questions ou des commentaires.