Cómo configurar un servidor VPS [Parte 4] - Usar iRedMail con Nginx

Cómo configurar un servidor VPS [Parte 4] - Usar iRedMail con Nginx
COMO CONFIGURAR UN SERVIDOR VPS LINUX DEBIAN DIGITAL OCEAN IREDMAIL NGINX PARTE 4

¡Hola! Seguimos con la serie de tutoriales para aprender a configurar un servidor VPS desde cero. Hoy nos toca hacer funcionar iRedMail con Nginx. ¡Tarea para los más valientes! No espero menos de vosotros. Si habéis llegado al cuarto tutorial de esta serie quiere decir que sois unos cracks. Si quieres ver los tutoriales de esta guía, mira esta serie de tutoriales para configurar un servidor VPS con Debian y Nginx.

Como ya sabéis, hemos estado configurando el servidor para utilizarlo con Nginx y poder gestionar nuestro propio correo desde el servidor, es decir, sin depender de ningún servicio de terceros. Para ello, instalamos iRedMail en el tutorial 2 y, en el tutorial 3 hicimos la sustitución de Apache por Nginx. El problema que tenemos es que iRedMail está configurado para trabajar con Apache y no con Nginx, así que tendremos que hacer algunos apaños para que funcione correctamente.

Cómo acceder a nuestro correo

Anteriormente accedíamos a través de las direcciones:

  • Buzón de correo electrónico: https://tutorialvps.tk/mail
  • Administración de cuentas de correo electrónico: https://tutorialvps.tk/iredadmin

Ahora accederemos a través de las direcciones:

  • Buzón de correo electrónico: https://mail.tutorialvps.tk
  • Administración de cuentas de correo electrónico:  https://iredadmin.tutorialvps.tk

Paso 1 - Configurar los DNS

Vamos a utilizar subdominios, así que tendremos que modificar los registros DNS de nuestro dominio. Para ello, como siempre, vamos al panel de administración de estos DNS e introducimos:

configurar iredmail nginx tutorial geeky theory 1
configurar iredmail nginx tutorial geeky theory 2

¡Atención! Los DNS tardan en propagarse. Tened paciencia.

Paso 2 - Configurar los sitios de Nginx

Ahora tenemos que configurar los sitios de Nginx para poder acceder a estos subdominios. Primero haremos el de mail y luego el de iredadmin, que será algo más complicado, ya que el panel de control está hecho desarrollado en Python.

2.1 - mail

Crearemos un fichero llamado mail.tutorialvps.tk. Cada uno con su dominio, lógicamente: # nano /etc/nginx/sites-available/mail.tutorialvps.tk Ahora introducid el siguiente contenido: server { listen      80; server_name mail.tutorialvps.tk; location / { rewrite ^ https://$server_name$1 permanent; } location ~ \.php$ { fastcgi_pass   unix:/var/run/php5-fpm.sock; fastcgi_index  index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME /usr/share/apache2$fastcgi_script_name; } } server { listen       443; server_name  mail.tutorialvps.tk; location / { root   /usr/share/apache2/roundcubemail; index  index.php index.html; } location ~ \.php$ { root            /usr/share/apache2/roundcubemail; include         fastcgi_params; fastcgi_pass    unix:/var/run/php5-fpm.sock; fastcgi_index   index.php; fastcgi_param   SCRIPT_FILENAME /usr/share/apache2/roundcubemail$fastcgi_script_name; fastcgi_param SERVER_NAME $http_host; fastcgi_ignore_client_abort on; } ssl                  on; ssl_certificate      /etc/ssl/certs/iRedMail_CA.pem; ssl_certificate_key  /etc/ssl/private/iRedMail.key; ssl_session_timeout  5m; ssl_protocols  SSLv2 SSLv3 TLSv1; ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_prefer_server_ciphers   on; }

El correo electrónico lo consultamos desde la carpeta "/usr/share/apache2/roundcubemail". Por eso ponemos esa variable como root. El servidor también escucha en el puerto 443, además del 80.

Ahora vamos a crear un enlace a la carpeta donde Nginx guarda los "sitios activados", es decir, los que están disponibles para su uso:

# ln /etc/nginx/sites-available/mail.tutorialvps.tk /etc/nginx/sites-enabled/ Para finalizar, reiniciamos el servicio Nginx: # service nginx restart

Este  archivo lo configuré basándome en uno que encontré en la Wiki de Nginx. No le hagáis caso al de ahí, que tuve que modificar alguna que otra cosa y el que os he dejado yo está hecho para la configuración que estamos siguiendo en los tutoriales.

Si todo va bien, veremos algo así:

configurar iredmail nginx tutorial geeky theory 3

Ya nos funciona el correo electrónico. Bueno, en realidad nunca ha dejado de funcionar, pero no podíamos acceder a él, que es básicamente lo mismo.

2.2 - Administración de cuentas

Esta es la parte en la que surge la magia. Voy a utilizar el proyecto uWSGI (interfaz universal entre servidores y aplicaciones Web) para hacer funcionar el panel de control de iRedMail. Podéis ver más información aquí, pero no es el objetivo de este tutorial, así que no me meteré en el tema.

Actualizamos nuestro servidor:

# apt-get update && apt-get upgrade

A continuación, instalamos los siguientes paquetes:

# apt-get install uwsgi uwsgi-plugin-python python-pip python-mysqldb# pip install jinja2# pip install web.py

El panel de administración del correo electrónico es una aplicación Web WSGI y, como tal, necesita un archivo de configuración:

# nano /etc/uwsgi/apps-available/iredadmin.ini

Introducimos el siguiente contenido:

[uwsgi] plugins=python vhost=true socket=/var/run/uwsgi/app/iredadmin/iredadmin.socket

Tras esto, creamos un enlace hacia la carpeta de "aplicaciones habilitadas":

# ln /etc/uwsgi/apps-available/iredadmin.ini /etc/uwsgi/apps-enabled/

Como ya sabemos, el usuario Web por defecto en los servidores es 'www-data', así que tendremos que darle permisos para acceder al panel de administración de correo electrónico:

# chown www-data:www-data /usr/share/apache2/iredadmin/* -R

Tras realizar estos pasos, tendremos que crear el sitio en la configuración de Nginx, igual que hemos hecho con mail.tutorialvps.tk, pero ahora cambiará el subdominio:

# nano /etc/nginx/sites-available/iredadmin.tutorialvps.tk Introduciremos el siguiente contenido: server { listen          80; server_name iredadmin.tutorialvps.tk; location / { rewrite ^(.*) https://$server_name$1 permanent; } } server { listen 443; server_name iredadmin.tutorialvps.tk; access_log  /var/log/nginx/iredadmin.access_log; error_log   /var/log/nginx/iredadmin.error_log; location / { root /usr/share/apache2/iredadmin; uwsgi_pass unix:///var/run/uwsgi/app/iredadmin/iredadmin.socket; uwsgi_param UWSGI_PYHOME /usr/share/apache2/iredadmin/python-home; uwsgi_param UWSGI_CHDIR /usr/share/apache2/iredadmin; uwsgi_param UWSGI_SCRIPT iredadmin; include uwsgi_params; } location /static { alias /usr/share/apache2/iredadmin/static/; } ssl                  on; ssl_certificate      /etc/ssl/certs/iRedMail_CA.pem; ssl_certificate_key  /etc/ssl/private/iRedMail.key; ssl_session_timeout  5m; ssl_protocols  SSLv2 SSLv3 TLSv1; ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_prefer_server_ciphers   on; } Ahora creamos el enlace en los "sitios habilitados" de Nginx: # ln /etc/nginx/sites-available/iredadmin.tutorialvps.tk /etc/nginx/sites-enabled/ Finalmente, tendremos que reiniciar los servicios de Nginx y uWSGI: # service nginx restart# service uwsgi restart Si vamos a https://iredadmin.tutorialvps.tk, funcionará perfectamente:

configurar iredmail nginx tutorial geeky theory 4

Todo funciona perfecto y ya casi tenemos la configuración acabada. Quedan unas cuantas cosas, pero lo peor ya ha pasado. Nos vemos en el próximo tutorial.

¡Un saludo!

Si queréis registraros en Digital Ocean para tener vuestro VPS, haced click en este botón:

[button link='https://www.digitalocean.com/?refcode=635dcf868b93' size='large' color='blue' target='blank']Digital Ocean[/button]