Issuu on Google+

Práctica 2. Configuración básica del servidor de correo. Configuración del cortafuegos Shorewall es un cortafuegos que cerrará los puertos TCP/IP entrada salida según lo configuremos. Por defecto permite todo el tráfico entrante y saliente por todas las interfaces activas. Nuestra tarea consiste en limitar el tráfico 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

Configuración 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 política por defecto de acceso cp /usr/share/doc/shorewall/examples/one-interface/policy /etc/shorewall/ nano /etc/shorewall/policy $FW net net all

net $FW all all

ACCEPT DROP DROP REJECT

info info 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

Reglas de filtrado

routeback


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 Webmin ACCEPT net $FW tcp 10000 SSH/ACCEPT net $FW Ping/ACCEPT net $FW # Permit all ICMP traffic FROM the firewall TO the net zone ACCEPT $FW net icmp # mail lines SMTP/ACCEPT net $FW SMTPS/ACCEPT net $FW Submission/ACCEPT net $FW IMAP/ACCEPT net $FW IMAPS/ACCEPT net $FW #web Web/ACCEPT net $FW

Comprobar la configuración shorewall check

Configurar shorewal para que se inicie con el sistema nano /etc/default/shorewall startup=1

Para más detalles sobre la configuración de shorewall visitar esta web.

Configuración del postfix Antes de comenzar a configurar postfix, tenemos que establecer la configuración del dominio. Para ello estableceremos el nombre del servidor SMTP en el fichero /etc/hostname. Podremos “smtp”.


Despues cambiáremos el dominio en el fichero /etc/resolv.conf: Podremos: midominio.com, cambiando “midominio” por el dominio que queráis. Nombre del servidor smtp. nano /etc/mailname smtp.midominio.com

(Cambiar midominio.com) por vuestro dominio. Configuración principal de postfix El fichero /etc/postfix/main.cf es bastante complejo. En el vamos a establecer reglas para:    

Tiempos en la aceptación/reenvío de mensajes. Formato de intercambio de mensajes Dominios virtuales (con MySQL). Conexión segura (TLS)

En el libro de texto podéis encontrar una descripción más detallada de algunos de estos parámetros. 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.com mydestination = relayhost = mynetworks_style = host mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all local_recipient_maps = smtpd_banner = $myhostname ESMTP $mail_name biff = no # appending .domain is the MUA's job. append_dot_mydomain = no # Uncomment the next line to generate "delayed mail" warnings delay_warning_time = 4h maximal_queue_lifetime = 7d unknown_local_recipient_reject_code = 450 minimal_backoff_time = 1000s maximal_backoff_time = 8000s readme_directory = no


smtpd_helo_required = yes smtp_helo_timeout = 60s smtpd_recipient_limit = 16 smtpd_soft_error_limit = 3 smtpd_hard_error_limit = 12 smtpd_delay_reject = yes disable_vrfy_command = yes # Requirements for the HELO statement smtpd_helo_restrictions = permit_mynetworks, warn_if_reject reject_non_fqdn_hostname, reject_invalid_hostname, permit # Requirements for the sender details smtpd_sender_restrictions = permit_mynetworks, warn_if_reject reject_non_fqdn_sender, reject_unknown_sender_domain, reject_unauth_pipelining, permit # Requirements for the connecting server smtpd_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, permit smtpd_data_restrictions = reject_unauth_pipelining # 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_use_tls=yes smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# not sure of the difference of the next two # but they are needed for local aliasing alias_maps = hash:/etc/postfix/aliases alias_database = hash:/etc/postfix/aliases # this specifies where the virtual mailbox folders will be located virtual_mailbox_base = /var/spool/mail/virtual # this is for the mailbox location for each user virtual_mailbox_maps = mysql:/etc/postfix/mysql_mailbox.cf # and this is for aliases virtual_alias_maps = mysql:/etc/postfix/mysql_alias.cf # and this is for domain lookups virtual_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 the owner of mail files. But I tend to have one owner(virtual), so instead add this: virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 Cambiar el texto sombreado “midominio.com�, por vuestro nombre de dominio.


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/virtual groupadd --system virtual -g 5000 useradd --system virtual -u 5000 -g 5000 chown -R virtual:virtual /var/spool/mail/virtual

Configuraci贸n de MySQL Configurar los ficheros acceder a MySQL desde Postfix. nano /etc/postfix/mysql_mailbox.cf user=mail password=admin dbname=maildb table=users select_field=maildir where_field=id hosts=127.0.0.1 additional_conditions = and enabled = 1 nano /etc/postfix/mysql_alias.cf user=mail password=admin dbname=maildb table=aliases select_field=destination where_field=mail hosts=127.0.0.1 additional_conditions = and enabled = 1 nano /etc/postfix/mysql_domains.cf user=mail password=admin dbname=maildb table=domains select_field=domain where_field=domain hosts=127.0.0.1 additional_conditions = and enabled = 1

Crear la base de datos en MySQL #Entrar como root mysql -u root -p


# Introducir “admin” como password Enter password: # Crear la base de datos para postfix create database maildb; # Crear el usuario mail y darle permisos GRANT 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 nos conectaremos a la dirección: http://ip_del_servidor/phpMyAdmin Entramos con el usuario “mail” y password “admin.”. Seleccionamos a la derecha la base de datos “maildb”, y desde la pestaña “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


Insertamos dominios, alias y usuarios requeridos para gestionar el correo local, y del dominio elegido. Creamos dos dominios “localhost” para el correo local, y “midominio.com” para el correo de 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'), ('postmaster@midominio.com','root@localhost'), ('pepe.lopez@midominio.com','jose.lopez@midominio.com'), ('pepa.lopez@midominio.com','josefa.lopez@midominio.com'); INSERT INTO users (id,name,maildir,crypt) VALUES ('root@localhost','root','root/', encrypt('admin') ), ('jose.lopez@midominio.com','José López','jose.lopez/', encrypt('pepe') ), ('josefa.lopez@midominio.com','Josefa López','josefa.lopez/', encrypt('pepa'));

Retocar la configuración de mysql nano /etc/mysql/my.cnf (Buscar y cambiar las siguientes líneas) bind-address = 127.0.0.1 general_log_file = /var/log/mysql/mysql.log general_log = 1

Configuar Courier (POP/IMAP) Una vez finalizada la configuración del servidor SMTP postfix con MySQL, procedemos a configurar el agente MDA. nano /etc/courier/authdaemonrc En este fichero tenemos que cambiar dos líneas authmodulelist="authmysql" Y más abajo… DEBUG_LOGIN=2 nano /etc/courier/authmysqlrc En este fichero tenemos que cambiar las siguientes líneas


MYSQL_USERNAME mail MYSQL_PASSWORD admin MYSQL_DATABASE maildb MYSQL_USER_TABLE users MYSQL_CRYPT_PWFIELD crypt #dejar comentada la siguiente línea # MYSQL_CLEAR_PWFIELD clear MYSQL_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 configuración, y se inician los servicios.

Probar la configuración 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 de dominio. Ahora enviamos un mensaje a root@localhost mediante los siguientes comandos (sombreados): telnet localhost 25 # Abrir una conexión desde nuestro dominio # Cambiar midominio.com por vuestro dominio EHLO midominio.com # El servidor muestra algunas de sus capacidades, e.g. >250-smtp.midominio.com >250-PIPELINING >.... >.... # Decir quien envía MAIL FROM: <pepe.lopez@midominio.com> 250 Ok # Decir para quién es el correo RCPT TO: <pepa.lopez@midominio.com> > 250 Ok # Introducir el mensaje data 354 End data with <CR><LF>.<CR><LF></LF></CR></LF></CR>

Introducir el mensaje terminando con un punto en una línea aparte. . > 250 Ok; queued as QWKJDKASAS # Terminar la conexión quit > 221 BYE


Si no podemos iniciar la conexión, o nos rechaza los comandos, es posible que hayamos cometido un error en la configuración. Es necesario comprobar que los servicios postfix están activos (chkconfig), y mySQL activo. Si todo ha funcionado correctamente, tendremos en mensaje en el buzón de Josefa.lopez, para ello nos vamos a la carpeta /var/mail/virtual/Josefa.lopez/new, y examinamos el fichero creado en esa carpeta. Si no ha funcionado, tendríamos 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”.


Despu茅s de ejecutar este asistente, hay que cambiar la configuraci贸n de la cuenta para acceder mediante SSH.


Tras esto, se Outlook se conectará, y descargaremos el correo nuevo. También podemos probar enviar un correo a pepe.lopez@midominio.com. Para enviar correo a los compañeros En el fichero /etc/hosts, tendremos que añadir la ip del dominio del compañero.


COnfiracion Correo