Un servidor de correo es una aplicación de red de computadoras ubicada en un servidor de Internet, para prestar servicio de correo electrónico (correo-e o «e-mail»).

De forma predeterminada, el protocolo estándar para la transferencia de correos entre servidores es el Protocolo Simple de Transferencia de Correo (Simple Mail Transfer Protocol, SMTP).

 

 

 

Enviar correo desde local al exterior

Para poder enviar un correo desde nuestra maquina «barney» que es en la cual vamos a instalar el servidor de correo vamos a agregar a la zona dns el siguiente registro:

; BIND reverse data file for empty rfc1918 zone
;
; DO NOT EDIT THIS FILE - it is used for multiple zones.
; Instead, copy it, edit named.conf, and use that copy.
;
$TTL    86400
@       IN      SOA     barney.jlramirez.gonzalonazareno.org. mail.jlramirez.gonzalonazareno.org. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                          86400 )       ; Negative Cache TTL
;
@               IN      NS      barney.jlramirez.gonzalonazareno.org.
@               IN      MX      10      barney.jlramirez.gonzalonazareno.org.
$ORIGIN jlramirez.gonzalonazareno.org.
barney          IN      A       172.22.200.137
homer           IN      A       172.22.200.138
lisa            IN      A       172.22.200.139
barney-int      IN      A       10.0.0.8
homer-int       IN      A       10.0.0.14
lisa-int        IN      A       10.0.0.5
www             IN      CNAME   lisa
informatica     IN      CNAME   lisa
wordpress       IN      A       172.22.200.141

Reiniciamos el servicio systemctl restart bind9 y comprobamos que obtenemos respuesta de nuestro servidor DNS y asi comprobamos que todo esta funcionando:

Instalación postfix

Ahora vamos a instalar el paquete postfix apt install postfix, en la instalación nos solicitara el nombre del dominio (en mi caso subdominio), que en este caso sera jlramirez.gonzalonazareno.org y nos solicitara Postfix Configuration el cual debemos seleccionar Internet Site:

Y ya tendremos el paquete instalado, y si ejecutamos cat /etc/mailname nos debera mostrar el nombre de nuestro subdominio:

root@barney:/home/debian# cat /etc/mailname
jlramirez.gonzalonazareno.org

Fichero de configuración de postfix

Para poder enviar un correo desde nuestra maquina «barney» al exterior debemos editar el fichero /etc/postfix/main.cf y aparecerán las siguientes lineas:

  • mydestination: Observa que en la directiva mydestination se indican los dominios que serán propios del servidor de correo, es decir, el correo envíado a estos dominios está dirigirido a usuarios del propio servidor. Si el usuario existe, el mensaje será almacenado, sino el servidor devolverá un mensaje de error.
  • relay_domains: Con la directiva relay_domains indicamos los dominios que serán reenviados. Por lo tanto se permitirán el envío de correos a usuarios de estos dominios.
  • mynetworks: Con mynetworks se indican las IPs desde las que pueden enviarse mensajes.
  • myorigin: Por último, con myorigin se indica el dominio con el que el servidor enviará correo, el cual está configurado en /etc/mailname.
  • relayhost: Es el servidor que nos va a hacer de relay. Se entiende como open relay o (‘relé abierto’ en inglés) es un servidor SMTP configurado de tal manera que permite que cualquier usuario de Internet lo use para enviar correo electrónico a través de él, no solamente el correo destinado a, o procedente de usuarios conocidos.

Nosotros solo vamos a modificar la linea realyhost en la cual vamos a especificar el servidor de correo de babuino para poder enviar correos al exterior:

relayhost = babuino.gonzalonazareno.org

Y reiniciamos el servicio systemctl restart postfix.service

Info! En este caso tendremos que añadir dicha linea porque desde la red no podemos mandar correos sin pasar por babuino (Servidor de correo), si estuviéramos en la red, por ejemplo, la de casa no tendremos que añadir dicha linea.

Ahora desde la terminal ejecutamos mail [Correo] nos pedira un asunto y un mensaje, para terminar de escribir y mandarlo Ctrl + D:

root@barney:/home/debian# mail admin@juanluramirez.com
Subject: Prueba correo

Esto es una prueba para www.juanluramirez.com
Cc: 

Si comprobamos los logs, observamos que el correo se a enviado:

Jan 26 07:59:46 barney postfix/cleanup[18852]: 5CBDB18847: message-id=<20170126075946.5CBDB18847@barney.jlramirez.gonzalonazareno.org>
Jan 26 07:59:46 barney postfix/qmgr[18825]: 5CBDB18847: from=<root@barney.jlramirez.gonzalonazareno.org>, size=414, nrcpt=1 (queue active)
Jan 26 07:59:46 barney postfix/smtp[18854]: 5CBDB18847: to=<admin@juanluramirez.com>, relay=babuino.gonzalonazareno.org[192.168.103.2]:25, delay=0.07, delays=0.05/0/0.01/0.01, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 7BD2D86DC8)
Jan 26 07:59:46 barney postfix/qmgr[18825]: 5CBDB18847: removed

Envio correo desde el exterior a local

Ahora vamos a enviar un correo desde «gmail» a nuestro servidor de correo. Para ello accedemos a gmail y enviamos el correo de prueba

Una vez mandado el correo para poder leerlo en nuestra maquina, vamos a instalar apt install mailutils y nos logeamos con el usuario al que le mandamos el correo en este caso debian:

Si quisiéramos acceder a un correo en concreto basta con poner el numero del correo.

Observamos como hemos recibido el correo desde los logs:

Jan 31 16:26:10 barney postfix/smtpd[30322]: connect from babuino.gonzalonazareno.org[192.168.103.2]
Jan 31 16:26:10 barney postfix/smtpd[30322]: E1A06188EC: client=babuino.gonzalonazareno.org[192.168.103.2]
Jan 31 16:26:10 barney postfix/cleanup[30327]: E1A06188EC: message-id=<CALYTP8JhH1ohiVrgXvC0=LPU2cTVVS2YGrbGAPzekomKmJ8bPQ@mail.gmail.com>
Jan 31 16:26:10 barney postfix/qmgr[30321]: E1A06188EC: from=<jramirezvaquero@gmail.com>, size=2811, nrcpt=1 (queue active)
Jan 31 16:26:10 barney postfix/smtpd[30322]: disconnect from babuino.gonzalonazareno.org[192.168.103.2]
Jan 31 16:26:10 barney postfix/local[30328]: E1A06188EC: to=<debian@jlramirez.gonzalonazareno.org>, relay=local, delay=0.07, delays=0.03/0.01/0/0.03, dsn=2.0.0, status=sent (delivered to mailbox)
Jan 31 16:26:10 barney postfix/qmgr[30321]: E1A06188EC: removed

Instalar servidor POP e IMAP

Para poder utilizar el servidor pop e imap, vamos a instalar los siguientes paquetes apt install dovecot-imapd dovecot-pop3d dovecot-core, añadimos y modificamos las siguientes lineas en el fichero /etc/postfix/main.cf:

home_mailbox = Maildir/
mailbox_command =

#Añadimos IP de nuestra red en mi caso es la 172.22.0.0/16

mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::z1] 172.22.0.0/16

Una vez añadidas esas dos lineas en el fichero, vamos a modificar en /etc/dovecot/conf.d/10-auth.conf la siguiente linea, la cual vamos a descomentar y cambiar para que quede asi:

#Cambiamos esta:

#disable_plaintext_auth = yes

#Por esta:

disable_plaintext_auth = no

Y modificamos la siguiente linea en el fichero /etc/dovecot/conf.d/10-mail.conf:

#Cambiamos esta:

mail_location = mbox:~/mail:INBOX=/var/mail/%u

#Por esta:

mail_location = maildir:~/Maildir

Y por ultimo añadimos a nuestro servidor DNS, las siguientes lineas tanto para pop , como IMAP:

imap            IN      CNAME   barney
pop             IN      CNAME   barney

Configurar POP en Evolution

Y configuramos un cliente de correos en este caso Evolution y añadimos nuestra cuenta:

Enviamos un correo a una cuenta de correo en nuestro dominio(También puede ser a un correo de gmail):

Y nos enviamos un correo desde «gmail»:

Podremos comprobar que hemos recibido el correo y por ultimo miramos en los logs del sistema, cuando al abrir el buzón utilizamos el protocolo POP3:

Feb  2 07:40:12 barney dovecot: pop3-login: Login: user=<debian>, method=PLAIN, rip=172.22.6.103, lip=10.0.0.8, mpid=13988, session=</smBRodH5wCsFgZn>
Feb  2 07:40:12 barney dovecot: pop3(debian): Disconnected: Logged out top=0/0, retr=3/6509, del=2/2, size=4408

Configurar IMAP en Evolution

Realizamos los mismos pasos que en el apartado anterior pero en lugar de seleccionar POP, por, IMAP.

Y vemos en los logs como hemos recibido el correo:

Feb  2 08:16:37 barney postfix/smtpd[14177]: connect from babuino.gonzalonazareno.org[192.168.103.2]
Feb  2 08:16:37 barney postfix/smtpd[14177]: 3FC83188DB: client=babuino.gonzalonazareno.org[192.168.103.2]
Feb  2 08:16:37 barney postfix/cleanup[14181]: 3FC83188DB: message-id=<c6e81f18014c43aabb44bfeb71f14884@juanluramirez.com>
Feb  2 08:16:37 barney postfix/qmgr[13842]: 3FC83188DB: from=<admin@juanluramirez.com>, size=2237, nrcpt=1 (queue active)
Feb  2 08:16:37 barney postfix/smtpd[14177]: disconnect from babuino.gonzalonazareno.org[192.168.103.2]
Feb  2 08:16:37 barney postfix/local[14182]: 3FC83188DB: to=<debian@jlramirez.gonzalonazareno.org>, relay=local, delay=0.07, delays=0.01/0/0/0.06, dsn=2.0.0, status=sent (delivered to maildir)
Feb  2 08:16:37 barney postfix/qmgr[13842]: 3FC83188DB: removed

Configuración sistema filtrado de virus y spam

Para filtrar virus y spam en nuestro servidor de correo vamos a utilizar apt install amavisd-new spamassassin clamav clamav-daemon

Configuraciones paquete instalados

Una vez instalados los correspondientes paquete, vamos a proceder a realizar la siguientes configuraciones:

Agregar usuarios a los grupos

adduser clamav amavis
adduser amavis clamav

Editar fichero configuración spam

Ahora procedemos a modificar las siguientes lineas en /etc/default/spamassassin para que las lineas queden asi:

ENABLED=1
CRON=1

E reiniciamos el servicio systemctl restart spamassassin

Editamos fichero configuración virus

Y modificamos /etc/amavis/conf.d/15-content_filter_mode para que quede asi:

use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return

Y reiniciamos el servicio systemctl restart amavis.service

Configuración postfix/main.cf

El siguiente paso es modificar /etc/postfix/main.cf en el cual vamos a añadir la siguiente linea, para ello ejecutamos lo siguiente:

postconf -e "content_filter = smtp-amavis:[127.0.0.1]:10024"
postconf -e 'receive_override_options = no_address_mappings'

Configuración postfix/master.cf

Y por ulitmo configuramos el fichero /etc/postfix/master.cf y añadimos esta serie de lineas al final:

amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1

Y reiniciamos postfix systemctl restart postfix

Actualización antivirus

Para comprobar cualquier virus al recibir un correo tenemos instalado clamav, por lo tanto actualizamos el antivirus freshclam y reiniciamos el servicio systemctl restart clamav-daemon

Comprobación correo SPAM

Una vez configurado spamassassin, vamos a enviar un correo con spam.
Podemos encontrar un ejemplo en spamassin

Una vez envidado el correo nuestro fichero log tailf /var/log/mail.log, sera el siguiente:

Feb  9 08:08:38 barney amavis[9546]: (09546-01) Blocked SPAM {BouncedInternal,Quarantined}, LOCAL [192.168.103.2]:40906 [74.125.82.181] <jramirezvaquero@gmail.com> -> <debian@jlramirez.gonzalonazareno.org>, quarantine: 9/spam-9R2U13xN8fbs.gz, Queue-ID: B558318452, Message-ID: <CALYTP8JchcPw_=BnQW3iCA4Ue1+h9nbssf01pTq-hRLOjZdFiQ@mail.gmail.com>, mail_id: 9R2U13xN8fbs, Hits: 1000.383, size: 2980, 10273 ms
Feb  9 08:08:38 barney postfix/smtp[10047]: B558318452: to=<debian@jlramirez.gonzalonazareno.org>, relay=127.0.0.1[127.0.0.1]:10024, delay=10, delays=0.09/0.01/0.01/10, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=09546-01, BOUNCE)
Feb  9 08:08:38 barney postfix/qmgr[9976]: B558318452: removed
Feb  9 08:08:38 barney postfix/smtp[10051]: EC33318B6A: to=<jramirezvaquero@gmail.com>, relay=babuino.gonzalonazareno.org[192.168.103.2]:25, delay=0.25, delays=0.18/0.03/0.03/0.01, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 8621586E8E)
Feb  9 08:08:38 barney postfix/qmgr[9976]: EC33318B6A: removed
Feb  9 08:08:43 barney dovecot: pop3-login: Login: user=<debian>, method=PLAIN, rip=172.22.6.103, lip=10.0.0.8, mpid=10056, session=<IKVZfRRI0ACsFgZn>
Feb  9 08:08:43 barney dovecot: pop3(debian): Disconnected: Logged out top=0/0, retr=0/0, del=0/0, size=0

Por tanto como podemos observar se bloquea y la otra persona recibira el siguiente correo:

Comprobar correo con virus

Una vez configurado amavis, vamos a actualizar la base de datos freshclam, nos puede dar el siguiente error:

ClamAV update process started at Thu Feb  9 08:19:04 2017
Downloading main.cvd [100%]
ERROR: Database load killed by signal 9
ERROR: Failed to load new database

Eso significa que no tenemos memoria ram suficiente.

Es importante que el proceso no este ejecutandose ps -A |grep freshclam si estuviera ejecutandose lo paramos.

Actualizamos y mandamos un correo con un virus, observamos en el log de que nos lo han mandado pero se ha bloqueado:

Feb  9 09:14:04 barney postfix/smtp[906]: 7013718B4D: to=<jramirezvaquero@gmail.com>, relay=babuino.gonzalonazareno.org[192.168.103.2]:25, delay=0.04, delays=0.02/0/0.01/0.01, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 951AC86E8E)
Feb  9 09:14:04 barney postfix/qmgr[652]: 7013718B4D: removed
Feb  9 09:14:04 barney amavis[677]: (00677-03) Blocked INFECTED (Eicar-Test-Signature) {BouncedInternal,Quarantined}, LOCAL [192.168.103.2]:41402 [74.125.82.170] <jramirezvaquero@gmail.com> -> <debian@jlramirez.gonzalonazareno.org>, quarantine: h/virus-hEtf5fsuYnEG, Queue-ID: 217CB18B01, Message-ID: <CALYTP8LPZiC5sebj6g7XakcTXe1b70h2xP7ppiN4NE81Afgx+A@mail.gmail.com>, mail_id: hEtf5fsuYnEG, Hits: -, size: 5119, 251 ms
Feb  9 09:14:04 barney postfix/smtp[838]: 217CB18B01: to=<debian@jlramirez.gonzalonazareno.org>, relay=127.0.0.1[127.0.0.1]:10024, delay=0.37, delays=0.11/0/0/0.26, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=00677-03, BOUNCE)
Feb  9 09:14:04 barney postfix/qmgr[652]: 217CB18B01: removed

Y el que ha realizado el envió del correo recibirá un mensaje de una alerta de virus: