lib,test: replace connection query() method with sync_exec{,_params}.
[mailshears.git] / doc / TODO
1 * There is essentially no error handling. We report errors, but we
2 don't fail when we see one. The main reason for this is that we
3 don't know when each plugin will be run. If the first plugin
4 encounters an error, we could quit right there. But what if the
5 third one fails after the first two succeed? We would need some kind
6 of rollback mechanism.
7
8 For "mv", a rollback is conceivable. But with "rm", there's no going
9 back. Maybe relying on the user to interpret the output and go
10 fix stuff himself is the best we can do?
11
12 * Add OpenDKIM support.
13
14 * Rename the "dovecot" plugin to "filesystem".
15
16 * Implement moving of domains.
17
18 * The AgenDAV "user exists" test is wonky, because there's no real
19 users in AgenDAV. Right now we check the "username" column in the
20 "prefs" table, but all of the shares (and principals?) have URLs
21 instead of usernames. We don't parse the URLs, and instead rely
22 on doing find/replace of substrings in e.g. AgendavMv.
23
24 In particular, this means that AgenDAV pruning does not work! If
25 a user with default preferences is deleted, we don't notice.
26
27 * mailshears --help crashes before doing what it should just do:
28
29 $ mailshears --help
30 ERROR: prune mode takes no additional arguments.
31
32 * The "pretend mode" output is missing the destination information:
33
34 # mailshears mv "test1@example.com" "test2@example.com"
35 mailshears, 2020-01-30 14:40:09 -0500 (Plugin: MvPlugin)
36 --------------------------------------------------------
37 AgendavMv - Would move user test1@example.com (User not found) to .
38 DavicalMv - Would move user test1@example.com (User not found) to .
39 DovecotMv - Would move user test1@example.com (/var/spool/mail/vhosts/example.com/test1) to .
40 PostfixadminMv - Would move user test1@example.com to .
41 RoundcubeMv - Would move user test1@example.com (User not found) to .