postmgr issueshttps://gitlab.com/postmgr/postmgr/-/issues2019-03-06T13:49:14Zhttps://gitlab.com/postmgr/postmgr/-/issues/45Use error_chain for error handling2019-03-06T13:49:14ZMrManUse error_chain for error handling[`error_chain`](https://crates.io/crates/error-chain) looks like a pretty useful macro approach to wrapping & rethrowing errors as necessary
Thanks to [this rust talk](https://www.youtube.com/watch?v=rrtJh1kz1Ms) for inspiration[`error_chain`](https://crates.io/crates/error-chain) looks like a pretty useful macro approach to wrapping & rethrowing errors as necessary
Thanks to [this rust talk](https://www.youtube.com/watch?v=rrtJh1kz1Ms) for inspirationv0.2.0MrManMrManhttps://gitlab.com/postmgr/postmgr/-/issues/44Encrypt Dovecot stored passwords2019-03-03T18:03:49ZMrManEncrypt Dovecot stored passwordsSalted SHA256/512 (SSHA256/512) should be used [as specified by the Dovecot docs](https://wiki.dovecot.org/Authentication/PasswordSchemes)Salted SHA256/512 (SSHA256/512) should be used [as specified by the Dovecot docs](https://wiki.dovecot.org/Authentication/PasswordSchemes)v0.2.0MrManMrManhttps://gitlab.com/postmgr/postmgr/-/issues/43Implement component status endpoints2019-03-03T04:37:26ZMrManImplement component status endpointsProper implementations for checking component status is a good idea (especially after dovecot component is added)Proper implementations for checking component status is a good idea (especially after dovecot component is added)v0.1.0MrManMrManhttps://gitlab.com/postmgr/postmgr/-/issues/42Improve E2E testing feedback loop2019-02-17T08:26:23ZMrManImprove E2E testing feedback loopRight now debug-friendly E2E testing is primarily done by running the following command:
`make image && cargo test -- --ignored --nocapture`
This command take a ton of time to run, it would be better to introduce some sort of watcher t...Right now debug-friendly E2E testing is primarily done by running the following command:
`make image && cargo test -- --ignored --nocapture`
This command take a ton of time to run, it would be better to introduce some sort of watcher that could open up the `postmgr` container (link in the files), and watch/ re-run E2E tests without rebuilding the whole container.MrManMrManhttps://gitlab.com/postmgr/postmgr/-/issues/41Use Actix outright for messaging2019-03-06T07:57:00ZMrManUse Actix outright for messagingThe home brewed `ReqResp`/`channel()`/etc stuff sprinkled around the codebase is more work than just using `actix` outright and implementing `Actor` for the required components.The home brewed `ReqResp`/`channel()`/etc stuff sprinkled around the codebase is more work than just using `actix` outright and implementing `Actor` for the required components.MrManMrManhttps://gitlab.com/postmgr/postmgr/-/issues/40IMAP E2E Testing2019-02-17T10:17:03ZMrManIMAP E2E TestingAfter IMAP (dovecot/cyrus) support is enabled, the [`imap`](https://crates.io/crates/imap) can be used to test IMAP functionalityAfter IMAP (dovecot/cyrus) support is enabled, the [`imap`](https://crates.io/crates/imap) can be used to test IMAP functionalityMrManMrManhttps://gitlab.com/postmgr/postmgr/-/issues/39Log output from postfix child process2019-02-13T16:22:44ZMrManLog output from postfix child processPostfix output process should be going to `/var/log/postfix.log` -- spawn an thread that does nothing but pipe that file to `fern` for logging.
Also note that the file might *not be present at all* for a while before postfix does someth...Postfix output process should be going to `/var/log/postfix.log` -- spawn an thread that does nothing but pipe that file to `fern` for logging.
Also note that the file might *not be present at all* for a while before postfix does something log-worthy, going to have to busy wait for a while.MrManMrManhttps://gitlab.com/postmgr/postmgr/-/issues/36Use absolute paths everywhere2018-07-19T09:20:53ZMrManUse absolute paths everywhereFile output should not depend on where the CLI is run -- might have to create a new type alias or something just to ensure every saved path/string is absolute.File output should not depend on where the CLI is run -- might have to create a new type alias or something just to ensure every saved path/string is absolute.v0.2.0MrManMrManhttps://gitlab.com/postmgr/postmgr/-/issues/35Make Cyrus SASL with PAM+DB use (alternative to auxprop)2018-07-18T13:40:03ZMrManMake Cyrus SASL with PAM+DB use (alternative to auxprop)Current SASL implementation [uses `auxprop_sql`](http://www.postfix.org/SASL_README.html#auxprop_sql) is insecure -- as it requires passwords to be stored in plaintext.
The docs point to [`pam` based authentication with `saslauthd`](htt...Current SASL implementation [uses `auxprop_sql`](http://www.postfix.org/SASL_README.html#auxprop_sql) is insecure -- as it requires passwords to be stored in plaintext.
The docs point to [`pam` based authentication with `saslauthd`](http://www.postfix.org/SASL_README.html#saslauthd_pam), which should be used instead and can do some decryption.v0.2.0MrManMrManhttps://gitlab.com/postmgr/postmgr/-/issues/33Add alias support2018-07-18T15:55:03ZMrManAdd alias supportTo support proper aliasing, need to add an `aliases` table that references `mailbox_users`. AFAIK proper support at the moment will require:
- [ ] Add necessary functions to `MailboxDB` trait
- [ ] Updating the query in `sqlite_aliases....To support proper aliasing, need to add an `aliases` table that references `mailbox_users`. AFAIK proper support at the moment will require:
- [ ] Add necessary functions to `MailboxDB` trait
- [ ] Updating the query in `sqlite_aliases.cf.jinja` to do a `JOIN` across both tables
- [ ] Add CLI command to remove/add aliases for certain users on certain domains
- [ ] Ensuring that `postmap -q <alias> sqlite:<path to query config file>` returns the correct user's email (who's been aliased)
Manual testing for now...v0.2.0MrManMrManhttps://gitlab.com/postmgr/postmgr/-/issues/31Add code to test users with postmap2018-07-17T13:23:01ZMrManAdd code to test users with postmap[`postmap`](https://linux.die.net/man/1/postmap) is a command line tool that can be used (pointed at the DB's query configuration files that postfix uses) to do queries.
To make testing user configuration easier, a few things are needed...[`postmap`](https://linux.die.net/man/1/postmap) is a command line tool that can be used (pointed at the DB's query configuration files that postfix uses) to do queries.
To make testing user configuration easier, a few things are needed:
- Add a way to specify the default path of `postmap` binary
- Add function (part of `SupportsVirtualAliasLookup` trait?) that runs the command
- Add the functionality to either `Postfix` (since it's config files must be written out prior)
- Expose from CLI, something like `postmgr postfix mailbox-user-test -e <email>` to test that a user is findable by email using virtual alias lookup and what not.
How this test currently goes if run manually (from inside container):
```
# postmgr postfix db-init
... output ...
# postmgr postfix config generate-files
... output ...
# postmgr postfix mailbox-user-add -e test@example.com -p test
... output ...
# postmap -q test@example.com sqlite:/usr/src/postmgr/infra/runtime/config/postfix/valias_lookup.cf
example.com/test/
```
The `postmap` command returns a 0 code, which shows that the query is working.
v0.2.0MrManMrManhttps://gitlab.com/postmgr/postmgr/-/issues/29Use associated types for DB type2018-07-06T07:55:47ZMrManUse associated types for DB typeRight now `DB` is parametrized by backend type (i.e. `DB<SqliteDB>`), using an `enum`, but it might be more appropriate to use [Rust's associated types](https://doc.rust-lang.org/book/first-edition/associated-types.html).Right now `DB` is parametrized by backend type (i.e. `DB<SqliteDB>`), using an `enum`, but it might be more appropriate to use [Rust's associated types](https://doc.rust-lang.org/book/first-edition/associated-types.html).https://gitlab.com/postmgr/postmgr/-/issues/26Add DKIM support (API, CLI)2018-06-27T05:23:17ZMrManAdd DKIM support (API, CLI)Add support for generating and using DKIM credentials from the Admin UI and CLIAdd support for generating and using DKIM credentials from the Admin UI and CLIMrManMrManhttps://gitlab.com/postmgr/postmgr/-/issues/25Add restore from backup support (API, CLI)2018-06-27T05:13:44ZMrManAdd restore from backup support (API, CLI)When someone takes a backup, they should be able to identify it @ startup to ensure that a restore from backup is attempted at startup (or after startup).
The mechanics of restore-from-backup support are somewhat hairy -- adding users/o...When someone takes a backup, they should be able to identify it @ startup to ensure that a restore from backup is attempted at startup (or after startup).
The mechanics of restore-from-backup support are somewhat hairy -- adding users/other things will need to be made idempotent or to fail gracefully during the restore.MrManMrManhttps://gitlab.com/postmgr/postmgr/-/issues/24Add backup support (API, CLI)2018-06-27T05:11:20ZMrManAdd backup support (API, CLI)After visiting an endpoint like `/backup/compelete` or something, it should be possible to download a backup of the Postfix information (and whatever other information for a point-in-time.
At present the backup would only contain the Po...After visiting an endpoint like `/backup/compelete` or something, it should be possible to download a backup of the Postfix information (and whatever other information for a point-in-time.
At present the backup would only contain the Postfix-specific stuff, so it'd likely look very much like a normal SQLite backup or a Postgres backup, but the folder structure should still be there (and everything compressed) to support alternatives/expansion.MrManMrManhttps://gitlab.com/postmgr/postmgr/-/issues/23Add database-independent backup format support2018-06-27T05:09:34ZMrManAdd database-independent backup format supportIt might make sense to support a database-type independent backup for Postfix (and release a standard/writeup of the contents?). This could make it easier to transition from a SQLite powered backend to a Postgres powered one, should the ...It might make sense to support a database-type independent backup for Postfix (and release a standard/writeup of the contents?). This could make it easier to transition from a SQLite powered backend to a Postgres powered one, should the need ever arise -- it seems like if a DB is created but then the user decides to switch to Postgres instead there would be no way to migrate all the data -- would be nice if they could just disconnect, dump, change settings, reconnect and trigger a restore from backupMrManMrManhttps://gitlab.com/postmgr/postmgr/-/issues/21Add postfix user CRUD support to CLI2018-06-27T04:37:12ZMrManAdd postfix user CRUD support to CLIIt should be possible to perform user operations using `postmgr` from the CLI only.It should be possible to perform user operations using `postmgr` from the CLI only.v0.2.0MrManMrManhttps://gitlab.com/postmgr/postmgr/-/issues/14More extensive unit/integration/E2E Testing2018-07-18T13:31:12ZMrManMore extensive unit/integration/E2E TestingA bunch of tests need to be written.
A list of tests that should be added (updated over time):
- [ ] `PostfixCfg`-based config generation (two different configs should output different text files)
- [ ] Postfix Config folder should be c...A bunch of tests need to be written.
A list of tests that should be added (updated over time):
- [ ] `PostfixCfg`-based config generation (two different configs should output different text files)
- [ ] Postfix Config folder should be created if it doesn't existv0.2.0MrManMrManhttps://gitlab.com/postmgr/postmgr/-/issues/11Add Postgres backend support2018-06-27T04:51:06ZMrManAdd Postgres backend supportPostgres is a good follow-on backend after SQLite (#16).
This will likely require:
- [ ] Ensuring `Postgres` supports user operations (#17 and co.)
Looks like [diesel](https://github.com/diesel-rs/diesel) has good support, including a...Postgres is a good follow-on backend after SQLite (#16).
This will likely require:
- [ ] Ensuring `Postgres` supports user operations (#17 and co.)
Looks like [diesel](https://github.com/diesel-rs/diesel) has good support, including an [examples section](https://github.com/diesel-rs/diesel/tree/master/examples/sqlite).
[Postfix documentation on Postgres](http://www.postfix.org/PGSQL_README.html)v0.2.0MrManMrManhttps://gitlab.com/postmgr/postmgr/-/issues/10Add postfix user management to admin interface2018-07-18T15:54:44ZMrManAdd postfix user management to admin interfaceAdd ability to manage Postfix users from the administration API. Basic CRUD functionality for admin users should be supported:
- [ ] Add user
- [ ] Remove user
- [ ] Update User
- [ ] Delete userAdd ability to manage Postfix users from the administration API. Basic CRUD functionality for admin users should be supported:
- [ ] Add user
- [ ] Remove user
- [ ] Update User
- [ ] Delete userv0.2.0MrManMrMan