Configurar un sistema para reenviar todos los mensajes de correo electrónico a un servidor de correo electrónico centralizado

Este es un tema muy simple en el examen de certificacion de Red Hat RHCE. Pero no por ser facil vamos a pasarlo por alto.

Para comenzar con la configuracion vamos a partir de los siguientes valores ya existente.

192.168.4.50 labrhelserver.home.cert.com
192.168.4.60 labsystem1.home.cert.com
192.168.4.70 labsystem2.home.cert.com

Recuerden que ya mostramos como preparar nuestro servidor como correo electronico centralizado, para ver como se realiza esta configuracion, siga el enlace.

En nuestro ejercicio vamos a comfigurar ambos clientes (labsystem1 y labsystem2) para que reenvien los mensajes de correo al servidor de correo centralizado. Existen dos formas de editar o aplicar la configuracion, una via es editando directamente el archivo de configuracion de Postfix, o utilizando el comando “postconf“. Ambas formas son validas en el examen.

Comenzaremos con nuestro primer cliente labsystem1. Para esto debemos verificar que tenemos el paquete necesario.

[root@labsystem1 ~]# rpm -qa | grep postfix
postfix-2.10.1-6.el7.x86_64
[root@labsystem1 ~]#

Una vez verificado que esta instalado, procedemos a la configuracion. Si en su cliente no esta instalado, simplemente ejecute “yum -y install postfix

El archivo a configurar es “/etc/postfix/main.cf“. A continuacion mostrare las lineas a editar o agregar.

97 #
98 #myorigin = $myhostname
99 #myorigin = $mydomain
100 myorigin = labrhelserver.home.cert.com
101
102 # RECEIVING MAIL
103

113 #
114 #inet_interfaces = all
115 #inet_interfaces = $myhostname
116 #inet_interfaces = $myhostname, localhost
117 inet_interfaces = loopback-only
118
119 # Enable IPv4, and IPv6 if supported

164 #/etc/postfix/main.cf
165 #mydestination = $myhostname, localhost.$mydomain, localhost
166 mydestination =
167 #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
168 #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
169 # mail.$mydomain, www.$mydomain, ftp.$mydomain
170

265 #
266 #mynetworks = 168.100/etc/postfix/main.cf.189.0/28, 127.0.0.0/8
267 mynetworks = 127.0.0.0/8, [::1]/128
268 #mynetworks = $config_directory/mynetworks
269 #mynetworks = hash:/etc/postfix/network_table
270

315 #
316 #relayhost = $mydomain
317 #relayhost = [gateway.my.domain]
318 #relayhost = [mailserver.isp.tld]
319 #relayhost = uucphost
320 #relayhost = [an.ip.add.ress]
321 relayhost = [192.168.4.50]
322
323 local_transport=error: local delivery disabled
324
325 # REJECTING UNKNOWN RELAY USERS

Como pueden ver, son unas pocas lineas. Es importante aclarar que estos valores son tomados de la configuracion existente que yo tengo.

Los valores “myorigin“, “relayhost” varian de acuerdo a su configuracion. En este ultimo utilizo la IP del servidor ya que no tengo la entrada MX en el DNS. El valor “mydestination” se debe dejar en blanco para que los correos no se queden en el cliente, de esta forma establecemos que se envien al servidor de correo centralizado.

Ahora solo tenemos que iniciar o reiniciar el servicio Postfix, y no se olvide de habilitarlo para que inicie despues de cada reinicio.

[root@labsystem1 ~]# systemctl restart postfix
[root@labsystem1 ~]# systemctl enable postfix
[root@labsystem1 ~]# systemctl status postfix
● postfix.service - Postfix Mail Transport Agent
Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2017-03-24 23:36:50 PDT; 14s ago
Main PID: 4142 (master)
CGroup: /system.slice/postfix.service
├─4142 /usr/libexec/postfix/master -w
├─4143 pickup -l -t unix -u
└─4144 qmgr -l -t unix -u

Mar 24 23:36:49 labsystem1.home.cert.com systemd[1]: Starting Postfix Mail Transport Agent...
Mar 24 23:36:50 labsystem1.home.cert.com postfix/master[4142]: daemon started -- version 2.10.1, configuration /etc/postfix
Mar 24 23:36:50 labsystem1.home.cert.com systemd[1]: Started Postfix Mail Transport Agent.
[root@labsystem1 ~]#

Como ven, ya el servicio estaba habilitado, pero nunca esta de mas verificarlo. Tambien debemos de habilitar el servicio en el firewall.

[root@labsystem1 ~]# firewall-cmd --permanent --add-service=smtp
success
[root@labsystem1 ~]# firewall-cmd --reload
success
[root@labsystem1 ~]#

Ahora vamos a pasar a la verificacion. Para esto vamos a enviar un correo, y posteriormente verificar que le llegue al usuario final. Al usuario que le vamos a enviar el correo ya existe en nuestro servidor (IPA)

[root@labsystem1 ~]# getent passwd robert
robert:*:712400008:712400008:robert robert:/home/robert:/bin/sh
[root@labsystem1 ~]# mail -s "Esto es una Prueba" robert@home.cert.com
Hola, este es un correo de prueba
EOT
[root@labsystem1 ~]#

Como ven, primero verifique que el usuario “robert” existe en el servidor, y posteriormente le envie un correo de prueba. Usted puede enviar el correo de otra forma si prefiere. Ahora entonces vamos a ver si el correo salio del cliente y posteriormente verificar si el usuario ha recibido el correo.

[root@labsystem1 ~]# mailq
Mail queue is empty
[root@labsystem1 ~]#

Con el comando “mailq” vemos que no tenemos correo en nuestro cliente, ahora vamos a verificar en el servidor iniciando como el usuario “robert”

[root@labrhelserver ~]# su - robert
su: warning: cannot change directory to /home/robert: No such file or directory
-sh-4.2$ mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/robert": 1 message 1 new
>N 1 root Fri Mar 24 23:45 21/889 "Esto es una Prueba"
& 1
Message 1:
From root@labrhelserver.home.cert.com Fri Mar 24 23:45:23 2017
Return-Path: <root@labrhelserver.home.cert.com>
X-Original-To: robert@home.cert.com
Delivered-To: robert@home.cert.com
Date: Fri, 24 Mar 2017 23:45:06 -0700
To: robert@home.cert.com
Subject: Esto es una Prueba
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
From: root@labrhelserver.home.cert.com (root)
Status: R

Hola, este es un correo de prueba

& q
Held 1 message in /var/spool/mail/robert
-sh-4.2$

Como ven el correo llego correctamente al servidor. Ahora vamos a configurar el segundo cliente labsystem2. Pero esta vez lo haremos utilizando el comando “postconf

[root@labsystem2 ~]# postconf -e "myorigin=labrhelserver.home.cert.com"
[root@labsystem2 ~]# postconf -e "inet_interfaces=loopback-only"
[root@labsystem2 ~]# postconf -e "mydestination="
[root@labsystem2 ~]# postconf -e "mynetworks=127.0.0.0/8, [::1]/128"
[root@labsystem2 ~]# postconf -e "relayhost=[192.168.4.50]"
[root@labsystem2 ~]# postconf -e "local_transport=error: local delivery disabled"
[root@labsystem2 ~]#
[root@labsystem2 ~]# postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
html_directory = no
inet_interfaces = loopback-only
inet_protocols = all
local_transport = error: local delivery disabled
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination =
mynetworks = 127.0.0.0/8, [::1]/128
myorigin = labrhelserver.home.cert.com
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
relayhost = [192.168.4.50]
sample_directory = /usr/share/doc/postfix-2.10.1/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
unknown_local_recipient_reject_code = 550
[root@labsystem2 ~]#

Como pueden ver es muy simple. Ahora solo queda que usted elija cual es la mejor forma para usted. Note que tambien puede verificar la configuracion existente con el mismo comando, simplemente agregando la opcion “-n”

Ahora continuamos con el resto que es habilitar el servicio y abrir el firewall.

[root@labsystem2 ~]# systemctl restart postfix ; systemctl enable postfix ; systemctl status postfix
● postfix.service - Postfix Mail Transport Agent
Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2017-03-24 23:55:39 PDT; 467ms ago
Main PID: 4323 (master)
CGroup: /system.slice/postfix.service
├─4323 /usr/libexec/postfix/master -w
├─4324 pickup -l -t unix -u
└─4325 qmgr -l -t unix -u

Mar 24 23:55:39 labsystem2.home.cert.com systemd[1]: Starting Postfix Mail Transport Agent...
Mar 24 23:55:39 labsystem2.home.cert.com postfix/master[4323]: daemon started -- version 2.10.1, configuration /etc/postfix
Mar 24 23:55:39 labsystem2.home.cert.com systemd[1]: Started Postfix Mail Transport Agent.
[root@labsystem2 ~]# firewall-cmd --permanent --add-service=smtp
success
[root@labsystem2 ~]# firewall-cmd --reload
success
[root@labsystem2 ~]#

Ahora pues procedemos a enviar un correo, para este ejemplo vamos a enviarlo a otro usuario.

[root@labsystem2 ~]# mail carol@home.cert.com
Subject: Hola Carol
Este es otro correo de prueba
Gracias
EOT
[root@labsystem2 ~]# mailq
Mail queue is empty
[root@labsystem2 ~]#

Para terminar el correo solo deben de presionar “CTRL+d”. Ahora vamos a verificar que el correo llego al servidor.

[root@labrhelserver ~]# su - carol
Last login: Fri Mar 24 23:58:07 PDT 2017 on pts/1
su: warning: cannot change directory to /home/carol: No such file or directory
-sh-4.2$ mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/carol": 1 message 1 new
>N 1 root Fri Mar 24 23:59 22/881 "Hola Carol"
& 1
Message 1:
From root@labrhelserver.home.cert.com Fri Mar 24 23:59:01 2017
Return-Path: <root@labrhelserver.home.cert.com>
X-Original-To: carol@home.cert.com
Delivered-To: carol@home.cert.com
Date: Fri, 24 Mar 2017 23:59:01 -0700
To: carol@home.cert.com
Subject: Hola C[root@labsystem2 ~]# mail carol@home.cert.com
Subject: Hola Carol
Este es otro correo de prueba
Gracias
EOT
[root@labsystem2 ~]# mailq
Mail queue is empty
[root@labsystem2 ~]#arol
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
From: root@labrhelserver.home.cert.com (root)
Status: R

Este es otro correo de prueba
Gracias

& q
Held 1 message in /var/spool/mail/carol
-sh-4.2$

Pues hasta este punto todo esta muy bien, pero vamos a hacer otro tipo de verificacion. Que seria verificar que el correo llegue al usuario final a travez del navegador. Para esto debemos hacer una configuracion previa en el servidor.

[root@labrhelserver ~]# vim /etc/httpd/conf.d/mail.conf
[root@labrhelserver ~]# cat /etc/httpd/conf.d/mail.conf
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.home.cert.com
DocumentRoot "/var/spool/mail"
ServerName labrhelserver.home.cert.com
ServerAlias labrhelserver.home.cert.com
Alias /carol /var/spool/mail/index.html
ErrorLog "/var/log/httpd/mail.home.cert.com-error_log"
CustomLog "/var/log/httpd/mail.home.cert.com-access_log" common
</VirtualHost>

<Directory "/var/spool/mail">
Options Indexes MultiViews FollowSymLinks
AllowOverride all
Require all granted
</Directory>

[root@labrhelserver ~]#

Aqui creamos un archivo de configuracion en nuestro servidor. Como pueden ver se ha creado un Alias al usuario carol. Pero usted puede utilizar otro su gusta. Pero aun no terminamos, ahora vamos a crear un enlace simbolico para que esta configuracion trabaje.

[root@labrhelserver ~]# ln -s /var/spool/mail/carol /var/spool/mail/index.html
[root@labrhelserver ~]# ls -ls /var/spool/mail/index.html
0 lrwxrwxrwx. 1 root root 21 Mar 25 00:06 /var/spool/mail/index.html -> /var/spool/mail/carol
[root@labrhelserver ~]#

Muy bien, ahora si estamos listo para realizar nuestra verificacion a travez del navegador. Asi que procedemos a acceder a la direccion: http://labrhelserver.home.cert.com/carol

IMPORTANTE: Para que esta configuracion de verificacion trabaje, debe desabilitar SELinux temporalmente, y cambiarle los permisos al archivo de usuario correspondiente:

[root@labrhelserver ~]# setenforce 0
[root@labrhelserver ~]# getenforce
Permissive
[root@labrhelserver ~]# chmod 644 /var/spool/mail/carol
[root@labrhelserver ~]# ls -las /var/spool/mail/carol
4 -rw-r--r--. 1 carol mail 892 Mar 24 23:59 /var/spool/mail/carol
[root@labrhelserver ~]#

O bien utilizando el comando “elinks“. Si este comando no lo tiene en su sistema, pues con “yum -y install elinks” lo instala.

Como pueden ver de esta forma se configura correctamente su sistema para reenviar todos los mensajes de correo electrónico a un servidor de correo electrónico centralizado.

Leave a Reply

Your email address will not be published. Required fields are marked *