Manipulation des headers des mails rappatriés par fetchmail

Forum d'assistance et d'échange sur l'installation, la configuration, et l'utilisation des système Linux et BSD. Vous pouvez y poster vos questions concernant ces systèmes d'exploitation en faisant l'effort préalable de rechercher dans le forum, dans les manuels et les documentations que la réponse n'y figure pas.

Modérateur: modos Ixus

Manipulation des headers des mails rappatriés par fetchmail

Messagepar braouazou » 02 Mai 2004 21:27

Bonjour,

Je suis en train de fignoler la configuration de mon serveur de mail, et je bute sur un point assez fâcheux.

J'utilise Exim 3 sous Debian Woody, avec Spamassassin et Amavis, et c'est justement ce dernier qui m'a fait me rendre compte du problème.

Je récupère mes mails de plusieurs comptes à l'aide de fetchmail, lancé par le cron toutes les 5 minutes. Tous les mails entrants (que ce soit les mails récupérés par fetchmail ou ceux arrivant directement pour mes domaines locaux) sont scannés par Amavis.

Lorsqu'un virus est détecté, Amavis prévient l'expéditeur avec un message du type:
Code: Tout sélectionner
====================================================
                           A L E R T E   V I R U S

Notre anti-virus a détecté le virus :

   Eicar-Test-Signature

dans votre message destiné à :

-> braouazou@domaine.com

Le message n'a donc pas été délivré !

Veillez à installer un anti-virus sur votre système, mettez à jour les bases de données de signatures de virus, ou demandez à votre administrateur système de le faire pour vous.
====================================================


Je reçois également un message me prévenant que j'ai reçu un mail vérolé de telle ou telle adresse.

Le souci , c'est que lorsqu'il s'agit d'un mail provenant de mes comptes extérieurs passant donc par fetchmail, l'adresse destintaire indiquée par ces messages est braouazou@localhost (et non l'adresse d'origine).

:arrow: Edit:
J'ai oublié de préciser que les en-têtes des messages contenait bien l'adresse d'origine. Ainsi, Return-path: est correct...
Voici le bout de code d'Amavis permettant l'affichage de l'adresse, je peux peut-être chercher de ce coté là ;-)
Code: Tout sélectionner
EOF                               
        # [still within printf syntax!]:
        join("\n\t", map(sanitize_str($_),@virusname)),
        (@virusname==1?"":"es"),
        (@RECIPS==1?"":"s") )  or die "warn_sender: printf failed: $!";

    foreach (@RECIPS) {
        printf MAIL ("-> %s\n", sanitize_str($_))
            or die "warn_sender: printf failed: $!";
    }
    printf MAIL (<<"EOF",

Le souci, c'est que perl ne me dit pas grand chose :-(

J'ai bien vu dans le man fetchmail qu'il existait différentes options permettant la manipulation des headers, j'ai également lu pas mal d'articles sur le sujet, mais n'ai toujours pas réussi à résoudre mon problème... (j'ai essayé les options envelope XXX , qvirtual mais elles ne semblent rien changer!)

C'est assez embêtant car la personne qui reçoit une alerte de la part de mon serveur ne sait pas quel était le destinataire de son message (à moins de regarder en détail les headers du mail original qui sont inclus dans le message d'alerte).

Quelqu'un pourrait-il m'expliquer?

Je ne connais pas procmail, mais pourrait-il dans ce cas précis m'aider à résoudre mon problème??

D'avance, merci!!
Avatar de l’utilisateur
braouazou
Amiral
Amiral
 
Messages: 1290
Inscrit le: 26 Fév 2003 01:00
Localisation: Dans les Vosges, au milieu des sapins!

Messagepar braouazou » 03 Mai 2004 21:42

:up:
Toujours pas de solution :-(

Je croyais que procmail pourrait me sortir de ce pas, mais non! J'arrive bien à réécrire les en-têtes, mais comme le mail passe d'abord par exim (et donc par l'antivirus) ça ne me sert à rien!

Quelqu'un peut-il m'aider SVP?
Avatar de l’utilisateur
braouazou
Amiral
Amiral
 
Messages: 1290
Inscrit le: 26 Fév 2003 01:00
Localisation: Dans les Vosges, au milieu des sapins!

Messagepar Franck78 » 03 Mai 2004 23:38

Tu as bien posé l'environnement mais j'ai du mal à voir ton problème. Tu peux le résumer simplement et dire quelle solution tu envisages.

Avec procmail il y a son compagnon, FORMAIL, qui retape, extrait les lignes des hearders.

voila la description:
Code: Tout sélectionner
DESCRIPTION
       formail is a filter that can be used to force mail into mailbox format,
       perform `From ' escaping, generate  auto-replying  headers,  do  simple
       header  munging/extracting  or split up a mailbox/digest/articles file.
       The mail/mailbox/article contents will be expected on stdin.

       If formail is supposed to determine the sender  of  the  mail,  but  is
       unable to find any, it will substitute `foo@bar'.

       If  formail  is started without any command line options, it will force
       any mail coming from stdin into mailbox  format  and  will  escape  all
       bogus `From ' lines with a `>'.



Franck
L'art de poser une question sur ce site afin d'obtenir la réponse
A LIRE
Avatar de l’utilisateur
Franck78
Amiral
Amiral
 
Messages: 5625
Inscrit le: 20 Fév 2004 01:00
Localisation: Paris

--norewrite

Messagepar tun » 04 Mai 2004 00:19

as tu essayé le parametre --norewrite de fetchmail ?
Avatar de l’utilisateur
tun
Quartier Maître
Quartier Maître
 
Messages: 24
Inscrit le: 16 Avr 2003 00:00

Messagepar braouazou » 04 Mai 2004 21:09

Arf j'avais loupé ces réponses désolé!!!

Mon problème est que l'adresse écrite dans le message d'erreur envoyé à l'expéditeur d'un message contenant un virus est systmétiquement user@localhost (user étant celui qui fait tourner fetchmail), et non pas l'adresse de son fai par exemple (username@wanadoo.fr)
Donc quand l'expéditeur reçoit le message, du coup, il ne sait pas de quel destinataire il s'agit (à moins de regarder plus précisméent les en-têtes du message d'origine inclues dans le message d'alerte, mais l'utilisateur lambda en serait bien incapable à mon avis)

J'ai passé la soirée d'hier et toute la journée à discuter avec des membres de la mailing-list fetchmail; tous m'ont affirmé qu'il s'agissait d'un comportement tout à fait normal de fetchmail (et m'en ont convaincu d'ailleurs graâce à des exemples très précis, je les en remercie), et une seule option pouvait faire l'affaire: le keyword smtpname, à placer comme suit pour chaque entrée d'un ifhcier ~/.fetchmailrc:

Code: Tout sélectionner
poll pop.wanadoo.fr with protocol pop3
user "firstname.name" there has password "password" is user here smtpname firstname.name@wanadoo.fr


Le seul problème (et c'en est un de taille), c'est qu'il faut dans ce cas que le domaine du fai (wanadoo.fr) soit inscrit comme domaine local dans le MTA (exim chez moi), sinon, les mails rappatriés par fetchmail bouclent (logique...).

Je me suis également penché sur la solution procmail (et formail), et j'ai réussi, sauf que dans ce cas, le mail ne passait ni à l'antispam, ni à l'antivirus. Je forçais le passage des mails par procmail ainsi:

Code: Tout sélectionner
poll pop.wanadoo.fr with protocol pop3
user "firstname.name" there has password "password" is user here and wants mda "/usr/bin/procmail -d %T"


La recette procmail permettant la transformation de l'header envelope-to est le suivant:
Code: Tout sélectionner
:0 fhw
* To.*firstname.name@wanadoo.fr
| formail -i "Envelope-To: firstname.name@wanadoo.fr"


J'ai réussi à trouver la recette pour que les mails passent par spamassassin; pour info:

Code: Tout sélectionner
#:0fw
#* < 256000
#| spamassassin

# Work around procmail bug: any output on stderr will cause the "F" in "From"
# to be dropped.  This will re-add it.
#:0
#* ^^rom[ ]
#{
#  LOG="*** Dropped F off From_ header! Fixing up. "
#
#  :0 fhw
#  | sed -e '1s/^/F/'
#}


Par contre, pour clamav ou amavis, pas trouvé de règles fonctionnant! C'est vrai qu'en général, les admins passent plutôt directement par le MTA, mais là....

Donc, si quelqu'un sait, ça pourra m'aider ;-) Par contre, ça me pose un petit souci, car ça me ferait deux choses à administrer (exim pour les mails reçus directement sur le serveur local, et procmail pour les mails reçus par l'intermédiaires de fetchmail). Ce n'est pas très grave en soi (c'est un serveur perso, faut pas l'oublier ;-) )mais ce n'est pas un peu de la bidouille ça??

Maintenant, mes conclusions:
Puisque le destinataire d'un message d'alerte n'est pas en mesure de comprendre à qui était adressé son message, et que de toute façon, la plupart des mails d'alerte envoyés par mon serveur me revenaient en erreur (destinataire inconnu, boite pleine etc etc...), j'ai décidé d'arrêter d'envoyer ces alertes... Ca soulagera un peu l'Internet :-P avec mes 2 messages par semaine!!!
Mais si quelqu'un connait la recette procmail me permettant d'utiliser clamav... je n'aime pas rester sur un échec :-(

Merci encore pour vos réponses!!
Avatar de l’utilisateur
braouazou
Amiral
Amiral
 
Messages: 1290
Inscrit le: 26 Fév 2003 01:00
Localisation: Dans les Vosges, au milieu des sapins!


Retour vers Linux et BSD (forum généraliste)

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité

cron