GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Hébergement virtuel Postfix avec backend LDAP et avec Dovecot comme serveur IMAP/POP3 sur Ubuntu Bionic Beaver 18.04 LTS

Ce tutoriel décrit comment installer et configurer l'hébergement de messagerie virtuelle avec un backend LDAP.

Les logiciels que nous utiliserons dans ce tutoriel : Postfix (MTA), Dovecot (IMAP / POP3), Gnarwl (vacances), OpenLDAP (LDAP) et vMailpanel comme interface de gestion.

Les options Proftpd FTP, Roundcube (webmail) et MariaDB (backend SQL pour Roundcube) sont facultatives.

Cela a fonctionné pour moi, mais je ne peux pas garantir que cette configuration fonctionnera pour vous, donc ce guide est fourni sans aucune garantie.

Hypothèses

Ce guide suppose les configurations suivantes. Si votre installation diffère de celle-ci, remplacez les entrées ci-dessous par votre configuration actuelle.

Chemin de distribution du courrier (boîtes aux lettres) :

/home/vmail/

Utilisateur vmail :

UID:1000, GID:1000

Suffixe de l'utilisateur :

UID: 108, GID:108

DN de base OpenLDAP :

dc=example,dc=tld

Compte administrateur OpenLDAP :

cn=admin,dc=example,dc=tld

DN de recherche vMailpanel :

o=hosting,dc=example,dc=tld

Un compte en lecture seule pour l'arborescence o=hosting,dc=example,dc=tld :

cn=vmail,o=hosting,dc=example,dc=tld

Vous utilisez root en tant qu'utilisateur pendant ce guide.

Si vous voulez par exemple o=maildomains ou ou=domains, assurez-vous de remplacer o=hosting par ce que vous voulez, en particulier dans acl.ldif. Ce fichier acl est strict, phamm ne fonctionnera pas correctement s'il n'est pas exactement comme il se doit. Si vous voulez un utilisateur en lecture seule différent de phamm, remplacez cn=phamm par cn=wat-vous partout dans ce guide.

Ce guide suppose également que vous avez installé et configuré votre serveur Ubuntu selon vos besoins, il existe de nombreux bons guides sur Howtoforge par exemple :

Le serveur parfait - Ubuntu 18.04 (Bionic Beaver) avec Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot et ISPConfig 3.1

Vous pouvez arrêter après l'installation et la configuration d'Apache2.

Étape 1 :Télécharger vMailpanel

Téléchargez le package vMailpanel :

cd /usr/share

Obtenez la dernière version de vMailpanel :

git clone https://git.com/wolmfan68/vMailpanel

OK, maintenant nous pouvons commencer.

Étape 2 :Installer et configurer OpenLDAP

Installez OpenLDAP et ldap-utils :

apt -y install slapd ldap-utils php-ldap

Reconfigurez slapd pour vous assurer qu'il reflète la configuration souhaitée

dpkg-reconfigure slapd

Vous devrez répondre à quelques questions :

Omit OpenLDAP server configuration? No
 DNS domain name: example.tld ==>put your domain name here
Organization name: example.tld ==> put your organization here
 Administrator password: secret ==> put your password
 Confirm password: secret 
Database backend to use: MDB
 Do you want the database to be removed when slapd is purged? Yes
 Move old database? Yes

Allez dans le répertoire /etc/ldap/schema :

cd /etc/ldap/schema

Copiez les fichiers phamm.schema et perversia.net.schema du package phamm dans le répertoire du schéma :

cp /usr/share/vMailbox/schema/* /etc/ldap/schema.

Nous ajoutons maintenant les schémas à openldap.

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/phamm.ldif 
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/ISPEnv2.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/amavis.ldif 
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/pureftpd.ldif 
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/perversia.net.ldif

Nous créons maintenant l'entrée o=hosting et le compte vmail.

Modifiez le texte ci-dessous selon vos besoins et vos envies et générez un mot de passe pour le compte vmail. Le hachage actuellement dans ce fichier définit le mot de passe en lecture seule

Pour créer le hachage du compte vmail, exécutez la commande suivante :

slappasswd -h {MD5}

Tapez le mot de passe souhaité deux fois et copiez le résultat dans le texte ci-dessous.

nano base.ldif

Contenu de base.ldif

dn: o=hosting,dc=example,dc=tld
objectClass: organization
objectClass: top
o: hosting description: Hosting Organization
# Read only account
dn: cn=vmail,o=hosting,dc=example,dc=tld
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: vmail
userPassword: {MD5}M267sheb6qc0Ck8WIPOvQA==
description: Read only account

Chargez le dn de base dans la base de données avec la commande suivante :

ldapmodify -a -D cn=admin,dc=example,dc=tld -W -f base.ldif

Nous devons maintenant modifier les ACL afin que l'accès correct soit accordé à chaque type d'utilisateur.

ldapmodify -Y EXTERNAL -H ldapi:/// -f acl-remove.ldif
ldapmodify -Y EXTERNAL -H ldapi:/// -f acl-new.ldif

Vous pouvez vérifier les nouvelles ACL avec la commande suivante :

slapcat -n 0

Ceci conclut la configuration d'OpenLDAP.

Étape 3 :Installer et configurer Postfix

Avant cela, nous avons besoin de l'utilisateur vmail et de son répertoire personnel.

Créez l'utilisateur et le groupe vmail :

useradd vmail

Par défaut, le groupe vmail est également créé.

Vérifiez /etc/passwd pour l'uid et le numéro de groupe réels.

Ensuite, créez le répertoire vmail et définissez la propriété sur l'utilisateur et le groupe vmail.

mkdir /home/vmail
mkdir /home/vmail/domains 
chown -R vmail:vmail /home/vmail

Exécutez la commande suivante pour installer Postfix et les autres applications requises :

apt install postfix postfix-ldap

Deux questions vous seront posées. Répondez comme suit :

Type général de configuration de messagerie : <--Autonome
Nom de messagerie système : <-- mail.example.tld

Nous n'installons pas de sasl puisque nous utiliserons le Dovecot LDA et livrerons.

Nous créons maintenant les certificats pour TLS :

mkdir /etc/postfix/ssl
cd /etc/postfix/ssl/
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr
openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
openssl rsa -in smtpd.key -out smtpd.key.unencrypted
mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

Remarque :vous pouvez copier tous les fichiers sous examples/postfix dans votre répertoire etc/postfix et apporter les modifications en conséquence. Pour des raisons d'exhaustivité, je vais donner la configuration complète ci-dessous.

Nous allons maintenant configurer postfix :

cd /etc/postfix 
mv /etc/postfix/main.cf /etc/postfix/main.cf.bck
nano /etc/postfix/main.cf

Et collez-y ce qui suit. Veuillez noter que cette configuration permet l'envoi (relaying) de mails par des utilisateurs authentifiés, ainsi que l'envoi de mails locaux (comme par exemple à root, postmaster, ...) aux alias respectifs s'ils sont configurés.

smtpd_banner =$myhostname ESMTP $mail_name
biff =no
 
# ajouter .domain est le travail du MUA.
append_dot_mydomain =no
 
# Décommenter le suivant ligne pour générer des avertissements "delayed mail"
delay_warning_time =4h
 
# Paramètres TLS
smtpd_tls_cert_file =/etc/postfix/ssl/smtpd.crt
smtpd_tls_key_file =/etc /postfix/ssl/smtpd.key
smtpd_use_tls =yes
smtpd_tls_session_cache_database =btree :${queue_directory}/smtpd_scache
smtp_tls_session_cache_database =btree :${queue_directory}/smtp_scache
 
myhostname =mail.example.tld
alias_maps =hash :/etc/aliases,
alias_database =hash:/etc/aliases
myorigin =localhost
relayhost = 
mynetworks =127.0.0.0/8
dovecot_destination_recipient_limit =1
mailbox_command =/usr/lib/deliver
mailbox_size_limit =0
recipient_delimiter =+
inet_interfaces =all
inet_protocols =all
#smtp_bind_address =votre adresse IP (facultatif) ==> Décochez et modifiez l'adresse IP pour votre configuration.
smtpd_sasl_local_domain = 
smtpd_sasl_auth_enable =yes
smtpd_sasl_security_options =noanonymous
smtpd_sasl_type =dovecot
smtpd_sasl_path =private/auth
broken_sasl_auth_clients =oui
smtpd_tls_auth_only =non

smtp_use_tls =oui
smtp_tls_note_starttls_offer =oui
smtpd_tls_CAfile =/etc/postfix/ssl/cacert.pem
smtpd_tls_loglevel =1
smtpd_tls_received_header =oui
smtpd_tls_session_cache_timeout =3600s
tls_random_source =dev:/dev/urandom

home_mailbox =Maildir/
 
smtpd_recipient_restrictions =

permit_mynetworks permit_sasl_authenticated

reject_invalid_hostname reject_non_fqdn_hostname

reject_non_fqdn_sender reject_non_fqdn_recipient

reject_unauth_destination reject_unauth_pipelining

reject_invalid_hostname reject_unknown_sender_domain
    rejeter_ rbl_client list.dsbl.org
    rejet_rbl_client cbl.abuseat.org
    rejet_rhsbl_sender dsn.fc-ignorant.org

smtpd_data_restrictions =
    rejet_unauth_pipelining,
    rejet_multi_recipient_bounce,
    permis

smtpd_helo_required =oui
 
# transport_maps
maildrop_destination_concurrency_limit =2 
maildrop_destination_recipient_limit =1
gnarwl_destination_concurrency_limit =1 
gnarwl_destination_recipient_limit =1
transport_maps =hash:/etc/postfix/transport, ldap:/etc/postfix/ldap-transport.cf
mydestination =$transport_maps, localhost, localhost.localdomain, $myhostname, localhost .$mondomaine, $mondomaine

virtual_alias_maps = 
    ldap :/etc/postfix/ldap-aliases.cf,
    ldap :/etc/postfix/ldap-virtualforward.cf,
    ldap :/etc/postfix/ldap-accountsmap.cf
 
# comptes virtuels pour la livraison
virtual_mailbox_base =/home/vmail
virtual_mailbox_maps =
    ldap :/etc/postfix/ldap-accounts.cf
virtual_minimum_uid =1000 ==> Remplacez-le par l'uid réel de l'utilisateur vmail
virtual_uid_maps =static:1000 ==> Remplacez-le par l'uid réel de l'utilisateur vmail
virtual_gid_maps =static:1000 ==> Remplacez-le par l'UID réel de l'utilisateur vmail
 
local_recipient_maps =$alias_maps

recipient_bcc_maps =ldap :/ etc/postfix/ldap-vacances.cf

nano /etc/postfix/master.cf

Et collez-y ce qui suit (ajoutez la fin) :

dovecot   unix  -       n       n       -       -       pipe
         flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}
gnarwl    unix  -       n       n       -       -       pipe
         flags=F  user=vmail argv=/usr/bin/gnarwl -a ${user}@${nexthop} -s ${sender}

Il faut maintenant écrire les différents fichiers ldap-xxx.cf

nano ldap-accounts.cf

Et collez-y ce qui suit :

server_host =localhost
server_port =389
version =3
bind =yes
start_tls =no
bind_dn =cn=vmail,o=hosting,dc=example,dc =tld
bind_pw =readmonly
search_base =o=hosting,dc=example,dc=tld
scope =sub
query_filter =(&(&(objectClass=VirtualMailAccount)(mail =%s))(forwardActive=FALSE)(accountActive=TRUE)(delete=FALSE))
result_attribute =boîte aux lettres 

nano ldap-accounstmap.cf

Et collez-y ce qui suit :

server_host =localhost
server_port =389
version =3
bind =yes
start_tls =no
bind_dn =cn=vmail,o=hosting,dc=example,dc =tld
bind_pw =readonly
search_base =o=hosting,dc=example,dc=tld
scope =sub
query_filter =(&(&(objectClass=VirtualMailAccount)(mail =%s))(forwardActive=FALSE)(accountActive=TRUE)(delete=FALSE))
result_attribute =mail 

nano ldap-aliases.cf

Et collez-y ce qui suit :

server_host =localhost
server_port =389
version =3
bind =yes
start_tls =no
bind_dn =cn=vmail,o=hosting,dc=example,dc =tld
bind_pw =readonly
search_base =o=hosting,dc=example,dc=tld
scope =sub
query_filter =(&(&(objectClass=VirtualMailAlias)(mail =%s))(accountActive=TRUE))
result_attribute =maildrop 

nano ldap-transport.cf

Et collez-y ce qui suit :

server_host =localhost
server_port =389
version =3
bind =yes
start_tls =no
bind_dn =cn=vmail,o=hosting,dc=example,dc =tld
bind_pw =readonly
search_base =o=hosting,dc=example,dc=tld
scope =sub
query_filter =(&(&(vd=%s)( objectClass=VirtualDomain))(accountActive=TRUE)(delete=FALSE)) 
result_attribute =postfixTransport 

nano ldap-vacances.cf

Et collez-y ce qui suit :

server_host =localhost
server_port =389
version =3
bind =yes
start_tls =no
bind_dn =cn=vmail,o=hosting,dc=example,dc =tld
bind_pw =readonly
search_base =o=hosting,dc=example,dc=tld
scope =sub
query_filter =(&(&(objectClass=VirtualMailAccount)(mail =%s))(vacationActive=TRUE)(forwardActive=FALSE)(accountActive=TRUE)(delete=FALSE))
result_attribute =mailAutoreply 

nano ldap-virtualforward.cf

Et collez-y ce qui suit :

server_host =localhost
server_port =389
version =3
bind =yes
start_tls =no
bind_dn =cn=vmail,o=hosting,dc=example,dc =tld
bind_pw =readonly
search_base =o=hosting,dc=example,dc=tld
scope =sub
query_filter =(&(&(objectClass=VirtualMailAccount)(mail =%s))(vacationActive=FALSE)(forwardActive=TRUE)(accountActive=TRUE)(delete=FALSE))
result_attribute =maildrop

Ceci conclut la configuration du postfix.

Étape 4 :Installer et configurer Dovecot

apt install dovecot-imapd dovecot-pop3d dovecot-ldap

Cela installera dovecot et tous les fichiers nécessaires et créera également les certificats SSL standard pour IMAP et POP3.

Tout d'abord, nous changeons dans le répertoire pigeonnier.

Remarque :vous pouvez copier tous les fichiers sous examples/dovecot dans votre répertoire etc/dovecot et apporter les modifications en conséquence. Pour des raisons d'exhaustivité, je vais donner la configuration complète ci-dessous.

 cd /etc/dovecot

Nous configurons maintenant les différents fichiers de configuration de pigeonnier.

nano dovecot-ldap.conf.ext

Et apportez les modifications suivantes :

hosts           =localhost:389
ldap_version    =3
auth_bind       =yes
dn              =cn=vmail,o=hosting,dc=example,dc=tld
dnpass           =lecture seule
base            =o=hosting,dc=hosting,dc=tld
scope           =subtree
deref           =jamais

user_attrs =quota=quota=maildir:storage
user_attrs =quota=quota=maildir:storage=%$B
user_filter =(&(objectClass=VirtualMailAccount)(accountActive=TRUE)(mail=%u))
pass_attrs =mail,userPassword
pass_filter =(&(objectClass=VirtualMailAccount)(accountActive=TRUE)(mail=%u))
default_pass_scheme =MD5

cd conf.d
vi 10-auth.conf

Et changez la section Bases de données de mots de passe et d'utilisateurs : 

#!include auth-deny.conf.ext
#!include auth-master.conf.ext

#!include auth-system.conf.ext
#!include auth -sql.conf.ext
!include auth-ldap.conf.ext
#!include auth-passwdfile.conf.ext
#!include auth-checkpassword.conf.ext
#!include auth-vpopmail.conf.ext
#!include auth-static.conf.ext

vi 10-mail.conf 

Et apportez les modifications suivantes :

mail_location =maildir:/home/vmail/%d/%u

mail_uid =1000 ==> passer à la valeur réelle de l'uid vmail

mail_gid =1000 ==> remplacez-le par la valeur réelle du gid vmail

first_valid_uid =1000 ==> remplacer la valeur réelle de l'uid vmail

first_valid_gid =1000 ==> remplacez-le par la valeur réelle du gid vmail

vi 10-master.conf 

Et apportez les modifications suivantes :

unix_listener auth-userdb {
    mode =0666
    user =vmail
    group =vmail
  }

  # Postfix smtp-auth
  unix_listener / var/spool/postfix/private/auth {
    mode =0666
  }

 vi 15-lda.conf

Et apportez les modifications suivantes : 

postmaster_address = [email protected]

lda_mailbox_autocreate=oui

Ceci conclut la configuration de Dovecot.

Étape 5 :Installer et configurer gnarwl

Installons gnarwl :

apt install gnarwl

Configurons maintenant gnarwl.

Tout d'abord, nous allons sauvegarder le fichier de configuration d'origine et le remplacer par un nouveau.

mv /etc/gnarwl.conf /etc/gnarwl.conf.bck

Nous créons maintenant le nouveau fichier de configuration :

vi /etc/gnarwl.conf

Et insérez ce qui suit :

map_sender $sender
map_receiver $recepient
map_subject $subject
map_field $begin vacationStart
map_field $end vacationEnd
map_field $fullname cn
map_field $deputy vacationForward
map_field $reply mail
server localhost
port 389
scope sub
login cn=vmail,o=hosting,dc=example,dc=tld
password readonly
protocol 0
base dc=example,dc=tld
queryfilter (&(mailAutoreply=$recepient)(vacationActive=TRUE))
result vacationInfo
blockfiles /var/lib/gnarwl/block/
umask 0644
blockexpire 48
mta /usr/sbin/sendmail -F $recepient -t $sender
maxreceivers 64
maxheader 512
charset ISO8859-1
badheaders /var/lib/gnarwl/badheaders.db
blacklist /var/lib/gnarwl/blacklist.db
forceheader /var/lib/gnarwl/header.txt
forcefooter /var/lib/gnarwl/footer.txt
recvheader To Cc
loglevel 3

Rendre le répertoire gnarwl lisible pour l'utilisateur vmail

chown -R vmail:vmail /var/lib/gnarwl/

Ensuite, nous devons ajouter le transport gnarwl à postfix

vi /etc/postfix/transport

Insérez ce qui suit :

.autoreply      gnarwl:

Maintenant, nous devons créer le transport.db

postmap /etc/postfix/transport

Ceci conclut la configuration gnarwl.

Étape 6 :Installer et configurer vMailpanel

Comme nous avons téléchargé vMailpanel auparavant, nous pouvons directement commencer par la configuration de l'interface vMailpanel.

chown -R www-data:www-data /usr/share/phamm
cd /usr/share/vMailpanel

Nous allons maintenant configurer phamm pour une utilisation réelle.

cp config.inc.example.php config.inc.php
nano config.inc.php

Modifiez les paramètres de connexion LDAP pour les adapter à votre configuration actuelle.

// *============================*
// *=== LDAP Server Settings ===*
// *============================*

// The server address (IP or FQDN)
define ('LDAP_HOST_NAME','127.0.0.1');

// The protocol version [2,3]
define ('LDAP_PROTOCOL_VERSION','3');

// The server port
define ('LDAP_PORT','389');

// The container
define ('SUFFIX','dc=example,dc=tld');

// The admin bind dn (could be rootdn)
define ('BINDDN','cn=admin,dc=example,dc=tld');

// The Phamm container
define ('LDAP_BASE','o=hosting,dc=example,dc=tld');

et changer

// Welcome message
define ('SEND_WELCOME',1);
$welcome_msg = '../welcome_message.txt';
$welcome_subject = 'Welcome!';
# $welcome_sender = '[email protected]';
$welcome_bcc = '[email protected]';

Cela enverra un message de bienvenue et un Cci à votre compte postmaster.

Activez le plugin fpt et person en supprimant le // dans la section plugins. Si vous le souhaitez, vous pouvez également activer les plugins davical et/ou jabber, le schéma nécessaire à ces plugins est installé.

Dans le config.inc.php vous trouverez :

define ('DELETE_ACCOUNT_IMMEDIATELY', false);

Si vous le définissez sur vrai, la suppression du compte ou du domaine prend effet immédiatement. Cependant, la boîte aux lettres physique n'est pas supprimée (ni le répertoire du domaine). Afin de supprimer la boîte aux lettres physique, nous devons utiliser le script cleaner.sh. Ceci est décrit ci-dessous.

Vous pouvez modifier plugins/mail.xml pour modifier les valeurs par défaut pour SMTP et les quotas, modifiez-les selon vos besoins. La valeur par défaut est définie sur un quota de 1 Go.

Vous pouvez modifier plugins/ftp.xml pour modifier les valeurs par défaut du répertoire et du quota ftp (de base) par défaut, modifiez-les selon vos besoins.

N'oubliez pas de créer les alias et/ou les boîtes aux lettres pour le postmaster, le webmaster car ceux-ci sont utilisés par les fonctionnaires et les FAI pour envoyer du courrier en cas de ... Ne pas avoir ces adresses pourrait entraîner une mise sur liste noire.

Par défaut, les alias [email protected] et [email protected] qui sont par défaut [email protected] sont créés.

Maintenant, le script de nettoyage :

cp tools/cleaner.sh /home/vmail/cleaner.sh

Modifiez les éléments suivants dans cleaner.sh

BINDDN="cn=admin,dc=example,dc=tld"
BINDPW="password"
LDAP_BASE="o=hosting,dc=example,dc=tld"

Pour refléter votre installation

nano /home/vmail/cleaner.sh
crontab -e

Insérez ce qui suit :

*/10 * * * * /home/vmail/cleaner.sh

Cela exécutera le script de nettoyage toutes les 10 minutes. N'hésitez pas à modifier le timing.

Nous allons maintenant ajouter vMailpanel à Apache

nano /etc/apache2/conf-enabled/000-default.conf

Et ajoutez entre les entrées ce qui suit :

Alias /vmailpanel /usr/share/vMailpanel/public

Ceci conclut la configuration de vMailpanel.

Étape 7 :Installer et configurer la messagerie Web Roundcube

Tout d'abord, nous créons une base de données appelée roundcube :

mysqladmin -u root -p create roundcube

Ensuite, nous passons au shell MySQL :

mysql -u root -p

Sur le shell MySQL, nous créons l'utilisateur roundcube avec le mot de passe roundcube_password (remplacez-le par un mot de passe de votre choix) qui dispose des privilèges SELECT, INSERT, UPDATE, DELETE sur la base de données roundcube. Cet utilisateur sera utilisé par Postfix et Courier pour se connecter à la base de données roundcube :

GRANT SELECT, INSERT, UPDATE, DELETE ON roundcube.* TO 'roundcube'@'localhost' IDENTIFIED BY 'roundcube_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON roundcube.* TO 'roundcube'@'localhost.localdomain' IDENTIFIED BY 'roundcube_password';
FLUSH PRIVILEGES;

Maintenant, nous téléchargeons et installons Roundcube :

cd/usr/src 
wget https://github.com/roundcube/roundcubemail/releases/download/1.3.6/roundcubemail-1.3.6.tar.gz
tar xvzf roundcubemail-1.3.6.tar.gz
mv roundcubemail-1.3.6 /var/www/roundcube
chown -R www-data:www-data /var/www/roundcube
cd /var/www/roundcube

Vérifiez toujours la dernière version de Roundcube et téléchargez celle-ci et modifiez les commandes ci-dessus en fonction de la version de Roundcube que vous avez téléchargée.

https://roundcube.net/download/

Maintenant, nous chargeons les tables sql dans la base de données que nous avons créée auparavant :

mysql -u roundcube -p roundcube <  SQL/mysql.initial.sql

Modifions maintenant la configuration de Roundcube :

cp config/config.inc.php.sample config/config.inc.php

Définissez la configuration de la base de données :

nano config/config.inc.php

Remplacez la ligne suivante par la configuration de la base de données :

$rcmail_config['db_dsnw'] = 'mysql://roundcube:[email protected]/roundcube';

Et changez ce qui suit

De :

// List of active plugins (in plugins/ directory)
$config['plugins'] = array(
    'archive', 
    'zipdownload',

À :

// List of active plugins (in plugins/ directory)
$config['plugins'] = array(
    'archive', 
    'zipdownload',
    'password',
    'vacation', 

Modifier :

chars.$rcmail_config['des_key'] = 'rcmail-!24ByteDESkey*Str';

À :

chars.$rcmail_config['des_key'] = 'your-own-24-digitkeystring';

Modifier :

$rcmail_config['default_host'] = '';

À :

$rcmail_config['default_host'] = 'localhost'; 

Modifier :

$rcmail_config['smtp_server'] = ''; 

À

$rcmail_config['smtp_server'] = 'localhost'; 

La configuration du plugin de mot de passe :

cp plugins/password/config.inc.php.dist plugins/password/config.inc.php

Modifiez la configuration :

nano plugins/password/config.inc.php

Modifiez les entrées suivantes

De :

$rcmail_config['password_driver'] = 'sql';

À :

$rcmail_config['password_driver'] = 'ldap'; 

De :

// LDAP Driver options
// -------------------
// LDAP server name to connect to.
// You can provide one or several hosts in an array in which case the hosts are tried from left to right.
// Exemple: array('ldap1.exemple.com', 'ldap2.exemple.com');
// Default: 'localhost'
$rcmail_config['password_ldap_host'] = 'localhost';

// LDAP server port to connect to
// Default: '389'
$rcmail_config['password_ldap_port'] = '389';

// TLS is started after connecting
// Using TLS for password modification is recommanded.
// Default: false
$rcmail_config['password_ldap_starttls'] = false;

// LDAP version
// Default: '3'
$rcmail_config['password_ldap_version'] = '3';

// LDAP base name (root directory)
// Exemple: 'dc=exemple,dc=com'
$rcmail_config['password_ldap_basedn'] = 'dc=exemple,dc=com';

// LDAP connection method
// There is two connection method for changing a user's LDAP password.
// 'user': use user credential (recommanded, require password_confirm_current=true)
// 'admin': use admin credential (this mode require password_ldap_adminDN and password_ldap_adminPW)
// Default: 'user'
$rcmail_config['password_ldap_method'] = 'user';

// LDAP Admin DN
// Used only in admin connection mode
// Default: null
$rcmail_config['password_ldap_adminDN'] = null;

// LDAP Admin Password
// Used only in admin connection mode
// Default: null
$rcmail_config['password_ldap_adminPW'] = null;

// LDAP user DN mask
// The user's DN is mandatory and as we only have his login,
// we need to re-create his DN using a mask
// '%login' will be replaced by the current roundcube user's login
// '%name' will be replaced by the current roundcube user's name part
// '%domain' will be replaced by the current roundcube user's domain part
// Exemple: 'uid=%login,ou=people,dc=exemple,dc=com'
$rcmail_config['password_ldap_userDN_mask'] = 'uid=%login,ou=people,dc=exemple,dc=com';

// LDAP password hash type
// Standard LDAP encryption type which must be one of: crypt,
// ext_des, md5crypt, blowfish, md5, sha, smd5, ssha, or clear.
// Please note that most encodage types require external libraries
// to be included in your PHP installation, see function hashPassword in drivers/ldap.php for more info.
// Default: 'crypt'
$rcmail_config['password_ldap_encodage'] = 'crypt';

// LDAP password attribute
// Name of the ldap's attribute used for storing user password
// Default: 'userPassword'
$rcmail_config['password_ldap_pwattr'] = 'userPassword';

// LDAP password force replace
// Force LDAP replace in cases where ACL allows only replace not read
// See http://pear.php.net/package/Net_LDAP2/docs/latest/Net_LDAP2/Net_LDAP2_Entry.html#methodreplace
// Default: true
$rcmail_config['password_ldap_force_replace'] = true;

À :

$rcmail_config['password_ldap_host'] = 'localhost';
$rcmail_config['password_ldap_port'] = '389';
$rcmail_config['password_ldap_starttls'] = false;
$rcmail_config['password_ldap_version'] = '3';
$rcmail_config['password_ldap_basedn'] = 'o=hosting,dc=example,dc=tld';

$rcmail_config['password_ldap_method'] = 'user';
$rcmail_config['password_ldap_adminDN'] = null;
$rcmail_config['password_ldap_adminPW'] = null;

$rcmail_config['password_ldap_userDN_mask'] = 'mail=%login,vd=%domain,o=hosting,dc=example,dc=tld';

$rcmail_config['password_ldap_encodage'] = 'md5';
$rcmail_config['password_ldap_pwattr'] = 'userPassword';

$rcmail_config['password_ldap_force_replace'] = true;

Nous allons maintenant télécharger et installer le plugin vacances :

cd /usr/src
wget https://github.com/bhuisgen/rc-vacation/archive/master.zip
unzip rc-vacation-master.zip
mv rc-vacation /var/www/roundcube/plugins/vacation
cd /var/www/roundcube/plugins/vacation

Maintenant, nous modifions la configuration et changeons :

nano plugins/vacation/config.inc.php

Modifier :

$rcmail_config['vacation_gui_vacationsubject'] = TRUE;

À :

$rcmail_config['vacation_gui_vacationsubject'] = FALSE;

Modifier :

$rcmail_config['vacation_driver'] = 'sql'; 

À :

$rcmail_config['vacation_driver'] = 'ldap';

Modifier :

// Base DN
$rcmail_config['vacation_ldap_base'] = 'dc=ldap,dc=my,dc=domain';

// Bind DN
$rcmail_config['vacation_ldap_binddn'] =
'cn=user,dc=ldap,dc=my,dc=domain';

// Bind password
$rcmail_config['vacation_ldap_bindpw'] = 'pa$$w0rd';

À :

// Base DN
$rcmail_config['vacation_ldap_base'] = 'o=hosting,dc=example,dc=tld';

// Bind DN
$rcmail_config['vacation_ldap_binddn'] = 'cn=admin,dc=example,dc=tld';

// Bind password
$rcmail_config['vacation_ldap_bindpw'] = 'yourpassword';

Modifier :

// Search filter to read data
$rcmail_config['vacation_ldap_search_filter'] = '(objectClass=mailAccount)';

// Search attributes to read data
$rcmail_config['vacation_ldap_search_attrs'] = array ('vacationActive', 'vacationInfo');

// array of DN to use for modify operations required to write data.
$rcmail_config['vacation_ldap_modify_dns'] = array (
'cn=%email_local,ou=Mailboxes,dc=%email_domain,ou=MailServer,dc=ldap,dc=my,dc=domain'
);

À :

// Search base to read data
$rcmail_config['vacation_ldap_search_base'] =
'mail=%username,vd=%email_domain,o=hosting,dc=example,dc=tld';

// Search filter to read data
$rcmail_config['vacation_ldap_search_filter'] = '(objectClass=VirtualMailAccount)';

// Search attributes to read data
$rcmail_config['vacation_ldap_search_attrs'] = array ('vacationActive', 'vacationInfo');

// array of DN to use for modify operations required to write data.
$rcmail_config['vacation_ldap_modify_dns'] = array (
'mail=%username,vd=%email_domain,o=hosting,dc=example,dc=tld'
);

Nous devons changer la racine du document dans la configuration du serveur Apche2 afin que Roundcube soit accessible.

nano /etc/apache2/sites-enabled/000-default.conf

Et changer de :

DocumentRoot /var/www/html

À :

DocumentRoot /var/www/

Ceci conclut la configuration de Roundcube.

Étape 8 :Installer et configurer proftpd

Tout d'abord, nous allons installer proftpd et ses prérequis :

apt install proftpd proftpd-mod-ldap

En fonction de votre charge, vous pouvez choisir entre stand alone et inet.d.

Remarque :Vous pouvez copier les fichiers de configuration de examples/proftpd vers /etc/proftpd, mais pour plus de clarté, je vais décrire toutes les étapes de configuration.

Modifiez /etc/proftpd/proftpd.conf :

nano /etc/proftpd/proftpd.conf

Et changer de :

# Use this to jail all users in their homes
# DefaultRoot                   ~

À :

# Use this to jail all users in their homes
DefaultRoot      

Et changer de :

#RequireValidShell               off

À :

RequireValidShell               off

Et changez :

# Alternative authentication frameworks
#
# Include /etc/proftpd/ldap.conf
#Include /etc/proftpd/sql.conf

To:

# Alternative authentication frameworks
#
Include /etc/proftpd/ldap.conf
#Include /etc/proftpd/sql.conf
             ~

Now edit /etc/proftpd/modules.conf:

nano /etc/proftpd/modules.conf 

And change from:

# Install proftpd-mod-ldap to use this
#LoadModule mod_ldap.c

To:

# Install proftpd-mod-ldap to use this
LoadModule mod_ldap.c

And from:

# Install proftpd-mod-ldap to use this
# LoadModule mod_quotatab_ldap.c

To:

# Install proftpd-mod-ldap to use this
LoadModule mod_quotatab_ldap.c 

No edit /etc/proftpd/ldap.conf and set the following:

<IfModule mod_ldap.c>
#
#LDAPServer ldap://ldap.example.com
#LDAPBindDN "cn=admin,dc=example,dc=com" "admin_password"
#LDAPUsers dc=users,dc=example,dc=com (uid=%u) (uidNumber=%u)
#LDAPUseTLS on
#
#
#LDAPServer ldaps://ldap.example.com
#LDAPBindDN "cn=admin,dc=example,dc=com" "admin_password"
#LDAPUsers dc=users,dc=example,dc=com (uid=%u) (uidNumber=%u)
#
LDAPServer ldap://127.0.0.1/??sub
LDAPBindDN "cn=vmail,o=hosting,dc=example,dc=tld "readonly"
LDAPUsers "o=hosting,dc=example,dc=tld" "(&(uid=%v)(objectclass=posixAccount))"
LDAPDefaultGID 33
LDAPDefaultUID 33
LDAPForceDefaultGID True
LDAPForceDefaultUID True

</IfModule>

The following commands set the default user to www-data which suits me, you can change these values to suit your setup or leave them out to use the login uid / gid.

LDAPDefaultGID                  33
LDAPDefaultUID 33
LDAPForceDefaultGID True
LDAPForceDefaultUID True

33 Is the uid/gid of my testing setup, it can be different on your setup.

This concludes the proftpd installation.

Step 9:Bringing it all together

Issue the following commands to restart all of the services:

service slapd restart 
service postfix restart
service dovecot restart
service proftpd restart
service apache2 restart

Now you can go to phamm and start adding mail domains and users.

Enjoy.

Note:notify me of any errors or problems with this how to so I can improve and amend this how to.

Use this thread in the forum:

https://www.howtoforge.com/community/threads/postfix-virtual-hosting-with-ldap-backend-and-with-dovecot-as-imap-pop3-server-on-ubuntu-bionic-beav.79408/

I am subscribed to this thread so I will get notifications of new posts in this thread.


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

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

  3. Le serveur parfait - Ubuntu 18.04 (Bionic Beaver) avec Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot et ISPConfig 3.1

  4. Comment installer Spamassassin avec Postfix et Dovecot sur Ubuntu/Debian Server

  5. Comment configurer un serveur de messagerie POP3 / IMAP avec Dovecot sur Ubuntu 18.04

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

Hébergement virtuel avec vsftpd et MySQL sur Ubuntu 12.04

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

Hébergement virtuel avec vsftpd et MySQL sur Ubuntu 12.10

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

Surveillance de serveur avec Munin et Monit sur Ubuntu 14.04 LTS