]> gitweb.michael.orlitzky.com - mailshears.git/blobdiff - doc/TODO
mailshears.gemspec: bump to v0.0.4, update pg library to v1.2.x.
[mailshears.git] / doc / TODO
index 8d773983a2cb247cdcb328638538a53fc9a23de5..240adabb1aaa03fc5dde7645c947c347baea2135 100644 (file)
--- a/doc/TODO
+++ b/doc/TODO
@@ -1,21 +1,41 @@
-* When we delete a domain, do we delete all of the accounts, too? Or
-  just the domain? We can do this in either the runner or the plugin.
-
-  At the moment, it's mixed. The RmRunner does it manually, but e.g.
-  the PostfixadminDbRm plugin also deletes the mailboxes when the
-  domain is deleted.
-
-  One doesn't seem any better than the other, but maybe if you
-  consider that some of the plugins have no-ops for
-  delete_domain(). Those could be made to actually do something
-  (i.e. delete all matching account names). Then we could get rid of
-  the get_domain_accounts() or-whatever-it's-called methods.
-
-* PostfixadminDb can be made a plugin -- prune just won't work without
-  it.
-
-* Error reporting sucks, and when a domain or account doesn't exist we
-  should be able to say so. The describe_domain/account functions
-  should also work better. Depending on what we do in the first bullet
-  point, they could either return a list of names, or
-  NotImplementedError.
+* There is essentially no error handling. We report errors, but we
+  don't fail when we see one. The main reason for this is that we
+  don't know when each plugin will be run. If the first plugin
+  encounters an error, we could quit right there. But what if the
+  third one fails after the first two succeed? We would need some kind
+  of rollback mechanism.
+
+  For "mv", a rollback is conceivable. But with "rm", there's no going
+  back. Maybe relying on the user to interpret the output and go
+  fix stuff himself is the best we can do?
+
+* Add OpenDKIM support.
+
+* Rename the "dovecot" plugin to "filesystem".
+
+* Implement moving of domains.
+
+* The AgenDAV "user exists" test is wonky, because there's no real
+  users in AgenDAV. Right now we check the "username" column in the
+  "prefs" table, but all of the shares (and principals?) have URLs
+  instead of usernames. We don't parse the URLs, and instead rely
+  on doing find/replace of substrings in e.g. AgendavMv.
+
+  In particular, this means that AgenDAV pruning does not work! If
+  a user with default preferences is deleted, we don't notice.
+
+* mailshears --help crashes before doing what it should just do:
+
+  $ mailshears --help
+  ERROR: prune mode takes no additional arguments.
+
+* The "pretend mode" output is missing the destination information:
+
+  # mailshears mv "test1@example.com" "test2@example.com"
+  mailshears, 2020-01-30 14:40:09 -0500 (Plugin: MvPlugin)
+  --------------------------------------------------------
+  AgendavMv - Would move user test1@example.com (User not found) to .
+  DavicalMv - Would move user test1@example.com (User not found) to .
+  DovecotMv - Would move user test1@example.com (/var/spool/mail/vhosts/example.com/test1) to .
+  PostfixadminMv - Would move user test1@example.com to .
+  RoundcubeMv - Would move user test1@example.com (User not found) to .