Alojamiento FTP · 4 min read · Dec 28, 2025

Alojamiento de correo virtual y FTP con iRedMail y Pure-FTPd en Debian Lenny

Alojamiento de correo virtual y FTP con iRedMail y Pure-FTPd en Debian Lenny

iRedMail es un script de shell que te permite desplegar rápidamente una solución de correo completa en menos de 2 minutos. Desde la versión 0.5, es compatible con CentOS 5.x, Debian 5.x, Ubuntu 8.04 y Ubuntu 9.04 (tanto i386 como x86_64). iRedMail admite tanto OpenLDAP como MySQL como backends para almacenar dominios y usuarios virtuales.

El backend OpenLDAP de iRedMail te permite integrar todo tipo de aplicaciones. Esta guía te muestra cómo integrar pure-ftpd en el backend ldap de iRedMail en Debian Lenny, las contraseñas se almacenarán en ldap y podrás cambiar la contraseña a través de webmail.

Este tutorial se basa en Debian 5.01, así que te sugiero que configures un mínimo de Debian 5.01, instales iredmail 0.51 y elijas OpenLDAP como backend, como se muestra en este tutorial antes de continuar con este tutorial:

  • iRedMail: Servidor de correo con LDAP, Postfix, RoundCube/SquirrelMail, Dovecot, ClamAV, SpamAssassin, Amavisd (Debian 5.0.1)
  • iRedMail: Construye un servidor de correo completo con LDAP, Postfix, RoundCube, Dovecot, ClamAV, SpamAssassin, DKIM, SPF en CentOS 5.x

1 Instalar Pure-FTPd

Instala pure-ftpd:

apt-get install pure-ftpd-ldap

2 Configurar PureFTPd como un servidor independiente

Ahora debemos configurar PureFTPd como un demonio independiente (actualmente está controlado por inetd). Para hacer esto, abrimos /etc/default/pure-ftpd-common y cambiamos el valor del parámetro STANDALONE_OR_INETD a standalone:

vi /etc/default/pure-ftpd-common

| #STANDALONE_OR_INETD=inetd STANDALONE_OR_INETD=standalone #cambiar a standalone |

A continuación, modificamos /etc/inetd.conf y comentamos la línea ftp:

| #ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper |

Después, reiniciamos inetd y PureFTPd:

/etc/init.d/openbsd-inetd restart  
/etc/init.d/pure-ftpd-ldap restart

3 Configuraciones básicas en /etc/pure-ftpd/conf/

Crea el archivo /etc/pure-ftpd/conf/ChrootEveryone que simplemente contiene la cadena yes:

echo "yes" > /etc/pure-ftpd/conf/ChrootEveryone

Esto hará que PureFTPd chroot a cada usuario virtual en su directorio personal, por lo que no podrá navegar por directorios y archivos fuera de su directorio personal.

También crea el archivo /etc/pure-ftpd/conf/CreateHomeDir que nuevamente simplemente contiene la cadena yes:

echo "yes" > /etc/pure-ftpd/conf/CreateHomeDir

Esto hará que PureFTPd cree un directorio personal para el usuario cuando el usuario inicie sesión y el directorio personal aún no exista.

Finalmente, crea el archivo /etc/pure-ftpd/conf/DontResolve que nuevamente simplemente contiene la cadena yes:

echo "yes" > /etc/pure-ftpd/conf/DontResolve

Esto hará que PureFTPd no busque nombres de host, lo que puede acelerar significativamente las conexiones y reducir el uso de ancho de banda.

4 Encontrar la contraseña de cn=vmail

La contraseña de vmail se creó aleatoriamente durante la instalación de iredmail. Puedes encontrar la contraseña en /etc/postfix/ldap_virtual_mailbox_domains.cf:

cat /etc/postfix/ldap_virtual_mailbox_domains.cf

| bind_dn = cn=vmail,dc=example,dc=com bind_pw = kZ6uB29mViWKWI9lOH3cGnF7z3Dw3B #contraseña cn=vmail |

5 Configurar ajustes de LDAP

vi /etc/pure-ftpd/db/ldap.conf

| LDAPServer localhost LDAPPort 389 LDAPBaseDN o=domains,dc=example,dc=com LDAPBindDN cn=vmail,dc=example,dc=com LDAPBindPW kZ6uB29mViWKWI9lOH3cGnF7z3Dw3B #contraseña cn=vmail LDAPDefaultUID 1000 # <- UID del usuario 'vmail'. LDAPDefaultGID 1000 # <- GID del usuario 'vmail'. LDAPFilter (&(objectClass=PureFTPdUser)(mail=\L)(FTPStatus=enabled)) LDAPHomeDir FTPHomeDir # <- Este es un nuevo atributo, lo añadiremos LDAPVersion 3 |

6 Obtener esquema

Tienes dos formas de obtener el esquema de pureftpd. Solo necesitas elegir una.

  • Descarga el esquema que ha sido modificado por iredmail.
  • Obtén el esquema incluido en pure-ftpd-1.0.24 y modifícalo.

6.1 Descarga el esquema que ha sido modificado por iredmail:

wget http://iredmail.googlecode.com/svn/trunk/extra/pureftpd.schema -P /etc/ldap/schema/

6.2 Obtén el esquema incluido en pure-ftpd-1.0.24:

cd /tmp/  
wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.24.tar.bz2  
tar xjf pure-ftpd-1.0.24.tar.bz2  
cp pure-ftpd-1.0.24/pureftpd.schema /etc/ldap/schema/

Modifica /etc/ldap/schema/pureftpd.schema:

Necesitamos añadir un atributo más ‘FTPHomeDir’ antes de la definición de objectclass, utilizado para almacenar el directorio FTP del usuario.

vi /etc/ldap/schema/pureftpd.schema

| attributetype ( 1.3.6.1.4.1.6981.11.3.9 NAME 'FTPgid' DESC 'UID del sistema (anula gidNumber si está presente)' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) # Añadir nuevo attributetype FTPHomeDir. attributetype ( 1.3.6.1.4.1.6981.11.3.10 NAME 'FTPHomeDir' DESC 'Directorio FTP' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) ## Nuevo tipo de objeto Pure-FTPd objectclass ( 1.3.6.1.4.1.6981.11.2.3 NAME 'PureFTPdUser' DESC 'Usuario de PureFTPd con cuota opcional, limitación y ratio' SUP top AUXILIARY MAY ( FTPStatus $ FTPQuotaFiles $ FTPQuotaMBytes $ FTPUploadRatio $ FTPDownloadRatio $ FTPUploadBandwidth $ FTPDownloadBandwidth $ FTPuid $ FTPgid $ FTPHomeDir ) ) # <-- Añadir $ FTPHomeDir |

7 Modificar /etc/ldap/slapd.conf

vi /etc/ldap/slapd.conf

Incluye pureftpd.schema después de iredmail.schema:

| include /etc/ldap/schema/iredmail.schema include /etc/ldap/schema/pureftpd.schema # <-- Añadir esta línea. |

Añadir índice para atributos definidos en pureftpd.schema:

| # Índice por defecto. # index objectClass eq,pres index ou,cn,mail,surname,givenname,telephoneNumber eq,pres,sub index uidNumber,gidNumber,loginShell eq,pres index uid,memberUid eq,pres,sub index nisMapName,nisMapEntry eq,pres,sub # <-- Añadir lo siguiente #Índice para atributos FTP. index FTPQuotaFiles,FTPQuotaMBytes eq,pres index FTPUploadRatio,FTPDownloadRatio eq,pres index FTPUploadBandwidth,FTPDownloadBandwidth eq,pres index FTPStatus,FTPuid,FTPgid,FTPHomeDir eq,pres |

8 Crear directorio personal de FTP

Los datos de FTP se almacenan todos en el directorio /home/ftp/. Crea /home/ftp/, el propietario debe ser el usuario root.

mkdir /home/ftp/  
ls -dl /home/ftp
drwxr-xr-x 2 root root 4096 Oct 3 16:53 /home/ftp

9 Reiniciar el servicio OpenLDAP para hacer que pureftpd.schema funcione

/etc/init.d/slapd restart  
/etc/init.d/pure-ftpd-ldap restart

Asegúrate de que pure-ftpd esté en funcionamiento:

# netstat -ntlp | grep pure-ftpd
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 12548/pure-ftpd (SE  
tcp6 0 0 :::21 :::* LISTEN 12548/pure-ftpd (SE
Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.