Anda di halaman 1dari 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 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 routeback

Reglas de filtrado

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

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

Configuracin 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 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 la pestaa 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 Lpez','jose.lopez/', encrypt('pepe') ), ('josefa.lopez@midominio.com','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.1 general_log_file = /var/log/mysql/mysql.log general_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

MYSQL_USERNAME mail MYSQL_PASSWORD admin MYSQL_DATABASE maildb MYSQL_USER_TABLE users MYSQL_CRYPT_PWFIELD crypt #dejar comentada la siguiente lnea # 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 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 de dominio. 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 dominio EHLO midominio.com # El servidor muestra algunas de sus capacidades, e.g. >250-smtp.midominio.com >250-PIPELINING >.... >.... # Decir quien enva MAIL FROM: <pepe.lopez@midominio.com> 250 Ok # Decir para quin 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 lnea aparte. .


> 250 Ok; queued as QWKJDKASAS # Terminar la conexin quit > 221 BYE

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 ello nos 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.

Despus de ejecutar este asistente, hay que cambiar la configuracin de la cuenta para acceder mediante SSH.

Tras esto, se Outlook se conectar, y descargaremos el correo nuevo. Tambin podemos probar enviar un correo a pepe.lopez@midominio.com. Para enviar correo a los compaeros En el fichero /etc/hosts, tendremos que aadir la ip del dominio del compaero.

Anda mungkin juga menyukai