servidores

Drupal con Docker | Configuración entorno local

Video de Youtube
URL de Video remoto
Texto

Si haz decidido dedicarte profesionalmente al desarrollo de aplicaciones web, lo ideal es que comiences a experimentar con las herramientas y opciones más actuales que existen en el mercado. Una de mis recomendaciones es el uso de contenedores Docker, que nos permitirá configurar, replicar y/o compartir, entornos de trabajo, evitando los históricos fallos de versión del lenguaje, o del servidor con el que estemos trabajando en nuestros proyectos.

En el caso de Drupal, no basta con añadir un archivo Dockerfile, para contar con todos los requerimientos necesarios, pero ya existen varias alternativas disponibles, facilitándonos esa parte del proceso. Una de ellas es la conocida como Docker4Drupal, cuyo mantenimiento continuo y permanente, nos permite realizar las instalaciones de Drupal, en cada nueva versión publicada.

Docker4Drupal, tiene múltiples funcionalidades, que podremos activar, personalizar y utilizar, dependiendo de las necesidades del proyecto, como son el administrador de base de datos AdminerXdebug, servidor para correos locales Mailhog, servidor de base de datos Postgres, servidor Apache Solr, entre otros.

Además de utilizar las variables de entorno, que nos pueden servir para realizar comprobaciones sobre el comportamiento de nuestras aplicaciones, sin la necesidad de realizar despliegues en otros entornos adicionales a nuestro local.

Aunque no profundizaremos en todas las opciones y configuraciones disponibles con Docker4Drupal, te animo a que visites su página oficial https://github.com/wodby/docker4drupal y eches un vistazo a su documentación, para que conozcas un poco más acerca de todo lo que tiene para ofrecernos.

Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony
Texto

   Cómo instalar un entorno local con Docker4Drupal

     Requisitos:

          - Entorno Linux: Yo he utilizado el subsistema WSL2, con Ubuntu 2204, dentro de una máquina Windows 11. HAZ CLIC AQUI

          - Docker Desktop: Para las instrucciones desde su página oficial. HAZ CLIC AQUI

     Para este curso, utilizaremos Docker4Drupal, dentro de un entorno Linux (Ubuntu 2204), con WSL2 y Windows 11, de esta manera no tendremos que configurar máquinas virtuales adicionales, que podrían consumir muchos más recursos de los necesarios en nuestra máquina. Aunque si lo deseas, también puedes aplicar los mismos pasos en la distribución de Linux que prefieras.

     Si quieres reproducir exactamente los ejercicios que vamos a detallar en este curso, sólo necesitarás descargar y configurar DockerDesktop y WSL2 en tu ordenador y a continuación, abrir la consola para continuar con el resto de la instalación que verás en el video.

Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony
Texto

   Descarga y configuración del Docker4Drupal

      Ahora que ya tienes configurado el entorno Linux donde vas a trabajar, abriremos nuestra consola y nos colocaremos en la ubicación donde instalaremos nuestro Drupal 10, a continuación, abriremos la url del respositorio de Docker4Drupal y lo clonaremos, para comenzar con la descarga de los archivos que vamos a necesitar.

     Si quieres, puedes aprovechar el proceso de clonación para configurar el nombre de tu carpeta, al mismo tiempo que realiza la descarga, para ello, tendrás que añadir una línea como la siguiente:

git clone https://github.com/wodby/docker4drupal.git/ drupal_10

     Esto creará la carpeta con el nombre drupal_10 en la ubicación que hayas seleccionado y dentro de ella colocará todos los archivos descargados desde el repositorio, donde podremos continuar con otros cambios necesarios, antes de descargar el esqueleto o estructura principal de nuestro proyecto de Drupal.

Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony
Texto

   Configuración inicial del servidor

     Una vez terminada la descarga de los archivos para nuestro servidor, el siguiente paso será la personalización de algunas opciones, para que podamos descargar, arrancar y acceder a nuestro proyecto de Drupal, que descargaremos, una vez terminados estos primeros cambios.

     Así que, con nuestro IDE favorito, abriremos la carpeta donde hemos descargado los archivos del repositorio, para comenzar con las primeras configuraciones.

   Paso 1 - Eliminar docker-compose.override.yml

     Eliminaremos el archivo docker-compose.override.yml, para que podamos controlar el comportamiento del servidor a través de la configuración en la variable de entorno.

   Paso 2 - Ajustes en la variable de entorno.

     Por el momento, el archivo que necesitamos conocer y ajustar es el responsable de nuestro entorno de trabajo, conocido como .env, donde podremos personalizar los siguientes detalles:

    Nombre del proyecto, url y puerto de conexión

  • Nombre del proyecto: PROJECT_NAME=my_drupal10_project
  • Url del proyecto: PROJECT_BASE_URL=drupal.docker.localhost 
  • El puerto de conexión: PROJECT_PORT=8000

    Cuando hayamos realizado el cambio en la url del proyecto y el puerto, podremos acceder a nuestro Drupal, una vez descargado, escribiendo en el navegador 

http://drupal.docker.localhost:8000

   Nombre de usuario, base de datos y contraseña

  • Nombre de la base de datos: DB_NAME=drupal 
  • Nombre del usuario para la base de datos: DB_USER=drupal 
  • Contraseña del usuario de base de datos: DB_PASSWORD=drupal    
Texto

   Arrancando nuestros contenedores Docker

     Un servidor basado Docker que ejecuta varios contenedores, conectados entre sí, que permiten ejecutar nuestro código sin la necesidad de instalar ningún archivo extra en nuestra máquina, esto es lo que se conoce como virtualización del entorno.

     En otra palabras, en lugar de arrancar un servidor tipo XAMPP, con todo incluido y administrable desde un panel de control, como hacíamos años atrás, con Docker, tendremos varios servicios independientes, que podremos modificar y/o ajustar, según nuestras necesidades. 

     Si exploras un poco más, dentro del archivo .env, que modificamos hace un momento, podrás comprobar que tienes varias opciones de versión y configuración, que podrás activar o desacticar, añadiendo o quitando, el símbolo de almohadilla (#), que acompaña cada una de las definiciones:

### --- MARIADB ----

MARIADB_TAG=10.11-3.26.3
#MARIADB_TAG=11.0-3.26.3
#MARIADB_TAG=10.10-3.26.3
#MARIADB_TAG=10.9-3.26.3
#MARIADB_TAG=10.6-3.26.3
#MARIADB_TAG=10.5-3.26.3
#MARIADB_TAG=10.4-3.26.3

### --- VANILLA DRUPAL ----

DRUPAL_TAG=10-4.58.1
#DRUPAL_TAG=9-4.58.1
#DRUPAL_TAG=7-4.58.1

### --- PHP ----

# Linux (uid 1000 gid 1000)

PHP_TAG=8.2-dev-4.47.1
#PHP_TAG=8.1-dev-4.47.1
#PHP_TAG=8.0-dev-4.47.1

Para arrancar nuestros contenedores, tenemos dos opciones:

docker compose up -d

O también puedes utilizar el paquete Make, que viene por defecto instalado con la distribución de Ubuntu, en este caso el comando para arrancar los contenedores sería:

make up

Una vez ejecutado cualquiera de los anteriores comandos, si todo va bien, deberías ver en tu consola, algo parecido a la siguiente imagen:

Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

   Descargando Drupal en nuestro servidor con Docker

     Gracias a que hemos eliminado previamente, el archivo docker-compose.override.yml, que reescribe la configuración de nuestros contenedores, podremos descargar el esqueleto de un proyecto Drupal 10, en este caso, para colocarlo dentro de nuestra carpeta del rood y así tener todos los archivos listos, por si en un futuro queremos compartir nuestro código, con otros miembros del equipo o trasladarlo a otra máquina.

   Pasos para descargar el Esqueleto de Drupal

       Paso 1 - Acceder al contenedor PHP

          A partir de Drupal 8, es recomendable utilizar el gestor de paquetes Composer, para garantizar la descarga total de las dependencias y facilitar las tareas de actualización y/o mantenimiento de Drupal, una vez esté en funcionamiento.

          Composer está disponible dentro del contenedor encargado de ejecutar PHP, así que primero comprobaremos los nombres de todos los contenedores y luego accederemos al contenedor de PHP. Para conocer los contenedores que tenemos funcionando actualmente, ejecutaremos el siguiente comando en la consola:

docker ps

        Esto nos debería devolver el listado con todos los contenedores que estén en funcionamiento:

Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

 

En nuestro caso, el contenedor de php se llama my_drupal10_project_php, para acceder dentro del contenedor y poder ejecutar el comando composer, escribiremos lo siguiente en la consola:

docker exec -it my_drupal10_project_php bash

Esto nos colocará dentro de la carpeta ROOT del servidor:

Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

A continuación, podremos descargar el esqueleto de Drupal 10, añadiendo el siguiente comando:

composer create-project drupal/recommended-project vaciar

Este comando descargará todos los arhivos necesarios para una instalación de Drupal 10, dentro de la carpeta que yo he llamado VACIAR, para que recordemos que no debemos dejar nada dentro una vez termine la descarga.

Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

   Añadiendo archivos no deseados al .gitignore

     Antes de sacar los archivos de la carpeta VACIAR, para evitar que se suban por error, cualquiera de los archivos de Docker, que sólo deberían estar en nuestro servidor local, tendremos que añadir esos archivos al .gitignore que nos viene por defecto al descargar Docker4Drupal, así que, lo abriremos con nuestro editor, y a continuación, añadiremos todos los archivos correspondientes a Docker y sus contenedores:

     El archivo .gitignore, quedaría de la siguiente manera, con nuestros cambios añadidos:

.idea/
mutagen.yml.lock
.vscode

#ignoramos los archivos de Docker y el servidor
tests
.dockerignore
.env
docker-compose.yml
docker.mk
LICENSE.md
Makefile
README.md
traefik.yml

Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

 

   Moviendo los archivos de Drupal a la raiz del  servidor

      Ya que tenemos configurado el archivo .gitignore, procederemos a extraer todos los archivos de la carpeta vaciar, para colocarlos en la carpeta raíz de nuestro servidor y de esta forma iniciar el proceso de instalación del Drupal. Para ello, no hace falta que estemos dentro del contenedor:

mv vaciar/* .
mv vaciar/.* .

     Con esto, quedarán fuera de la carpeta vaciar, todos los archivos de Drupal y a continuación, podremos eliminar la carpeta.

sudo rm -rf vaciar

Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

   Arrancando el instalador de Drupal

     Ahora que ya hemos colocado todos los archivos necesarios para instalar Drupal, podremos proceder con el instalador, pero antes, para estar seguros de que tenemos todo actualizado a la versión más reciente disponible, ejecutaremos el comando update de Composer, desde nuestro contenedor php:

composer update

     El resultado, debería ser algo parecido a la siguiente imagen:

Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Para comprobar que podremos instalar nuestro Drupal 10, abriremos el navegador y escribiremos los datos que constan en la variable de entorno, y que explicamos al principio de este ejercicio, si no has cambiado ninguno de los valores por defecto, deberías escribir esto en tu navegador :

http://drupal.docker.localhost:8000/

     El resultado, será que se pondrá en marcha el instalador de Drupal 10.

Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

   Proceso de instalación

     Al hacer clic en la primera pantalla del instalador, es posible que nos encontremos con algunos mensajes, relacionados con archivos que nos faltan por descargar, crear o configurar. El primero de ellos, en mi caso es una alerta que me advierte de la ausencia de la carpeta translations, encargada de alojar los archivos relacionados con las traducciones de Drupal, ya que nuestra instalación será en Español. 

Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Para corregir el error, creaemos la carpeta files, dentro de la ubicación: web/sites/default/, y acontinuación, daremos permisos de escritura a la carpeta files...

Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Si volvemos al navegador y refrescamos, veremos que nos deja continuar con el proceso de instalación, hasta la siguiente pantalla:

Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

 

     Al hacer clic en el botón Guardar y continuar, nos encontraremos con otro mensaje de alerta: 

Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     El instalador Drupal necesita que se cree un archivo ./sites/default/settings.php como parte del proceso de instalación. Así que simplemente, seguiremos las instrucciones, copiaremos el archivo default.settings.php y lo renombraremos a settings.php, asegurándonos de otorgarle permisos de escritura, que serán necesarios durante el resto de la instalación, para que Drupal pueda configurar los datos de acceso a la base de datos y la carpeta para la sincronización.

cp web/sites/default/default.settings.php  web/sites/default/settings.php

chmod -R 777 web/sites/default/settings.php

     Esta vez, cuando hayamos refrescado el navegador, veremos la pantalla donde tendremos que añadir los datos de acceso a la base de datos, que son los que podremos confirmar en nuestra variable de entorno .env, es muy importate que en lugar de dejar localhost, cambiemos el servidor de la base de datos por mariadb, o nos devolverá un error de permisos.

Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Tan pronto como se terminen de descargar las traducciones, debido a que nuestra instalación es en Español, veremos la pantalla final, donde debemos rellenar los detalles del usuario administrador, el correo electrónico que utilizará Drupal, para comunicarse con los usuarios que interactuén, el lenguaje, horario y pais... 

     Rellenaremos todo, presionaremos el botón continuar, y por fin, hemos terminado el proceso completo de instalación de un proyecto Drupal 10, con Docker.

Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Ahora ya podremos comenzar a trabajar con nuestro Drupal.

Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

 

   Añadiendo archivos al repositorio

     Como hemos comentado al principio, por lo general, cuando estás trabajando con algún proyecto de desarrollo, en algún momento tendrás que realizar el despliegue al entorno de producción, por lo cual es muy recomendable, que desde el principio, te acostumbres a trabajar con un repositorio, añadiendo y comiteando tus cambios, a medida que vayas avanzando en el proceso.

     Para evitar que se añadan archivos innecesarios de Drupal, como vendor o files, actualizaremos el archivo .gitignore, antes de realizar nuestro primer commit.

     Accede a este enlace y copia todo su contenido, justo debajo de nuestros últimos cambios en el .gitignore:

     https://drupaladicto.com/snippet/git-ignore-para-drupal

     Una vez actualizado tu archivo, podemos añadir y comentar nuestros cambios:

git init

git add .

git commit -m "Archivos base para instalar Drupal 10"

     Así nos aseguramos de que, al ejecutar el comando de subida a nuestro repositorio, git pull, sólo subamos lo necesario para no ocupar espacio innecesario en nuestro repositorio final.

Postfix SMTP Server | Envío local de correos

Video de Youtube
URL de Video remoto
Texto

Postfix Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

Si no ves el video, puedes refrescar el navegador, presionando (Ctrl+Shift+R | Ctrl+F5 o Shift+F5), o abrirlo directamente desde el Canal de Youtube... HAZ CLIC AQUI

      Cuando estamos desarrollando páginas web, una de las funcionalidades más interesantes que deberíamos tener en cuenta, es la de ofrecer la posibilidad, a los usuarios o clientes, de comunicarse con nuestra aplicación, potenciando la interacción e intercambio de información en ambas direcciones.

     Hoy en día contamos con varias opciones, como contratar o integrar servicios desarrollados por terceros, que ofrecen novedosas alternativas de comunicación, como chats, Watssap, Telegram, las redes sociales, etc. o de la manera tradicional, mediante el uso del correo electrónico, que al igual que la mayoría de las anteriores, tambén permite envío de documentos adjuntos, solicitudes de pedidos o facturas.

     El problema con el que nos encontramos a menudo, es que al configurar nuestro entorno de desarrollo local, no solemos aprovechar para instalar correctamente un servidor de correos que nos permita realizar pruebas de envío y, generalmente optamos por dejar esta comprobación para cuando el proyecto está a punto de terminarse o incluso cuando ya está en el servidor de producción.

     Qué es Postfix y para qué sirve

          Postfix es un agente de transporte de mensajes (MTA) de última generación, también conocido como servidor SMTP, que tiene dos propósitos:

  • Es responsable de transportar mensajes de correo electrónico desde un cliente de correo / agente de usuario de correo (MUA) a un servidor SMTP remoto.
     
  • También se utiliza para aceptar correos electrónicos de otros servidores SMTP.

     Postfix fue diseñado originalmente como un reemplazo de Sendmail, el servidor SMTP tradicional en Unix. En comparación, Postfix es más seguro y más fácil de configurar. Es compatible con Sendmail, por lo que si desinstala Sendmail y lo reemplaza con Postfix, sus scripts y programas existentes seguirán funcionando sin problemas.

     Cómo instalar y configurar Postfix como servidor SMTP solo de envío en Ubuntu 20.04

          Aunque suelo enfocarme en las configuraciones específicas para trabajar con Drupal, en este artículo voy a enseñarte todos los pasos que deberías saber, para configurar un entorno local de Linux, en el que puedas enviar correos electrónicos desde tus aplicaciones, sin importar la plataforma o lenguaje con el que esté desarrollada. Para ello voy a utilizar WSL2 en Windows 10.

       Paso 1 - Configurar el entorno de desarrollo con Linux 

          Para este ejercicio vamos a utilizar el WSL 2 en Windows 10, que nos permitirá desarrollar en un entorno de Linux, dentro de nuestro ordenador con Windows 10 Home, sin la necesidad de utilizar máquinas virtuales. Antes de pasar al siguiente paso, deberías configurar tu entorno WSL2, puedes ver cómo hacerlo en el artículo llamado Cómo instalar Drupal 9 usando Docker en Windows 10 Home    

       Paso 2 - Configuración del usuario No Root con permisos

          Siempre que realicemos una instalación de Linux, el primer paso es configurar los datos para nuestro usuario ROOT, éste tiene acceso y permisos para construir y destruir cualquier archivo dentro de nuestro entorno, lo cual podría suponer un alto riesgo, especialmente si estamos comenzando a trabajar con Linux. Por eso, si todavía no haz configurado el usuario No Root, es el momento de hacerlo, para poder ejecutar el resto del la instalación sin sustos:

          Primero creremos el usuario, y a continuación le incluiremos en el grupo sudo, para que pueda ejecutar comando con permisos de root, sin que tengamos que cerrar sesión o abrir otras pestañas para ejecutar el código. Puedes ver una explicación más amplia de Cómo crear y configurar el usuario No Root aquí

adduser noroot_user
usermod -aG sudo noroot_user

          Ahora que ya hemos creado nuestro usuario No Root, podremos iniciar sesión, en la misma ventana, o en una nueva pestaña si está utilizando la terminal mejorada en windows, para continuar con el resto de la instalación, para ello ejecutaremos el comando:

su - noroot_user

Postfix Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

        Paso 3 - Instalación de Apache y configuración del dominio para nuestra web

          Lo siguiente que vamos a necesitar es el servidor donde vamos a alojar nuestra web, y el dominio que utilizaremos para el envío de nuestros correos electrónicos. En ese caso, utilizaremos Apache, por considerarlo el más conocido por todos los usuarios.

         Primero actualizaremos los listado de paquetes en Linux

sudo apt update
sudo apt upgrade

         Y una vez actualizado, podremos ejecutar el código de instalación de Apache:

sudo apt install apache2

         Cuando haya terminado la instalación podremos arrancar el servidor, con el siguiente comando:

sudo service apache2 start

         Una vez instalado el servidor Apache, probemos que todo funciona, accediendo en el navegador a la url http://localhost. Deberíamos ver en pantalla la siguiente imagen:

Postfix Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Paso 4 - Configuración del dominio con Virtual Host

          Para nuestro ejemplo, necesitaremos un dominio, FQDN (Fully Qualified Domain Name), se usa comúnmente en servidores conectados a Internet y deberíamos usar FQDN en nuestros servidores de correo. Consta de dos partes: un nombre de nodo y un nombre de dominio. Por ejemplo:

mail.midomino.com

     El dominio del ejemplo anterior, sería un FQDN. mail es el nombre de nodo, midomino.com es el nombre de dominio. 

         Como en nuestro ejemplo nuestra web no estará conectada a internet, ya que la alojaremos en un entorno local, lo que haremos es "simular" un dominio, que apunte a nuestra ip, para ello, abriremos el archivo donde están alojados los dominios de Ubuntu, escribiendo en la consola el siguiente comando:

sudo nano /etc/hosts

 

Postfix Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Una vez abierto el editor de texto NANO, que viene con la instalación por defecto de Ubuntu 20.04, añadiremos la misma ip y nuestro dominio, algo parecido a lo siguiente, respetando la misma estructura del modelo que se nos presente en el archivo hosts:

127.0.0.1       mail.drupaladicto.localhost 

     Al terminar de añadir el dominio en el archivo hosts, haremos clic en Ctrl + X para cerrar y confirmaremos que queremos conservar los cambios haciendo clic en Y.

     Paso 5 - Instalación de Postfix

          Como siempre, antes de realizar cualquier instalación en Linux, primero actualizaremos el listado de paquetes disponibles en nuestra distribución y a continuación ejecutaremos el comando de instalación de Postfix y el (-y), para que se instalen todas las dependencias:

sudo apt update
sudo apt install mailutils

          Inmediatamente, veremos en pantalla el inicio del instalador, donde seleccionaremos la opción Internet Site, si no se habre con esta opción seleccionada por defecto, presionaremos la tecla TAB hasta seleccionarla y luego presionaremos la tecla ENTER, para pasar a la siguiente pantalla.

Postfix Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

          En la siguiente pantalla, escribiremos el nombre de nuestro dominio, como mencionamos anteriormente, si nuestro objetivo es mail.midominio.localhost, sólo escribiremos la segunda parte, tal y como se muestra en la imagen:

Postfix Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     La opción predeterminada es Internet Site. Es la opción recomendada para su caso de uso, por lo tanto, presione TAB y, luego, ENTER. Si solo ve el texto de la descripción, presione TAB para seleccionar OK y, luego, ENTER.

     Si no se muestra automáticamente, ejecute el siguiente comando para iniciarlo:

sudo dpkg-reconfigure postfix

     Una vez instalado, Postfix se iniciará automáticamente y se generará un archivo /etc/postfix/main.cf. Ahora podemos verificar la versión de Postfix con este comando:

postconf mail_version

     En Ubuntu 18.04, la versión de Postfix es 3.3.0 y Ubuntu 20.04 se envía con la versión 3.4.13.

Postfix Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

    Paso 6 - Configuración de Postfix

          En este paso, configuraremos Postfix para enviar y recibir correos electrónicos únicamente del servidor en el que se está ejecutando; es decir, desde localhost.

          Para lograrlo, configuraremos Postfix para que escuche únicamente en la interfaz de loopback, que es la interfaz de red virtual que utiliza el servidor para comunicarse internamente. Para ejecutar estos cambios, editaremos el archivo de configuración principal de Postfix, denominado main.cf, que se encuentra en etc/postfix.

          Abriremos el archivo con nuestro editor NANO escribiendo en pantalla el siguiente comando:

sudo nano /etc/postfix/main.cf

          Una vez abierto, buscaremos la siguientes líneas y realizaremos las modificaciones:

. . .
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
. . .

         Canbiaremos  el valor de inet_interfaces para que sea igual a loopback-only:

. . .
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
. . .

    Sin cerrar el archivo, buscaremos otra directiva que tendremos que modificar, es mydestination, que especifica la lista de dominios que se entregan a través del transporte de entrega de correo local_transport. Por defecto, los valores son similares a los siguientes:

. . .
mydestination = $myhostname, your_domain, localhost.com, , localhost
. . .

     Modificaremos esta línea para que tenga el siguiente aspecto:

. . .
mydestination = localhost.$mydomain, localhost, $myhostname
. . .

     Cuando hayamos terminado con los cambios, cerraremos el archivo y entonces podremos restaurar el servicio usando el siguiente comando:

sudo service postfix restart

     Nuestro servidor ya está configurado para enviar correos electrónicos, ahora podremos realizar las pruebas de envío.

     Paso 7 - Comprobación de los envíos desde el servidor SMTP

          En este paso, probaremos si Postfix puede enviar correos electrónicos a una cuenta de correo electrónico externa usando el comando mail, que es parte del paquete mailutils que instaló en el primer paso.

         Para enviar un correo electrónico de prueba, ejecutaremos el siguiente comando, cambiando la última parte por la dirección de correo con la que quieras probarlo:

echo "Este es el cuerpo del correo de pruebas" | mail -s "Este es el asunto del correo" tu_direccion_de_correo

         Una vez ejecutado el código, podrás abrir la bandeja de entrada o la de no deseados (Span) de tu cuenta de correo y deberías tener el contenido de este correo casi de inmediato.

Postfix Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

         Si recibiéramos un error del comando mail, o si no recibiéramos un mensaje después de un período prolongado, tendremos que comprobar que la configuración de Postfix que modificamos sea válida y que el nombre de su servidor y el nombre de host estén establecidos con el nombre de su dominio.

         Debemos tomar en cuenta, que los correos todavía no están cifrados, por lo que los servidores de correo, podrían identificarlos como No deseados (Span)

     Paso 8 - Reenviar correos del sistema

          En este paso, configuraremos el reenvío de correos electrónicos para el usuario root, con el propósito de que los mensajes generados por el sistema que se nos envíen en nuestro servidor local, se reenvíen a una dirección de correo electrónico externa.

          El archivo /etc/aliases contiene una lista de nombres alternativos de destinatarios de correo electrónico. Lo abriremos​​​ para editarlo:

 sudo nano /etc/aliases

          Una vez abierto, tendrá un aspecto parecido al siguiente:

# See man 5 aliases for format
postmaster:    root

          La única directiva presente especifica que los correos electrónicos generados por el sistema se envíen a root.

          Así que añadiremos la siguiente línea al final del archivo:

...
root:          tu_direccion_de_correo

         Con esta línea, estamos especificando que los correos electrónicos enviados al usuario root se reenvíen a una dirección de correo electrónico específica.  Sustituiremos tu_direccion_de_correo por tu dirección de correo electrónico personal. Y cuando hayamos terminado, guardaremos los cambios y cerraremos el archivo.

         Para que el cambio se realice, ejecutaremos el siguiente comando:

sudo newaliases

         Al ejecutar newaliases, se creará una base de datos de alias que utiliza el comando mail, que se toman del archivo de configuración que acaba de editar.

        Podremos comprobar que se envían correos electrónicos al usuario root al ejecutar lo siguiente:

echo "Este es el cuerpo del mensaje, enviado a ROOT" | mail -s "Esta es la línea del asunto" root

        Si abrimos nuestra cuenta de correo, podremos ver un nuevo mensaje.

Postfix Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

        Ahora, habilitará el cifrado de mensajes para que todos los correos electrónicos que envíe su servidor estén protegidos contra alteraciones en tránsito y se consideren más legítimos.

       Paso 9 - Habilitar el cifrado SMTP

         Para nuestro ejemplo, vamos a utilizar un certificado auto-firmado, con el programa OpenSSL, que viene instalado en Ubuntu 20.04. Ejecutaremos el siguiente comando, modificando el nombre del dominio, por el que configuramos al principio de este artículo, y esto nos generará el certificado y la clave primaria, dentro del la ubicación /etc/ssl:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/midominio.localhost.key -out /etc/ssl/midominio.localhost.crt

       Esto nos abrirá la pantalla, que nos perdirá los datos del registro del certificado, rellenaremos cada línea, haciendo clic en la tecla ENTER, para pasar a la siguiente; teniendo especial cuidado en las dos últimas, donde tendremos que especificar el nombre de nuestro dominio, tal y como lo hemos definido y una dirección de correo real, para que no nos genere ningún error.

Postfix Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

       Cuando hayamos terminado con la creación del certificado, veremos el mensaje de confirmación de que se generado correctamente y entonces, podremos realizar los cambios en el archivo de configuración, para actualizar la ubicación por la de nuestro certificado, para ello ejecutaremos la siguiente línea:

sudo nano /etc/postfix/main.cf

       Una vez abierto, buscaremos las siguientes líneas y las actualizaremos por la información correspondiente:

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_security_level=may

smtp_tls_CApath=/etc/ssl/certs
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

      Al terminar, cerraremos el archivo y guardaremos lo cambios. A continuación reiniciaremos el servicio de Postfix para que queden registrados, con el siguiente comando:

sudo service postfix restart

     Entonces, podremos volver a probar el envío de un correo electrónico, con el siguiente código, modificando tu cuenta de correo:

echo "Este es el cuerpo del mensaje CERTIFICADO " | mail -s "Este es el asunto del Correo Certificado" tu_direccion_de_correo

     Si volvemos a ver nuestra bandeja de entrada, deberíamos encontrar un nuevo correo en el buzón.

Postfix Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony