Servidor Perfecto · 6 min read · Jan 20, 2026

El Servidor Perfecto - CentOS 6.0 x86_64 [ISPConfig 2] - Página 4

10 MySQL (5.1)

Para instalar MySQL, hacemos esto:

yum install mysql mysql-devel mysql-server

Luego creamos los enlaces de inicio del sistema para MySQL (para que MySQL se inicie automáticamente cada vez que el sistema arranca) y comenzamos el servidor MySQL:

chkconfig –levels 235 mysqld on
/etc/init.d/mysqld start

Ahora verifica que la red esté habilitada. Ejecuta

netstat -tap | grep mysql

Debería mostrar una línea como esta:

[root@server1 ~]# netstat -tap | grep mysql
tcp 0 0 :mysql :* LISTEN 2044/mysqld
[root@server1 ~]#

Si no lo hace, edita /etc/my.cnf y comenta la opción skip-networking:

vi /etc/my.cnf

| [...] #skip-networking [...] |

y reinicia tu servidor MySQL:

/etc/init.d/mysqld restart 

Establece contraseñas para la cuenta root de MySQL:

mysql_secure_installation

[root@server1 ~]# mysql_secure_installation

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

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

Introduce la contraseña actual para root (presiona enter si no hay):
OK, se utilizó la contraseña correctamente, continuando…

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] <– ENTER
Nueva contraseña: <– tucontraseñarootsql
Reingresa la nueva contraseña: <– tucontraseñarootsql
¡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. Deberías eliminarlos antes de pasar a un entorno de producción.

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

Normalmente, solo se debería 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] <– ENTER
… ¡É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 debería ser eliminado antes de pasar a un entorno de producción.

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

  • Eliminando la 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 tengan efecto inmediato.

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

Limpiando…

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

¡Gracias por usar MySQL!

[root@server1 ~]#

11 Postfix Con SMTP-AUTH Y TLS

Ahora instalamos Postfix y Dovecot (Dovecot será nuestro servidor POP3/IMAP):

yum install cyrus-sasl cyrus-sasl-devel cyrus-sasl-gssapi cyrus-sasl-md5 cyrus-sasl-plain postfix dovecot

A continuación, configuramos SMTP-AUTH y TLS:

postconf -e ‘smtpd_sasl_local_domain =’
postconf -e ‘smtpd_sasl_auth_enable = yes’
postconf -e ‘smtpd_sasl_security_options = noanonymous’
postconf -e ‘broken_sasl_auth_clients = yes’
postconf -e ‘smtpd_sasl_authenticated_header = yes’
postconf -e ‘smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination’
postconf -e ‘inet_interfaces = all’
postconf -e ‘mynetworks = 127.0.0.0/8’

Después 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

A continuación, configuramos Postfix para TLS:

postconf -e ‘smtpd_tls_auth_only = no’
postconf -e ‘smtp_use_tls = yes’
postconf -e ‘smtpd_use_tls = yes’
postconf -e ‘smtp_tls_note_starttls_offer = yes’
postconf -e ‘smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key’
postconf -e ‘smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt’
postconf -e ‘smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem’
postconf -e ‘smtpd_tls_loglevel = 1’
postconf -e ‘smtpd_tls_received_header = yes’
postconf -e ‘smtpd_tls_session_cache_timeout = 3600s’
postconf -e ‘tls_random_source = dev:/dev/urandom’

Luego establecemos el nombre de host en nuestra instalación de Postfix (asegúrate de reemplazar server1.example.com con tu propio nombre de host):

postconf -e 'myhostname = server1.example.com'

Después de estos pasos de configuración, ahora deberías tener un /etc/postfix/main.cf que se vea así (he eliminado todos los comentarios de él):

cat /etc/postfix/main.cf

| queue_directory = /var/spool/postfix command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix data_directory = /var/lib/postfix mail_owner = postfix inet_interfaces = all inet_protocols = all mydestination = $myhostname, localhost.$mydomain, localhost unknown_local_recipient_reject_code = 550 alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases debug_peer_level = 2 debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5 sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = /usr/bin/newaliases.postfix mailq_path = /usr/bin/mailq.postfix setgid_group = postdrop html_directory = no manpage_directory = /usr/share/man sample_directory = /usr/share/doc/postfix-2.6.6/samples readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES smtpd_sasl_local_domain = smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination mynetworks = 127.0.0.0/8 smtpd_tls_auth_only = no smtp_use_tls = yes smtpd_use_tls = yes smtp_tls_note_starttls_offer = yes smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt 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 myhostname = server1.example.com |

Por defecto, el demonio Dovecot de CentOS proporciona solo servicios IMAP e IMAPs. Debido a que también queremos POP3 y POP3s, debemos configurar Dovecot para hacerlo. Editamos /etc/dovecot/dovecot.conf y habilitamos la línea protocols = imap pop3:

vi /etc/dovecot/dovecot.conf

| [...] # Protocolos que queremos servir. protocols = imap pop3 [...] |

A continuación, necesitamos habilitar la autenticación en texto plano:

vi /etc/dovecot/conf.d/10-auth.conf

| [...] # Deshabilitar el comando LOGIN y todas las demás autenticaciones en texto plano a menos que # se utilice SSL/TLS (capacidad LOGINDISABLED). Ten en cuenta que si la IP remota # coincide con la IP local (es decir, te estás conectando desde la misma computadora), la # conexión se considera segura y se permite la autenticación en texto plano. disable_plaintext_auth = no [...] |

Ahora inicia Postfix, saslauthd y Dovecot:

chkconfig –levels 235 sendmail off
chkconfig –levels 235 postfix on
chkconfig –levels 235 saslauthd on
chkconfig –levels 235 dovecot on
/etc/init.d/sendmail stop
/etc/init.d/postfix start
/etc/init.d/saslauthd start
/etc/init.d/dovecot start

Para ver si SMTP-AUTH y TLS funcionan correctamente, ahora ejecuta el siguiente comando:

telnet localhost 25 

Después de haber establecido la conexión con tu servidor de correo Postfix, escribe

ehlo localhost 

Si ves las líneas

250-STARTTLS 

y

250-AUTH PLAIN LOGIN 

todo está bien.

[root@server1 ssl]# telnet localhost 25
Trying ::1…
Connected to localhost.
Escape character is ‘^]’.
220 server1.example.com ESMTP Postfix
<– ehlo localhost
250-server1.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
<– quit
221 2.0.0 Bye
Connection closed by foreign host.
[root@server1 ssl]#

Escribe

quit 

para volver a la shell del sistema.

11.1 Maildir

Dovecot utiliza el formato Maildir (no mbox), así que si instalas ISPConfig en el servidor, asegúrate de habilitar Maildir en Gestión -> Servidor -> Configuración -> Correo. ISPConfig hará la configuración necesaria.

Si no deseas instalar ISPConfig, entonces debes configurar Postfix para entregar correos electrónicos en el Maildir de un usuario (también puedes hacer esto si usas ISPConfig - no hace daño ;-)):

postconf -e ‘home_mailbox = Maildir/‘
postconf -e ‘mailbox_command =’
/etc/init.d/postfix restart

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

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