2017-08-30 5 views
0

Je dois exécuter un script shell sous exim qui peut lire chaque message entrant, éventuellement les réécrire et continue d'envoyer l'e-mail.Comment puis-je configurer exim pour exécuter un script pour chaque e-mail?

Et la solution idéale serait analogue à des tuyaux UNIX:

cat *incoming email* | **some-script.sh** | *back to exim processing* 

Je veux que le script d'être exécuté très tôt, afin que je puisse par exemple changer l'adresse de destination. Est-ce possible avec Exim, et comment?

Répondre

0

Vous pouvez créer le routeur qui utilisent le transport tuyau avec votre script de l'autre côté du tuyau:

begin routers 
preprocessor: 
    driver  = accept 
    condition = if{ !eq{$header_X-Preproceeded}{yes}} 
    transport = myscript 
    no_more 

. . . . . 

begin transports 
myscript: 
    driver  = pipe 
    user  = scriptowner 
    command  = /path/to/script --opt1 --opt2 

Si le message entrant n'a pas en-tête X-Preproceeded ou sa valeur ne définit pas yes alors le message est passé au transport myscript. Cela est effectué via la tuyauterie source | script et tout le message est passé à stdin du script. Après avoir procédé si vous souhaitez renvoyer un message à l'exim, vous devez ajouter l'en-tête x-Preproceeded: yes au message pour éviter qu'il soit routé vers le tour suivant. Ensuite, vous devez l'envoyer via la commande sendmail. Gardez à l'esprit qu'un script exécutant efficace devrait être ajouté aux utilisateurs de confiance par la configuration d'exim pour permettre l'envoi à partir d'une adresse arbitraire. Sinon, exim remplacera l'adresse de l'expéditeur par [email protected]