serveur_hebergement:serveur_mail:partie_3_postfixadmin

Ceci est une ancienne révision du document !


Partie 3 : Postfixadmin

Postfixadmin va nous servir à créer des adresses email virtuelles, comprenez par là des adresses mails non liées à un utilisateur local du serveur comme root ou fate.

Vous avez besoin d'avoir une base de donnée Mysql/MariaDB.

Allez dans le répertoire /var/www et lancez la commande

sudo -u www-data wget https://github.com/postfixadmin/postfixadmin/archive/postfixadmin-3.3.11.tar.gz

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 :

sudo -u www-data mv postfixadmin-postfixadmin-3.3.11/ postfixadmin

.

Créez le répertoire /var/www/postfixadmin/templates_c avec l'utilisateur www-data :

sudo -u www-data mkdir /var/www/postfixadmin/templates_c

Créez la base de donnée pour postfix (remplacez le mot de passe):

sudo mysql -u root
 
CREATE DATABASE postfixadmin;
 
GRANT ALL privileges ON postfixadmin.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'motdepasse';
 
FLUSH privileges;
 
exit;

Créez le fichier /var/www/postfixadmin/config.local.php et ajoutez les lignes suivantes (remplacez le mot de passe) :

<?php
$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
}

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) :

<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
 
        <IfModule mod_ssl.c>
                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:"
 
                # Modern configuration, tweak to your needs 
                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/>
                Options FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
</VirtualHost>                             
 
<IfModule mod_ssl.c>
        SSLStaplingCache shmcb:/var/run/ocsp(128000)
</IfModule>

Activez le fichier de configuration :

sudo a2ensite postfix.domaine.fr

Installez les modules PHP :

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

Redémarrer Apache2 :

sudo systemctl restart apache2.service

Ajouter l'utilisateur www-data au groupe dovecot :

sudo adduser www-data dovecot

Afin que l'utilisateur www-data est accès aux stats de Dovecot lancez le commandes suivantes :

sudo chown root:dovecot /var/run/dovecot/stats-*
sudo chmod 660 /var/run/dovecot/stats-*

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/ Créez le fichier /etc/postfix/sql/mysql_virtual_domains_maps.cf et ajoutez les lignes suivantes :

user = postfixadmin
password = motdepassesqlpostfixadmin
hosts = localhost
dbname = postfixadmin
query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'
#query = SELECT domain FROM domain WHERE domain='%s'
#optional query to use when relaying for backup MX
#query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1'
#expansion_limit = 100

Créez le fichier /etc/postfix/sql/mysql_virtual_mailbox_maps.cf et ajoutez les lignes suivantes :

user = postfixadmin
password = motdepassesqlpostfixadmin
hosts = localhost
dbname = postfixadmin
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
#expansion_limit = 100

Créez le fichier /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf et ajoutez les lignes suivantes :

user = postfixadmin
password = motdepassesqlpostfixadmin
hosts = localhost
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 AND alias_domain.active='1'

Créez le fichier /etc/postfix/sql/mysql_virtual_alias_maps.cf et ajoutez les lignes suivantes :

user = postfixadmin
password = motdepassesqlpostfixadmin
hosts = localhost
dbname = postfixadmin
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
#expansion_limit = 100

Créez le fichier /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf et ajoutez les lignes suivantes :

user = postfixadmin
password = motdepassesqlpostfixadmin
hosts = localhost
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 AND alias_domain.active='1'

Créez le fichier /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf et ajoutez les lignes suivantes :

# handles catch-all settings of target-domain
user = postfixadmin
password = motdepassesqlpostfixadmin
hosts = localhost
dbname = postfixadmin
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'

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 :

sudo chmod 0640 -R /etc/postfix/sql/
sudo chown root:postfix -R /etc/postfix/sql/
sudo chmod 755 /etc/postfix/sql/

On va créer l'utilisateur vmail avec l'ID 2000 et le groupe ID 2000 :

sudo adduser vmail --system --group --uid 2000 --disabled-login --no-create-home

Créez le répertoire /var/vmail :

sudo mkdir /var/vmail/

Changer le propriétaire du répertoire :

sudo chown vmail:vmail /var/vmail/ -R

Se connecter sur postfixadmin.domaine.fr

Vous pourriez laisser un commentaire si vous étiez connecté.
  • serveur_hebergement/serveur_mail/partie_3_postfixadmin.1664999764.txt.gz
  • Dernière modification : 2023/08/08 14:01
  • (modification externe)