Postfix Admin est une interface Web qui permet aux utilisateurs de configurer et de gérer un serveur de messagerie basé sur Postfix. Avec Postfix Admin, vous pouvez créer et gérer plusieurs domaines virtuels, utilisateurs et alias.
Il s'agit du premier article de la série pour l'installation et la configuration d'un serveur de messagerie qui couvre la création des enregistrements DNS nécessaires et explique comment installer et configurer Postfix Admin, Nginx avec un certificat Let's Encrypt gratuit, PHP et MySQL.
Ce tutoriel a été écrit pour Ubuntu 16.04, mais les mêmes étapes avec de petites modifications devraient fonctionner sur n'importe quelle version plus récente d'Ubuntu.
Prérequis #
Comme prérequis pour suivre cette série, vous aurez besoin de :
- Serveur Ubuntu 16.04. Le nom d'hôte du serveur doit être un FQDN. Dans cette série, nous utiliserons
mail.linuxize.com
. - Utilisateur avec privilèges sudo.
Paramètres DNS #
Vous devez configurer les enregistrements DNS suivants pour que votre système de messagerie fonctionne :
- Un enregistrement, pour faire pointer le FQDN (nom d'hôte) de votre système vers l'adresse IPv4 de votre serveur de messagerie.
mail.linuxize.com. 3600 IN A 23.45.67.89
Le FQDN se compose de deux parties, le nom d'hôte et le nom de domaine.- Enregistrement MX, pour spécifier quel serveur de messagerie est responsable de l'acceptation des e-mails au nom du domaine d'un destinataire. Dans notre cas, nous voulons que tous les e-mails soient envoyés à
@linuxize.com
adresses e-mail à accepter parmail.linuxize.com
serveur de messagerie.
linuxize.com. 3600 IN MX 0 mail.linuxize.com.
- Enregistrement SPF, utilisé pour vérifier quels serveurs de messagerie sont autorisés à envoyer des e-mails au nom d'un domaine donné. Dans l'exemple ci-dessous, nous approuvons les serveurs de messagerie du domaine (mx) et si la vérification SPF échoue, le résultat sera un échec logiciel (~all) :
linuxize.com. 3600 IN TXT "v=spf1 mx ~all"
Bien sûr, vous devez remplacer le nom de domaine et l'adresse IP par votre vrai nom de domaine et l'adresse IP de votre serveur de messagerie. DNS inversé (PTR) #
Le DNS inversé (PTR) est un mappage d'adresse IP vers un nom de domaine, l'exact opposé du DNS qui mappe les noms de domaine vers des adresses IP.
La plupart des serveurs de messagerie effectueront une recherche DNS inversée sur l'adresse IP qui tente de s'y connecter et peuvent ne pas accepter les e-mails du serveur si l'enregistrement PTR n'est pas défini.
Dans la plupart des cas, les entrées PTR peuvent être définies via l'interface Web de votre hébergeur ou en contactant l'équipe d'assistance et en leur demandant de configurer un enregistrement PTR correct pour vous.
Vous pouvez utiliser la commande dig pour connaître le DNS inverse d'une adresse IP donnée.
dig -x 23.45.67.89
23.45.67.89.in-addr.arpa domain name pointer mail.linuxize.com.
Créer un utilisateur système #
Puisque nous configurons un serveur de messagerie avec des utilisateurs virtuels, nous avons besoin d'un utilisateur système qui sera le propriétaire de toutes les boîtes aux lettres et sera utilisé par les utilisateurs virtuels pour accéder à leurs messages électroniques sur le serveur.
La commande suivante créera un nouveau groupe et un utilisateur nommé vmail
et définissez le répertoire personnel de l'utilisateur sur /var/mail/vmail
:
sudo groupadd -g 5000 vmail
sudo useradd -u 5000 -g vmail -s /usr/sbin/nologin -d /var/mail/vmail -m vmail
Toutes les boîtes aux lettres virtuelles seront stockées dans le /var/mail/vmail
répertoire.
Installer Nginx PHP et MySQL #
Postfix Admin est une application basée sur PHP. Pour pouvoir accéder à l'interface Web de PostfixAdmin, nous devons installer un serveur Web et PHP.
Exécutez la commande suivante pour installer Nginx, PHP et tous les modules PHP requis :
sudo apt install nginx mysql-server php7.0-fpm php7.0-cli php7.0-imap php7.0-json php7.0-mysql php7.0-opcache php7.0-mbstring php7.0-readline
Vous serez invité à créer un mot de passe root MySQL lors de l'installation.
Télécharger et configurer Postfix Admin #
Au moment de la rédaction, 3.1
est la dernière version stable de Postfix Admin.
Téléchargez l'archive Postfix Admin à l'aide de la commande wget suivante :
VERSION=3.1
wget -q https://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-${VERSION}/postfixadmin-${VERSION}.tar.gz
Une fois le téléchargement terminé, extrayez l'archive :
tar xzf postfixadmin-${VERSION}.tar.gz
Déplacez les fichiers source de Postfix Admin vers /var/www
répertoire et créez templates_c
répertoire (smarty cache):
sudo mv postfixadmin-${VERSION}/ /var/www/postfixadmin
rm -f postfixadmin-${VERSION}.tar.gz
mkdir /var/www/postfixadmin/templates_c
Nginx et PHP-FPM fonctionnent sous l'utilisateur www-data
nous devons donc changer le propriétaire du /var/www/postfixadmin
à cet utilisateur :
sudo chown -R www-data: /var/www/postfixadmin
L'administrateur de Postfix utilisera une base de données MySQL pour stocker des informations sur les utilisateurs, les domaines et la configuration de l'application.
Connectez-vous au shell MySQL :
mysql -u root -p
Créez un nouvel utilisateur MySQL et une nouvelle base de données à l'aide des commandes suivantes :
N'oubliez pas de changer le mot de passe (CREATE DATABASE postfixadmin;
GRANT ALL ON postfixadmin.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'P4ssvv0rD';
FLUSH PRIVILEGES;
P4ssvv0rD
) à quelque chose de plus sûr.
Au lieu de modifier la configuration par défaut de Postfix Admin, nous allons créer un nouveau fichier nommé config.local.php
qui écrasera les paramètres par défaut de l'application :
Ouvrez le fichier avec votre fichier texte :
sudo nano /var/www/postfixadmin/config.local.php
Collez le code php suivant :
/var/www/postfixadmin/config.local.php<?php
$CONF['configured'] = true;
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'P4ssvv0rD';
$CONF['database_name'] = 'postfixadmin';
$CONF['default_aliases'] = array (
'abuse' => '[email protected]',
'hostmaster' => '[email protected]',
'postmaster' => '[email protected]',
'webmaster' => '[email protected]'
);
$CONF['fetchmail'] = 'NO';
$CONF['show_footer_text'] = 'NO';
$CONF['quota'] = 'YES';
$CONF['domain_quota'] = 'YES';
$CONF['quota_multiplier'] = '1024000';
$CONF['used_quotas'] = 'YES';
$CONF['new_quota_table'] = 'YES';
$CONF['aliases'] = '0';
$CONF['mailboxes'] = '0';
$CONF['maxquota'] = '0';
$CONF['domain_quota_default'] = '0';
?>
Enregistrez et fermez le fichier.
Avec la configuration ci-dessus, nous définissons le type de base de données et les identifiants de connexion. De plus, nous spécifions les alias par défaut, en désactivant fetchmail
et l'activation du quota.
Ensuite, exécutez la commande suivante pour créer le schéma de la base de données d'administration de Postfix :
sudo -u www-data php /var/www/postfixadmin/upgrade.php
Une fois la base de données remplie, nous pouvons continuer et créer notre premier utilisateur superadmin PostfixAdmin en utilisant le postfixadmin-cli
outil.
Cet utilisateur aura des privilèges d'administration pour modifier n'importe quel paramètre de domaine ou d'application.
sudo bash /var/www/postfixadmin/scripts/postfixadmin-cli admin add [email protected] --superadmin 1 --active 1 --password P4ssvv0rD --password2 P4ssvv0rD
Le résultat devrait ressembler à ceci :
Welcome to Postfixadmin-CLI v0.2
---------------------------------------------------------------
The admin [email protected] has been added!
---------------------------------------------------------------
N'oubliez pas de changer le mot de passe (P4ssvv0rD
) pour le compte superadmin vers quelque chose de plus sécurisé. Installer gratuitement le certificat SSL Let's Encrypt #
Nous allons utiliser le certificat SSL pour accéder à notre installation Postfix Admin et activer le cryptage Dovecot et Postfix SSL/TLS.
Nous avons un tutoriel sur la façon d'installer un certificat SSL Let's Encrypt. Le point le plus important ici est de générer un certificat SSL pour le nom d'hôte de votre serveur (FQDN) dans notre cas mail.linuxize.com
.
Une fois que vous avez généré le certificat SSL en suivant le tutoriel lié ci-dessus, modifiez le bloc de votre serveur Nginx comme suit :
/etc/nginx/sites-enabled/mail.linuxize.com.confserver {
listen 80;
server_name mail.linuxize.com;
include snippets/letsencrypt.conf;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name mail.linuxize.com;
root /var/www;
ssl_certificate /etc/letsencrypt/live/mail.linuxize.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mail.linuxize.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/mail.linuxize.com/chain.pem;
include snippets/ssl.conf;
include snippets/letsencrypt.conf;
location / {
try_files $uri $uri/ /index.php;
}
location /postfixadmin {
index index.php;
try_files $uri $uri/ /postfixadmin/index.php;
}
location ~* \.php$ {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {return 404;}
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Rechargez le service Nginx pour que les modifications prennent effet :
sudo systemctl reload nginx
À ce stade, vous devriez pouvoir vous connecter à votre installation Postfix Admin sur https://mail.linuxize.com/postfixadmin
, en utilisant l'utilisateur superadmin créé précédemment dans ce didacticiel.