local
Postfix SMTP Server | Envío local de correos
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
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:
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
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.
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:
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.
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.
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.
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.
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.
Xampp Server | Instalación servidor local
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
Antes de comenzar a trabajar en cualquier proyecto web, es necesario que cuentes con un entorno de desarrollo en el que puedas ejecutar tus códigos y/o aplicaciones; en el caso de Drupal, necesitarás un servidor en el que estén instalados Apache, php y mysql para poder realizar la instalación, configuración y ejecución de tu proyecto.
Existen varias opciones para instalar esta clase de servidores, tanto si el sistema operativo Linux, Windows o cualquier otro.
Una de las maneras menos complicadas de realizar esta clase de instalaciones, es utilizar el Servidor Local Xampp, cuyo contenido incluye un servidor Apache, Mysql y php, por lo que en poco tiempo podrás comenzar a trabajar con tu proyecto, sin grandes preocupaciones ni conocimientos avanzados sobre servidores.
Si quieres descargar el servidor Xampp en tu máquina, sólo tendrás que acceder su Página Oficial y descargarte la versión más adecuada a tu sistema operativo.
Desde esta página podrás descargar la última versión compatible con la versión más reciente de Php, pero si por el contrario, necesitar utilizar una versión inferior, porque tu proyecto sea en Drupal 7, por ejemplo, también podrás descargar otras versiones desde su Página Oficial Otras versiones.
Tan pronto como haya terminado la descarga del instalador, como con el resto de aplicaciones para Windows, tendrás que hacer clic para iniciar el proceso de ejecución y hacer otro clic en el botón siguiente hasta que finalice todo el proceso.
Cuando se haya terminado la instalación del Xampp, se mostrará en pantalla el Panel de Control, donde podrás inicializar, entre otras opciones, los servidores de Apache y MySql, haciendo clic en el botón arrancar, necesarios para continuar con la instalación del Drupal.
El siguiente paso será la descarga de tus archivos de Drupal, dentro de la carpeta pública del servidor, para ello busca en tu disco C la ubicación de tu instalación del Xampp, y dentro de esta, la carpeta htdocs, dentro de la que deberías colocar todos los archivos de tus instalaciones web, incluyendo la de Drupal.
Para trabajar con Drupal, es recomendable realizar algunas modificaciones, en la configuración por defecto, al menos hasta el momento de escribir este artículo, para evitar ciertos errores relacionados con la memoria, tiempo de ejecución, etc.
Configuración Servidor Local Drupal 8
Otro de los cambios que serán necesarios, antes de comenzar con el proceso de instalación de Drupal, es la configuración del dominio virtual o Virtual host, es lo que te permitirá acceder a tu web, mediante el navegador, para inicializar el instalador de Drupal, en esta primera fase y, posteriormente, para continuar con la gestión total de tu proyecto Drupal.
Para la configuración del dominio virtual, en el caso de hacerlo en un servidor local, que utiliza el sistema operativo Windows, tendrás que modificar dos archivos específicamente, esto serán el archivo hosts, de Windows, ubicado en "C:\Windows\System32\drivers\etc", y dentro de este copiarás la línea que viene como ejemplo, comentada en el archivo y la sustituirás con el nombre o dominio que utilizarás en tu proyecto Drupal.
El otro archivo que tendrás que modificar, es el httpd-vhost.conf, que define el "Virtual Host", dentro de tu servidor Apache en Xampp, ubicado en "C:\xampp\apache\conf", donde al igual que en caso anterior, deberás copiar las líneas que te vienen comentadas como ejemplo y sustituirlas con los datos específicos para tu proyecto Drupal.
Trabajando con entornos y servidores locales
Cannot communicate with server: Post http://localhost/v2/apps: dial unix /run/snapd.socket: connect: no such file or directory
A los que estamos trabajando con WSL2 en Windows 10, nos puede pasar este error de conexión entre nuestra consola y el servidor para descargar las aplicaciones. En mi caso me sucedió al intentar instalar cerbot.
Al parecer Ubuntu 20.04 LTS reemplazó el software de ubuntu con snapcraft por completo. Entonces, es obvio que el snap se está convirtiendo en el 'predeterminado' de la distribución.
El problema es que snap no parece funcionar actualmente en wsl2 debido a que depende de systemd. Si lo entiendo correctamente, el servicio snapd debería estar ejecutándose en segundo plano para que funcione, que snapd ya viene preinstalado, sin embargo snapd no puede iniciarse debido a que WSL2 no tiene systemd.
error: cannot communicate with server: Post http://localhost/v2/snaps/hello-world: dial unix /run/snapd.socket: connect: no such file or directory
Por eso, si intentáramos ejecutar el comando: sudo service snapd start, nos saldría en pantalla algo parecido a esto:
snapd: unrecognized service
Cómo borrar Apache2 definitivamente | Permanently removing apache2
Algunas veces, instalamos apache y por alguna razón, necesitamos borrarlo, ya sea para reinstalarlo y corregir algún error de configuración o por conflictos con otra apliación, a continuación te muestro los pasos para borrarlo, con todos sus archivos en Ubuntu
Cómo borrar mysql o mariadb definitivamente | Permanently removing mysql
Algunas veces, instalamos mysql o mariadb y por alguna razón, necesitamos borrarlo, ya sea para reinstalarlo y corregir algún error de configuración o por conflictos con otra apliación, a continuación te muestro los pasos para borrarlo, con todos sus archivos en Ubuntu
Cómo habilitar la ejecución de scripts para Powershell
Si estás intentando ejecutar por primera vez algún script usando tu consola PowerShell en Windos, te encontrarás con un error parecido a este:
«No se puede cargar el archivo XXXX.ps1 porque en el sistema está deshabilitada la ejecución de scripts. Vea «get-help about_signing» para obtener más información».
Una vez cambies la configuración siguiendo los pasos que están en las instrucciones, podrás ejecutar código cada vez que lo necesites.
Configuración Servidor Local Drupal 8
Para utilizar Drupal 8 en tu servidor local, se recomienda modificar los siguientes valores de configuración en tus archivos de apache y mysql
Error de memoria con composer
Este código te ayudará a corregir el error de memoria, en tu entorno local, cuando ejecutas composer.
Paginación
- Página anterior
- Página 2
- Siguiente página