since individual runs of each command should be idempotent, install should always make a duplicate of the file if it isn't already there, so if dkim touches postfix's main.cf file, then it should create a main.cf.postfix.bak file that it can use on next run
on the individual classes (DKIM, Postfix, SMTP, etc):
install should install everything, including the needed packages
reset should get rid of configuration files that have been touched and folders that were created
uninstall should call reset and then also purge the packages
since individual runs of each command should be idempotent, install should always make a duplicate of the file if it isn't already there, so if dkim touches postfix's main.cf file, then it should create a main.cf.postfix.bak file that it can use on next run
on the individual classes (DKIM, Postfix, SMTP, etc):
install should install everything, including the needed packages
reset should get rid of configuration files that have been touched and folders that were created
uninstall should call reset and then also purge the packages