# Papero
Un coso per le email
# Riassuntone sulle email
# SMTP
- protocollo con cui i server mail parlano tra di loro
- protocollo con cui un client delega un server per consegnare una mail
# POP(3)
- protocollo con cui un client chiede delle email ad un server e le salva in locale
# IMAP(v4rev1)
- protocollo con cui un client chiede al server, che conserva le email per lei, di leggere qualche messaggio
- in generale, protocollo con cui si accede ad un albero di cartelle, in cui le email possono essere organizzate
### Lo stack
![The local software stack](./data/mailstack.drawio.svg)
[https://github.com/boyska/mailbundle](https://github.com/boyska/mailbundle)
### Con papero
![The local software stack](./data/mailstack-papero.drawio.svg)
[https://github.com/boyska/mailbundle](https://github.com/boyska/mailbundle)
### Anatomia di papero
![Le due cli](./data/papero-cli.png)
[https://git.sr.ht/~blallo/papero](https://git.sr.ht/~blallo/papero)
Due eseguibili:
- `papero`: per interagire senza stato con un server IMAP
- `paperod`: un demone, per sincronizzare delle cartelle IMAP remote con una Maildir locale
### `papero`
```
$ papero --help
USAGE: papero [--config --debug --account] SUBCOMMAND [subcommand opts]
SUBCOMMANDS:
get
set
add
del
```
### `papero`
Fin'ora:
- `get`: `content`, `subscriptions`, `mailboxes`, `messages`
- `set`: `flags`
- `add`: `message`, `mailbox`
- `del`: `message`, `mailbox`
Sincronizza in locale su formato `Maildir`:
- `new`
- `cur`
- `tmp`
(il percorso è configurabile per account)
Copia dal server in locale:
- `new` ⬅️
- `cur`
- `tmp`
ciclicamente (ogni 30s, per ora)
Copia da locale sul server:
- `new`
- `cur` ⬅️
- `tmp`
ogni volta che un file viene cambiato in `cur`
### Prossimi passi
- Inserire in `mailbundle`
- Rendere intervallo di sync configurabile
### Poi (`paperod`)
- Supportare connessioni via proxy (i.e. Tor)
- Aggiungere filtri in locale (pipe a script/eseguibili e anche script python)
- Supporare salvataggio in db `sqlite`
- Permettere log in json (?)
### Poi (`papero`)
- creare e rimuovere subscriptions
- muovere (`mv`) o copiare (`cp`) email tra mailbox diverse
### Collaborare?
# Volentieri!
### Collaborare?
## `blallo@autistici.org`
### Collaborare?
## `git format-patch`