GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Alojamiento virtual Postfix con backend LDAP y con Dovecot como servidor IMAP/POP3 en Ubuntu Bionic Beaver 18.04 LTS

Este instructivo describirá cómo instalar y configurar el alojamiento de correo virtual con un backend LDAP.

El software que usaremos en este ejemplo: Postfix (MTA), Dovecot (IMAP/POP3), Gnarwl (vacaciones), OpenLDAP (LDAP) y vMailpanel como interfaz de administración.

Opcionales son Proftpd FTP, Roundcube (webmail) y MariaDB (backend SQL para Roundcube).

Esto funcionó para mí, pero no puedo garantizar que esta configuración funcione para usted, por lo que este procedimiento viene sin ninguna garantía.

Supuestos

Este instructivo asume las siguientes configuraciones, si su instalación difiere de esta, reemplace las entradas a continuación con su configuración real.

Ruta de entrega de correo (buzones):

/home/vmail/

Correo electrónico del usuario:

UID:1000, GID:1000

Postfijo de usuario:

UID: 108, GID:108

DN base de OpenLDAP:

dc=example,dc=tld

Cuenta de administrador de OpenLDAP:

cn=admin,dc=example,dc=tld

dn de búsqueda de vMailpanel:

o=hosting,dc=example,dc=tld

Una cuenta de solo lectura para el árbol o=hosting,dc=example,dc=tld:

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

Está utilizando root como usuario durante esta guía.

Si desea, por ejemplo, o=maildomains o ou=domains, asegúrese de reemplazar o=hosting con lo que desea, especialmente en acl.ldif. Este archivo acl es estricto, phamm no funcionará correctamente si no es exactamente como debería ser. Si desea un usuario de solo lectura diferente al de phamm, reemplace cn=phamm con cn=wat-you en todas partes de este procedimiento.

Esta guía también asume que ha instalado y configurado su servidor Ubuntu según sus necesidades. Hay muchas buenas guías sobre Howtoforge por ejemplo:

El servidor perfecto:Ubuntu 18.04 (Bionic Beaver) con Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot e ISPConfig 3.1

Puede detenerse después de la instalación y configuración de Apache2.

Paso 1:Descargar vMailpanel

Descargue el paquete vMailpanel:

cd /usr/share

Obtenga la última versión de vMailpanel:

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

Bien, ahora podemos empezar.

Paso 2:Instalar y configurar OpenLDAP

Instale OpenLDAP y ldap-utils:

apt -y install slapd ldap-utils php-ldap

Vuelva a configurar slapd para asegurarse de que refleje su configuración deseada

dpkg-reconfigure slapd

Tendrás que responder algunas preguntas:

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

Cambie al directorio /etc/ldap/schema:

cd /etc/ldap/schema

Copie phamm.schema y perversia.net.schema del paquete phamm al directorio schema:

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

Ahora agregamos los esquemas a 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

Ahora creamos la entrada o=hosting y la cuenta de vmail.

Modifique el texto a continuación según sus necesidades y deseos y genere una contraseña para la cuenta de vmail. El hash actualmente en este archivo establece la contraseña como de solo lectura

Para crear el hash para la cuenta de vmail, emita el siguiente comando:

slappasswd -h {MD5}

Escriba la contraseña deseada dos veces y copie el resultado en el texto a continuación.

nano base.ldif

Contenido 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

Cargue el dn base en la base de datos con el siguiente comando:

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

Ahora necesitamos modificar las ACL para que se otorgue el acceso correcto a cada tipo de usuario.

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

Puede verificar las nuevas ACL con el siguiente comando:

slapcat -n 0

Esto concluye la configuración de OpenLDAP.

Paso 3:Instalar y configurar Postfix

Antes de esto, necesitamos tener el usuario vmail y su directorio de inicio.

Cree el usuario y el grupo vmail :

useradd vmail

De forma predeterminada, el grupo vmail también se crea.

Verifique /etc/passwd para obtener el uid real y el número de grupo.

A continuación, cree el directorio vmail y establezca la propiedad para el usuario y el grupo vmail .

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

Ejecute el siguiente comando para instalar Postfix y otras aplicaciones requeridas:

apt install postfix postfix-ldap

Se le harán dos preguntas. Responda de la siguiente manera:

Tipo general de configuración de correo: <--Independiente
Nombre de correo del sistema: <-- mail.example.tld

No instalamos sasl ya que usaremos Dovecot LDA y entregaremos.

Ahora creamos los certificados para 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

Nota:puede copiar todos los archivos de ejemplos/posfijo en su directorio etc/posfijo y realizar los cambios correspondientes. Por motivos de exhaustividad, daré la configuración completa a continuación.

Ahora configuraremos postfix:

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

Y pega lo siguiente en él. Tenga en cuenta que esta configuración permite el envío (retransmisión) de correos por parte de usuarios autenticados, y también el envío de correos locales (como por ejemplo a root, postmaster, ...) a los respectivos alias si están configurados.

smtpd_banner =$myhostname ESMTP $mail_name
biff =no
 
# agregar .domain es tarea del MUA.
append_dot_mydomain =no
 
# Descomentar el siguiente línea para generar advertencias de "correo retrasado"
delay_warning_time =4h
 
# Parámetros 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 =todos
#smtp_bind_address =su dirección IP (opcional) ==>desmarque y cambie la dirección IP para su configuración.
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 =sí
smtpd_tls_auth_only =no

smtp_use_tls =sí
smtp_tls_note_starttls_offer =sí
smtpd_tls_CAfile =/etc/postfix/ssl/cacert.pem
smtpd_level =1
smtpd_tls_received_header =sí
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
    rechazar_ rbl_client list.dsbl.org
    rechazo_rbl_client cbl.abuseat.org
    rechazo_rhsbl_sender dsn.fc-ignorant.org

smtpd_data_restrictions =
    rechazo_unauth_canalización,
    rechazo_multi_recipient_bounce,
    permiso

smtpd_helo_required =sí
 
# 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 .$midominio, $midominio

virtual_alias_maps = 
    ldap:/etc/postfix/ldap-aliases.cf,
    ldap:/etc/postfix/ldap-virtualforward.cf,
    ldap:/etc/postfix/ldap-accountsmap.cf
 
# cuentas virtuales para entrega
virtual_mailbox_base =/home/vmail
virtual_mailbox_maps =
    ldap :/etc/postfix/ldap-accounts.cf
virtual_minimum_uid =1000 ==> Cambie esto al uid real del usuario vmail
virtual_uid_maps =static:1000 ==> Cambie esto al uid real de el usuario vmail
virtual_gid_maps =static:1000 ==> Cámbielo al uid real del usuario vmail
 
local_recipient_maps =$alias_maps

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

nano /etc/postfix/master.cf

Y pegue lo siguiente en él (agregue el final):

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}

Ahora necesitamos escribir los diferentes archivos ldap-xxx.cf

nano ldap-accounts.cf

Y pegue lo siguiente en él:

host_servidor =host_local
puerto_servidor =389
versión =3
bind =sí
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)(correo =%s))(forwardActive=FALSE)(accountActive=TRUE)(delete=FALSE))
result_attribute =buzón 

nano ldap-accounstmap.cf

Y pegue lo siguiente en él:

host_servidor =host_local
puerto_servidor =389
versión =3
bind =sí
start_tls =no
bind_dn =cn=vmail,o=hosting,dc=example,dc =tld
bind_pw =solo lectura
búsqueda_base =o=hosting,dc=ejemplo,dc=tld
ámbito =sub
query_filter =(&(&(objectClass=VirtualMailAccount)(correo =%s))(forwardActive=FALSE)(accountActive=TRUE)(delete=FALSE))
result_attribute =mail 

nano ldap-aliases.cf

Y pegue lo siguiente en él:

host_servidor =host_local
puerto_servidor =389
versión =3
bind =sí
start_tls =no
bind_dn =cn=vmail,o=hosting,dc=example,dc =tld
bind_pw =solo lectura
búsqueda_base =o=alojamiento,dc=ejemplo,dc=tld
ámbito =sub
query_filter =(&(&(objectClass=VirtualMailAlias)(correo =%s))(accountActive=TRUE))
result_attribute =maildrop 

nano ldap-transport.cf

Y pegue lo siguiente en él:

host_servidor =host_local
puerto_servidor =389
versión =3
bind =sí
start_tls =no
bind_dn =cn=vmail,o=hosting,dc=example,dc =tld
bind_pw =solo lectura
búsqueda_base =o=hosting,dc=ejemplo,dc=tld
ámbito =sub
query_filter =(&(&(vd=%s)( objectClass=VirtualDomain))(accountActive=TRUE)(delete=FALSE)) 
result_attribute =postfixTransport 

nano ldap-vacaciones.cf

Y pegue lo siguiente en él:

host_servidor =host_local
puerto_servidor =389
versión =3
bind =sí
start_tls =no
bind_dn =cn=vmail,o=hosting,dc=example,dc =tld
bind_pw =solo lectura
búsqueda_base =o=hosting,dc=ejemplo,dc=tld
ámbito =sub
query_filter =(&(&(objectClass=VirtualMailAccount)(correo =%s))(vacationActive=TRUE)(forwardActive=FALSE)(accountActive=TRUE)(delete=FALSE))
result_attribute =mailAutoreply 

nano ldap-virtualforward.cf

Y pegue lo siguiente en él:

host_servidor =host_local
puerto_servidor =389
versión =3
bind =sí
start_tls =no
bind_dn =cn=vmail,o=hosting,dc=example,dc =tld
bind_pw =solo lectura
búsqueda_base =o=hosting,dc=ejemplo,dc=tld
ámbito =sub
query_filter =(&(&(objectClass=VirtualMailAccount)(correo =%s))(vacationActive=FALSE)(forwardActive=TRUE)(accountActive=TRUE)(delete=FALSE))
result_attribute =maildrop

Esto concluye la configuración del postfijo.

Paso 4:Instalar y configurar Dovecot

apt install dovecot-imapd dovecot-pop3d dovecot-ldap

Esto instalará dovecot y todos los archivos necesarios y también creará los certificados SSL estándar para IMAP y POP3.

Primero, cambiamos al directorio dovecot.

Nota:puede copiar todos los archivos en ejemplos/dovecot a su directorio etc/dovecot y hacer los cambios correspondientes. Por motivos de exhaustividad, daré la configuración completa a continuación.

 cd /etc/dovecot

Ahora configuramos los diferentes archivos de configuración de dovecot.

nano dovecot-ldap.conf.ext

Y haz los siguientes cambios:

hosts           =localhost:389
ldap_version    =3
auth_bind       =yes
dn                       =cn=vmail,o=hosting,dc=example,dc=tld
dnpass          =solo lectura
base            =o=hosting,dc=hosting,dc=tld
scope           =subtree
deref           =nunca

user_attrs =quota=quota=maildir:storage
user_attrs =cuota=cuota=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

Y cambie la sección Contraseña y bases de datos de usuario a esto:

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

Y haz los siguientes cambios:

ubicación_correo =maildir:/home/vmail/%d/%u

mail_uid =1000 ==> cambiar al valor real de vmail uid

mail_gid =1000 ==> cambie esto al valor real de vmail gid

first_valid_uid =1000 ==> cambiar al valor real de uid de vmail

first_valid_gid =1000 ==> cambie esto al valor real de vmail gid

vi 10-master.conf 

Y haz los siguientes cambios:

unix_listener auth-userdb {
    modo =0666
    usuario =vmail
    grupo =vmail
  }

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

 vi 15-lda.conf

Y haz los siguientes cambios: 

postmaster_address = [correo electrónico protegido]

lda_mailbox_autocreate =sí

Esto concluye la configuración de Dovecot.

Paso 5:Instalar y configurar gnarwl

Instalemos gnarwl:

apt install gnarwl

Ahora configuremos gnarwl.

Primero, haremos una copia de seguridad del archivo de configuración original y lo reemplazaremos por uno nuevo.

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

Ahora creamos el nuevo archivo conf:

vi /etc/gnarwl.conf

E inserte lo siguiente:

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

Hacer que el directorio gnarwl sea legible para el usuario de vmail

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

A continuación, debemos agregar el transporte gnarwl a postfix

vi /etc/postfix/transport

Inserte lo siguiente:

.autoreply      gnarwl:

Ahora necesitamos crear transport.db

postmap /etc/postfix/transport

Esto concluye la configuración de Gnarwl.

Paso 6:Instalar y configurar vMailpanel

Ya que descargamos vMailpanel anteriormente, podemos comenzar directamente con la configuración de la interfaz de vMailpanel.

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

Ahora configuraremos phamm para uso real.

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

Cambie los parámetros de conexión ldap para que se ajusten a su configuración real.

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

y cambiar

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

Esto enviará un mensaje de bienvenida y una copia oculta a su cuenta de postmaster.

Habilite el complemento fpt y person eliminando // en la sección de complementos. Si lo desea, también puede habilitar los complementos davical o jabber, el esquema necesario para estos complementos está instalado.

En config.inc.php encontrará:

define ('DELETE_ACCOUNT_IMMEDIATELY', false);

Si establece esto en verdadero, la eliminación de la cuenta o el dominio tendrá efecto de inmediato. Sin embargo, no se elimina el buzón físico (o el directorio del dominio). Para eliminar el buzón físico, debemos usar el script cleaner.sh. Esto se describe a continuación.

Puede editar plugins/mail.xml para cambiar los valores predeterminados de SMTP y cuota, modifíquelos según sus necesidades. El valor predeterminado es una cuota de 1 GB.

Puede editar plugins/ftp.xml para cambiar los valores predeterminados del directorio ftp (base) predeterminado y la cuota, modifíquelos según sus necesidades.

No olvide crear los alias o buzones de correo para postmaster, webmaster, ya que estos son utilizados por funcionarios e ISP para enviar correo en caso de... No tener estas direcciones podría resultar en una lista negra.

De forma predeterminada, se crean los alias [email protected] y [email protected] que por defecto son [email protected].

Ahora el script más limpio:

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

Cambie lo siguiente en cleaner.sh

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

Para reflejar su instalación

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

Inserte lo siguiente:

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

Esto ejecutará el script de limpieza cada 10 minutos. Siéntete libre de cambiar el tiempo.

Ahora agregaremos vMailpanel a Apache

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

Y agregue entre las entradas lo siguiente:

Alias /vmailpanel /usr/share/vMailpanel/public

Esto concluye la configuración de vMailpanel.

Paso 7:Instalar y configurar Roundcube webmail

Primero, creamos una base de datos llamada roundcube:

mysqladmin -u root -p create roundcube

A continuación, vamos al shell de MySQL:

mysql -u root -p

En el shell de MySQL, creamos el usuario roundcube con la contraseña roundcube_password (reemplácela con una contraseña de su elección) que tiene privilegios SELECCIONAR, INSERTAR, ACTUALIZAR, ELIMINAR en la base de datos de roundcube. Este usuario será utilizado por Postfix y Courier para conectarse a la base de datos 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;

Ahora descargamos e instalamos 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

Siempre verifique la última versión de Roundcube y descárguela y modifique los comandos anteriores a la versión de Roundcube que descargó.

https://roundcube.net/download/

Ahora cargamos las tablas sql en la base de datos que creamos antes:

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

Ahora editamos la configuración de Roundcube:

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

Establecer la configuración de la base de datos:

nano config/config.inc.php

Cambie la siguiente línea a la configuración de la base de datos:

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

Y cambia lo siguiente

De:

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

Para:

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

Cambiar:

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

Para:

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

Cambiar:

$rcmail_config['default_host'] = '';

Para:

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

Cambiar:

$rcmail_config['smtp_server'] = ''; 

Para

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

La configuración para el complemento de contraseña:

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

Edite la configuración:

nano plugins/password/config.inc.php

Cambiar las siguientes entradas

De:

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

Para:

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

Para:

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

Ahora vamos a descargar e instalar el complemento de vacaciones:

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

Ahora editamos la configuración y cambiamos:

nano plugins/vacation/config.inc.php

Cambiar:

$rcmail_config['vacation_gui_vacationsubject'] = TRUE;

Para:

$rcmail_config['vacation_gui_vacationsubject'] = FALSE;

Cambiar:

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

Para:

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

Cambiar:

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

Para:

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

Cambiar:

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

Para:

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

Tenemos que cambiar la raíz del documento en la configuración del servidor Apche2 para que se pueda acceder a Roundcube.

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

Y cambiar de:

DocumentRoot /var/www/html

Para:

DocumentRoot /var/www/

Esto concluye la configuración de Roundcube.

Paso 8:Instalar y configurar proftpd

Primero, instalaremos proftpd y sus requisitos:

apt install proftpd proftpd-mod-ldap

Dependiendo de su carga, puede decidir entre stand alone e inet.d.

Nota:puede copiar los archivos de configuración de samples/proftpd a /etc/proftpd, pero para mayor claridad, describiré todos los pasos de configuración.

Editar /etc/proftpd/proftpd.conf:

nano /etc/proftpd/proftpd.conf

Y cambiar de:

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

Para:

# Use this to jail all users in their homes
DefaultRoot      

Y cambiar de:

#RequireValidShell               off

Para:

RequireValidShell               off

Y cambiar:

# 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. Alojamiento virtual con Proftpd y MySQL (incluida la cuota) en Ubuntu 14.04LTS

  2. Usuarios virtuales y dominios con Postfix, Courier, MySQL y SquirrelMail (Ubuntu 13.10)

  3. El servidor perfecto:Ubuntu 18.04 (Bionic Beaver) con Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot e ISPConfig 3.1

  4. Cómo instalar Spamassassin con Postfix y Dovecot en Ubuntu/Debian Server

  5. Cómo configurar un servidor de correo POP3/IMAP con Dovecot en Ubuntu 18.04

Usuarios virtuales y dominios con Postfix, Courier, MySQL y SquirrelMail (Ubuntu 12.04 LTS)

Alojamiento virtual con vsftpd y MySQL en Ubuntu 12.04

Usuarios virtuales y dominios con Postfix, Courier, MySQL y SquirrelMail (Ubuntu 12.10)

Alojamiento virtual con vsftpd y MySQL en Ubuntu 12.10

Alojamiento virtual con Proftpd y MySQL (incluida la cuota) en Ubuntu 12.10

Monitoreo de servidores con Munin y Monit en Ubuntu 14.04 LTS