Servidor Perfecto · 8 min read · Feb 13, 2026

El Servidor Perfecto - OpenSUSE 12.3 x86_64 (Apache2, Dovecot, ISPConfig 3) - Página 2

Ahora inicie sesión con el nombre de usuario root y la contraseña que seleccionó durante la instalación.

4 Configurar La Configuración de Red

Usamos Yast, la herramienta de gestión del sistema OpenSuSE para reconfigurar la configuración de la tarjeta de red. Después del primer arranque, el sistema está configurado para obtener la dirección IP con DHCP. Para un servidor, lo cambiaremos a una dirección IP estática.

Ejecute

yast2

Seleccione Dispositivos de Red > Configuración de Red:

Seleccione su tarjeta de red y luego Editar:

Seleccione Dirección IP asignada estáticamente e ingrese la dirección IP, la máscara de subred y el nombre de host y guarde los cambios seleccionando Siguiente:

Ahora seleccione Nombre de host/DNS e ingrese el nombre de host (por ejemplo, server1.example.com) y los servidores de nombres (por ejemplo, 192.168.1.200 y 8.8.8.8):

Ahora seleccione Enrutamiento e ingrese la puerta de enlace predeterminada y presione Aceptar:

Para configurar el firewall (en caso de que no lo haya configurado durante la instalación básica), seleccione Seguridad y Usuarios > Firewall en Yast:

Quiero instalar ISPConfig al final de este tutorial, que viene con su propio firewall. Por eso desactivo el firewall predeterminado de OpenSUSE ahora. Por supuesto, eres libre de dejarlo activado y configurarlo a tus necesidades (pero entonces no deberías usar ningún otro firewall más adelante, ya que probablemente interferirá con el firewall de OpenSUSE).

Seleccione Desactivar el inicio automático del firewall y Detener el firewall ahora, luego presione Siguiente:

Presione Finalizar y salga de Yast:

Después, debe verificar con

ifconfig

si su configuración de red es correcta. Si no lo es (por ejemplo, si falta eth0), reinicie el sistema…

reboot

… y verifique su configuración de red nuevamente después; ahora debería ser correcta.

5 Instalar Actualizaciones

Ahora instalamos las últimas actualizaciones de los repositorios de openSUSE. Ejecute

zypper update

Y luego reinicie el servidor, ya que probablemente también instaló algunas actualizaciones del kernel:

reboot

6 Instalar Algunos Paquetes Básicos

Ejecute

zypper install findutils readline glibc-devel findutils-locate gcc flex lynx compat-readline4 db-devel wget gcc-c++ subversion make vim telnet cron iptables iputils man man-pages nano pico sudo perl-TimeDate

7 Cuota Registrada

Para instalar cuota, ejecute

zypper install quota

Edite /etc/fstab para que se vea así (agregué, usrjquota=aquota.user, grpjquota=aquota.group, jqfmt=vfsv0 a los puntos de montaje / y /srv):

vi /etc/fstab

| /dev/disk/by-id/ata-VBOX_HARDDISK_VB1d06c935-e9b5de19-part1 swap swap defaults 0 0 /dev/disk/by-id/ata-VBOX_HARDDISK_VB1d06c935-e9b5de19-part2 / ext4 acl,user_xattr,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 1 1 /dev/disk/by-id/ata-VBOX_HARDDISK_VB1d06c935-e9b5de19-part3 /srv ext4 acl,user_xattr,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 1 2 proc /proc proc defaults 0 0 sysfs /sys sysfs noauto 0 0 debugfs /sys/kernel/debug debugfs noauto 0 0 usbfs /proc/bus/usb usbfs noauto 0 0 devpts /dev/pts devpts mode=0620,gid=5 0 0 |

Luego ejecute:

mount -o remount /  
 mount -o remount /srv
quotacheck -avugm  
 quotaon -avug

No se preocupe si ve estos mensajes de error; son normales cuando ejecuta quotacheck por primera vez:

server1:~ # quotacheck -avugm  
 quotacheck: Scanning /dev/sda2 [/] done  
 quotacheck: Cannot stat old user quota file: No such file or directory  
 quotacheck: Cannot stat old group quota file: No such file or directory  
 quotacheck: Cannot stat old user quota file: No such file or directory  
 quotacheck: Cannot stat old group quota file: No such file or directory  
 quotacheck: Checked 3872 directories and 32991 files  
 quotacheck: Old file not found.  
 quotacheck: Old file not found.  
 quotacheck: Scanning /dev/sda3 [/srv] done  
 quotacheck: Cannot stat old user quota file: No such file or directory  
 quotacheck: Cannot stat old group quota file: No such file or directory  
 quotacheck: Cannot stat old user quota file: No such file or directory  
 quotacheck: Cannot stat old group quota file: No such file or directory  
 quotacheck: Checked 6 directories and 0 files  
 quotacheck: Old file not found.  
 quotacheck: Old file not found.  
 server1:~ #

8 Instalar Postfix, Dovecot, MySQL

Ejecute

zypper install postfix postfix-mysql mysql-community-server libmysqlclient-devel dovecot21 dovecot21-backend-mysql pwgen cron python

Si recibe el siguiente mensaje, seleccione desinstalar exim:

Problema: sendmail-8.14.5-85.1.2.x86_64 entra en conflicto con postfix proporcionado por postfix-2.9.6-1.2.1.x86_64
Solución 1: Se realizarán las siguientes acciones:
no instalar postfix-2.9.6-1.2.1.x86_64
no instalar postfix-mysql-2.9.6-1.2.1.x86_64
Solución 2: desinstalación de sendmail-8.14.5-85.1.2.x86_64

Elija entre las soluciones anteriores por número o cancele [1/2/c] (c): <– 2

Cree el siguiente enlace simbólico:

ln -s /usr/lib64/dovecot/modules /usr/lib/dovecot

En este punto, tuve que reiniciar porque de lo contrario MySQL se negaba a iniciarse con el error:

Failed to issue method call: Unit mysql.service failed to load: No such file or directory. See system logs and 'systemctl status mysql.service' for details.
reboot

Inicie MySQL, Postfix y Dovecot y habilite los servicios para que se inicien al arrancar.

systemctl enable mysql.service  
 systemctl start mysql.service
systemctl enable postfix.service  
 systemctl start postfix.service
systemctl enable dovecot.service  
 systemctl start dovecot.service

Ahora instalo el paquete getmail:

zypper install getmail

Para asegurar la instalación de MySQL, ejecute:

mysql_secure_installation

Ahora se le harán varias preguntas:

server1:~ # mysql_secure_installation

NOTA: SE RECOMIENDA EJECUTAR TODAS LAS PARTES DE ESTE SCRIPT PARA TODOS LOS SERVIDORES MySQL EN USO EN PRODUCCIÓN! POR FAVOR, LEA CADA PASO CUIDADOSAMENTE!

Para iniciar sesión en MySQL y asegurarla, necesitaremos la contraseña actual para el usuario root. Si acaba de instalar MySQL y no ha establecido la contraseña de root aún, la contraseña estará en blanco, así que solo debe presionar enter aquí.

Ingrese la contraseña actual para root (presione enter para ninguno): <– ENTER
OK, se utilizó la contraseña con éxito, avanzando…

Establecer la contraseña de root asegura que nadie pueda iniciar sesión en el usuario root de MySQL sin la autorización adecuada.

¿Establecer contraseña de root? [Y/n] <– Y
Nueva contraseña: <– sucontraseñaderootsql
Reingrese la nueva contraseña: <– sucontraseñaderootsql
¡Contraseña actualizada con éxito!
Recargando tablas de privilegios..
… ¡Éxito!

Por defecto, una instalación de MySQL tiene un usuario anónimo, permitiendo que cualquiera inicie sesión en MySQL sin tener que tener una cuenta de usuario creada para ellos. Esto está destinado solo para pruebas y para hacer que la instalación sea un poco más fluida. Debe eliminarlos antes de pasar a un entorno de producción.

¿Eliminar usuarios anónimos? [Y/n] <– Y
… ¡Éxito!

Normalmente, solo se debe permitir que root se conecte desde ‘localhost’. Esto asegura que alguien no pueda adivinar la contraseña de root desde la red.

¿Deshabilitar el inicio de sesión remoto de root? [Y/n] <– Y
… ¡Éxito!

Por defecto, MySQL viene con una base de datos llamada ‘test’ a la que cualquiera puede acceder. Esto también está destinado solo para pruebas y debe eliminarse antes de pasar a un entorno de producción.

¿Eliminar la base de datos de prueba y el acceso a ella? [Y/n] <– Y

  • Eliminando base de datos de prueba…
    … ¡Éxito!
  • Eliminando privilegios en la base de datos de prueba…
    … ¡Éxito!

Recargar las tablas de privilegios asegurará que todos los cambios realizados hasta ahora surtan efecto de inmediato.

¿Recargar tablas de privilegios ahora? [Y/n] <– Y
… ¡Éxito!

Limpiando…

¡Todo listo! Si ha completado todos los pasos anteriores, su instalación de MySQL ahora debería estar segura.

¡Gracias por usar MySQL!

server1:~ #

Ahora su configuración de MySQL debería estar asegurada.

9 Amavisd-new, Spamassassin Y Clamav

Instale Amavisd-new, Spamassassin y el antivirus Clamav. Ejecute

zypper install amavisd-new clamav clamav-db zoo unzip unrar bzip2 unarj perl-DBD-mysql

Abra /etc/amavisd.conf…

vi /etc/amavisd.conf

… y agregue la línea $myhostname con su nombre de host correcto debajo de la línea $mydomain:

| [...] $mydomain = 'example.com'; # un valor predeterminado conveniente para otras configuraciones $myhostname = "server1.$mydomain"; [...] |

Luego cree un enlace simbólico de /var/run/clamav/clamd a /var/lib/clamav/clamd-socket:

mkdir -p /var/run/clamav  
 ln -s /var/lib/clamav/clamd-socket /var/run/clamav/clamd

OpenSUSE 12.3 tiene un directorio /run para almacenar datos de tiempo de ejecución. /run ahora es un tmpfs, y /var/run ahora está montado en enlace a /run desde tmpfs, y por lo tanto se vacía al reiniciar.

Esto significa que después de un reinicio, el directorio /var/run/clamav que acabamos de crear ya no existirá, y por lo tanto clamd fallará al iniciar. Por lo tanto, creamos el archivo /etc/tmpfiles.d/clamav.conf ahora que creará este directorio al inicio del sistema (ver http://0pointer.de/public/systemd-man/tmpfiles.d.html para más detalles):

vi /etc/tmpfiles.d/clamav.conf

| D /var/run/clamav 0755 root root - |

Antes de iniciar amavisd y clamd, debemos editar el script de inicio /etc/init.d/amavis - no pude iniciar, detener y reiniciar amavisd de manera confiable con el script de inicio predeterminado:

vi /etc/init.d/amavis

Comente las siguientes líneas en la sección de inicio y detención:

| [...] start) # ZMI 20100428 verificar archivo pid obsoleto #if test -f $AMAVIS_PID ; then # checkproc -p $AMAVIS_PID amavisd # if test $? -ge 1 ; then # # el archivo pid está obsoleto, elimínelo # echo -n "(archivo pid obsoleto de amavisd $AMAVIS_PID encontrado, eliminando. ¿Se estrelló amavisd?)" # rm -f $AMAVIS_PID # fi #fi echo -n "Iniciando escáner de virus (amavisd-new): " $AMAVISD_BIN start #if ! checkproc amavisd; then # rc_failed 7 #fi rc_status -v #if [ "$AMAVIS_SENDMAIL_MILTER" == "yes" ]; then # rc_reset # echo -n "Iniciando amavis-milter:" # startproc -u vscan $AMAVIS_MILTER_BIN -p $AMAVIS_MILTER_SOCK > /dev/null 2>&1 # rc_status -v #fi ;; stop) echo -n "Apagando escáner de virus (amavisd-new): " #if checkproc amavisd; then # rc_reset $AMAVISD_BIN stop #else # rc_reset #fi rc_status -v #if [ "$AMAVIS_SENDMAIL_MILTER" == "yes" ]; then # rc_reset # echo -n "Apagando amavis-milter: " # killproc -TERM $AMAVIS_MILTER_BIN # rc_status -v #fi ;; [...] |

Debido a que hemos cambiado el script de inicio, debemos ejecutar

systemctl --system daemon-reload

ahora.

Para iniciar clamav necesitamos descargar la base de datos y proceder con el comando

freshclam

Nota: Toma mucho tiempo descargar la base de datos, se le aconseja no interrumpir y no detener el servicio de actualización freshclam en medio.

Para habilitar los servicios, ejecute:

systemctl enable amavis.service  
 systemctl enable clamd.service  
 systemctl start amavis.service  
 systemctl start clamd.service
Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

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