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

Ce howto décrira comment installer et configurer un hébergement de messagerie virtuel avec un backend LDAP.

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

Lesoptions sontProftpd FTP,Roundcube(webmail) etMariaDB (backend SQL pour Roundcube).

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

Hypothèses

Ce guide suppose les configurations suivantes. Si ton installation diffère, remplace les entrées ci-dessous par ta configuration réelle.

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

/home/vmail/

Utilisateurvmail:

UID:1000, GID:1000

Utilisateurpostfix:

UID: 108, GID:108

Base OpenLDAP dn :

dc=example,dc=tld

Compte admin OpenLDAP :

cn=admin,dc=example,dc=tld

vMailpanel search dn :

o=hosting,dc=example,dc=tld

Un compte en lecture seule pour l’arbre o=hosting,dc=example,dc=tld :

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

Tu utilises root comme utilisateur pendant ce guide.

Si tu veux par exemple o=maildomains ou ou=domains, veille à remplacer o=hosting par ce que tu veux, surtout dans le fichier acl.ldif. Ce fichier acl est strict, phamm ne fonctionnera pas correctement s’il n’est pas exactement comme il doit l’être. Si tu veux un utilisateur en lecture seule différent de phamm, remplace cn=phamm par cn=wat-you partout dans ce guide.

Ce guide suppose également que tu as installé et configuré ton serveur Ubuntu selon tes besoins, il existe de nombreux bons guides surHowtoforgepar exemple :

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

Tu peux t’arrêter après l’installation et la configuration d’Apache2.

Étape 1 : Télécharge vMailpanel

Télécharge le paquet vMailpanel :

cd /usr/share

Récupère la dernière version de vMailpanel :

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

OK, nous pouvons maintenant commencer.

Étape 2 : Installe et configure OpenLDAP

Installe OpenLDAP et ldap-utils :

apt -y install slapd ldap-utils php-ldap

Reconfigure slapd pour t’assurer qu’il reflète la configuration souhaitée

dpkg-reconfigure slapd

Tu devras 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

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

cd /etc/ldap/schema

Copie les schémas phamm.schema et perversia.net.schema du paquet phamm dans le répertoire schema :

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

Maintenant, nous ajoutons 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

Maintenant, nous créons l’entrée o=hosting, et le compte vmail.

Modifie le texte ci-dessous selon tes besoins et tes envies et génère 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 pour le compte vmail, lance la commande suivante :

slappasswd -h {MD5}

Tape deux fois le mot de passe souhaité et copie 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

Charge 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 pour que l’accès correct soit donné à chaque type d’utilisateur.

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

Tu peux vérifier les nouveaux acl avec la commande suivante :

slapcat -n 0

Ceci conclut la configuration d’OpenLDAP.

Étape 3 : Installer et configurer Postfix

Avant cela, nous devons avoir l’utilisateurvmailet son répertoire personnel.

Crée l‘utilisateur et le groupevmail:

useradd vmail

Par défaut, le groupevmailest également créé.

Vérifie/etc/passwdpour connaître l’uid et le numéro de groupe réels.

Ensuite, crée lerépertoirevmailet attribue la propriété à l‘utilisateur et au groupevmail.

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

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

apt install postfix postfix-ldap

Deux questions te seront posées. Réponds comme suit :

Type général de configuration du courrier :<–Standard alone
Nom du courrier du système :<– mail.example.tld

Nous n’installons pas sasl puisque nous utiliserons le LDA et la livraison de Dovecot.

Maintenant, nous créons 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 : tu peux copier tous les fichiers sous examples/postfix dans ton répertoire etc/postfix et faire les modifications nécessaires. Pour des raisons d’exhaustivité, je vais donner la configuration complète ci-dessous.

Maintenant, nous allons configurer postfix :

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

Et y coller ce qui suit. N’oublie pas que cette configuration permet l’envoi (le relais) 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 la ligne suivante pour générer des avertissements de « courrier retardé »
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 = ton adresse ip (facultatif) ==>démarque et change l’adresse ip pour ta 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 = yes
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
reject_rbl_client list.dsbl.org
reject_rbl_client cbl.abuseat.org
reject_rhsbl_sender dsn.fc-ignorant.org

smtpd_data_restrictions =
reject_unauth_pipelining,
reject_multi_recipient_bounce,
permit

smtpd_helo_required = yes

# 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.$mydomain, $mydomain

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 ==> Remplace-le par l’uid réel de l’utilisateur vmail
virtual_uid_maps = static:1000==> Remplace-le par l’uid réel de l’utilisateur vmail
virtual_gid_maps = static :1000==> Remplace-le par l’uid réel de l’utilisateur vmail

local_recipient_maps = $alias_maps

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

nano /etc/postfix/master.cf

Et colle ce qui suit dedans (ajoute 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}

Maintenant, nous devons écrire les différents fichiers ldap-xxx.cf

nano ldap-accounts.cf

Et coller ce qui suit dedans :

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 = mailbox

nano ldap-accounstmap.cf

Et colle ce qui suit dedans :

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 colle ce qui suit dedans :

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-vacation.cf

Et colle les éléments suivants dans ce fichier :

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 colle ce qui suit dans ce fichier :

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 l’installation de Postfix.

Étape 4 : Installer et configurer Dovecot

apt install dovecot-imapd dovecot-pop3d dovecot-ldap

Cette étape consiste à installer dovecot et tous les fichiers nécessaires, ainsi qu’à créer les certificats SSL standard pour les IMAP et POP3.

Tout d’abord, nous nous rendons dans le répertoire dovecot.

Remarque : tu peux copier tous les fichiers sous examples/dovecot dans ton répertoire etc/dovecot et faire les changements nécessaires. Pour des raisons d’exhaustivité, je vais donner la configuration complète ci-dessous.

 cd /etc/dovecot

Nous allons maintenant configurer les différents fichiers de configuration de dovecot.

nano dovecot-ldap.conf.ext

Et apporte les changements suivants :

hosts = localhost :389
ldap_version = 3
auth_bind = yes
dn= cn=vmail,o=hosting,dc=example,dc=tld
dnpass = readonly
base= o=hosting,dc=hosting,dc=tld
scope= sous-arbre
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 modifie la sectionBases de données des mots de passe et des utilisateurscomme suit :

#!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 fais les changements suivants :

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

mail_uid = 1000 ==> changement pour la valeur réelle de l’uid de vmail

mail_gid = 1000 ==> remplace cette valeur par la valeur vmail gidréelle

first_valid_uid = 1000==> remplacer par la valeur vmail uidactuelle

first_valid_gid = 1000==> remplace cette valeur par la valeur vmail gid réelle

vi 10-master.conf 

Et apporte les modifications suivantes :

unix_listener auth-userdb {
mode = 0666
utilisateur = vmail
groupe = vmail
}

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

 vi 15-lda.conf

Et apporte les modifications suivantes:

postmaster_address=[email protected]

lda_mailbox_autocreate = yes

Ceci conclut la configuration de Dovecot.

Étape 5 : Installer et configurer gnarwl

Installons gnarwl :

apt install gnarwl

Maintenant, configurons gnarwl.

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

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

Maintenant, nous créons le nouveau fichier de configuration :

vi /etc/gnarwl.conf

Et insère 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ère ce qui suit :

.autoreply      gnarwl:

Nous devons maintenant créer le transport.db

postmap /etc/postfix/transport

Ceci conclut la configuration de 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

Change les paramètres de connexion ldap pour les adapter à ta configuration réelle.

// *============================*
// *=== 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 change

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

Cela permettra d’envoyer un message de bienvenue et un bcc à ton compte postmaster.

Active le plugin fpt et person en supprimant le // dans la section plugins. Si tu veux, tu peux aussi activer les plugins davical et/ou jabber, le schéma nécessaire à ces plugins est installé.

Dans le fichier config.inc.php, tu trouveras :

define ('DELETE_ACCOUNT_IMMEDIATELY', false);

Si tu mets cette option à true, 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). Pour supprimer la boîte aux lettres physique, nous devons utiliser le script cleaner.sh. Celui-ci est décrit ci-dessous.

Tu peux éditerplugins/mail.xmlpour modifier les valeurs par défaut pour SMTP et le quota, modifie-les selon tes besoins. Par défaut, le quota est fixé à 1 Go.

Tu peux modifierplugins/ftp.xmlpour modifier les valeurs par défaut du répertoire ftp (base) par défaut et du quota, modifie-les selon tes besoins.

N’oublie pas de créer les alias et/ou les boîtes aux lettres pour postmaster, webmaster, car ils sont utilisés par les officiels et les FAI pour envoyer du courrier en cas de …. Si tu n’as pas ces adresses, tu risques de te retrouver sur une liste noire.

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

Maintenant, le script cleaner :

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

Change 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 ton installation

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

Insère ce qui suit :

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

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

Maintenant, nous allons ajouter vMailpanel à Apache

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

Et ajoute entre les entrées <VirtualHost> </VirtualHost> ce qui suit :

Alias /vmailpanel /usr/share/vMailpanel/public

Ceci conclut la configuration de vMailpanel.

Étape 7 : Installer et configurer le webmail Roundcube

Tout d’abord, nous créons une base de données appeléeroundcube:

mysqladmin -u root -p create roundcube

Ensuite, nous allons dans le shell MySQL :

mysql -u root -p

Sur le shell MySQL, nous créons l’utilisateurroundcubeavec le mot de passeroundcube_password(remplace-le par un mot de passe de ton choix) qui ales privilègesSELECT,INSERT,UPDATE,DELETEsur labase de donnéesroundcube. Cet utilisateur sera utilisé par Postfix et Courier pour se connecter à labase de donnéesroundcube:

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érifie toujours la dernière version de Roundcube, télécharge-la et modifie les commandes ci-dessus en fonction de la version de Roundcube que tu as 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

Maintenant, nous modifions la configuration de Roundcube :

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

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

nano config/config.inc.php

Change la ligne suivante dans la configuration de la base de données :

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

Et modifie 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', 

Changer :

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

À :

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

Changer :

$rcmail_config['default_host'] = '';

De :

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

Changer :

$rcmail_config['smtp_server'] = ''; 

Vers

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

La configuration pour le plugin de mot de passe :

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

Modifie la configuration :

nano plugins/password/config.inc.php

Change 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;

Maintenant, nous allons télécharger et installer le plugin de 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 allons éditer la configuration et changer :

nano plugins/vacation/config.inc.php

Changer :

$rcmail_config['vacation_gui_vacationsubject'] = TRUE;

À :

$rcmail_config['vacation_gui_vacationsubject'] = FALSE;

Changer :

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

À :

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

Changer :

// 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';

Changer :

// 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'
);

Vers :

// 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 modifier la racine du document dans la configuration du serveur Apche2 pour pouvoir accéder à Roundcube.

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

Et changer de :

DocumentRoot /var/www/html

À :

DocumentRoot /var/www/

Ceci conclut la configuration pour Roundcube.

Étape 8 : Installer et configurer proftpd

Tout d’abord, nous allons installer proftpd et ses exigences :

apt install proftpd proftpd-mod-ldap

En fonction de ta charge, tu peux choisir entre stand alone et inet.d.

Remarque : Tu peux copier les fichiers de configuration de examples/proftpd dans /etc/proftpd mais pour plus de clarté, je vais décrire toutes les étapes de la configuration.

Modifie/etc/proftpd/proftpd.conf:

nano /etc/proftpd/proftpd.conf

Et change de :

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

À :

# Use this to jail all users in their homes
DefaultRoot      

Et change de :

#RequireValidShell               off

À :

RequireValidShell               off

Et modifie :

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

À :

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

Maintenant, édite/etc/proftpd/modules.conf:

nano /etc/proftpd/modules.conf 

Et modifie de :

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

À :

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

Et de :

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

À :

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

Non éditez/etc/proftpd/ldap.confet définissez ce qui suit :

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

Les commandes suivantes définissent l’utilisateur par défaut comme étant www-data, ce qui me convient, tu peux modifier ces valeurs pour les adapter à ta configuration ou les laisser de côté pour utiliser le login uid / gid.

LDAPDefaultGID                  33
LDAPDefaultUID 33
LDAPForceDefaultGID True
LDAPForceDefaultUID True

33 est l’uid/gid de mon installation de test, il peut être différent sur ton installation.

Ceci conclut l’installation de proftpd.

Étape 9 : Réunir le tout

Exécute les commandes suivantes pour redémarrer tous les services :

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

Tu peux maintenant aller sur phamm et commencer à ajouter des domaines de messagerie et des utilisateurs.

Amuse-toi bien.

Remarque : signale-moi toute erreur ou tout problème concernant ce mode d’emploi afin que je puisse l’améliorer et le modifier.

Utilise ce fil de discussion dans le 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/

Je suis abonné à ce fil de discussion et je recevrai donc des notifications des nouveaux messages dans ce fil.

Vous aimerez aussi...