développeur wordpress et woocommerce

Si vous possédez et gérez votre propre serveur email, il peut être très intéressant de proposer des comptes emails et des alias pour vos utilisateurs.

J’ai écrit il y a quelques années un tutoriel qui faisait cela à la main avec une base SQL et des domaines virtuels mais il y a aujourd’hui beaucoup plus simple avec PostfixAdmin.

PostfixAdmin

PostfixAdmin est une interface web open-source qui permet de gérer des comptes mails, des domaines et des alias sur un serveur mail Postfix.

il s’intègre avec

  • Postfix
  • un server IMAP/POP3 comme Dovecot ou Courier
  • une base de données (sqlite, mysql, postgresql)
  • Fetchmail (optionnel)

Il est très utile pour créer des alias à la volée ou des comptes mail rapidement.

Création du sous-domaine

Je trouve cela plus simple de créer un sous-domaine pour ce type d’application. Dans votre gestionnaire DNS, il suffit d’ajouter un enregistrement de type A:

XXXXX.EXAMPLE.COM IN A xxx.xxxx.xxx.xxx

XXXXX est votre sous-domaine sur EXAMPLE.COM et xxx.xxx.xxx.xxx l’adresse IPv4 de votre serveur.

Création de la base de données

Nous utilisons MySQL/MariaDB pour postfix donc on s’identifie sur la console mysql :

mysql -u root -p 

[MOT DE PASSE ROOT]

Et on lance:

CREATE DATABASE postfix; 
CREATE USER 'mymailadmin'@'localhost' IDENTIFIED WITH mysql_native_password BY '1nyXI7Y)$spmslgz4HhdE4Lc_vm&)Gh!MsZFf64645fek'; 
GRANT ALL PRIVILEGES ON postfix.* TO 'mymailadmin'@'localhost'; 
FLUSH PRIVILEGES; EXIT;

Nous avons donc un nouvel utilisateur et une nouvelle base de données, spécifiques pour PostfixAdmin.

Configuration NginX pour PostfixAdmin

On crée un nouveau server block spécifique à PostfixAdmin:

nano /etc/nginx/sites-available/postfixadmin.conf

Voici notre configuration:

upstream php-handler-pfa {
     server unix:/run/php/php7.4-fpm.sock;
 }
 server {
     listen 80;
     listen [::]:80;
     server_name XXXXX.EXAMPLE.COM;
     # enforce https
     return 301 https://$server_name$request_uri;
 }
 server {
     listen 443 ssl http2;
     listen [::]:443 ssl http2;
     server_name XXXXX.EXAMPLE.COM;
      ssl_certificate         /etc/nginx/ssl/skyminds.net/fullchain.pem;      ssl_certificate_key     /etc/nginx/ssl/skyminds.net/privkey.pem; # Add headers to serve security related headers # Before enabling Strict-Transport-Security headers please read into this # topic first.
 #   add_header Strict-Transport-Security "max-age=15552000; includeSubDomains; preload;";
     #
     # WARNING: Only add the preload option once you read about
     # the consequences in https://hstspreload.org/. This option
     # will add the domain to a hardcoded list that is shipped
     # in all major browsers and getting removed from this list
     # could take several months.
     add_header X-Content-Type-Options nosniff;
     add_header X-XSS-Protection "1; mode=block";
     add_header X-Robots-Tag none;
     add_header X-Download-Options noopen;
     add_header X-Permitted-Cross-Domain-Policies none;
     add_header Referrer-Policy "strict-origin-when-cross-origin";
 # Remove X-Powered-By, which is an information leak fastcgi_hide_header X-Powered-By; # Path to the root of your installation root /home/www/postfixadmin/public; error_log /var/log/nginx/pfa.log;
 location / {
       try_files $uri $uri/ /index.php?$args;
    }
 location ~ \.php { 
fastcgi_split_path_info ^(.+\.php)(/.*)$; 
set $path_info $fastcgi_path_info; 
try_files $fastcgi_script_name =404;     
include fastcgi_params;     
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;     
fastcgi_param PATH_INFO $fastcgi_path_info;     
fastcgi_param HTTPS on; 
# Avoid sending the security headers twice     
fastcgi_param modHeadersAvailable true;     
fastcgi_param front_controller_active true;     
fastcgi_pass php-handler-pfa;     
fastcgi_intercept_errors on;     
fastcgi_request_buffering off; 
} 

location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ {     
try_files $uri /index.php$uri$is_args$args;     
# Optional: Don't log access to other assets     
access_log off; 
}

 }

N’oubliez pas de changer le server_name ainsi que le chemin et nom de vos certificats. On relance ensuite nginx:

nginx -t
service nginx reload

Installer ou mettre à jour PostfixAdmin

On se place dans le répertoire de travail et on renomme le répertoire de l’ancienne version s’il s’agit d’une mise à jour:

cd /home/www/
mv postfixadmin postfixadmin-old

On récupère l’URL de téléchargement de la dernière version de postfixadmin:

curl -s https://github.com/postfixadmin/postfixadmin/releases |  grep -m1 -Eo "archive/refs/tags/[^/]+.zip" | xargs printf "https://github.com/postfixadmin/postfixadmin/%s"

Résultat:

https://github.com/postfixadmin/postfixadmin/archive/refs/tags/postfixadmin-3.3.9.zip

Copiez l’URL puis lancez:

wget https://github.com/postfixadmin/postfixadmin/archive/refs/tags/postfixadmin-3.3.9.zip

On dézippe l’archive:

unzip -d ./postfixadmin/ -j postfixadmin-3.3.9.zip

On récupère notre fichier de configuration local, depuis notre ancienne installation:

cp /postfixadmin-old/config.local.php /postfixadmin/config.local.php

S’il n’existe pas, on le crée:

nano /postfixadmin/config.local.php

Et on y ajoute les informations de connexion à notre base de données:

<?php
 $CONF['database_type'] = 'mysqli';
 $CONF['database_user'] = 'mymailadmin'; // à changer selon votre config
 $CONF['database_password'] = '1nyXI7Y)$spmslgz4HhdE4Lc_vm&)Gh!MsZFf64645fek'; // à changer selon votre config
 $CONF['database_name'] = 'postfix'; // à changer selon votre config
 $CONF['configured'] = true;

On assigne les bonnes permissions:

cd postfixadmin
find -type f -print0 | xargs -0 chmod 640
find -type f -print0 | xargs -0 chown root:www-data
mkdir templates_c && chmod 750 templates_c && chown -R www-data templates_c

Il ne vous reste plus qu’à visiter la page setup.php de votre installation PostfixAdmin pour mettre à jour la base de données et le setup_password de l’installation.

A lire :  Ubuntu : règler le problème du clavier QWERTY au démarrage

Note: pour vous connecter à PostfixAdmin, vous devez utiliser l’adresse https://xxxxx.example.com/login.php, il n’y a pas de page d’accueil dédiée.

Si vous avez trouvé une faute d’orthographe, veuillez nous en informer en sélectionnant le texte en question et en appuyant sur Ctrl + Entrée.

Vous souhaitez réaliser un nouveau projet WordPress ou WooCommerce, ajouter de nouvelles fonctionnalités, ou améliorer les performances de votre site?

Parlons de votre projet »

Articles en rapport:

Écrire un commentaire

close

Spelling error report

The following text will be sent to our editors: