practica_correo_2

Upload: franluc69

Post on 06-Apr-2018

221 views

Category:

Documents


0 download

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]