serveur_hebergement:serveur_mail:partie_3_postfixadmin

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
serveur_hebergement:serveur_mail:partie_3_postfixadmin [2022/08/31 19:40] fateserveur_hebergement:serveur_mail:partie_3_postfixadmin [2023/08/08 14:00] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 ====== Partie 3 : Postfixadmin ====== ====== Partie 3 : Postfixadmin ======
  
-Postfixadmin va nous servir à créer des adresses email virtuellescomprenez par là des adresses mails non liées à un utilisateur local du serveur comme root ou fate.+Postfixadmin est une interface web qui permet de gérer les comptesles domaines et les alias sur un serveur de messagerie électronique Postfix.
  
-Vous avez besoin d'avoir une base de donnée Mysql/MariaDB. 
  
-Allez dans le répertoire /var/www et lancez la commande <code bash>sudo -u www-data wget https://github.com/postfixadmin/postfixadmin/archive/postfixadmin-3.3.11.tar.gz +===== Installation =====
-</code> pour télécharger Postfixadmin puis sudo -u www-data tar xzfv postfixadmin-3.3.11.tar.gz pour l'extraire. Enfin, renommez le répertoire postfixadmin-postfixadmin-3.3.11 en postfixadmin : <code bash>sudo -u www-data mv postfixadmin-postfixadmin-3.3.11/ postfixadmin</code>.+
  
-Créez le répertoire /var/www/postfixadmin/templates_c avec l'utilisateur www-data : <code bash>sudo -u www-data mkdir /var/www/postfixadmin/templates_c +Allez dans le répertoire /var/www et lancez la commande suivante pour télécharger Postfixadmin : 
-</code>+<code bash>sudo -u www-data wget https://github.com/postfixadmin/postfixadmin/archive/postfixadmin-3.3.11.tar.gz</code> 
  
-Créez la base de donnée pour postfix (remplacez le mot de passe)+Extrayez l'archive 
-<code sql>sudo mysql -u root+<code bash>sudo -u www-data tar xzfv postfixadmin-3.3.11.tar.gz</code> 
  
-create database postfixadmin;+Puis renommez le répertoire postfixadmin-postfixadmin-3.3.11 en postfixadmin :  
 +<code bash>sudo -u www-data mv postfixadmin-postfixadmin-3.3.11/ postfixadmin</code>
  
-grant all privileges on postfixadmin.* to 'postfixadmin'@'localhost' identified by 'motdepasse';+Créez le répertoire /var/www/postfixadmin/templates_c avec l'utilisateur www-data :  
 +<code bash>sudo -u www-data mkdir /var/www/postfixadmin/templates_c</code>
  
-flush privileges;+===== Base de données =====
  
-exit;</code>+On a besoin de créer manuellement la base de données pour Postfixadmin.
  
-Créez le fichier /var/www/postfixadmin/config.local.php et ajoutez les lignes suivantes (remplacez le mot de passe) :  +Lancez mysql 
-<code><?php +<code bash>sudo mysql</code>
-$CONF['configured'] = true; +
-$CONF['database_type'] = 'mysqli'; +
-$CONF['database_host'] = 'localhost'; +
-$CONF['database_port'] = '3306'; +
-$CONF['database_user'] = 'postfixadmin'; +
-$CONF['database_password'] = 'motdepasse'; +
-$CONF['database_name'] = 'postfixadmin'; +
-$CONF['encrypt'] = 'dovecot:ARGON2I'; +
-$CONF['dovecotpw'] = "/usr/bin/doveadm pw -r 5"; +
-if(@file_exists('/usr/bin/doveadm')) { // @ to silence openbase_dir stuff; see https://github.com/postfixadmin/postfixadmin/issues/171 +
-    $CONF['dovecotpw'] = "/usr/bin/doveadm pw -r 5"; # debian +
-+
-</code>+
  
-Créez le fichier /etc/apache2/sites-available/postfixadmin.domaine.fr.conf et ajoutez les lignes suivantes afin de pouvoir accéder à l'interface web de Postfixadmin (remplacez domaine.fr par votre domaine) :+Créez la base de données : 
 +<code sql>create database postfixadmin;</code>
  
-<code apache> +Créez l'utilisateur postfixadmin et donnez-lui tous les droits sur la base (changez "motdepasse" par le mot de passe de votre choix) : 
-<VirtualHost *:80 +<code sql>grant all privileges on postfixadmin.to 'postfixadmin'@'localhost' identified by 'motdepasse';</code>
  
-        DocumentRoot /var/www/postfixadmin/public+Rechargez les droits : 
 +<code sql>flush privileges;</code>
  
-        ServerName postfixadmin.domaine.fr +Sortez : 
-                                                            +<code bash>exit;</code>
-        Redirect / https://postfix.domaine.fr/+
  
-</VirtualHost>+===== Configuration Dovecot =====
  
 +Ouvrez le fichier dovecot-sql.conf.ext pour configurer l'accès à la base de domaine pour Dovecot (qui gère l'authentification dans notre configuration) :
 +<code bash>sudo nano /etc/dovecot/dovecot-sql.conf.ext</code> 
 +Ajoutez ces lignes à la fin (remplacez "motdepasse" par le mot de passe que vous avez choisi précédemment) :
 +<code>
 +driver = mysql
  
-<VirtualHost *:443> +connect = host=localhost dbname=postfixadmin user=postfixadmin password=motdepasse
- +
-        DocumentRoot /var/www/postfixadmin/public +
- +
-        ServerName postfixadmin.domaine.fr +
-        ServerAdmin webmaster@domaine.fr +
- +
-        CustomLog ${APACHE_LOG_DIR}/postfixadmin.access.log combined +
-        ErrorLog ${APACHE_LOG_DIR}/postfixadmin.error.log +
-        LogLevel warn+
  
-        <IfModule mod_ssl.c> +default_pass_scheme = ARGON2I
-                SSLEngine on +
-                SSLCertificateFile /etc/letsencrypt/live/domaine.fr/fullchain.pem +
-                SSLCertificateKeyFile /etc/letsencrypt/live/domaine.fr/privkey.pem+
  
-                Header set Content-Security-Policy "script-src 'self' 'unsafe-inline'unsafe-eval' *.wp.com; style-src 'self' 'unsafe-inline'; connect-src 'self'; media-src 'self';  child-src 'self'; object src 'self'; form-action 'self'; img-src 'self' *.gravatar.com *.wp.com data:"+password_query = SELECT username AS user,password FROM mailbox WHERE username = '%uAND active='1'
  
-                # Modern configurationtweak to your needs  +user_query = SELECT maildir2000 AS uid, 2000 AS gid FROM mailbox WHERE username = '%u' AND active='1'
-                SSLProtocol         all -SSLv3 -TLSv1 -TLSv1.1 +
-                SSLCipherSuite          ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256 +
-                SSLHonorCipherOrder     on +
-                SSLCompression          off +
-                SSLSessionTickets       off +
-        </IfModule>+
  
-        <Directory /var/www/postfixadmin/> +iterate_query = SELECT username AS user FROM mailbox
-                Options FollowSymLinks MultiViews +
-                AllowOverride All +
-                Order allow,deny +
-                allow from all +
-        </Directory> +
-</VirtualHost>                              +
-                                                            +
-<IfModule mod_ssl.c> +
-        SSLStaplingCache shmcb:/var/run/ocsp(128000) +
-</IfModule>+
 </code> </code>
  
-Activez le fichier de configuration : <code bash>sudo a2ensite postfix.domaine.fr</code>+Passons à la configuration de Postfixadmin pour accéder à la base
  
-Installez les modules PHP : <code bash>sudo aptitude install php7.4-fpm php7.4-imap php7.4-mbstring php7.4-mysql php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-bz2 php7.4-intl php7.4-gmp</code>+===== Configuration Postfixadmin =====
  
-Redémarrer Apache2 : <code bash>sudo systemctl restart apache2.service</code> +Créez le fichier config.local.php dans le répertoire de Postfixadmin : 
- +<code bash>sudo -u www-data nano /var/www/postfixadmin/config.local.php</code>  
-Ajouter l'utilisateur www-data au groupe dovecot : <code bash>sudo adduser www-data dovecot</code> +Ajoutez les lignes suivantes (remplacez le mot de passe) :  
- +<code><?php 
-Afin que l'utilisateur www-data est accès aux stats de Dovecot lancez le commandes suivantes +$CONF['configured'] = true; 
-<code> +$CONF['database_type'] = 'mysqli'; 
-sudo chown root:dovecot /var/run/dovecot/stats-* +$CONF['database_host'] = 'localhost'; 
-sudo chmod 660 /var/run/dovecot/stats-*+$CONF['database_port'] = '3306'; 
 +$CONF['database_user'] = 'postfixadmin'; 
 +$CONF['database_password'] = 'motdepasse'; 
 +$CONF['database_name'] = 'postfixadmin'; 
 +$CONF['encrypt'] = 'dovecot:ARGON2I'; 
 +$CONF['dovecotpw'] = "/usr/bin/doveadm pw -r 5"; 
 +if(@file_exists('/usr/bin/doveadm')) { // @ to silence openbase_dir stuff; see https://github.com/postfixadmin/postfixadmin/issues/171 
 +    $CONF['dovecotpw'] = "/usr/bin/doveadm pw -r 5"; # debian 
 +}
 </code> </code>
- 
-Allez à l'adresse https://postfixadmin.mondomaine.fr/setup.php afin de lancer l'installation de Postfixadmin 
- 
-Générer le setup_password et rajoutez la ligne $CONF['setup_password'] au fichier de config de Postfixadmin comme indiqué puis rafraîchissez la page. 
-Rentrez le setup_password que vous avez utilisez précédemment puis créez l'utilisateur admin. Dans le champ Administrateur il faut entrer une adresse mail et non un nom d'utilisateur. 
  
 Maintenant, créez le dossier /etc/postfix/sql/ Maintenant, créez le dossier /etc/postfix/sql/
Ligne 124: Ligne 92:
 </code> </code>
  
 +Ensuite, on configure Postfix.
  
-Créez le fichier /etc/postfix/sql/mysql_virtual_mailbox_maps.cf et ajoutez les lignes suivantes :+===== Configuration Postfix ===== 
 + 
 +On va créer l'utilisateur vmail avec l'ID 2000 et le groupe ID 2000 : 
 +<code bash>sudo adduser vmail --system --group --uid 2000 --disabled-login --no-create-home</code> 
 + 
 +Créez le répertoire /var/vmail :  
 +<code bash>sudo mkdir /var/vmail/</code> 
 + 
 +Changer le propriétaire du répertoire :  
 +<code bash>sudo chown vmail:vmail /var/vmail/ -R</code> 
 + 
 +Ouvrez le fichier main.cf : 
 +<code bash>sudo nano /etc/postfix/main.cf</code> 
 + 
 +Ajoutez les lignes suivantes pour la gestion des adresses et domaines avec Postfixadmin via la base de données précédemment créé : 
 +<code> 
 +# Noms de domaine des boites de courriel 
 +virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf 
 +# Adresses des courriels (adresses réelles et alias) 
 +virtual_mailbox_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf 
 +# Redirection des courriels à destination d'une adresse vers une autre adresse 
 +virtual_alias_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf 
 + 
 +# UID et GID de l'utilisateur vmail 
 +virtual_minimum_uid = 2000 
 +virtual_uid_maps = static:2000 
 +virtual_gid_maps = static:2000 
 +</code> 
 + 
 +On va maintenant créer tous les fichiers .cf que l'on a ajouté dans le fichier main.cf. Remplacez le "motdepasse" par le mot de passe que vous avez choisi lors de la création de la base de données. 
 + 
 +Créez le fichier mysql_virtual_mailbox_maps.cf : 
 +<code bash>sudo nano /etc/postfix/sql/mysql_virtual_mailbox_maps.cf</code>  
 +Ajoutez les lignes suivantes :
 <code> <code>
 user = postfixadmin user = postfixadmin
-password = motdepassesqlpostfixadmin+password = motdepasses
 hosts = localhost hosts = localhost
 dbname = postfixadmin dbname = postfixadmin
Ligne 135: Ligne 137:
 </code> </code>
  
- +Créez le fichier mysql_virtual_alias_domain_mailbox_maps.cf : 
-Créez le fichier /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf et ajoutez les lignes suivantes :+<code bash>sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf</code>  
 +Ajoutez les lignes suivantes :
 <code> <code>
 user = postfixadmin user = postfixadmin
-password = motdepassesqlpostfixadmin+password = motdepasse
 hosts = localhost hosts = localhost
 dbname = postfixadmin dbname = postfixadmin
Ligne 145: Ligne 148:
 </code> </code>
  
- +Créez le fichier mysql_virtual_alias_maps.cf 
-Créez le fichier /etc/postfix/sql/mysql_virtual_alias_maps.cf et ajoutez les lignes suivantes :+<code bash>sudo nano /etc/postfix/sql/mysql_virtual_alias_maps.cf</code>  
 +Ajoutez les lignes suivantes :
 <code> <code>
 user = postfixadmin user = postfixadmin
-password = motdepassesqlpostfixadmin+password = motdepasse
 hosts = localhost hosts = localhost
 dbname = postfixadmin dbname = postfixadmin
Ligne 156: Ligne 160:
 </code> </code>
  
-Créez le fichier /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf et ajoutez les lignes suivantes :+Créez le fichier mysql_virtual_alias_domain_maps.cf : 
 +<code bash>sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf</code>  
 +Ajoutez les lignes suivantes :
 <code> <code>
 user = postfixadmin user = postfixadmin
-password = motdepassesqlpostfixadmin+password = motdepasse
 hosts = localhost hosts = localhost
 dbname = postfixadmin dbname = postfixadmin
Ligne 165: Ligne 171:
 </code> </code>
  
-Créez le fichier /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf et ajoutez les lignes suivantes :+Créez le fichier /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf 
 +<code bash>sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf</code>  
 +Ajoutez les lignes suivantes :
 <code> <code>
 # handles catch-all settings of target-domain # handles catch-all settings of target-domain
 user = postfixadmin user = postfixadmin
-password = motdepassesqlpostfixadmin+password = motdepasse
 hosts = localhost hosts = localhost
 dbname = postfixadmin dbname = postfixadmin
Ligne 175: Ligne 183:
 </code> </code>
  
-On va protéger ces fichier contenant le mot de passe d'accès à la base afin que seul l'utilisateur root et postfix y ai accès : +On va protéger ces fichiers contenant le mot de passe d'accès à la base afin que seul l'utilisateur root et postfix y ait accès : 
-<code bash>sudo chmod 0640 -R /etc/postfix/sql/ +<code bash> 
-sudo chown root:postfix -R /etc/postfix/sql/</code>+sudo chmod 0640 -R /etc/postfix/sql/ 
 +sudo chown root:postfix -R /etc/postfix/sql/ 
 +sudo chmod 755 /etc/postfix/sql/ 
 +</code> 
 + 
 +===== Configuration Apache2 ===== 
 + 
 +Postfixadmin étant une interface web, il va nous falloir configurer Apache2 pour pouvoir y accéder. 
 + 
 +Créez le fichier de configuration postfixadmin.domaine.fr.conf (remplacez domaine.fr par votre nom de domaine) : 
 +<code bash>sudo nano /etc/apache2/sites-available/postfixadmin.domaine.fr.conf</code>  
 +Ajoutez les lignes suivantes (remplacez domaine.fr par votre domaine) : 
 +<code apache> 
 +<VirtualHost *:80>   
 + 
 +        DocumentRoot /var/www/postfixadmin/public 
 + 
 +        ServerName postfixadmin.domaine.fr 
 +                                                            
 +        Redirect / https://postfix.domaine.fr/ 
 + 
 +</VirtualHost> 
 + 
 +<VirtualHost *:443> 
 + 
 +        DocumentRoot /var/www/postfixadmin/public 
 + 
 +        ServerName postfixadmin.domaine.fr 
 + 
 +        CustomLog ${APACHE_LOG_DIR}/postfixadmin.access.log combined 
 +        ErrorLog ${APACHE_LOG_DIR}/postfixadmin.error.log 
 +        LogLevel warn 
 + 
 +        SSLEngine on 
 +        SSLCertificateFile /etc/letsencrypt/live/domaine.fr/fullchain.pem 
 +        SSLCertificateKeyFile /etc/letsencrypt/live/domaine.fr/privkey.pem 
 + 
 +        Header set Content-Security-Policy "script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; connect-src 'self'; media-src 'self';  child-src 'self'; object src 'self'; form-action 'self'; img-src 'self' data:" 
 + 
 +        <Directory /var/www/postfixadmin/> 
 +                Options FollowSymLinks MultiViews 
 +                AllowOverride All 
 +                Order allow,deny 
 +                allow from all 
 +        </Directory> 
 +</VirtualHost>                                                                                      
 +</code> 
 + 
 +Activez le fichier de configuration :  
 +<code bash>sudo a2ensite postfix.domaine.fr</code> 
 + 
 +Installez les modules PHP nécessaires :  
 +<code bash>sudo aptitude install php7.4-fpm php7.4-imap php7.4-mbstring php7.4-mysql php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-bz2 php7.4-intl php7.4-gmp</code> 
 + 
 +Redémarrer Apache2 :  
 +<code bash>sudo systemctl restart apache2.service</code> 
 + 
 +Ajouter l'utilisateur www-data au groupe dovecot pour qu'il ait accès aux fichier Dovecot :  
 +<code bash>sudo adduser www-data dovecot</code> 
 + 
 +Afin que l'utilisateur www-data est accès aux stats de Dovecot lancez le commandes suivantes : 
 +<code> 
 +sudo chown root:dovecot /var/run/dovecot/stats-* 
 +sudo chmod 660 /var/run/dovecot/stats-* 
 +</code> 
 + 
 +Allez à l'adresse https://postfixadmin.domaine.fr/setup.php afin de lancer l'installation de Postfixadmin 
 + 
 +Générez le setup_password et rajoutez la ligne $CONF['setup_password'] au fichier de config de Postfixadmin comme indiqué puis rafraîchissez la page. 
 +Rentrez le setup_password que vous avez utilisé précédemment puis créez l'utilisateur admin. Dans le champ Administrateur il faut entrer une adresse mail et non un nom d'utilisateur. 
 + 
 +Connectez-vous sur postfixadmin.domaine.fr pour pouvoir configurer votre serveur de messagerie électronique. 
 + 
 +Dovecot et Postfix sont installés, Postfixadmin configuré. Il est temps de faire connaissance avec [[serveur_hebergement:serveur_mail:partie_4_spf_dmarc_et_dkim|SPF, DMARC et DKIM]] 
 + 
 +Source : https://www.linuxbabe.com/mail-server/build-email-server-from-scratch-debian-postfix-smtp
  • serveur_hebergement/serveur_mail/partie_3_postfixadmin.1661974826.txt.gz
  • Dernière modification : 2023/08/08 14:01
  • (modification externe)