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