Usando Sendmail+Dovecot+SquirrelMail y configuracion de Firewall (ufw y firewallD)
Siguiendo el post anterior , un amigo me consultó "Cómo puedo tener correo electrónico sin pagar el relajo de plata que cuesta" .
Entonces yo le dije que con Linux se puede hacer eso y mucho más, pero para lo que él necesita le ayudé con un mail server básico.
Y qué hacemos entonces?
Esta entrada se enfocará en la instalación y configuración de un servidor de correos, con sus componentes: MTA, MDA y MUA (el ultimo para acceso web) .Es altamente recomendable tener un servidor DNS corriendo en la red, ver post anterior si no se tiene, pero se puede hacer uno rapido con DNSMasq (no cubierto aqui)
forwarder, ACL y reglas de Firewall que son necesarias para lograrlo.
No se usará DHCP.
Se usará un entorno virtualizado (usar VirtualBox o VMWare player) para hacer la configuración y pruebas.
Componentes del articulo
1. Pre-requisitos para instalación
1.1 Requisitos CenTOS 8
1.2 Requisitos Ubuntu 20.04
2. Red y Firewall
2.1 Configurar Red (CentOS 8 y Ubuntu 20.04)
2.2 Configurar Firewall
2.2.1 Ubuntu 20.04
2.2.2 CentOS 8
3. Breve explicación de servicios de correo.
4. Instalación de paquetes.
4.1 Ubuntu 20.04
4.1.1 Sendmail y Dovecot
4.1.2 Apache web server
4.1.3 Squirrelmail
4.2 CentOS 8
4.2.1 Sendmail y Dovecot
4.2.2 Apache web server
4.2.3 Squirrelmail
5. Configuración Dovecot y Sendmail.
5.1 Ubuntu 20.04 y CentOS 8
6. Configuración Squirrelmail y Apache .
6.1 Ubuntu 20.04 y CentOS 8
7. Pruebas de servicio de correo.
7.1 Preparación de ambiente
7.2 Prueba desde Thunderbird
7.3 Prueba desde Windows Mail
7.4 Prueba desde Webmail
1.2 Requisitos Ubuntu 20.04
2. Red y Firewall
2.1 Configurar Red (CentOS 8 y Ubuntu 20.04)
2.2 Configurar Firewall
2.2.1 Ubuntu 20.04
2.2.2 CentOS 8
3. Breve explicación de servicios de correo.
4. Instalación de paquetes.
4.1 Ubuntu 20.04
4.1.1 Sendmail y Dovecot
4.1.2 Apache web server
4.1.3 Squirrelmail
4.2 CentOS 8
4.2.1 Sendmail y Dovecot
4.2.2 Apache web server
4.2.3 Squirrelmail
5. Configuración Dovecot y Sendmail.
5.1 Ubuntu 20.04 y CentOS 8
6. Configuración Squirrelmail y Apache .
6.1 Ubuntu 20.04 y CentOS 8
7. Pruebas de servicio de correo.
7.1 Preparación de ambiente
7.2 Prueba desde Thunderbird
7.3 Prueba desde Windows Mail
1. Pre-requisitos para instalación
•Un PC con CentOS 8 o Ubuntu 20.04, usados en este tutorial.
•Una NIC conectada a la red sin firewall de por medio.
•Una conexión de red a internet (cableada preferiblemente)
•Un servidor DNS corriendo (usar DNSMasq o DNS configurado en post anterior )
•Conocimientos basicos de protocolos de correo electronico.
•Conocimiento basico de shell de Linux
1.1 Pre-requisitos CenTOS 8•Conocimiento basico de shell de Linux
•Actualizar repositorios e instlara el repositorio EPEL tambien.
sudo yum install epel-release
sudo yum update
* Nota: Si aparece un error indicando que no puede sincronizar, ejecutar lo siguiente:
sudo dnf update -y --releasever=8
1.2 Pre-Requisitos Ubuntu 20.04
• Actualizar repositorios:
sudo apt update
2. Red y Firewall
. 2.1 Configurar Red (CentOS 8 y Ubuntu 20.04)Para configurar la red, ver los pasos detallados en el siguiente post:
https://plecaetece.blogspot.com/2020/04/centos-ubuntu-2004-configuracion-de-red.html
*NOTA: Colocar sus valores de IP correctos, y el DNS que tengan disponible, en mi ambiente, tomando en cuenta el post DNS mencionado arriba mis detalles de red van así:
IP: 192.168.116.4
Subred: 255.255.255.0 (ó /24)
Gateway: 192.168.116.2
DNS: 192.168.116.5
Hostname: mail.plecaetc.local
2.2 Configurar Firewall
La configuracion que se usará para el servidor mail, será la siguiente.
Permitir Inbound:
tcp/110 - POP
tcp/143 - IMAP
tcp/993 - IMAP SSL
tcp/25 - SMTP
tcp/587 - SMTP SSL
tcp/80 - HTTP (interfaz de correo web)
tcp/443 - HTTPS (interfaz de correo web)
2.2.1 Ubuntu
En Ubuntu El firewall esta deshabilitado por default.
Para habilitarlo, y configurarlo a lo minimo, ejecutaremos los siguientes comandos:
Crear las reglas generales con el principio de Denegacion Implicita para prevenir accesos no autorizados.
sudo ufw default allow outgoing
sudo ufw default deny incoming
Agregar excepcion para conectarnos por SSH, desde nuestra red:
sudo ufw allow proto tcp from 192.168.116.0/24 to any port 22 comment 'aceptar trafico SSH a NUESTRA red'
Agregar excepcion para el servicio web que habrá (HTTP/HTPS), desde nuestra red:
sudo ufw allow 80/tcp comment 'aceptar trafico web HTTP de TODOS'
sudo ufw allow 443/tcp comment 'aceptar trafico web HTTPS de TODOS'
Agregar excepcion para POP, desde nuestra red:
sudo ufw allow proto tcp from 192.168.116.0/24 to any port 110 comment 'aceptar trafico POP a NUESTRA red'
Agregar excepcion para IMAP , desde nuestra red:
sudo ufw allow proto tcp from 192.168.116.0/24 to any port 143 comment 'aceptar trafico IMAP a NUESTRA red'
sudo ufw allow proto tcp from 192.168.116.0/24 to any port 993 comment 'aceptar trafico IMAP SSL a NUESTRA red'
Agregar excepcion para SMTP, desde nuestra red:
sudo ufw allow proto tcp from 192.168.116.0/24 to any port 25 comment 'aceptar trafico SMTP a NUESTRA red'
sudo ufw allow proto tcp from 192.168.116.0/24 to any port 587 comment 'aceptar trafico SMTP SSL a NUESTRA red'
Se habilita el firewall
sudo ufw enable
Se revisa el estado
sudo ufw status
--
2.2.2 CentOS
Se ejecutará lo mismo que en el inciso anterior para Ubuntu, pero con la sintaxis del firewall para CentOS:
Agregar nuestra red actual a la zona:
sudo firewall-cmd --zone=public --permanent --add-source=192.168.116.0/24
Agregar reglas con excepciones:
sudo firewall-cmd --zone=public --permanent --add-port=22/tcpsudo firewall-cmd --zone=public --permanent --add-port=80/tcp
sudo firewall-cmd --zone=public --permanent --add-port=443/tcp
sudo firewall-cmd --zone=public --permanent --add-port=110/tcp
sudo firewall-cmd --zone=public --permanent --add-port=143/tcpsudo firewall-cmd --zone=public --permanent --add-port=25/tcp
sudo firewall-cmd --reload
Se confirman los cambios:
sudo firewall-cmd --zone=public --list-all
3. Breve explicación de los servicios de correo.
Los servidores de correo tienen varios componentes o agentes corriendo adentro para poder llevar a cabo las operaciones de envio, almacenamiento, ruteo y presentación de los mismos.Los componentes son los siguientes:
Mail Transfer Agent (MTA).
Aceptar correos de otros MTA (otros servidores) y usuarios de correo. Es el que utiliza el protocolo SMTP
Algunos ejemplos son sendmail, Postfix, y el MTA de Microsoft Exchange.
Mail Delivery Agent(MDA).
Acepta correos de entrada de un MTA y se encarga de entregarlo al usuario correcto. Es el que utiliza protocolo IMAP o POP
Ejemplos: Courier, Exchange MDA, Dovecot.
LDA – Local Delivery Agent.
Es basicamente lo mismo que el MDA, pero lo hace localmente.
procmail es el comunmente utilizado en sistemas de Linux.
Mail User Agent (MUA)
Se utiliza por los usuarios para crear, descargar y leer correos, subirlos a un MTA. Conocidos tambien como clientes de correo
Ejemplos: Outlook, WindowsLive Mail, Mozilla Thunderbird, Squirrelmail.
Interfaz web Squirrelmail.
Esquema de interconexión de componentes
imagen cortesía https://es.ccm.net
4. Instalación de paquetes.
4.1 Ubuntu 20.04
4.1.1 Sendmail y Dovecot
sudo apt install dovecot-core dovecot-pop3d dovecot-imapd sendmail sendmail-cf
**Nota: habrá algo de log post instalación, pero no haremos nada más, luego se configura.
4.1.2 Apache web server
sudo apt-get install apache2 php libapache2-mod-php php-cli php-common
4.1.3 Squirrelmail
Colocarse en un folder neutral para descargarlo
cd /tmp
Descargar la versión más nueva de squirrelmail y el unzip.
wget http://downloads.sourceforge.net/project/squirrelmail/stable/1.4.22/squirrelmail-webmail-1.4.22.zip
sudo apt install unzip -y
Instalar Squirrel Mail en webserver (que viene siendo descomprimir el website, y moverlo a donde estan los sitios web de nuestro servidor web)
sudo unzip squirrelmail-webmail-1.4.22.zip
sudo mv squirrelmail-webmail-1.4.22/ /var/www/html/webmail
sudo chown -R www-data:www-data /var/www/html/webmail
NO INICIAR NINGUN SERVICIO AÚN
4.2 CentOS 8
4.2.1 Sendmail y Dovecot
sudo yum install sendmail-cf sendmail dovecot
**Nota: habrá algo de log post instalación, pero no haremos nada más, luego se configura.
4.2.2 Apache web server
sudo yum install httpd php php-cli php-common
4.2.3 Squirrelmail
cd /tmp
wget http://downloads.sourceforge.net/project/squirrelmail/stable/1.4.22/squirrelmail-webmail-1.4.22.zip
sudo unzip squirrelmail-webmail-1.4.22.zip
sudo mv squirrelmail-webmail-1.4.22/ /var/www/html/webmail
sudo chown -R apache:apache /var/www/html/webmail
NO INICIAR NINGUN SERVICIO AÚN
Listo, ya se han descargado e instalado todos lo spaquetes necesarios en ambas distros.
5. Configuración Dovecot y Sendmail.
5.1 Ubuntu 20.04 y CentOS 8
La configuración es virtualmente la misma, con algunas variantes que serán puestas en rojo.
Los protocolos imap y pop3 se definen en el archivo de configuracion, lo abrimos con (vim o nano):
sudo nano /etc/dovecot/dovecot.conf
---- diferencias en configuracion
Ubuntu
En la entrada siguiente, es donde se ubica el archivo donde especifican los protcolos:
Ese archivo mencionado contiene la siguiente información
protocols = $protocols imap
protocols = $protocols pop3
En la entrada siguiente, es donde se especifican los protcolos:
----
En el siguiente file está la configuración de los mailboxes (tambien ya están configurados, no es necesario editarlo.)
sudo nano /etc/dovecot/conf.d/10-mail.conf
mail_location = mbox:~/mail:INBOX=/var/mail/%u
En el siguiente file está la configuración autenticación:
sudo nano /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = yes
Crear la carpeta y archivo de INBOX con el que trabajará Dovecot:
sudo touch /etc/skel/mail/.imap/INBOX
Abrir archivo de configuración para Sendmail:
sudo vim /etc/mail/sendmail.mc
En la linea siguiente, remover la parte "Addr=127.0.0.1"
---- diferencias en configuracion
Ubuntu
Ubuntu
DAEMON_OPTIONS(`Family=inet,Name=MTA-v4,Port=smtp,Addr=127.0.0.1')dnl
Y quedará así:
Efectuar los cambios.
sudo m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
6. Configuración Squirrelmail y Apache .
6.1 Ubuntu 20.04 y CentOS 8
Agregar a los siguientes archivos, el nombre de nuestro dominio, en mi caso es
plecaetc.local , recordar que los correos iran por ejemplo (jfilomeno@plecaetc.local)
sudo vim /etc/mail/local-host-names
plecaetc.local
mail.plecaetc.local
Agregar al final del archivo "/etc/mail/access" ....
sudo vim /etc/mail/access
... la siguiente linea :
Connect:plecaetc.local RELAY
Connect:plecaetc.local RELAY
Copiar el siguiente archivo de configuracion para SquirrelMail
cd /var/www/html/webmail/config
sudo cp config_default.php config.php
sudo vim config.php
$org_name = "PlecaEtc";
$domain = 'plecaetc.local';
$data_dir = '/var/www/html/webmail/data/';
$attachment_dir = '/var/www/html/webmail/attach/';
Crear el directorio para los adjuntos, y darle los permisos.
mkdir /var/www/html/webmail/attach/
chown www-data:www-data /var/www/html/webmail/attach/
*Nota:Para CentOS en vez de www-data es apache.
Se agrega la interfaz web de correo electronico, al Web Servercorriendo.Esto se hace creando un nuevo archivo de configuración y colocando los siguientes valores:
DocumentRoot "/var/www/html/webmail"
ServerName mail.plecaetc.local
Options Indexes FollowSymlinks
RewriteEngine On
AllowOverride All
DirectoryIndex index.php
Order allow,deny
Allow from 192.168.116.0/24
sudo cp config_default.php config.php
Editarlo a nuestra conveniencia (en azul los valores que se han editaro)
sudo vim config.php
$org_name = "PlecaEtc";
$domain = 'plecaetc.local';
$data_dir = '/var/www/html/webmail/data/';
$attachment_dir = '/var/www/html/webmail/attach/';
Crear el directorio para los adjuntos, y darle los permisos.
mkdir /var/www/html/webmail/attach/
chown www-data:www-data /var/www/html/webmail/attach/
*Nota:Para CentOS en vez de www-data es apache.
Se agrega la interfaz web de correo electronico, al Web Servercorriendo.Esto se hace creando un nuevo archivo de configuración y colocando los siguientes valores:
DocumentRoot "/var/www/html/webmail"
ServerName mail.plecaetc.local
Options Indexes FollowSymlinks
RewriteEngine On
AllowOverride All
DirectoryIndex index.php
Order allow,deny
Allow from 192.168.116.0/24
**Nota: en el archivo se define que escuche en la IP 116.4 , por HTTP (tcp 80), y que solo responda cuando sea llamado desde "mail.plecaetc.local" en el navegador.
---- cambios en configuracion
Ubuntu
Ubuntu
Agregar la información anterior del sitio web, con el siguiente comando(vim o nano):
nano /etc/apache2/sites-available/webmail.conf
Habilitar los nuevos cambios (y un módulo que necesitaremos - mod_rewrite ) y reiniciar el servicio
sudo a2enmod rewrite
sudo a2ensite webmail.conf
sudo systemctl restart apache2
CentOS
Agregar la información anterior del sitio web, con el siguiente comando(vim o nano):
vim /etc/httpd/conf/httpd.conf
Reiniciar los servicios solamente, ya que no son necesarios los extra pasos de Ubuntu.
sudo systemctl restart httpd----
7. Pruebas de servicio de correo.
7.1 Preparación de ambiente
Se levantan y habilitan todos los servicios configurados:
sudo systemctl enable sendmail
sudo systemctl start sendmail
sudo systemctl enable dovecot
sudo systemctl start dovecot
sudo systemctl enable httpd
sudo systemctl start httpd
Creamos un usuario de pruebas y se llenan todos los valores que solicite el shell:
sudo adduser jfilomeno
7.2 Prueba desde Thunderbird
Se agrega la cuenta y se acepta la excepción del certificado SSL (por el IMAP 4) y se prueba la funcionalidad.
Se agrega la cuenta y se acepta la excepción del certificado SSL (por el IMAP 4) y se prueba la funcionalidad.
7.4 Prueba desde Webmail
Para el webmail, se puede acceder desde cualquier PC que esté en la red local, configurada correctamente (DNS apuntando al que está configurado correctamente).
Para el webmail, se puede acceder desde cualquier PC que esté en la red local, configurada correctamente (DNS apuntando al que está configurado correctamente).
No hay comentarios:
Publicar un comentario