PDF de programación - Configuración básica de Exim / COMO

Imágen de pdf Configuración básica de Exim / COMO

Configuración básica de Exim / COMOgráfica de visualizaciones

Actualizado el 24 de Febrero del 2020 (Publicado el 15 de Abril del 2017)
864 visualizaciones desde el 15 de Abril del 2017
24,1 KB
6 paginas
Creado hace 22a (18/09/2001)
Configuración básica de Exim / COMO

Alberto García González, Internet: [email protected], Fidonet: 2:348/105.108

Versión 1.3, 18 de Septiembre de 2001

Este documento explica la forma de configurar el MTA Exim para los casos típicos de PCs con conexión a internet via módem,
usando la característica de reescritura de cabeceras

1. Introducción

Antes de nada, aclarar que no soy ningún experto en Exim, y todo esto está basado en la experiencia: es el método que uso yo
y algunas personas más actualmente, y está funcionando bien. Sin embargo, no puedo garantizar que esté libre de errores.
Espero que os sirva de ayuda. Cualquier duda, consulta, comentario o sugerencia será agradecido.

Este documento no prentende en ningún caso ser exhaustivo. Se trata de una pequeña guía para poner a punto una
configuración básica de Exim, un servidor de SMTP más sencillo de configurar que otros equivalentes como el conocido
Sendmail. No por ello Exim es un programa menos serio, sino que puede satisfacer perfectamente las necesidades de un
servidor SMTP normal.

Este texto está orientado a un perfil típico de un usuario de PC, con un ordenador o una pequeña red local conectada a Internet
via modem, por ejemplo. El objetivo de esta configuración es la reescritura del campo From: de los mensajes de correo
salientes, de forma que aparezca la dirección de internet en lugar de la dirección local.

NOTA: Este documento está basado en Exim 3.12 (de Debian potato), pero probablemente es también aplicable a otras
versiones de Exim, ya que los cambios en los ficheros de configuración son mínimos.

Este documento se puede encontrar en mi página web, cuya dirección es http://www.geocities.com/bertogg/linux

2. Estructura general del fichero de configuración de Exim

El fichero de configuración se divide en 6 bloques. Cada bloque está separado del siguiente por la palabra ‘‘end’’, excepto el
último que no lleva ‘‘end’’. Todos los bloques deben aparecer, si alguno se encuentra vacío tiene que aparecer el ‘‘end’’ de
todos modos. Los bloques son los siguientes:

1.

2.

3.

4.
5.
6.

Configuración principal: aquí van las directivas principales de configuración, las preferencias, etc., como el nombre de
nuestra máquina, a quién hacemos relay, etc. etc.
Transports: Cuando se sabe definitivamente cómo y a donde se va a enviar un determinado mensaje, el transport
correspondiente es el que se encarga de hacerlo. Cada transport tiene un driver que indica el tipo de reparto. Ejemplos de
drivers: ‘‘appendfile’’, que concatena el msg a un fichero (para folders UNIX normales), ‘‘smtp’’ que hace una conexión
a un smtp para enviar.
Directors: Cuando un mensaje va a una dirección local, se busca un director que sepa qué hacer con ella. Son los que se
encargan de buscar en el fichero de aliases, etc. El orden ES importante.
Routers: cuando una dirección no es local, se busca el primer router que sea capaz de enviarla. El orden ES importante.
Retry: Aquí se especifica el tiempo que tiene que transcurrir hasta que se considere que un msg no se puede enviar.
Reescritura: Aquí están las reglas de reescritura de cabeceras.

Cómo funciona exim (a grandes rasgos):

Cuando exim recibe un email, lo primero que hace es aplicar las reglas de reescritura de cabeceras. Una vez reescrito, se
comprueba si el destinatario es local o está en otra máquina. Si es local, se pasa por la lista de directors, hasta que alguno sepa
qué hacer con él y lo reparta.

Si no es local, se pasa por la lista de routers, también hasta que alguno sepa qué hacer con él.

Para saber si un email es local, se compara el dominio del detinatario con la lista definida en el campo ‘‘local_domains’’ en el
fichero de configuración.

3. Configuración reescribiendo todos los mensajes

El primer ejemplo que vamos a ver es una reescritura simple: suponemos que tenemos una red con dos ordenadores
‘‘pc1.mired’’ y ‘‘pc2.mired’’, y estamos en pc1.

Queremos que todo el correo que salga con ‘‘From: [email protected]’’ se chequee en una base de datos, por si hay que
reescribir la dirección de ‘‘usuario1’’ por otra: [email protected] -> [email protected]

Vamos a partir de una configuración básica cualquiera. En Debian, el script eximconfig genera un fichero de configuración
que nos puede servir de maravilla, si seleccionamos ‘‘Internet system using smarthost’’. En este documento, en la sección
Configuración de ejemplo, hay una basada en esa.

Estas son algunas directivas importantes a considerar en la parte 1 de la configuración. Una vez que todo esté funcionando, se
recomienda echarle un vistazo al manual para dejar esto a gusto de cada uno:

----------------------------------------------
# Este es el nombre completo de la máquina.
primary_hostname = pc1.mired

# Nombres a los que podemos dirigir correo refiriéndonos a nuestra máquina.
# Cualquier mail que vaya a uno de estos dominios se considera local
# La ’@’ equivale al valor de primary_hostname
local_domains = @:pc1:localhost

# Las IPs de nuestra máquina también se consideran locales
local_domains_include_host_literals = true

# No permitimos relay a ninguna parte
relay_domains = ""

# A nuestras máquinas sí permitimos hacer relay a cualquier parte
host_accept_relay = localhost:*.mired
----------------------------------------------

En la parte 2 (transports) la cosa se puede dejar igual, no es necesario tocar nada. En la parte 3 (directors), pues lo mismo.

Ahora viene la parte 4 (routers). Esto es todo lo necesario:

----------------------------------------------
# Todo el correo que vaya a alguna de las máquinas de la red local se envía
# directamente. A continuación explico cada flag:
# driver = lookuphost -> Se resuelve el nombre de la máquina para saber su IP
# domains -> Para usar este router, el dominio tiene que ser uno de estos.
# Pon aquí todos los nombres válidos para una máquina de la LAN
# widen_domains -> Si el nombre no se encuentra en la lista anterior, se
# le añade el valor de ‘widen_domains’ y se prueba de nuevo.
# Nos permite poner usuario1@pc1 además de [email protected]
# self = local -> Si al resolver el nombre se obtiene nuestra IP, se envía
# el mensaje como si fuese local. Si todos los posibles
# nombres de nuestra máquina ya están en ’local_domains’,
# esto no es necesario
# gethostbyname -> Así se mira el /etc/hosts
# transport -> Uno de los que aparecen en la sección de transports,
# que se encarga de enviar el correo via SMTP
red_local:
driver = lookuphost
domains = "*.mired"
widen_domains = "mired"
self = local
gethostbyname = true
transport = remote_smtp

# Si en el dominio ponemos una dirección IP, se viene por este router
literal:
driver = ipliteral
transport = remote_smtp

# Todo lo que no pasó por el anterior se viene por aquí. Todo el correo se
# envía al smarthost ’smtp.proveedor.es’
smarthost:
driver = domainlist
transport = remote_smtp
route_list = "* smtp.proveedor.es bydns_a"

end
----------------------------------------------

La parte 5 es la de ‘‘retry configuration’’. La puedes dejar como está o poner a tu gusto.

Finalmente, la parte 6 es la de reescritura. Esta irá así:

----------------------------------------------
*@* ${lookup{$1@$2}lsearch{/etc/exim/email-addresses}{$value}fail} frF
----------------------------------------------

Creamos el fichero /etc/exim/email-addresses, de la forma:

[email protected]: [email protected]
[email protected]: [email protected]

De esta manera, cualquier mail que enviemos, si el remitente está en ese fichero, llegará reescrito. Si nos enviamos un email a
nosotros mismos en la propia máquina, podremos comprobar que llega con el From: reescrito. Nótese que en este fichero las
direcciones del remitente se escriben completas. De esta forma, podemos reescribir direcciones que no sean locales, aunque
normalmente eso no será interesante (ni aconsejable). Por supuesto, si no existe el directorio /etc/exim, no hay más que
crearlo.

4. Reescribiendo sólo correo saliente - Método del filtro

Si sólo nos interesa que se reescriba el From: de los mensajes que salen de la red local, el método es bastante similar.
Originalmente había ideado un método con dos configuraciones, que se describe en la sección Método de las dos
configuraciones. Este método es más sencillo y -en mi opinión- mejor que el otro en cualquier caso. De todos modos, es
importante dejar claro que para este método es imprescindible tener el intérprete de perl instalado (lo podemos comprobar
escribiendo perl -v en la línea de comandos).

A partir del exim.conf original, hacemos las siguientes modificaciones:

Eliminamos la parte de reescritura (la última línea). Ahora no se reescribe ningún mensaje.
En el router ‘‘smarthost’’, reemplazamos ‘‘remote_smtp’’ por ‘‘rewritten_smtp’’
Vamos a la sección de transports y añadimos este:

-------------------
rewritten_smtp:
driver = smtp
transport_filter = "/etc/exim/from-rewrite.pl"
return_path = "${lookup{$sender_address}lsearch\
{/etc/exim/email-addresses}{$value}fail}"
-------------------

Creamos el fichero /etc/exim/from-rewrite.pl:

-------------------
#!/usr/bin/perl -w

use strict;
my $email = ""; my $linea = "";

while ($linea = <STDIN>) {
if (!$email) {
if ($linea =~ /^From:.*\<(.*)\>.*/) {
$email = $1;
} elsif ($linea =~ /^From: *([^ ]*) */) {
$email = $1;
}
if ($email) {
my $rewr = "";
$email =~ s/[ \t\n]//g;
open(BASE,"/etc/exim/email-addresses");
while (!eof(BASE)) {
$rewr = <BASE>;
if ($rewr =~ s/$email:[ \t]*([^ \t])/$1/) {
$rewr =~ s/[ \t\n]//g;
$linea =~ s/$email/$rewr/;
close(BASE);
}
}
print $linea;
print <STDIN>;
e
  • Links de descarga
http://lwp-l.com/pdf2891

Comentarios de: Configuración básica de Exim / COMO (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad