practica_correo_2
TRANSCRIPT
-
8/2/2019 practica_correo_2
1/11
Prctica 2. Configuracin bsica del servidor de correo.
Configuracin del cortafuegos
Shorewall es un cortafuegos que cerrar los puertos TCP/IP entrada salida segn lo configuremos.
Por defecto permite todo el trfico entrante y saliente por todas las interfaces activas. Nuestra tarea
consiste en limitar el trfico para que nicamente se permita la entrada al servidor SMTP.
Configurar los intefaces de red
cp /usr/share/doc/shorewall/examples/one-interface/interfaces /etc/shorewall/
nano /etc/shorewall/interfaces
net eth0 detect dhcp,tcpflags,logmartians,nosmurfs
Configuracin de las zonas
cp /usr/share/doc/shorewall/examples/one-interface/zones /etc/shorewall/
nano /etc/shorewall/zones
fw firewall# loc
net ipv4
Establecer la poltica por defecto de acceso
cp /usr/share/doc/shorewall/examples/one-interface/policy /etc/shorewall/
nano /etc/shorewall/policy
$FW net ACCEPTnet $FW DROP infonet all DROP infoall all REJECT info
En caso de que el servirdor caiga
cp /usr/share/doc/shorewall/default-config/routestopped /etc/shorewall/
nano /etc/shorewall/routestopped
eth0 0.0.0.0 routeback
Reglas de filtrado
-
8/2/2019 practica_correo_2
2/11
cp /usr/share/doc/shorewall/examples/one-inteface/rules /etc/shorewall/
nano /etc/shorewall/rules
## Shorewall version 4 - Rules File
## For information on the settings in this file, type "man shorewall-rules"## The manpage is also online at# http://www.shorewall.net/manpages/shorewall-rules.html######################################################################################ACTION SOURCE DEST PROTO DEST SOURCE
ORIGINAL RATE USER/ MARK CONNLIMIT TIME# PORT PORT(S) DEST LIMIT
GROUP#SECTION ESTABLISHED#SECTION RELATED
SECTION NEW#Permitir WebminACCEPT net $FW tcp 10000SSH/ACCEPT net $FWPing/ACCEPT net $FW# Permit all ICMP traffic FROM the firewall TO the net zoneACCEPT $FW net icmp# mail linesSMTP/ACCEPT net $FWSMTPS/ACCEPT net $FWSubmission/ACCEPT net $FWIMAP/ACCEPT net $FWIMAPS/ACCEPT net $FW
#webWeb/ACCEPT net $FW
Comprobar la configuracin
shorewall check
Configurar shorewal para que se inicie con el sistema
nano /etc/default/shorewall
startup=1
Para ms detalles sobre la configuracin de shorewall visitar esta web.
Configuracin del postfix
Antes de comenzar a configurar postfix, tenemos que establecer la configuracin del dominio.
Para ello estableceremos el nombre del servidor SMTP en el fichero /etc/hostname. Podremos
smtp.
http://www.shorewall.net/http://www.shorewall.net/http://www.shorewall.net/ -
8/2/2019 practica_correo_2
3/11
Despues cambiremos el dominio en el fichero /etc/resolv.conf: Podremos: midominio.com,
cambiando midominio por el dominio que queris.
Nombre del servidor smtp.
nano /etc/mailname
smtp.midominio.com
(Cambiar midominio.com) por vuestro dominio.
Configuracin principal de postfix
El fichero /etc/postfix/main.cf es bastante complejo. En el vamos a establecer reglas para:
Tiempos en la aceptacin/reenvo de mensajes.
Formato de intercambio de mensajes Dominios virtuales (con MySQL).
Conexin segura (TLS)
En el libro de texto podis encontrar una descripcin ms detallada de algunos de estos
parmetros.
nano /etc/postfix/main.cf
# See /usr/share/postfix/main.cf.dist for a commented, more complete version# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default# is /etc/mailname.myorigin = midominio.com
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for# information on enabling SSL in the smtp client.
myhostname = smpt.midominio.commydestination =relayhost =mynetworks_style = hostmailbox_size_limit = 0recipient_delimiter = +inet_interfaces = alllocal_recipient_maps =smtpd_banner = $myhostname ESMTP $mail_namebiff = no
# appending .domain is the MUA's job.append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warningsdelay_warning_time = 4hmaximal_queue_lifetime = 7dunknown_local_recipient_reject_code = 450
minimal_backoff_time = 1000smaximal_backoff_time = 8000sreadme_directory = no
-
8/2/2019 practica_correo_2
4/11
smtpd_helo_required = yessmtp_helo_timeout = 60ssmtpd_recipient_limit = 16smtpd_soft_error_limit = 3smtpd_hard_error_limit = 12smtpd_delay_reject = yes
disable_vrfy_command = yes
# Requirements for the HELO statementsmtpd_helo_restrictions = permit_mynetworks, warn_if_rejectreject_non_fqdn_hostname, reject_invalid_hostname, permit# Requirements for the sender detailssmtpd_sender_restrictions = permit_mynetworks, warn_if_rejectreject_non_fqdn_sender, reject_unknown_sender_domain,reject_unauth_pipelining, permit# Requirements for the connecting serversmtpd_client_restrictions = reject_rbl_client sbl.spamhaus.org,reject_rbl_client blackholes.easynet.nl,reject_rbl_client dnsbl.njabl.org# Requirement for the recipient address
smtpd_recipient_restrictions = reject_unauth_pipelining, permit_mynetworks,reject_non_fqdn_recipient,reject_unknown_recipient_domain,reject_unauth_destination, permitsmtpd_data_restrictions = reject_unauth_pipelining
# TLS parameterssmtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pemsmtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.keysmtpd_use_tls=yessmtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scachesmtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# not sure of the difference of the next two# but they are needed for local aliasingalias_maps = hash:/etc/postfix/aliasesalias_database = hash:/etc/postfix/aliases# this specifies where the virtual mailbox folders will be locatedvirtual_mailbox_base = /var/spool/mail/virtual# this is for the mailbox location for each uservirtual_mailbox_maps = mysql:/etc/postfix/mysql_mailbox.cf# and this is for aliasesvirtual_alias_maps = mysql:/etc/postfix/mysql_alias.cf# and this is for domain lookupsvirtual_mailbox_domains = mysql:/etc/postfix/mysql_domains.cf# this is how to connect to the domains (all virtual, but the option is there)# not used yet# transport_maps = mysql:/etc/postfix/mysql_transport.cf#You can (as in my older editions) use a lookup for the uid and gid of theowner of mail files. But I tend to have one owner(virtual), so instead addthis:virtual_uid_maps = static:5000virtual_gid_maps = static:5000
Cambiar el texto sombreado midominio.com, por vuestro nombre de dominio.
-
8/2/2019 practica_correo_2
5/11
Establecer un fichero de alias
cp /etc/aliases /etc/postfix/aliases
postalias /etc/postfix/aliases
Establecer un directorio y un usuario para montar el sistema virtual de correo.
mkdir /var/spool/mail/virtualgroupadd --system virtual -g 5000useradd --system virtual -u 5000 -g 5000chown -R virtual:virtual /var/spool/mail/virtual
Configuracin de MySQL
Configurar los ficheros acceder a MySQL desde Postfix.
nano /etc/postfix/mysql_mailbox.cf
user=mailpassword=admindbname=maildbtable=usersselect_field=maildirwhere_field=idhosts=127.0.0.1additional_conditions = and enabled = 1
nano /etc/postfix/mysql_alias.cf
user=mailpassword=admindbname=maildbtable=aliasesselect_field=destinationwhere_field=mailhosts=127.0.0.1additional_conditions = and enabled = 1
nano /etc/postfix/mysql_domains.cf
user=mailpassword=admindbname=maildbtable=domainsselect_field=domainwhere_field=domainhosts=127.0.0.1additional_conditions = and enabled = 1
Crear la base de datos en MySQL
#Entrar como rootmysql -u root -p
-
8/2/2019 practica_correo_2
6/11
# Introducir admin como passwordEnter password:# Crear la base de datos para postfixcreate database maildb;# Crear el usuario mail y darle permisosGRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON maildb.* TO 'mail'@'localhost'
IDENTIFIED by 'admin';GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON maildb.* TO 'mail'@'%'IDENTIFIED by 'admin';exit;
Ahora toca crear las tablas desde phpMyAdmin. Para ello nosconectaremos a la direccin:
http://ip_del_servidor/phpMyAdmin
Entramos con el usuario mail y password admin..
Seleccionamos a la derecha la base de datos maildb, y desde lapestaa SQL, ejecutamos las siguientes consultas:
CREATE TABLE `aliases` (`pkid` smallint(3) NOT NULL AUTO_INCREMENT,`mail` varchar(120) NOT NULL DEFAULT '',`destination` varchar(120) NOT NULL DEFAULT '',`enabled` tinyint(1) NOT NULL DEFAULT '1',PRIMARY KEY (`pkid`),UNIQUE KEY `mail` (`mail`)
);
CREATE TABLE `domains` (`pkid` smallint(6) NOT NULL AUTO_INCREMENT,`domain` varchar(120) NOT NULL DEFAULT '',`transport` varchar(120) NOT NULL DEFAULT 'virtual:',`enabled` tinyint(1) NOT NULL DEFAULT '1',PRIMARY KEY (`pkid`)
);
CREATE TABLE `users` (`id` varchar(128) NOT NULL DEFAULT '',`name` varchar(128) NOT NULL DEFAULT '',`uid` smallint(5) unsigned NOT NULL DEFAULT '5000',`gid` smallint(5) unsigned NOT NULL DEFAULT '5000',
`home` varchar(255) NOT NULL DEFAULT '/var/spool/mail/virtual',`maildir` varchar(255) NOT NULL DEFAULT 'blah/',`enabled` tinyint(3) unsigned NOT NULL DEFAULT '1',`change_password` tinyint(3) unsigned NOT NULL DEFAULT '1',`clear` varchar(128) NOT NULL DEFAULT 'ChangeMe',`crypt` varchar(128) NOT NULL DEFAULT 'sdtrusfX0Jj66',`quota` varchar(255) NOT NULL DEFAULT '',`procmailrc` varchar(128) NOT NULL DEFAULT '',`spamassassinrc` varchar(128) NOT NULL DEFAULT '',PRIMARY KEY (`id`),UNIQUE KEY `id` (`id`));
Insertar algunos usuarios y dominios de ejemplo
-
8/2/2019 practica_correo_2
7/11
Insertamos dominios, alias y usuarios requeridos para gestionar elcorreo local, y del dominio elegido. Creamos dos dominioslocalhost para el correo local, y midominio.com para el correode vuestro dominio. Creamos tres usuarios, uno administrador(root), y dos normales (jose.lopez y josefa.lopez). Cambiar
midominio.com por el dominio elegido.
INSERT INTO domains (domain) VALUES ('localhost'), ('midominio.com') ;
INSERT INTO aliases (mail,destination) VALUES('postmaster@localhost','root@localhost'),('[email protected]','root@localhost'),('[email protected]','[email protected]'),('[email protected]','[email protected]');
INSERT INTO users (id,name,maildir,crypt) VALUES('root@localhost','root','root/', encrypt('admin') ),('[email protected]','Jos Lpez','jose.lopez/', encrypt('pepe') ),('[email protected]','Josefa Lpez','josefa.lopez/', encrypt('pepa'));
Retocar la configuracin de mysql
nano /etc/mysql/my.cnf
(Buscar y cambiar las siguientes lneas)bind-address = 127.0.0.1general_log_file = /var/log/mysql/mysql.loggeneral_log = 1
Configuar Courier (POP/IMAP)
Una vez finalizada la configuracin del servidor SMTP postfix con MySQL, procedemos a
configurar el agente MDA.
nano /etc/courier/authdaemonrc
En este fichero tenemos que cambiar dos lneas
authmodulelist="authmysql"
Y ms abajo
DEBUG_LOGIN=2
nano /etc/courier/authmysqlrc
En este fichero tenemos que cambiar las siguientes lneas
-
8/2/2019 practica_correo_2
8/11
MYSQL_USERNAME mailMYSQL_PASSWORD adminMYSQL_DATABASE maildbMYSQL_USER_TABLE usersMYSQL_CRYPT_PWFIELD crypt
#dejar comentada la siguiente lnea# MYSQL_CLEAR_PWFIELD clearMYSQL_MAILDIR_FIELD concat(home,'/',maildir)MYSQL_WHERE_CLAUSE enabled=1
Reiniciar el servidor
Llegados a este punto es necesario reiniciar el servidor para asegurarnos que se aplican todos los
cambios en los ficheros de configuracin, y se inician los servicios.
Probar la configuracin
Asegurarse de que el servidor postfix est activo y en funcionamiento.
Hacemos un Telnet al servidor, al puerto 25.
telnet localhost 25
El servidor nos tiene que dar la bienvenida, con un mensaje indicando su nombre dedominio. Ahora enviamos un mensaje a root@localhost mediante los siguientes comandos
(sombreados):
telnet localhost 25# Abrir una conexin desde nuestro dominio# Cambiar midominio.com por vuestro dominioEHLO midominio.com# El servidor muestra algunas de sus capacidades, e.g.>250-smtp.midominio.com>250-PIPELINING>....>....# Decir quien envaMAIL FROM: 250 Ok# Decir para quin es el correoRCPT TO: > 250 Ok# Introducir el mensajedata354 End data with .
Introducir el mensaje terminando con un punto en una lnea aparte.
.> 250 Ok; queued as QWKJDKASAS
# Terminar la conexinquit> 221 BYE
-
8/2/2019 practica_correo_2
9/11
Si no podemos iniciar la conexin, o nos rechaza los comandos, es posible que hayamos cometido
un error en la configuracin. Es necesario comprobar que los servicios postfix estn activos
(chkconfig), y mySQL activo.
Si todo ha funcionado correctamente, tendremos en mensaje en el buzn de Josefa.lopez, para ellonos vamos a la carpeta /var/mail/virtual/Josefa.lopez/new, y examinamos el fichero creado en esa
carpeta.
Si no ha funcionado, tendramos que examinar el log de postfix en busca del problema:
tail /var/log/mail.log
Acceder mediante IMAP al servidor
Haciendo uso de Outlook Express, u otro cliente de correo, vamos a ver los mensajes de
josefa.lopez.
-
8/2/2019 practica_correo_2
10/11
Despus de ejecutar este asistente, hay que cambiar la configuracin de la cuenta para acceder
mediante SSH.
-
8/2/2019 practica_correo_2
11/11
Tras esto, se Outlook se conectar, y descargaremos el correo nuevo. Tambin podemos probarenviar un correo [email protected].
Para enviar correo a los compaeros
En el fichero /etc/hosts, tendremos que aadir la ip del dominio del compaero.
mailto:[email protected]:[email protected]