OVH Cloud OVH Cloud

[Postfix] Intéraction Postfix et programme externe

2 réponses
Avatar
Cedric Foll
Bonjour,

j'utilise conjointement postfix et bogofilter (avec des résultats
excellents en terme de perfs et de précision).
Pour ce faire chaque mail reçu est envoyé vers un script shell
effectuant les commandes suivantes (le script fait un peu plus de
choses, je supprime ce qui n'est pas important pour des pb de
lisibilité)

----
#!/bin/sh
cat > msg.$$
# envoie du message taggé
bogofilter -p < msg.$$ | sendmail "$@"
# si c'est du spam on log
bogofilter < in.$$ && {
echo "Votre mail a ete considere comme etant du spam..."
rm -f msg.$$
exit $EX_UNAVAILABLE
}
rm -f msg.$$
exit $?
----

Donc le serveur n'efface rien dutout, il se contente de tagger les
messages en SPAM|HAM.
Ensuite lorsque qu'un spam est détecté cela apparait dans les logs de
postfix via une ligne du type:

-----
Sep 1 15:50:29 carrera postfix/pipe[31726]: C82C23F65:
to=<cedric.foll@ac-rouen.fr>, relay=filter, delay=0, status=bounced
(service unavailable. Command output: Votre mail a ete considere comme
etant du spam...)
-----

Le problème de ce script est qu'il renvoie un message à l'expéditeur
avec le message "Votre mail a ete considere comme etant du spam...".
Hors l'adresse d'expédition d'un spam étant fausse en générale ce mail
est refusé et je me retrouve avec pleins de messages dans la liste
d'attente.

Donc comment faire pour que les spams soient listés dans les logs mais
que rien ne soit renvoyé à l'expéditeur ?


Cordialement.

--
Cedric Foll
e-mail: cedric.foll@laposte.net

2 réponses

Avatar
Xavier Roche
Cedric Foll wrote:
Le problème de ce script est qu'il renvoie un message à l'expéditeur
avec le message "Votre mail a ete considere comme etant du spam...".
Hors l'adresse d'expédition d'un spam étant fausse en générale ce mail
est refusé et je me retrouve avec pleins de messages dans la liste
d'attente.
Donc comment faire pour que les spams soient listés dans les logs mais
que rien ne soit renvoyé à l'expéditeur ?


La seule bonne manière: executer bogofilter à la volée dans
postfix/sendmail, de manière à ce qu'il soit executé après le "." final
envoyé par le client sur le serveur de messagerie. En cas de spam, le
serveur renverra quelque chose comme
550 Our spam filter has rejected your mail
et ce sera au serveur spammeur/relais-ouvert en face de se démerder avec
les milliers de bounce dans sa queue.

Par contre, de la manière de faire ça sous postfix?!

Avatar
Cedric Foll

C'est la moins mauvaise des solutions. Possibilité: placer un message
dans le code d'erreur
550 Out spam filter rejected your message - In case of error please send
a mail to


Avec les mailing list ce genre de chose ne fonctionne pas.
Et les messages qui sont classés à tord comme SPAM sont en général issus
de ML.