Servidor Debian · 6 min read · Oct 29, 2025
El Servidor Perfecto - Debian 8.6 (nginx, BIND, Dovecot, ISPConfig 3.1)
Este tutorial muestra cómo preparar un servidor Debian Jessie (con nginx, BIND, Dovecot) para la instalación de ISPConfig 3.1, y cómo instalar ISPConfig 3.1. ISPConfig 3 es un panel de control de alojamiento web que te permite configurar los siguientes servicios a través de un navegador web: servidor web Apache o nginx, servidor de correo Postfix, servidor IMAP/POP3 Courier o Dovecot, MySQL, servidor de nombres BIND o MyDNS, PureFTPd, SpamAssassin, ClamAV, y muchos más. Esta configuración cubre nginx (en lugar de Apache), BIND como servidor DNS, y Dovecot como servidor IMAP / POP3.
1 Nota Preliminar
En este tutorial, utilizo el nombre de host server1.example.com con la dirección IP 192.168.1.100 y la puerta de enlace 192.168.1.1. Estas configuraciones pueden diferir para ti, así que debes reemplazarlas donde sea apropiado. Antes de continuar, necesitas tener una instalación mínima de Debian 8. Esto puede ser una imagen mínima de Debian de tu proveedor de alojamiento o puedes usar el tutorial de Servidor Debian Mínimo para configurar el sistema base.
2 Instalar el Servidor SSH
Si no instalaste el servidor OpenSSH durante la instalación del sistema, puedes hacerlo ahora:
apt-get -y install ssh openssh-serverA partir de ahora, puedes usar un cliente SSH como PuTTY y conectarte desde tu estación de trabajo a tu servidor Debian 8 y seguir los pasos restantes de este tutorial.
3 Instalar un editor de texto de shell (Opcional)
Usaré el editor de texto nano en este tutorial. Algunos usuarios prefieren el clásico editor vi, por lo tanto, instalaré ambos editores aquí. El programa vi por defecto tiene un comportamiento extraño en Debian y Ubuntu; para solucionar esto, instalamos vim-nox:
apt-get -y install nano vim-nox(No tienes que hacer esto si usas un editor de texto diferente como joe.)
4 Configurar el Nombre de Host
El nombre de host de tu servidor debe ser un subdominio como “server1.example.com”. No uses un nombre de dominio sin parte de subdominio como “example.com” como nombre de host, ya que esto causará problemas más adelante con tu configuración de correo. Primero, debes verificar el nombre de host en /etc/hosts y cambiarlo cuando sea necesario. La línea debe ser: “Dirección IP - espacio - nombre de host completo incl. dominio - espacio - parte de subdominio”. Edita /etc/hosts. Haz que se vea así:
nano /etc/hosts127.0.0.1 localhost.localdomain localhost
192.168.1.100 server1.example.com server1
# Las siguientes líneas son deseables para hosts compatibles con IPv6
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allroutersLuego edita el archivo /etc/hostname:
nano /etc/hostnameDeberá contener solo la parte del subdominio, en nuestro caso:
server1Finalmente, reinicia el servidor para aplicar el cambio:
rebootInicia sesión nuevamente y verifica si el nombre de host es correcto ahora con estos comandos:
hostname
hostname -fLa salida debe ser así:
root@server1:/tmp# hostname
server1
root@server1:/tmp# hostname -f
server1.example.com5 Actualiza Tu Instalación de Debian
Primero asegúrate de que tu /etc/apt/sources.list contenga el repositorio wheezy-updates (esto asegura que siempre obtengas las actualizaciones más recientes para el escáner de virus ClamAV - este proyecto publica versiones muy a menudo, y a veces las versiones antiguas dejan de funcionar), y que los repositorios contrib y non-free estén habilitados (algunos paquetes como libapache2-mod-fastcgi no están en el repositorio principal).
nano /etc/apt/sources.listdeb http://ftp.us.debian.org/debian/ jessie main contrib non-free
deb-src http://ftp.us.debian.org/debian/ jessie main contrib non-free
deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free
# Debian backports - Requerido para Letsencrypt
deb http://ftp.debian.org/debian jessie-backports mainIMPORTANTE: Agrega el repositorio Debian Backports como se muestra arriba.
Ejecuta
apt-get updatepara actualizar la base de datos de paquetes apt y
apt-get upgradepara instalar las últimas actualizaciones (si las hay).
6 Cambiar el Shell por Defecto
/bin/sh es un enlace simbólico a /bin/dash, sin embargo, necesitamos /bin/bash, no /bin/dash. Por lo tanto, hacemos esto:
dpkg-reconfigure dash¿Usar dash como el shell del sistema por defecto (/bin/sh)? <– No
Si no haces esto, la instalación de ISPConfig fallará.
7 Sincronizar el Reloj del Sistema
Es una buena idea sincronizar el reloj del sistema con un servidor NTP ( n etwork t ime p rotocol) a través de Internet. Simplemente ejecuta
apt-get install ntpy la hora de tu sistema siempre estará sincronizada.
8 Instalar Postfix, Dovecot, MySQL, rkhunter, binutils
Podemos instalar Postfix, Dovecot, MySQL, rkhunter y Binutils con un solo comando:
apt-get install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd sudoSe te harán las siguientes preguntas:
Tipo general de configuración de correo: <– Internet Site
Nombre de correo del sistema: <– server1.example.com
Nueva contraseña para el usuario “root” de MariaDB: <– yourrootsqlpassword
Repite la contraseña para el usuario “root” de MariaDB: <– yourrootsqlpassword
Para asegurar la instalación de MariaDB / MySQL y deshabilitar la base de datos de prueba, ejecuta este comando:
mysql_secure_installationNo tenemos que cambiar la contraseña de root de MySQL ya que acabamos de establecer una nueva durante la instalación. Responde las preguntas de la siguiente manera:
¿Cambiar la contraseña de root? [Y/n] <-- n
¿Eliminar usuarios anónimos? [Y/n] <-- y
¿Deshabilitar el inicio de sesión remoto de root? [Y/n] <-- y
¿Eliminar la base de datos de prueba y el acceso a ella? [Y/n] <-- y
¿Recargar las tablas de privilegios ahora? [Y/n] <-- yA continuación, abre los puertos TLS/SSL y de envío en Postfix:
nano /etc/postfix/master.cfDescomenta las secciones de envío y smtps de la siguiente manera (deja -o milter_macro_daemon_name=ORIGINATING ya que no lo necesitamos):
[...]
submission inet n - - - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
smtps inet n - - - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
[...]Reinicia Postfix después:
service postfix restartQueremos que MySQL escuche en todas las interfaces, no solo en localhost, por lo tanto, editamos /etc/mysql/my.cnf y comentamos la línea bind-address = 127.0.0.1:
nano /etc/mysql/my.cnf[...]
# En lugar de skip-networking, el valor por defecto ahora es escuchar solo en
# localhost, lo cual es más compatible y no es menos seguro.
#bind-address = 127.0.0.1
[...]Luego reiniciamos MySQL:
service mysql restartAhora verifica que la red esté habilitada. Ejecuta
netstat -tap | grep mysqlLa salida debería verse así:
root@server1:~# netstat -tap | grep mysql
tcp 0 0 *:mysql *:* LISTEN 218123/mysqld
root@server1:~#9 Instalar Amavisd-new, SpamAssassin y Clamav
Para instalar amavisd-new, SpamAssassin y ClamAV, ejecutamos:
apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl postgreyLa configuración de ISPConfig 3 utiliza amavisd que carga la biblioteca de filtros de SpamAssassin internamente, por lo que podemos detener SpamAssassin para liberar algo de RAM:
service spamassassin stop
systemctl disable spamassassin9.1 Instalar el Servidor XMPP Metronome (opcional)
Este paso instala el Servidor XMPP Metronome que proporciona un servidor de chat que es compatible con el protocolo XMPP. Este paso es opcional, si no necesitas un servidor de chat, entonces puedes omitir este paso. Ninguna otra función de ISPConfig depende de este software.
Agrega el repositorio de paquetes Prosody en Debian.
echo "deb http://packages.prosody.im/debian jessie main" > /etc/apt/sources.list.d/metronome.list
wget http://prosody.im/files/prosody-debian-packages.key -O - | sudo apt-key add -Actualiza la lista de paquetes:
apt-get updateInstala los programas que son necesarios para el proceso de construcción
apt-get install build-essentialy instala los paquetes con apt.
apt-get install git lua5.1 liblua5.1-0-dev lua-filesystem libidn11-dev libssl-dev lua-zlib lua-expat lua-event lua-bitop lua-socket lua-sec luarocks luarocksluarocks install lpcAgrega un usuario de shell para Metronome.
adduser --no-create-home --disabled-login --gecos 'Metronome' metronomeDescarga Metronome en el directorio /opt y compílalo.
cd /opt; git clone https://github.com/maranda/metronome.git metronome
cd ./metronome; ./configure --ostype=debian --prefix=/usr
make
make installMetronome ahora ha sido instalado en /opt/metronome.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.