https://github.com/sripwoud/colporteur
Convert email newsletters into Atom feeds
https://github.com/sripwoud/colporteur
cli imap mail newsletter rss rust selfhost systemd-service
Last synced: 3 months ago
JSON representation
Convert email newsletters into Atom feeds
- Host: GitHub
- URL: https://github.com/sripwoud/colporteur
- Owner: sripwoud
- License: agpl-3.0
- Created: 2026-02-25T15:20:52.000Z (4 months ago)
- Default Branch: master
- Last Pushed: 2026-03-12T17:26:05.000Z (4 months ago)
- Last Synced: 2026-03-12T17:53:13.134Z (4 months ago)
- Topics: cli, imap, mail, newsletter, rss, rust, selfhost, systemd-service
- Language: Rust
- Homepage: http://colporteur.sripwoud.xyz/
- Size: 224 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
Colporteur
> Convert email newsletters into Atom feeds
Colporteur connects to IMAP mailboxes, fetches emails from configured senders, sanitizes the HTML, and writes Atom XML feed files. Subscribe to your newsletters with any feed reader.
## Features
- **IMAP native** -- connects directly to any IMAP mailbox, no forwarding rules needed
- **HTML sanitization** -- strips tracking pixels, scripts, and styles while preserving content
- **Atom feeds** -- generates standard Atom XML consumable by any feed reader
- **Multi-account** -- pull newsletters from multiple IMAP accounts into separate feeds
- **Dry-run mode** -- preview what would be fetched before writing anything
- **JSON output** -- machine-readable output for scripting and automation
## Quick Start
Install colporteur from a [pre-compiled binary](https://github.com/sripwoud/colporteur/releases/latest) or via cargo:
```bash
cargo install colporteur
```
Generate a sample config:
```bash
colporteur init
```
Edit `~/.config/colporteur/config.toml` with your IMAP accounts and feeds, then:
```bash
colporteur test # verify IMAP connection
colporteur fetch # fetch and generate feeds
colporteur list # show feed sync state
```
## Documentation
Full documentation available at [colporteur.sripwoud.xyz](https://colporteur.sripwoud.xyz):
- [Installation](https://colporteur.sripwoud.xyz/#/getting-started/installation) - Detailed setup guide
- [Quick Start](https://colporteur.sripwoud.xyz/#/getting-started/quick-start) - Step-by-step walkthrough
- [CLI Reference](https://colporteur.sripwoud.xyz/#/cli-reference) - All commands documented
- [Configuration](https://colporteur.sripwoud.xyz/#/configuration) - Config file format and options
- [How It Works](https://colporteur.sripwoud.xyz/#/how-it-works/email-processing) - Email processing pipeline
## Requirements
- An IMAP-accessible email account with newsletters
## Develop
| Feature | With | Configuration |
| ---------------------------------------------- | -------------------------------------------------------------------------------------- | ------------------------------------------------------ |
| Continuous Integration | [GitHub Workflow](https://docs.github.com/en/actions/using-workflows) | [.github/workflows](./.github/workflows) |
| Conventional Commits | [convco](https://github.com/convco/convco) | [.convco](./.convco) |
| Conventional PR Titles | [action-semantic-pull-request](https://github.com/amannn/action-semantic-pull-request) | [semantic-pr.yml](./.github/workflows/semantic-pr.yml) |
| Documentation | [docsify](https://docsify.js.org/) | [docs/](./docs) |
| Formatting | [dprint](https://dprint.dev/) | [.dprint.jsonc](./.dprint.jsonc) |
| Git Hooks | [hk](https://hk.jdx.dev/) | [hk.pkl](./hk.pkl) |
| Tasks Runner, Environment & Runtime Management | [mise](https://mise.dev/) | [mise.toml](./mise.toml) |
```bash
./setup # install mise and setup repository
mise run # run tasks interactively
```
## Community
- [Documentation](https://colporteur.sripwoud.xyz)
- [Report Issues](https://github.com/sripwoud/colporteur/issues)