~blallo/papero

IMAP proficiency tools
Add real upsync logic
Add by uid option when deleting messages
Add by uid option to set flags in papero

refs

master
browse  log 

clone

read-only
https://git.sr.ht/~blallo/papero
read/write
git@git.sr.ht:~blallo/papero

You can also use your local clone with git send-email.

#Papero

This repository holds some golang cli utilities to interact with IMAP servers. Currently the plans include two such programs:

  • papero: a stateless cli tool to grab and/or alter content from the server
  • paperod: a daemon in charge of keeping in sync the server with local maildirs

#Roadmap

#common parts

  • [ ] Allow the use of proxies to connect to the IMAP server (i.e. Tor)
  • [ ] Allow to log in json format
  • [ ] Pluggable storage system
    • [ ] A local sqlite
    • [ ] A custom serialization format (i.e. json)

#papero

  • [ ] read from server
    • [x] list the mailbox content
    • [x] list messages in a mailbox
    • [x] retrieve the content of a message
    • [ ] search on a content in a mailbox by criteria (flags, keywords, ...)
    • [x] list active subscriptions
  • [ ] modify the server
    • [x] set the flags on server
    • [x] put a message in mailbox
    • [x] delete a message in mailbox
    • [x] create a mailbox
    • [x] delete a mailbox
    • [ ] copy a message from a folder to another
    • [ ] move a message from a folder to another
    • [ ] create a subscription
    • [ ] delete a subscription

#paperod

Properly sync with server:

  • [x] Read remote
    • [x] List remote mailboxes
    • [x] List remote messages in mailboxes
    • [x] Pull remote messages's content
  • [x] Read local maildirs
    • [x] Read local content
    • [x] Match local content with remote
  • [x] Alter local maildirs
    • [x] Deliver new messages's content in a file in the proper maildir subdir
    • [x] Remove messages if moved/removed on the server
  • [ ] Update the remote if a file is changed locally
  • [ ] Act on selected mailboxes, per account, given a filter
    • [ ] Using explicit allow/block directives
    • [ ] Using regex
    • [ ] Using external programs via pipes
  • [ ] Add hooks on given events
    • [ ] With default internal mechanisms
    • [ ] Using external programs via pipes