5 votes

exécuter une commande pour sélectionner des courriels avec postfix

J'ai installé Postfix sur mon serveur Ubuntu, et j'aimerais le configurer pour qu'il exécute une commande lorsqu'il reçoit certains courriels. Par exemple, si je m'envoie un courriel depuis un compte gmail avec l'objet "todo", j'aimerais que Postfix ajoute le corps du message à /home/brian/todo.

En lisant la documentation de Postfix, j'ai seulement vu comment configurer des règles pour rejeter les courriels avec des codes d'erreur. Il se peut donc que Postfix ne soit pas l'outil adéquat, auquel cas j'apprécierais un retour d'information sur un outil plus approprié.

Merci, Brian

[Mise à jour : 20090616] En développant la réponse sélectionnée, voici mon .procmailrc :

:0
* ^To.*john@doe.com
* ^Subject.*specialsubject
| ~/bin/extract_email_body.py >> ~/todo

Et voici ~/bin/extract_email_body.py :

#!/usr/bin/python

import sys
import email

def print_plain_text_parts(msg):
    if msg.is_multipart():
        for part in msg.get_payload():
            print_plain_text_parts(part)
    elif msg.get_content_type() == 'text/plain':
        print(msg.get_payload().strip())

msg = email.message_from_file(sys.stdin)
print_plain_text_parts(msg)

7voto

pQd Points 29251

Essayez ceci - mettez-le dans /etc/aliases :

username: "|/your/script"

puis exécutez

postalias /etc/aliases

lorsque le courrier électronique arrive à username@yourdomain.org /votre/script sera exécuté et recevra le contenu du message [ avec tous les en-têtes ] dans stdin. je crains que vous ne deviez vérifier l'objet par vous-même.

3voto

Zachary Scott Points 146

Vous pouvez utiliser procmail pour filtrer les e-mails en fonction de leur objet. Vous aurez alors la possibilité d'exécuter n'importe quelle commande en réponse à l'e-mail, ou vous pouvez le laisser tel quel et le faire livrer dans votre boîte aux lettres.

Vous pouvez lire procmail quickstart qui est un excellent article.

Pour permettre l'utilisation de procmail, placez un fichier ".forward" dans le répertoire personnel de votre utilisateur, et faites en sorte que son contenu ressemble à ceci

| "/usr/bin/procmail"

Ensuite, écrivez vos "recettes" procmail sous ~/.procmailrc

Notez que la plupart des autres options de filtrage (comme sieve) ne vous permettront pas d'exécuter des commandes arbitraires.

1voto

Gudmundur Orn Points 853

Si vous souhaitez que certains courriels envoyés à une adresse donnée déclenchent une commande (en fonction de leur objet ou autre), et que les autres soient délivrés comme des courriels normaux, vous devrez utiliser procmail comme décrit ci-dessus. L'utilisation de /etc/aliases fera que chaque message envoyé à cette adresse invoquera la commande spécifiée (et ne sera pas délivré via le mécanisme de livraison local).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X