2009-11-22 9 views
5

Je suis en train d'écrire une application web qui doit recevoir des messages électroniques à des adresses e-mail des utilisateurs internes, que les administrateurs puissent les approuver, puis avec impatience correspondante boîte aux lettres de l'utilisateur externe.un message Postfix reçu crochet

J'ai installé et configuré un suffixe pour la tâche de réception de message. Il utilise des adresses de messagerie virtuelles et ma base de données existante dans laquelle les adresses électroniques des utilisateurs sont stockées. Le stockage des e-mails locaux est maildir et j'utilise le MDA virtuel de postfix.

Fondamentalement, je voudrais exécuter un script chaque fois qu'un nouveau message est reçu, et pour lequel l'utilisateur (maildir id message serait aussi très utile). Ensuite, je pouvais lire le message du code python (python avait un module pour les boîtes aux lettres maildir) et l'insérer dans la base de données. Je peux penser à trois façons de le faire:

  • utilisateur Iterate maildirs et vérifier s'il y a des nouveaux messages, mais il serait inefficace pour un grand nombre d'utilisateurs.
  • utilisez dbmail, puis vérifiez s'il y a de nouveaux messages dans la base de données (ce serait plus rapide, mais je devrais tout configurer à partir de zéro). En outre, les tables de données utilisateur existantes ne peuvent pas être utilisées.
  • écrire un wrapper autour de maildrop/virtual pour enregistrer le message dans db et dans maildir ainsi, mais j'ai besoin d'un moyen de vérifier si le message reçu est valide et sauvé avec succès par le réel MDA.

Aucune suggestion n'a été appréciée!

Répondre

5

En réponse à ma question, j'ai utilisé Postfix content_filter avec le drapeau X fixé dans le tuyau et processus de réception et adresse un message manuellement. Comme je n'avais pas besoin d'accéder aux messages dans maildir, cette approche fonctionne bien pour moi.

8

Dans le fichier /etc/aliases, vous pouvez spécifier un programme qui est exécuté chaque fois qu'un utilisateur reçoit un courrier. Ce programme reçoit le courrier sur stdin. Donc, vous n'avez pas à interroger et votre programme s'exécute instantanément.

+0

Ce serait une bonne approche, mais j'utilise un mécanisme de relais virtuel. – fest

Questions connexes