Postfix : Répondeur automatique de changement d'adresse

Bonjour,

Je récupère la config courriel d’un domaine. On a fait le ménage dans les noms des boîtes et aliases.

Je voudrais que de manière automatique, si un courriel est envoyé à une ancienne adresse, l’interlocuteur se voit notifier du changement.

Par exemple :
ancienne adresse : maguytarre@toto.fr
nouvelle adresse : maguy.tarre@toto.fr

Je voudrais que si on écrit à maguytarre@toto.fr, le message soit rejeté gentillement en demandant de changer le carnet d’adresses.

Je voudrais pouvoir produire un beau message. Souvent, les messages d’erreur des serveurs de courriels ne sont même pas lus… :confused:

L’alias n’est pas une bonne solution.

J’aurais bien tenter un filtrage sur l’entête To: avec Amavisd mais je ne trouve rien là dessus :frowning:

Qu’en pensez-vous ?

Merci d’avance !

Salut, la solution est trop longue à expliquer.

Mais voici des pistes :

  1. tu crées un service autoreply dans master.cf
    Ce service pointe vers un script bash personnalisé qui prend comme argument le sender (l’expéditeur) et le destinataire.

postfix.traduc.org/index.php/VIR … utoreplies

  1. tu crées le script bash perso qui doit contenir :
    -la connexion mysql pour se connecter à la table des utilisateurs virtuels de la bdd.
    -la requête mysql pour rechercher le message (qui contient la notification de changement d’adresse) en fonction de l’utilisateur virtuel (càd en fonction du sender de l’argument).
    -la commande mail pour envoyer le message trouvé vers l’expéditeur.

Bien sûr, tu dois au préalable créer deux champs dans la table des utilisateurs virtuels : sujet_autoreply (pour mettre le sujet personnalisé du message) et message_autoreply (pour mettre le message personnalisé).

=> cela est pratique pour gérer et personnaliser les auto-répondeurs des utilisateurs virtuels.

Pour les utilisateurs locaux (unix), il y a le paquet vacation.

[quote=“fluo”]

  1. tu crées un service autoreply dans master.cf
    Ce service pointe vers un script bash personnalisé qui prend comme argument le sender (l’expéditeur) et le destinataire.[/quote]
    Ça c’est une bonne idée … Ça me semble simple à mettre en place.

[quote]
2) tu crées le script bash perso qui doit contenir :frowning:…)[/quote]
Ça me semble un poil complexe…

Je teste tout ça et je vous tiens au courant…

Merci

Finalement, je me demande si mettre une commande en face des adresses à rejeter proprement dans /etc/alias ne serait pas aussi simple, non ?

Exemple :

ancienne-adresse      "|repondeur.bash ancienne-adresse nouvelle-adresse "

Mais je suis bien embêté…
Je ne trouve pas la méthode pour récupérer simplement l’adresse de l’expéditeur dans mon Script bash :frowning:

Je ne trouve pas comment faire passer à sed ou awk le contenu d’un pipe…

Je vais quand même pas faire ça en PHP… :doh:

Je ne pense pas qu’il est possible de mettre une commande en valeur dans le fichier /etc/aliases.

Sinon, il y a header_checks postfix.org/header_checks.5.html qui te permet de rejeter automatiquement un mail en fonction du destinataire, avec en plus la possibilité d’envoyer un message.

[quote=“http://www.postfix.org/header_checks.5.html”]
REJECT optional text… Reject the entire message. Reply with optional text… when the optional text is specified, otherwise reply with a generic error message. Note: this action disables further header or body_checks inspec- tion of the current message and affects all recipients. Postfix version 2.3 and later support enhanced status codes. When no code is specified at the beginning of optional text…, Postfix inserts a default enhanced status code of “5.7.1”. This feature is not supported with smtp header/body checks. [/quote]

Si, si, c’est possible. Mailman se base là dessus.

J’avais pensé à ça au début mais le message n’est pas très explicite pour le commun des mortels.

J’ai essayé quand-même, juste pour voir…
Ça oblige d’avoir l’ancienne adresse dans les alias, c’est peut-être pour ça que :

/^To: gerard@domain\.net/ REJECT L'adresse  n'existe plus, utilisez plutôt bernard@domain.net. Merci.

Le fichier est appelé par :

Mais ça ne fonctionne pas :frowning:

Dans ce cas, pour récupérer les variables, il faut utiliser $1, $2, $3, …

$1 pour le 1er argument,
$2 pour le second,

Mais l’expression ne semble pas fonctionner…
J’ai pourtant l’impression qu’elle est correcte… :017

que donne la commande (à taper en root) ? :

[quote=“fluo”] :

Entre autre choses :