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 directivamydestination
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 directivarelay_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
: Conmynetworks
se indican las IPs desde las que pueden enviarse mensajes.myorigin
: Por último, conmyorigin
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 derelay
. 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
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:
This is the perfect website for anyone who wants to understand this topic.
You realize so much its almost hard to argue with
you (not that I personally will need to?HaHa). You certainly put a fresh spin on a subject which
has been discussed for a long time. Excellent stuff, just excellent!