Modifier dovecot pigeonhole sieve plugin vacation pour avoir un champ SMTP MAIL FROM non vide

De Wiki de Romain RUDIGER
Aller à : navigation, rechercher

Introduction

L'idée est de modifier le plugin vacation de pigeonhole pour avoir un champ SMTP MAIL FROM non vide et cela malgré la RFC 5230.


Pourquoi ? Parce que (que) le serveur SMTP d'ovh refuse un courriel avec le champ contenant '<>' :

status=bounced (host 127.0.0.1[127.0.0.1] said: 555 sorry, invalid MAIL FROM for smtpauth session (http://travaux.ovh.net/?do=details&id=5510) (in reply to MAIL FROM command))


OVH dit :

Les règles pour l'envoi des emails ont ete modifiees.
Si vous obtenez l'erreur suivante lors de l'envoi d'un email:
555 sorry, invalid MAIL FROM for smtpauth session
Cela signifie que dans l'envoi de votre email le champ From est nul ou incorrect.
dovecot-2.1.8
dovecot-2.1-pigeonhole-0.3.1
getmail 4.27.0

Modification de src/lib-sieve/plugins/vacation/cmd-vacation.c

Voici la modification :

935c935
<       smtp_handle = sieve_smtp_open(senv, reply_to, reply_from, &f);
---
>       smtp_handle = sieve_smtp_open(senv, reply_to, NULL, &f);

Problème

Le problème d'avoir un champ MAIL FROM non vide pour envoyer une notification d'absence est que l'on pourrait créer une boucle. En effet si le destinataire ne gère pas l'instruction "NOTIFY=NEVER" et qu'il est également absent, il pourrait envoyer une notification d'absence en réponse à ma notification d'absence.

Pas de ponique, mon script sieve étant le suivant :

if header :regex "Received" "^.*(2012) (\\(.*\\) )?..:..:.. (\\(.*\\) )?((\\+|\\-)[[:digit:]]{4}|.{1,5})( \\(.*\\))?$" {
    if header :regex "Received" "^.*(Jun) (\\(.*\\) )?.... (\\(.*\\) )?..:..:.. (\\(.*\\) )?((\\+|\\-)[[:digit:]]{4}|.{1,5})( \\(.*\\))?$" {
    if header :regex "Received" "^.*([0 ]1|[0 ]2|[0 ]3|[0 ]4|[0 ]5|[0 ]6|[0 ]7|[0 ]8|[0 ]9|10|11|12) (\\(.*\\) )?... (\\(.*\\) )?.... (\\(.*\\) )?..:..:.. (\\(.*\\) )?((\\+|\\-)[[:digit:]]{4}|.{1,5})( \\(.*\\))?$" {
    vacation :days 7 :addresses "blabla@blbal.fr" :subject "Je suis absent" "vacances :)";
}
}
}

':days 7' fixe l'intervalle de notification à 7 jours !