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