Filtres d’exim aplicats a la reescritura de capceleres

De tant en quant ens trobem en aquest mòn del bitam amb situacions on fem les coses d’una manera però pensem que s’hauríen de poder fer d’una altra. Aquí es on comprovem personalment la potència d’algún programari i si podem fer allò que volíem per facilitar-nos la vida una miqueta més.

La situació és ben senzilla: tres persones que es comuniquen per correu, i que per tal de no haver d’escriure les direccions de tots cada cop que un envia un correu als altres dos, tenen creada una direcció de correu al /etc/aliases tal que així:

correu-grup: usuari1@domini1.com, usuari2@domini2.com, usuari3

D’entrada dirè que si bé una llista de correu solventaría el problema d’aquest article, haver de crear-ne una per a 3 persones és una messura excessiva i desproporcionada.
Quin és el problema? Doncs imagineu: els correus van dirigits a correu-grup@domini-grup.com, però la capcelera Reply-To no apunta al correu-grup, sinò a qui ha enviat el correu.

D’entrada, en aquest cas no podíem demanar als altres usuaris que fessin servir una configuració especial al seu lector de correu que fes que a l’enviar al compte del grup modifiquès la capcelera en qüestió, així que la resposta s’havía de trobar al servidor.

Cinc minuts de google després, trobem que existeixen unes coses anomenades “system filters” a l’exim que ens permeten filtrar els missatges per modificar-los i fer amb ells tot el que volguem tot fent servir un llenguatge força senzill.

El primer de tot és indicar al fitxer de configuració de l’exim que farem ús dels filtres tot possant a la primera secció (MAIN) el següent:


#los filtros para reescribir el reply-to de xxxxx@xxxxxx.xxx
message_filter = /etc/exim/exim.filter
#lo de system_filter_user solo si el user de exim no es root
#system_filter_user = exim
# These are needed so we can save, pipe, or send mail from the
# system filter.
message_filter_file_transport = address_file
message_filter_pipe_transport = address_pipe
message_filter_reply_transport = address_reply

Nota: La línea “message_filter = /etc/exim/exim.filter” serveix per a les versions 3.x d’exim. Per a les versions 4.x s’ha de canviar per “system_filter = /etc/exim/exim.filter”

I finalment crearem el fitxer indicat al exim.conf (“/etc/exim/exim.filter” en el nostre cas) amb el contingut que desitjem:


# Exim filter
if $header_to: contains “correu-grup@domini-grup.com”
then
headers remove Reply-To
headers add “Reply-To: correu-grup@domini-grup.com”
endif

I ja tindrem el camp Reply-To que volíem. Podreu trobar les especificacions sobre els filtres d’exim a http://www.exim.org/exim-html-4.30/doc/html/filter_toc.html

Aquest és un petit exemple de les capacitats de filtratge de l’exim, podreu trobar molta més informació a la plana oficial d’exim. (tot i que de vegades la documentació és una mica enrebessada, per dir-ho d’una manera suau).
Autor: sergi

This entry was posted in Internet. Bookmark the permalink.

3 Responses to Filtres d’exim aplicats a la reescritura de capceleres

  1. marble says:

    A la versió 4.x d’exim la configuració es identica excepte que es cambia el message_filter per system_filter, per tant queda:

    #los filtros para reescribir el reply-to de xxxxx@xxxxxx.xxx
    system_filter = /etc/exim/exim.filter
    #lo de system_filter_user solo si el user de exim no es root
    #system_filter_user = exim
    # These are needed so we can save, pipe, or send mail from the
    # system filter.
    system_filter_file_transport = address_file
    system_filter_pipe_transport = address_pipe
    system_filter_reply_transport = address_reply
    
  2. sergi says:

    Pues si, resulta que al principi ho vaig provar amb “system_filter” i no entenía perquè no hem funcionava. Desprès mirant a un altre lloc vaig trobar el “message_filter” i com que hem va funcionar no li vaig donar mes voltes.
    Acabo de comprovar que tinc la versió 3.36-9.1. Poso a l’article el matís.


    bow before me, for I’m root
    si el programari lliure no és la resposta, la pregunta és errònia

  3. sergi says:

    Doncs si, resulta que al principi ho vaig provar amb “system_filter” i no entenía perquè no hem funcionava. Desprès mirant a un altre lloc vaig trobar el “message_filter” i com que hem va funcionar no li vaig donar mes voltes.
    Acabo de comprovar que tinc la versió 3.36-9.1. Poso a l’article el matís.


    bow before me, for I’m root
    si el programari lliure no és la resposta, la pregunta és errònia

Leave a Reply