25 Lab5 Casa
25 Lab5 Casa
25 Lab5 Casa
Software a Utilizar
Antes de empezar
Para asegurarnos de que no existan problemas con las configuraciones del anterior laboratorio,
debemos desinstalar (purgar) todo lo realizado anteriormente y eso incluye la base de datos.
MySQL
Para instalar:
sudo apt-get install mysql-client mysql-server
Debemos crear primero un usario de MySQL exclusivo para el email, despues la base de datos. No
se olviden que en la instalación, se les pidio un password de root, no se olviden ese password.
En caso de olvidarse el password de la instalación
mysqladmin -u root -p password new_password
Entren al DBMS
mysql -u root -p
Pongan el password de root
Enter password:
Las últimas lineas no son obligatorias, pero sirven mucho si despues esta Base de Datos se linkeará
con otra o será extendida.
MTA - Postfix
Para instalar
sudo apt-get install postfix postfix-mysql
Ya saben como configurar el momento de la instalación, así que elijan sitio de Internet (Internet
site) y pogan el nombre correcto, el que tienen configurado en su servidor DNS (anterior
laboratorio).
Ahora haremos las configuraciones, no mediante postconf, sino mas bien editaremos el archivo
como tal:
sudo nano /etc/postfix/main.cf
Todo lo que modifiquemos debe quedar así:
Especifiquen el nombre de su servidor, el mismo que esta en su DNS así como en /etc/mailname
#myhostname= mail.minombre.net
Ahora el origen del nombre, es decir, el nombre completo del server o del domino.
# myorigin=/etc/mailname
myorigin=minombre.net
Ahora deben decidir el saludo del servidor (postfix)
smtpd_banner = $myhostname ESMTP $mail_name
delay_warning_time = 4h
unknown_local_recipient_reject_code = 450
maximal_queue_lifetime = 7d
minimal_backoff_time = 1000s
maximal_backoff_time = 8000s
smtp_helo_timeout = 60s
smtpd_recipient_limit = 16
smtpd_soft_error_limit = 3
smtpd_hard_error_limit = 12
Ahora podemos especificar algunas restricciones. Tengan mucho cuidado ya que cada opción es de
una sola linea.
# Requerimientos para el HELO statement
smtpd_helo_restrictions = permit_mynetworks, warn_if_reject reject_non_fqdn_hostname,
reject_invalid_hostname, permit
# Requerimientos de detalles del remitente
smtpd_sender_restrictions = permit_mynetworks, warn_if_reject reject_non_fqdn_sender,
reject_unknown_sender_domain, reject_unauth_pipelining, permit
# Requerimiento del servidor que se conecta
smtpd_client_restrictions = reject_rbl_client sbl.spamhaus.org,
reject_rbl_client blackholes.easynet.nl
# Requerimientos de la dirección de destino
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
Algunas otras restricciones:
# requerimiento de un correcto helo en las conecciones
smtpd_helo_required = yes
# Desperdicio de tiempo para spammers antes de rechazarlos
smtpd_delay_reject = yes
disable_vrfy_command = yes
Debemos realizar algunos maps & lookups para los dominios virtuales.
# local aliasing
alias_maps = hash:/etc/postfix/aliases
alias_database = hash:/etc/postfix/aliases
# virtual mailbox folders location
virtual_mailbox_base = /var/spool/mail/virtual
# mailbox location (para cada usuario)
virtual_mailbox_maps = mysql:/etc/postfix/mysql_mailbox.cf
# y para los aliases
virtual_alias_maps = mysql:/etc/postfix/mysql_alias.cf
# y para los 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
Añadan esto para el owner virtual :
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
Debemos crear un directorio donde todo el correo sea guardado, es posible que se haya creado al
momento de la instalación (apt-get). Pero mejor lo hacemos y de paso creamos el usuario que será
dueño de los directorios.
sudo mkdir /var/spool/mail/virtual
sudo groupadd --system virtual -g 5000
sudo useradd --system virtual -u 5000 -g 5000
sudo chown -R virtual:virtual /var/spool/mail/virtual
Configuración de Postfix-MySQL
Debemos configurar los archivos que nos darán acceso a los lookups via la base de datos. Por el
momento solo configuraremos algunas opciones, si son necesarias otras, lo haremos después:
Les pedira webdirectories, diganle que NO. Tambien les pedira un certificado, ignorenlo.
Ahora insertamos algunos aliases por defecto, muchos textos indican que no son necesarios, pero
para tener un mejor control sobre los servicios brindados y poner el email real es mejor tenerlos.
INSERT INTO aliases (mail,destination) VALUES
('postmaster@localhost','root@localhost'),
('sysadmin@localhost','root@localhost'),
('webmaster@localhost','root@localhost'),
('abuse@localhost','root@localhost'),
('root@localhost','root@localhost'),
('@localhost','root@localhost'),
('@localhost.localdomain','@localhost');
Ahora creamos un usuario root
INSERT INTO users (id,name,maildir,crypt) VALUES
('root@localhost','root','root/',encrypt('apassword', CONCAT('$5$',
MD5(RAND()))) );
NOTA: esta orden utiliza la función encrypt con un salto randomico por usuario y con un prefijo
$5$ que indica el uso del algoritmo de hasheo SHA-256.
Ya es tiempo de añadir data adecuada para usuarios y dominios, por ejemplo en este servidor tienen
dominios funcionales como ser "minombre.net", "whopper.nu" y "lala.com".
Entonces, el nombre del servidor es "mail.minombre.net"
Tambien está el usuario "Carlos", pero este usuario quiere que todo su correo llegue a una cuenta
externa en gmail
INSERT INTO aliases (mail,destination) VALUES
('[email protected]','[email protected]');
Entonces, que hacen todas las lineas que creamos?, los dominios no necesitan explicación, los
usuarios es algo sencillo, solo tienen 4 campos. ID es el correo del usuario y su username para el
login. NAME es opcional y es una descripción extra del usuario. MAILDIR es el nombre del
directorio dentro /var/spool/mail/virtual. Debe terminar en un /, de otra manera no podrá ser
utilizado como el formato de unix maildir. CRYPT es el texto encriptado para el password.
Ahora explicaremos un poco como funcionan los alias:
Imaginen que llega un email a "[email protected]".
Postfix revisa sus dominios y dice que whopper.nu es un dominio al que escucha.
Postfix entonces revisas sus aliases y revisa una columna donde encuentre a "[email protected]".
Si no hay nada, entonces lo proximo a hacer es buscar por "@whopper.nu", que es una forma de
especificar “atrapar todos los de ESE dominio” (catch all).
Encuentra una fila y su destino es "[email protected]".
Entonces busca por "[email protected]" y encuentra uno, cuyo destino es el mismo email,
entonces ese es su destino final.
Es ahi que intenta entregar el correo. La busqueda dice minombre.net es un correo local, entonces
busca los usuarios con la id solicitada y entrega el correo a su maildir.
telnet localhost 25
EHLO mail.minombre.net
>250-mail.minombre.net
>250-PIPELINING
>....
>....
MAIL FROM: <[email protected]>
> 250 Ok
# Ahora, envien el mail a una cuenta externa, por ejemplo gmail, etc
RCPT TO: <[email protected]>
> 250 Ok
data
> 354 End data with <CR><LF>.<CR><LF></LF></CR></LF></CR>
# Ingeren el mensaje entero y terminen con .
Prueba
blah blah blah
y blah
.
> 250 Ok; queued as QWKJDKASAS
quit
> 221 BYE
Deberían ver algo similar a esto en el log de /var/log/mail.log
Si es así el envio funciona, entonces entren a Internet. Revisen su correo y ahí debe estar.