Première rédaction de cet article le 22 septembre 2010
La bibliothèque imaplib du langage Python permet d'accéder à un serveur de courrier IMAP et est surtout utilisée pour lire des messages. Mais elle peut aussi être utilisée pour écrire.
Attention, j'ai bien dit « écrire des messages dans une boîte »,
pas « envoyer un courrier à un destinataire », chose que IMAP ne
permet pas. La méthode est simple, utilisant la méthode
append(),
et je peux mettre le code
directement ici (le message est lu sur l'entrée
standard mais il pourrait venir de n'importe où) :
connection = imaplib.IMAP4_SSL(hostname)
connection.login(username, password)
message_first = sys.stdin.readline() # Drop the mbox separator line
message = sys.stdin.read()
result = connection.append(mailbox, '', imaplib.Time2Internaldate(time.time()), \
message)
print result
connection.logout()
Et voilà, le programme, si tout s'est bien passé, mettra le message
dans la boîte mailbox. En cas de problème, la
première chose à vérifier est que le message est bien un message à la
syntaxe du RFC 5322, avec une ligne vide entre
les en-têtes et le corps.
Un bon article de plusieurs exemples de programmes Python utilisant cette bibiothèque est « imaplib - IMAP4 client library ».
Si, une fois qu'on a ce programme, on veut l'intégrer dans
mutt, par exemple pour transmettre des messages
de hameçonnage à la
base du CRU, il suffit d'avoir le programme report-phishing.py, un fichier de configuration comme :
[default] hostname: XXX.ensmp.fr username: YYY password: ZZZ mailbox: INBOX.UUU
et de mettre dans son ~/.muttrc :
macro index,pager \ep "<enter-command>set pipe_decode=no\n<enter-command>set wait_key\n<pipe-entry>report-phishing\n<enter-command>set wait_key\n<enter-command>set pipe_decode=yes\n" "Report phishing"
Désormais, en regardant un message de hameçonnage, il suffira
d'un ESC-p pour transmettre le message au dépôt.
Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)
Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)