2017-03-06 2 views
0

J'ai une application qui doit écrire des courriels directement dans les comptes imap locaux. Aucun MTA (Postfix, Sendmail etc.) entre les deux afin de le garder simple à maintenir, et aucune vulnérabilité MTA à s'inquiéter, car il y aura environ 100K comptes IMAP (fichiers maildir).Courriel direct à un fichier Maildir local sans MTA

Est-il possible d'écrire directement dans un fichier Maildir par programmation sans l'aide d'un MTA? Jusqu'à présent, j'ai regardé femtomail mais c'est trop simple pour mes besoins car il est destiné à être utilisé sur une machine mono-utilisateur. J'ai aussi vu des modules python qui le feraient, mais je ne sais pas si Python serait assez rapide vu nous parlons de comptes IMAP 100K ici.

Planification de cette opération sur une instance AWS ou DO. Toutes les suggestions sur l'architecture seront également très appréciées.

Répondre

1

La plupart des serveurs IMAP sont bien modulaires et incluent un agent de distribution, et/ou utilisent en coopération un format de dossier standard pour lequel un tel outil existe déjà. Il n'y a pas besoin d'invoquer un MTA pour quoi que ce soit dans ce scénario, ce qui est sans doute une décision de conception consciente (fait également des tests du système du serveur IMAP etc beaucoup plus simple!)

Le Python mailbox library soutient writing to et autrement manipuler maildir folders .

# Untested, based on example in documentation 
import mailbox 
destination = mailbox.Maildir('/path/to/folder') 
destination.add(message) 

Je doute sérieusement ce code va être lié au processeur de toute façon (écriture sur le disque aura tendance à être le goulot d'étranglement) de sorte que la vitesse de la langue est probablement pas une préoccupation (et je n'ai pas trouvé que Python était trop lent pour les choses de l'espace utilisateur, en général).

Depuis vous avez marqué cette Procmail, la façon Procmail de le faire (ce qui est toutefois probablement excessif si vraiment tous vous devez faire est d'écrire dans un dossier maildir):

:0 
/path/to/folder/ 

où le slash est significatif (en laissant de côté un format de livraison différent - Berkeley si folder est un fichier simple, le format basé sur l'annuaire de Procmail s'il s'agit d'un répertoire).

+0

Si vous êtes sérieusement à court d'un processeur, vous devez supprimer [femtomail.c] (https://git.lekensteyn.nl/femtomail/tree/femtomail.c) pour supprimer l'ajout d'un en-tête 'Received:' et remplacer le Des options par défaut stupides avec un chemin de dossier maildir sembleraient être un exercice facile, même si vous n'êtes pas un programmeur C. – tripleee