GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Utilisateurs virtuels et domaines avec Postfix, Courier, MySQL et SquirrelMail (Ubuntu 14.04LTS)

Ce tutoriel est Copyright (c) 2014 par Falko Timme &Srijan Kishore. Il est dérivé d'un tutoriel de Christoph Haas que vous pouvez trouver sur http://workaround.org. Vous êtes libre d'utiliser ce didacticiel sous la licence Creative Commons 2.5 ou toute version ultérieure.

Ce document décrit comment installer un serveur de messagerie Postfix basé sur des utilisateurs et des domaines virtuels, c'est-à-dire des utilisateurs et des domaines qui se trouvent dans une base de données MySQL. Je montrerai également l'installation et la configuration de Courier (Courier-POP3, Courier-IMAP), afin que Courier puisse s'authentifier auprès de la même base de données MySQL que Postfix utilise.

Le serveur Postfix résultant est capable de SMTP-AUTH et TLS et quota (le quota n'est pas intégré à Postfix par défaut, je vais montrer comment patcher votre Postfix de manière appropriée). Les mots de passe sont stockés dans crypté formulaire dans la base de données (la plupart des documents que j'ai trouvés traitaient de mots de passe en texte brut, ce qui représente un risque pour la sécurité). En plus de cela, ce tutoriel couvre l'installation de Amavisd , SpamAssassin et ClamAV afin que les e-mails soient analysés à la recherche de spam et de virus. Je montrerai également comment installer SquirrelMail en tant qu'interface de messagerie Web afin que les utilisateurs puissent lire et envoyer des e-mails et modifier leurs mots de passe.

L'avantage d'une telle configuration "virtuelle" (utilisateurs et domaines virtuels dans une base de données MySQL) est qu'elle est bien plus performante qu'une configuration basée sur des utilisateurs système "réels". Avec cette configuration virtuelle, votre serveur de messagerie peut gérer des milliers de domaines et d'utilisateurs. De plus, il est plus facile à administrer car vous n'avez à vous occuper de la base de données MySQL que lorsque vous ajoutez de nouveaux utilisateurs/domaines ou modifiez ceux qui existent déjà. Plus de commandes postmap pour créer des fichiers db, plus de rechargement de Postfix, etc. Pour l'administration de la base de données MySQL, vous pouvez utiliser des outils basés sur le Web comme phpMyAdmin qui sera également installé dans ce guide. Le troisième avantage est que les utilisateurs ont une adresse e-mail comme nom d'utilisateur (au lieu d'un nom d'utilisateur + une adresse e-mail), ce qui est plus facile à comprendre et à retenir.

Ce guide est conçu comme un guide pratique ; il ne couvre pas les arrière-plans théoriques. Ils sont traités dans de nombreux autres documents sur le Web.

Ce document est fourni sans garantie d'aucune sorte ! Je tiens à dire que ce n'est pas la seule façon de mettre en place un tel système. Il existe de nombreuses façons d'atteindre cet objectif, mais c'est la voie que je prends. Je n'émets aucune garantie que cela fonctionnera pour vous !

1 Remarque préliminaire

Ce didacticiel est basé sur le serveur Ubuntu 14.04 (Trusty Tahr). Vous devez donc configurer une installation de base du serveur Ubuntu 14.04 avant de poursuivre ce didacticiel. Le système doit avoir une adresse IP statique. J'utilise 192.168.0.100 comme adresse IP dans ce tutoriel et server1.example.com comme nom d'hôte.

Assurez-vous que vous êtes connecté en tant que root (tapez

sudo su

pour devenir root), car nous devons exécuter toutes les étapes de ce tutoriel en tant qu'utilisateur root.

Il est très important que vous fassiez de /bin/sh un lien symbolique vers /bin/bash...

dpkg-reconfigure dash

Utiliser dash comme shell système par défaut (/bin/sh) ? <-- Non

... et que vous désactivez AppArmor, si vous obtenez apparmor :service non reconnu, supprimez-le de update-rc.d

service apparmor stop
update-rc.d -f apparmor remove
apt-get remove apparmor apparmor-utils

 

2 Installer Postfix, Courier, Saslauthd, MySQL, phpMyAdmin

Pour installer Postfix, Courier, Saslauthd, MySQL et phpMyAdmin, nous exécutons simplement

apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2-2 libsasl2-modules libsasl2-modules -sql sasl2-bin libpam-mysql openssl phpmyadmin apache2 libapache2-mod-php5 php5 php5-mysql libpam-smbpass

Quelques questions vous seront posées :

Nouveau mot de passe pour l'utilisateur "root" MySQL :<-- yourrootsqlpassword
Répéter le mot de passe pour l'utilisateur MySQL "root" :<-- yourrootsqlpassword
Créer des répertoires pour l'administration Web ? <-- Non
Type général de configuration de messagerie :<-- Site Internet
Nom de messagerie système :<-- serveur1.exemple.com
Certificat SSL requis <-- Ok
Serveur Web à reconfigurer automatiquement :<-- apache2
Configurer la base de données pour phpmyadmin avec dbconfig-common ? <-- Non

3 Appliquer le correctif de quota à Postfix

Nous devons récupérer les sources de Postfix, le patcher avec le patch de quota, créer de nouveaux packages .deb Postfix et installer ces packages .deb :

suffixe apt-get build-dep

Parfois, vous pouvez obtenir une erreur comme suit :-

[email protected] :~# apt-get build-dep postfix
Lecture des listes de packages... Terminé
Création de l'arborescence des dépendances      
Lecture des informations d'état... Terminé
E :Vous doit mettre des URI 'source' dans votre sources.list
[email protected] :~#

Vous pouvez le corriger comme suit, en ajoutant les dépôts sources :

vi /etc/apt/sources.list

Faites la saisie comme dans mon cas

deb http://archive.ubuntu.com/ubuntu trusty principal univers restreint
deb http://archive.ubuntu.com/ubuntu trusty-updates principal univers restreint
deb http://security.ubuntu .com/ubuntu trusty-security principal univers restreint multivers
deb http://archive.canonical.com/ubuntu trusty partner


deb-src http://archive. ubuntu.com/ubuntu trusty principal univers restreint
deb-src http://archive.ubuntu.com/ubuntu trusty-updates principal univers restreint
deb-src http://security.ubuntu.com/ ubuntu trusty-security principal univers restreint multivers
deb-src http://archive.canonical.com/ubuntu trusty partner

Suivant

apt-get update
apt-get build-dep postfix

cd /usr/src
apt-get suffixe source

(Assurez-vous d'utiliser la bonne version de Postfix dans les commandes suivantes. J'ai installé Postfix 2.11.0. Vous pouvez trouver votre version de Postfix en exécutant

postconf -d | grep mail_version

Le résultat devrait ressembler à ceci :

[email protected] :/usr/src# postconf -d | grep mail_version
mail_version =2.11.0
milter_macro_v =$mail_name $mail_version
[email protected] :/usr/src#


wget http://vda.sourceforge.net/VDA/postfix-vda-v13-2.10.0.patch
cd postfix-2.11.0
patch -p1 <../postfix-vda-v13 -2.10.0.patch

Ouvrez ensuite debian/rules et modifiez DEB_BUILD_HARDENING de 1 à 0 :

vi debian/règles

[...]
export DEB_BUILD_HARDENING=0
[...]

Si vous ne le faites pas, votre compilation échouera avec les messages d'erreur suivants :

maildir.c :dans la fonction âdeliver_maildirâ :
maildir.c:974:17 : erreur :le format n'est pas un littéral de chaîne et aucun argument de format [-Werror=format-security]
maildir.c:977:17 :erreur :le format n'est pas un littéral de chaîne et aucun argument de format [-Werror=format-security]
maildir.c:983:17 :erreur :le format n'est pas un littéral de chaîne et aucun argument de format [-Werror=format-security] ]
maildir.c:986:17 :erreur :le format n'est pas un littéral de chaîne et aucun argument de format [-Werror=format-security]
maildir.c :dans la fonction âsql2fileâ :
maildir. c:404:25 :avertissement :valeur de retour ignorée de 'read', déclarée avec l'attribut warn_unused_result [-Wunused-result]
maildir.c:417:26 :avertissement :valeur de retour ignorée de 'write', déclarée avec l'attribut warn_unused_result [- Wunused-result]
cc1 :certains avertissements sont traités comme des erreurs
make :*** [maildir.o] Erreur 1
make :Quitter le répertoire `/usr/src/postfix-2.11. 0/src/virtual'
make[1] :*** [mise à jour] Erreur 1
make[1] :quitter le répertoire `/usr/src/postfi x-2.11.0'
make :*** [build] Erreur 2
dpkg-buildpackage :erreur :la construction debian/rules a donné l'état de sortie d'erreur 2
[email protected] :/usr /src/postfix-2.11.0#

Nous pouvons maintenant construire les nouveaux packages Postfix .deb :

dpkg-buildpackage

Maintenant, nous remontons d'un répertoire, c'est là que les nouveaux packages .deb ont été créés :

cd ..

La commande

ls -l

vous montre les packages disponibles :


[email protected] :/usr/src# ls -l
total 6824
drwxr-xr-x 18 root root    4096 30 avril 04:28 postfix-2.11.0
-rw-r --r--  1 racine racine   46756 30 avril 04:28 postfix-cdb_2.11.0-1_amd64.deb
-rw-r--r--  1 racine racine  142842 30 avril 04:28 postfix-dev_2.11.0 -1_all.deb
-rw-r--r--  1 racine racine  851842 30 avril 04:28 postfix-doc_2.11.0-1_all.deb
-rw-r--r--  1 racine root   53898 30 avril 04:28 postfix-ldap_2.11.0-1_amd64.deb
-rw-r--r--  1 root root   48500 30 avril 04:28 postfix-mysql_2.11.0-1_amd64.deb
-rw-r--r--  1 racine racine   48610 30 avril 04:28 postfix-pcre_2.11.0-1_amd64.deb
-rw-r--r--  1 racine racine   48324 30 avril 04:28 postfix-pgsql_2.11.0-1_amd64.deb
-rw-r--r--  1 racine racine   55701 7 juin 2013 postfix-vda-v13-2.10.0.patch
-rw-r-- r--  1 racine racine  267855 30 avril 04:27 postfix_2.11.0-1.diff.gz
-rw-r--r--  1 racine racine    1522 30 avril 04:27 postfix_2.11.0-1.dsc
-rw-r--r--  1 racine racine    3885 30 avril 04:28 postfix_2.11.0-1_amd64.changes
-rw-r --r--  1 racine racine 1329238 30 avril 04:28 postfix_2.11.0-1_amd64.deb
-rw-r--r--  1 racine racine 4034741 12 février 01:38 postfix_2.11.0.orig.tar .gz
[email protected] :/usr/src# 

Choisissez les packages postfix et postfix-mysql et installez-les comme ceci :

dpkg -i postfix_2.11.0-1_amd64.deb postfix-mysql_2.11.0-1_amd64.deb

4 Créer la base de données MySQL pour Postfix/Courier

Nous créons maintenant une base de données appelée mail :

mysqladmin -u root -p créer un courrier

Cette question vous sera posée :

Saisissez le mot de passe :<-- votremotdepasseqlracine

Ensuite, nous passons au shell MySQL :

mysql -u root -p

Sur le shell MySQL, nous créons l'utilisateur mail_admin avec le mot de passe mail_admin_password (remplacez-le par votre propre mot de passe) qui a les privilèges SELECT, INSERT, UPDATE, DELETE sur la base de données de messagerie. Cet utilisateur sera utilisé par Postfix et Courier pour se connecter à la base mail :

GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost' IDENTIFIED BY 'mail_admin_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost. localdomain' IDENTIFIÉ PAR 'mail_admin_password' ;
PRIVILÈGES FLUSH ;

Toujours sur le shell MySQL, nous créons les tables nécessaires à Postfix et Courier :

UTILISER le courrier ;

CREATE TABLE domaines (
domaine varchar(50) NOT NULL,
CLÉ PRIMAIRE (domaine) )
ENGINE=MyISAM;

CREATE TABLE redirections (
source varchar(80) NOT NULL,
destination TEXT NOT NULL,
PRIMARY KEY (source) )
ENGINE=MyISAM;

CREATE TABLE users (
email varchar(80) NOT NULL,
mot de passe varchar(20) NOT NULL,
quota INT(10) DEFAULT '10485760',
PRIMARY KEY (email )
) ENGINE=MonISAM ;

CREATE TABLE transport (
domaine varchar(128) NOT NULL par défaut '',
transport varchar(128) NOT NULL par défaut '',
CLÉ UNIQUE domaine (domaine)
) MOTEUR =MonISAM;

quitter ;

Comme vous l'avez peut-être remarqué, avec le renoncement; commande, nous avons quitté le shell MySQL et sommes de retour sur le shell Linux.

Les domaines table stockera chaque domaine virtuel pour lequel Postfix devrait recevoir des e-mails (par exemple, example.com ).

domaine
exemple.com

Les transferts table sert à créer un alias d'une adresse e-mail à une autre, par ex. transférer les e-mails pour [email protected] à [email protected] .

destination
source
[email protected] [e-mail protégé]

Les utilisateurs La table stocke tous les utilisateurs virtuels (c'est-à-dire les adresses e-mail, car l'adresse e-mail et le nom d'utilisateur sont identiques) et les mots de passe (en chiffré formulaire !) et une valeur de quota pour chaque boîte aux lettres (dans cet exemple, la valeur par défaut est de 10485760 octets, ce qui signifie 10 Mo).

e-mail mot de passe quota
[email protected] No9.E4skNvGa. ("secret" sous forme cryptée) 10485760

Le transport table est facultative, elle est destinée aux utilisateurs avancés. Il permet de transférer les e-mails d'utilisateurs uniques, de domaines entiers ou de tous les e-mails vers un autre serveur. Par exemple,

domaine transport
exemple.com smtp :[1.2.3.4]

transmettra tous les e-mails pour example.com via le protocole smtp au serveur avec l'adresse IP 1.2.3.4 (les crochets [] signifie "ne pas rechercher l'enregistrement DNS MX" (ce qui est logique pour les adresses IP...). Si vous utilisez un nom de domaine complet (FQDN) à la place, vous n'utiliserez pas les crochets.).

BTW, (je suppose que l'adresse IP de votre système de serveur de messagerie est 192.168.0.100), vous pouvez accéder à phpMyAdmin via http://192.168.0.100/phpmyadmin/ dans un navigateur et vous connecter en tant que mail_admin. Ensuite, vous pouvez consulter la base de données. Plus tard, vous pourrez utiliser phpMyAdmin pour administrer votre serveur de messagerie.


Ubuntu
  1. Hébergement virtuel avec Proftpd et MySQL (incl. Quota) sur Ubuntu 14.04LTS

  2. Installation de Lighttpd avec PHP5 (PHP-FPM) et prise en charge de MySQL sur Ubuntu 14.04LTS

  3. Utilisateurs virtuels et domaines avec Postfix, Courier, MySQL et SquirrelMail (Ubuntu 13.10)

  4. Utilisateurs virtuels et domaines avec Sendmail

  5. Serveur de messagerie avec des utilisateurs virtuels et des domaines utilisant Postfix et Dovecot sur un VPS CentOS 6

Hébergement virtuel avec vsftpd et MySQL sur Ubuntu 12.10

Hébergement virtuel avec Proftpd et MySQL (incl. Quota) sur Ubuntu 12.10

Hébergement virtuel avec PureFTPd et MySQL (y compris la gestion des quotas et de la bande passante) sur Ubuntu 14.04LTS

Utilisateurs virtuels et domaines avec Postfix, Courier, MySQL et SquirrelMail (Debian Wheezy)

Utilisateurs virtuels et domaines avec Postfix, Courier, MySQL et SquirrelMail (CentOS 6.3 x86_64)

Utilisateurs virtuels et domaines avec Postfix, Courier, MySQL et SquirrelMail (Fedora 18 x86_64)