Alojamiento virtual de Postfix con backend LDAP y con Dovecot como servidor IMAP/POP3 en Ubuntu Bionic Beaver 18.04 LTS
Este howto describirá cómo instalar y configurar el alojamiento de correo virtual con un backend LDAP.
El software que utilizaremos en este howto:Postfix(MTA), Dovecot(IMAP / POP3),Gnarwl(vacaciones), OpenLDAP(LDAP) yvMailpanelcomo interfaz de gestión.
Son opcionalesProftpd FTP,Roundcube(webmail) yMariaDB (backend SQL para Roundcube).
A mí me ha funcionado, pero no puedo garantizar que esta configuración te funcione a ti, por lo que este manual no ofrece ninguna garantía.
Supuestos
Este tutorial asume las siguientes configuraciones, si tu instalación difiere de ésta, entonces reemplaza las entradas de abajo con tu configuración real.
Ruta de entrega del correo (buzones):
/home/vmail/
Usuariovmail:
UID:1000, GID:1000
Usuariopostfix:
UID: 108, GID:108
Dn base de OpenLDAP:
dc=example,dc=tld
Cuenta de administrador de OpenLDAP:
cn=admin,dc=example,dc=tld
vMailpanel search dn:
o=hosting,dc=example,dc=tld
Una cuenta de sólo lectura para el árbol o=hosting,dc=example,dc=tld:
cn=vmail,o=hosting,dc=example,dc=tld
Durante esta guía utilizarás a root como usuario.
Si quieres, por ejemplo, o=maildomains o ou=domains, asegúrate de sustituir o=hosting por lo que quieras, especialmente en el acl.ldif. Este archivo acl es estricto, phamm no funcionará correctamente si no es exactamente como debe ser. Si quieres un usuario de sólo lectura diferente a phamm, sustituye cn=phamm por cn=wat-you en todas las partes de esta guía.
Esta guía también asume que has instalado y configurado tu servidor Ubuntu según tus necesidades, hay muchas buenas guías enHowtoforgepor ejemplo:
Puedes parar después de la instalación y configuración de Apache2.
Paso 1: Descarga vMailpanel
Descarga el paquete vMailpanel:
cd /usr/share
Consigue la última versión de vMailpanel:
git clone https://git.com/wolmfan68/vMailpanel
Bien, ahora podemos empezar.
Paso 2: Instalar y configurar OpenLDAP
Instala OpenLDAP y ldap-utils:
apt -y install slapd ldap-utils php-ldap
Reconfigura slapd para asegurarte de que refleja tu configuración deseada
dpkg-reconfigure slapd
Tendrás que responder a 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
Entra en el directorio /etc/ldap/schema:
cd /etc/ldap/schema
Copia los esquemas phamm.schema y perversia.net.schema del paquete phamm al directorio schema:
cp /usr/share/vMailbox/schema/* /etc/ldap/schema.
Ahora añadimos 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 vmail.
Modifica el texto de abajo según tus necesidades y deseos y genera una contraseña para la cuenta de vmail. El hash que hay actualmente en este archivo establece la contraseña como de sólo lectura
Para crear el hash para la cuenta de vmail emite el siguiente comando:
slappasswd -h {MD5}
Escribe la contraseña deseada dos veces y copia el resultado en el texto de abajo.
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
Carga 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 tenemos que modificar las acl para que se dé 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
Puedes comprobar las nuevas acl’s con el siguiente comando:
slapcat -n 0
Con esto concluye la configuración de OpenLDAP.
Paso 3: Instalar y configurar Postfix
Antes de esto, necesitamos tener el usuariovmaily su directorio raíz.
Crea el usuario y el grupovmail:
useradd vmail
Por defecto, también se crea el grupovmail.
Comprueba en/etc/passwdel número de uid y de grupo reales.
A continuación, crea el directoriovmaily establece la propiedad para el usuario y el grupovmail.
mkdir /home/vmail
mkdir /home/vmail/domains
chown -R vmail:vmail /home/vmail
Ejecuta el siguiente comando para instalar Postfix y otras aplicaciones necesarias:
apt install postfix postfix-ldap
Se te harán dos preguntas. Contesta lo siguiente:
Tipo de configuración general del correo:<–Solo
Nombre del correo del sistema:<– correo.ejemplo.tld
No instalamos sasl ya que utilizaremos el LDA de Dovecot y el deliver.
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: puedes copiar todos los archivos de examples/postfix a tu directorio etc/postfix y hacer los cambios correspondientes. Por razones de exhaustividad, a continuación daré la configuración completa.
Ahora vamos a configurar postfix:
cd /etc/postfix
mv /etc/postfix/main.cf /etc/postfix/main.cf.bck
nano /etc/postfix/main.cf
Y pegar lo siguiente en él. Ten en cuenta que esta configuración permite el envío (relaying) de correos por parte de usuarios autentificados, 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 = $nombre_del_hostel ESMTP $nombre_del_correo
biff = no
# append_dominio es tarea del MUA.
append_dot_mydomain = no
# Descomenta la siguiente línea para generar avisos 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 = all
#smtp_bind_address = tu dirección ip (opcional) ==>desmarca y cambia la dirección ip de tu 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_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
home_mailbox = Maildir/
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_invalid_hostname
reject_non_fqdn_hostname
reject_non_fqdn_sender
reject_non_fqdn_recipient
reject_unauth_destination
reject_unauth_pipelining
reject_invalid_hostname
reject_unknown_sender_domain
reject_rbl_client list.dsbl.org
reject_rbl_client cbl.abuseat.org
reject_rhsbl_sender dsn.fc-ignorant.org
smtpd_data_restrictions =
reject_unauth_pipelining,
reject_multi_recipient_bounce,
permit
smtpd_helo_required = yes
# transport_maps
maildrop_destination_concurrency_limit = 2
maildrop_destination_recipient_limit = 1
gnarwl_destination_concurrency_limit = 1
gnarwl_destination_recipient_limit = 1
transport_maps = hash:/etc/postfix/transport, ldap:/etc/postfix/ldap-transport.cf
mydestination = $transport_maps, localhost, localhost.localdomain, $myhostname, localhost.$mydomain, $mydomain
virtual_alias_maps =
ldap:/etc/postfix/ldap-aliases.cf,
ldap:/etc/postfix/ldap-virtualforward.cf,
ldap:/etc/postfix/ldap-accountsmap.cf
# cuentas virtuales para la entrega
virtual_mailbox_base = /home/vmail
virtual_mailbox_maps =
ldap:/etc/postfix/ldap-accounts.cf
virtual_minimum_uid = 1000 ==> Cámbialo por el uid real del usuario vmail
virtual_uid_maps = static:1000==> Cámbialo por el uid real del usuario vmail
virtual_gid_maps = static:1000 ==> Cámbialo por eluid real del usuario vmail
local_recipient_maps = $alias_maps
recipient_bcc_maps = ldap:/etc/postfix/ldap-vacation.cf
nano /etc/postfix/master.cf
Y pega lo siguiente en él (añade 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 tenemos que escribir los diferentes archivos ldap-xxx.cf
nano ldap-accounts.cf
Y pegar en él lo siguiente
server_host = localhost
server_port = 389
version = 3
bind = yes
start_tls = no
bind_dn = cn=vmail,o=hosting,dc=example,dc=tld
bind_pw = readmonly
search_base = o=hosting,dc=example,dc=tld
scope = sub
query_filter = (&(&(objectClass=VirtualMailAccount)(mail=%s))(forwardActive=FALSE)(accountActive=TRUE)(delete=FALSE))
result_attribute = mailbox
nano ldap-accounstmap.cf
Y pega lo siguiente
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
Y pega lo siguiente
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
Y pega lo siguiente
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=DominioVirtual))(accountActive=TRUE)(delete=FALSE))
result_attribute = postfixTransport
nano ldap-vacaciones.cf
Y pega en él lo siguiente
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
Y pega en él lo siguiente
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=Cuenta de correo virtual)(mail=%s))(vacationActive=FALSE)(forwardActive=TRUE)(accountActive=TRUE)(delete=FALSE))
result_attribute = maildrop
Con esto concluye la configuración de Postfix.
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 de dovecot.
Nota: puedes copiar todos los archivos de examples/dovecot a tu directorio etc/dovecot y hacer los cambios correspondientes. Por razones de exhaustividad, a continuación daré la configuración completa.
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 = sólo lectura
base = o=hosting,dc=hosting,dc=tld
scope= subárbol
deref = nunca
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
Y cambia la secciónBases de datos de contraseñas yusuarios por esto
#!incluye auth-deny.conf.ext
#!incluye auth-master.conf.ext
#!incluye auth-system.conf.ext
#!incluye auth-sql.conf.ext
!incluye auth-ldap.conf.ext
#!incluye auth-passwdfile.conf.ext
#!incluye auth-checkpassword.conf.ext
#!incluye auth-vpopmail.conf.ext
#!incluye auth-static.conf.ext
vi 10-mail.conf
Y haz los siguientes cambios
mail_location = maildir:/home/vmail/%d/%u
mail_uid = 1000 ==> cambiar al valor real del uidde vmail
mail_gid = 1000 ==> cámbialo por el valor real del gidde vmail
first_valid_uid = 1000 ==> cámbialo por elvalor real de vmail uid
first_valid_gid = 1000==> cámbialo por el valor real del gid de vmail
vi 10-master.conf
Y haz los siguientes cambios
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
Y haz los siguientes cambios
postmaster_address = [email protected]
lda_mailbox_autocreate = sí
Esto concluye la configuración de Dovecot.
Paso 5: Instalar y configurar gnarwl
Vamos a instalar gnarwl:
apt install gnarwl
Ahora vamos a configurar gnarwl.
Primero, vamos a hacer una copia de seguridad del archivo de configuración original y a sustituirlo por uno nuevo.
mv /etc/gnarwl.conf /etc/gnarwl.conf.bck
Ahora creamos el nuevo archivo conf:
vi /etc/gnarwl.conf
E inserta 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
Haz que el directorio gnarwl sea legible para el usuario vmail
chown -R vmail:vmail /var/lib/gnarwl/
A continuación, tenemos que añadir el transporte gnarwl a postfix
vi /etc/postfix/transport
Inserta lo siguiente:
.autoreply gnarwl:
Ahora tenemos que crear el transport.db
postmap /etc/postfix/transport
Esto concluye la configuración de gnarwl.
Paso 6: Instalar y configurar vMailpanel
Como ya hemos descargado vMailpanel, podemos empezar 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 su uso real.
cp config.inc.example.php config.inc.php
nano config.inc.php
Cambia los parámetros de conexión ldap para que se ajusten a tu 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 cambia
// Welcome message define ('SEND_WELCOME',1); $welcome_msg = '../welcome_message.txt'; $welcome_subject = 'Welcome!'; # $welcome_sender = 'postmaster@localhost'; $welcome_bcc = '[email protected]';
Esto enviará un mensaje de bienvenida y una copia oculta (bcc) a tu cuenta postmaster.
Habilita el plugin fpt y person quitando el // en la sección de plugins. Si quieres también puedes habilitar los plugins davical y/o jabber, el esquema necesario para estos plugins está instalado.
En el config.inc.php encontrarás:
define ('DELETE_ACCOUNT_IMMEDIATELY', false);
Si lo estableces como verdadero, la eliminación de la cuenta o del dominio tiene efecto inmediato. Sin embargo, no se elimina el buzón físico (ni el directorio del dominio). Para eliminar el buzón físico, debemos utilizar el script cleaner.sh. Éste se describe a continuación.
Puedes editarplugins/mail.xmlpara cambiar los valores por defecto de SMTP y cuota, modificándolos según tus necesidades. El valor por defecto es de 1GB de cuota.
Puedes editarplugins/ftp.xmlpara cambiar los valores por defecto del directorio ftp (base) y la cuota, modifícalos según tus necesidades.
No olvides crear los alias y/o buzones para postmaster, webmaster ya que estos son utilizados por los funcionarios y los ISP para enviar el correo en caso de … No tener estas direcciones podría suponer entrar en una lista negra.
Por defecto se crean los alias [email protected] y [email protected] que por defecto son [email protected].
Ahora el script limpiador:
cp tools/cleaner.sh /home/vmail/cleaner.sh
Cambia lo siguiente en cleaner.sh
BINDDN="cn=admin,dc=example,dc=tld"
BINDPW="password"
LDAP_BASE="o=hosting,dc=example,dc=tld"
para que refleje tu instalación
nano /home/vmail/cleaner.sh
crontab -e
Inserta lo siguiente:
*/10 * * * * /home/vmail/cleaner.sh
Esto ejecutará el script limpiador cada 10 minutos. Siéntete libre de cambiar el tiempo.
Ahora añadiremos vMailpanel a Apache
nano /etc/apache2/conf-enabled/000-default.conf
Y añade entre las entradas <VirtualHost> </VirtualHost> lo siguiente:
Alias /vmailpanel /usr/share/vMailpanel/public
Con esto concluye la configuración de vMailpanel.
Paso 7: Instalar y configurar Roundcube webmail
Primero, creamos una base de datos llamadaroundcube:
mysqladmin -u root -p create roundcube
A continuación, vamos a la shell de MySQL:
mysql -u root -p
En la shell de MySQL, creamos el usuarioroundcubecon la contraseñaroundcube_password(sustitúyela por una contraseña de tu elección) que tiene privilegiosSELECT,INSERT,UPDATE,DELETEen la base de datosroundcube. Este usuario será utilizado por Postfix y Courier para conectarse a la base de datos deroundcube:
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
Busca siempre la última versión de Roundcube y descárgate esa y modifica los comandos anteriores a la versión de Roundcube que te hayas descargado.
https://roundcube.net/download/
Ahora cargamos las tablas sql en la base de datos que hemos creado 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
Establece la configuración de la base de datos:
nano config/config.inc.php
Cambia la siguiente línea en la configuración de la base de datos:
$rcmail_config['db_dsnw'] = 'mysql://roundcube:roundcube_password@localhost/roundcube';
Y cambia lo siguiente
De:
// List of active plugins (in plugins/ directory) $config['plugins'] = array(
'archive',
'zipdownload',
Hasta:
// List of active plugins (in plugins/ directory) $config['plugins'] = array(
'archive',
'zipdownload',
'password',
'vacation',
Cambiar:
chars.$rcmail_config['des_key'] = 'rcmail-!24ByteDESkey*Str';
Por:
chars.$rcmail_config['des_key'] = 'your-own-24-digitkeystring';
Cambiar:
$rcmail_config['default_host'] = '';
A:
$rcmail_config['default_host'] = 'localhost';
Cambiar:
$rcmail_config['smtp_server'] = '';
A
$rcmail_config['smtp_server'] = 'localhost';
La configuración del plugin de contraseñas:
cp plugins/password/config.inc.php.dist plugins/password/config.inc.php
Edita la configuración:
nano plugins/password/config.inc.php
Cambia 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;
A:
$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 plugin 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;
A:
$rcmail_config['vacation_gui_vacationsubject'] = FALSE;
Cambiar:
$rcmail_config['vacation_driver'] = 'sql';
A:
$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';
A:
// 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' );
A:
// 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
A:
DocumentRoot /var/www/
Con 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 tu carga puedes decidir entre stand alone o inet.d.
Nota: Puedes copiar los archivos de configuración de examples/proftpd a /etc/proftpd, pero para mayor claridad, resumiré todos los pasos de configuración.
Edita/etc/proftpd/proftpd.conf:
nano /etc/proftpd/proftpd.conf
Y cambia de:
# Use this to jail all users in their homes # DefaultRoot ~
Por:
# Use this to jail all users in their homes DefaultRoot
Y cambia de:
#RequireValidShell off
Por:
RequireValidShell off
Y cambiar:
# Alternative authentication frameworks
#
# Include /etc/proftpd/ldap.conf
#Include /etc/proftpd/sql.conf
A:
# Alternative authentication frameworks
#
Include /etc/proftpd/ldap.conf
#Include /etc/proftpd/sql.conf
~
Ahora edita/etc/proftpd/modules.conf:
nano /etc/proftpd/modules.conf
Y cambia de:
# Install proftpd-mod-ldap to use this #LoadModule mod_ldap.c
Por:
# Install proftpd-mod-ldap to use this LoadModule mod_ldap.c
Y de:
# Install proftpd-mod-ldap to use this # LoadModule mod_quotatab_ldap.c
A:
# Install proftpd-mod-ldap to use this LoadModule mod_quotatab_ldap.c
No edita/etc/proftpd/ldap.conf y establece lo siguiente:
<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>
Los siguientes comandos establecen el usuario por defecto a www-data que me conviene, puedes cambiar estos valores para que se adapten a tu configuración o dejarlos fuera para usar el uid/gid de inicio de sesión.
LDAPDefaultGID 33
LDAPDefaultUID 33
LDAPForceDefaultGID True
LDAPForceDefaultUID True
33 Es el uid/gid de mi configuración de prueba, puede ser diferente en tu configuración.
Con esto concluye la instalación de proftpd.
Paso 9: Reunirlo todo
Emite los siguientes comandos para reiniciar todos los servicios:
service slapd restart
service postfix restart
service dovecot restart
service proftpd restart
service apache2 restart
Ahora puedes ir a phamm y empezar a añadir dominios y usuarios de correo.
Disfruta.
Nota: notifícame cualquier error o problema con este procedimiento para que pueda mejorar y modificar este procedimiento.
Utiliza este hilo en el foro:
Estoy suscrito a este hilo, por lo que recibiré notificaciones de nuevos mensajes en este hilo.