oriolrius.cat

Des del 2000 compartiendo sobre…

Problema PROCMAIL i BCC

Reading time: 3 – 4 minutes

A continuació intentaré donar solució a un problema q
porto tota la tarda buscant per internet i ningú m’ha acabat d donar la
solució. De fet, ja és una mica concret saber quan passa el
problema, però en un cas com el meu és molt complex.

Sitauació

Més d’un i més de dos ISPs (p.e. Maestrat) quan els compres un
domini et donen ennèssimes comptes de correu, però només
una bústia.

Llavors quan ens baixem el correu de la bústia molts de nosaltres
re-distribuïm el correu amb el procmail. Bàsicament el q es fa es
fixar-se amb el To: i el From: per classificar-lo a la bústia
corresponenet de cada usuari.

Si tenim pocs usuaris no és difícil per filtres mitjançant
el Subject o el From o d’altres camps.

El problema

Quan ve un missatge dirigit a una llista de correu on el To: no és cap
dels nostres usuaris sinó una direcció estàndard o
qualsevol altre cosa menys el nom d’un usuari del nostre sistema. El procmail
no el pot classificar a la bústia de l’usuari pertinent.

Això també passa quan nosaltres sóm recipient d’un
missatge a partir del camp BCC, aquest és un camp invisible que el
procmail no podrà filtrar ja que no es contingut del missatge a
filtrar.
Solució

Després de passar-me la tarda buscant per internet i no trobar cap
solució calara. Així doncs m’he posat a pensar i a investigar.
Una cosa esta clara si no hem de fer el filtrat el missatge arriba,per tant, a
algún lloc hi ha d’haver la informació i d’alguna forma ha de
viatjar el missatge.

Per tant, el tema esta clar la informació no esta en els camps del
missatge sinó en la informació d'”envelope”, o sigui, el que
s’envia abans de la informació de data (rcpt to).

Ara el problema era quin rastra deixa això per poder-ho filtrar. Doncs
bé encara no he pogut implementar l’script que ho fa, però la
idea és la següent:

-Al final de totes les bústies del procmail afegeixo un filtre
-Aquest filtre ha de mirar el tercer Recibed: que porta el correu i a la
tercera i última línia d’aquest recived després de la
paraula ‘for’, apareix la direcció de correu de l’usuari del nostre
sistema al que anava dirigit el correu.
-Capturem aquesta direcció
-Borrem el camp To: original del missatge i hi posem el To: amb el nostre
usuari o simplement afegim un camp Cc: amb el nostre usuari.
-Després tornem a processar el correu amb el nostre procmail i
així es col·locarà a la bústia pertinent.
-En cas de que això no passes quasi en un 100% podem assegurar que el
correu en qüestió és spam.

Així doncs, a més d’aconseguir classificar els correus a la seva
bústia tb aconseguim filtrar l’spam amb aquesta idea. Dilluns mateix
quan arribi a la feina implementaré el filtre i el postejaré al
portal.

6 thoughts on “Problema PROCMAIL i BCC

  1. Després de provar-lo durant tot el mati he tret la primera versió
    de l’script que soluciona el problema comentat a l’article.

    El codi que adjunto a continuació s’ha de posar en un fitxer amb
    permisos d’execusió, aquest fitxer es cridarà tal com
    explicaré després.

    Jo l’he anomenat filtre_bcc:
    ———————————————
    DOMINI=”@joor.net”
    FILE=”/tmp/email.txt”

    cat > $FILE

    DESTI=`cat $FILE | grep -A 2 Received: | grep “for <” | grep “$DOMINI” |
    cut -d ” ” -f 2 | sed ‘s/>;/ /’ | sed ‘s/</ /’ | grep
    “$DOMINI”`

    cat $FILE | formail -t -I Received: -i “To: $DESTI”

    rm $FILE

    ———————————————

    A la varibale DOMINI, hem de posar el domini al que pertanyen els nostres
    usuaris, en aquest cas @joor.net

    Després al nostre .procmailrc hem d’afegir el següent:

    :0:
    * ^TO*@joor.net
    ! oriol

    :0:
    *
    | /home/oriol/bin/bcc | sendmail -t -f oriol@joor.net

    això va al final del fitxer. Amb el primer bloc enviem tot el correu que
    no va a cap bústia legal cap a un usuari per defecte. En aquest cas
    oriol.

    En el segon bloc enviem tots els mails que no s’han classificat al filtre, el
    qual els proporcionarà un camp de recipient del tipus To:
    usuari@joor.net i gràcies a això es podrà classificar a la
    bústia que correspon.

    La direcció oriol@joor.net la podem substituïr per qualsevol
    direcció legal d’internet, aquesta és necessaria perquè
    molts sendmail’s quan els entre un remitent ha de tenir una direcció
    legal, en cas de no posar el paràmetre -f al sendmail la direcció
    que agafariem seria la direcció per defecte del usuari que ha tirat el
    procmail.

    Espero que aquesta primera versió vagi el millor possible si aglú
    troba algún error o s’anima a provar-la si us plau que avisi.

  2. Després d’estar una bona estona llegint documentació i jugant amb
    procmail/sendmail, he arribat a una sol·lució, que en els casos
    que he provat (TO+BCC, BCC sól, y llista de correu, amb el SMTP meu
    propi i amb el de maestrat ~ 15 proves diferents) m’ha donat un 100%
    d’efectivitat. Hi hauría que veure com es comporta en front a un
    “envelope” generat per un lotus notes, ja q no disposo dels mitjans per a
    provar-ho.
    Aquí va la sol·lució (els exemples son amb el meu cas,
    domini eslack.org, usuari pop pau i usuari redireccionat
    tripledes@eslack.org):

    (1 pas):
    FEATURE(local_procmail) y FEATURE(virtusertable) al fitxer .mc (Aixo se suposa
    q ja ho tenim)

    (2 pas):
    Al fitxer /etc/mail/virtusertable (o equivalent), anyadir la seguent
    entrada:

    @eslack.org pau+%1@localhost

    despres fer el makemap hash y reiniciar sendmail. (Jo ho tenia sense la part q
    diu “+%1@localhost” i si no li anyadeixes aixo no rula).

    (3er pas):

    Posar el seguent al $HOME/.procmailrc del usuari pop:

    root@maestratnet:~# cat /home/admins/pau/.procmailrc
    LOGFILE=$HOME/.procmail.log
    COMSAT=no

    DOMAIN=eslack.org
    ENV_TO=$1

    :0f
    * ENV_TO ?? .
    | /usr/bin/formail -i “X-Envelope-To: “$ENV_TO@$DOMAIN

    :0fE
    | /usr/bin/formail -i “X-Envelope-To: UNKNOWN”

    (4t pas):

    Posar el seguent al .procmailrc, per a que es reenvie el mail on toca:

    :0:
    * ^To.*tripledes@eslack.org
    !eth0@subdimension.com

    :0:
    * ^Cc.*tripledes@eslack.org
    !eth0@subdimension.com

    :0:
    * ^X-Envelope-To.*tripledes@eslack.org
    !eth0@subdimension.com

    I això es tot!

    Oriol: Ja farás les teves proves i em diras que tal et va per al teu cas
    concret.

    APENDIX
    ——–
    http://www.ling.helsinki.fi/users/reriksso/procmail/mini-faq.html#bcc
    http://www.xray.mpe.mpg.de/mailing-lists/procmail/1998-04/msg00289.html
    http://www.sendmail.org/faq/section3.html#3.29

  3. Demà m’ho miraré amb més calma a la feina, però
    ara li he fet una llegida ràpida i se m’acudeix una cosa que
    t’estalvia haver d posar tantes coses al .procmailrc.

    On posa:
    :0:
    * ^To.*tripledes@eslack.org
    !eth0@subdimension.com

    :0:
    * ^Cc.*tripledes@eslack.org
    !eth0@subdimension.com

    ho pots substituir per:

    :0:
    * ^TOtripledes@eslack.org
    !eth0@subdimension.com

    això fa el mateix q les altres linies i la línia del X-envelope
    tb la podries posar aquí, però d memòria no recordo com es
    fa. Apa! nanit i demà em miro amb calma tot el q m’has posat.

    THX! pels suggermients 😉

  4. Avui se m’ha acudit començar a usar la solució que va proposar
    el pof a les redireccions de joor.net q tinc a maestratnet.net, després
    de modificar el .procmailrc tal com indica el pof, però millorant els
    tres blocs que ell usa per exemple així:

    :0:
    ^TO_.*oriol@joor.net
    ! oriol@maestratnet.net

    amb això ja funciona la redirecció el problema és que el
    camp X-envelope que s’ha de crear a vegades no conté el email del
    destintari. Ja que les linies previes del procmail (les q el pof diu q s’han d
    posar) son incapaces de determinar qui és el destinatari.

    Aquí ús enganxo un exemple d’un email on no s’ha pogut esbrinar
    el destinatari:

    From oriol@inforcomsoft.com Thu Nov 22 15:56:04 2001
    Return-Path:
    Received: from mini2 ([213.97.151.98])
    by maestratnet.maestratnet.net (8.11.6/8.11.4) with ESMTP id fAMEu3R2189
    0
    for ; Thu, 22 Nov 2001 15:56:03 +0100
    Received: from [127.0.0.1] by mini2
    (ArGoSoft Mail Server, Version 1.3 (1.3.0.1)); Thu, 22 Nov 2001 16:03:44
    +0100
    Message-ID: <3BFD13CF.9080700@inforcomsoft.com>
    Date: Thu, 22 Nov 2001 16:03:43 +0100
    From: Oriol
    Organization: Inforcom Software,S.L.
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.6)
    Gecko/2001
    1120
    X-Accept-Language: en-us
    MIME-Version: 1.0
    To: oriol.mobil@joor.net
    Subject: testing
    Content-Type: text/plain; charset=ISO-8859-1; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Envelope-To: UNKNOWN

    tot i q s’ha de dir q en general si q funciona i a mi m’allibera d’haver
    d’estar borrant molts emails. Que no van per mi cada dia.

  5. Aquest migdia m’he llegit tot el man del .procmailrc i ja sé
    perquè no anava a vegades. Era culpa del puto virtualusertable de
    joor.net q no tenia especificat que passes com a paràmetre el
    destinatari del mail:

    @joor.net joor+%1@localhost

    ara ja ta claríssim!!! q guay! per fi no rebre el correu de la penya q
    es subscriu a les llistes de correu amb direccions de joor.net,buf! ja ha
    costat ja.

  6. rio truly an awing placid thanks so much for share-out i volition impose this great site every unvarying 24-hour interval

Últimas entradas

Resumen 2023

Reading time: 14 – 22 minutes El 2023 comenzó con una sensación de renovación y optimismo. Tras un período marcado por la pandemia, este año se presentó como un lienzo en blanco, lleno de posibilidades y nuevas experiencias. Aunque el

Leer más »
Archivo