Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Plugin platform #46

Open
ddavness opened this issue Feb 28, 2022 · 3 comments
Open

Plugin platform #46

ddavness opened this issue Feb 28, 2022 · 3 comments

Comments

@ddavness
Copy link
Owner

🗻 This is an epic milestone.

Right now, Mail-in-a-Box (and by extension, this fork) is shipped as a monolithic package. This caters well to ~90% of the use cases, but at the same time we're facing two distinct issues going into opposite directions:

I don't need feature X/Y/Z

For some of these features, it won't hurt much. But some features involve software installation that is unnecessarily exposed to the internet. Some take quite a bit of space to install.

I want a very specific feature to be integrated into Power Mail-in-a-Box

Integrating such features would need to be merged into this repository, or the requester would need to fork the entire project and create their own version with the feature they want to implement. It's also likely that such feature requests would fall out of the scope of the project.

Henceforth, this milestone aims to revise the architecture of Power Mail-in-a-Box to split it into it's core functionality and accessory components.

The Core Functionality is defined as the minimum set of components strictly needed to create a functional, secure, and easy-to-use mailserver, as well as all base components that can be extended:

  • Postfix, Dovecot, SpamAssassin;
  • DKIM/DMARC management;
  • The admin panel;
    • Status Checks;
    • Users, Aliases;
    • Web;
    • Certificate Management;
    • External DNS;
    • Authentication (including 2FA)

The following components will be removed from the "core" of Power Mail-in-a-Box but can be installed as plugins. This list is not meant to be exhaustive.

  • DNS Server (NSD + DNSSEC);
  • Roundcube Webmail;
  • Nextcloud;
  • Munin Monitoring;
  • PGP Key management;
  • Publishing PGP keys via WKD;
  • Z-Push (ActiveSync);

To retain ease of installation, for first time installers, the installer will recommend a certain set of plugins from the list above to be installed. Folks who know what they are doing can ignore that recommendation and install the plugins that suit their use-case.

Features removed from this repository will still be maintained as plugins in an official capacity.

The beauty of this approach is that the community can write plugins without having to worry about being within the scope of the project. And by extension, they are free to share and license their plugins to their heart's content.

@ddavness ddavness pinned this issue Feb 28, 2022
@ddavness
Copy link
Owner Author

ddavness commented Mar 1, 2022

I'm leaving thos issue open as a thread so that you can give your input. It would be a herculean task and I want to be sure of the direction we're going with. What do you think? Do you foresee any issues?

@John-S4
Copy link
Contributor

John-S4 commented Mar 1, 2022

I think this is a brilliant and logical approach, a core framework with everything else as core-maintained plugins makes a lot of sense.

@nameduser0
Copy link

Just my 2c (and I'm not an expert and have not used MIAB yet) but Nextcloud seems like the only thing that is likely both a) unrelated and b) large footprint. Everything else seems either quite useful in a mail server or small enough to not be an issue.

I think you could probably argue Munin too since MIAB is likely to be running in a VM/container on another OS, so monitored elsewhere from a CPU/Memory perspective. Though mail server throughput would be pretty important IMO.

I wouldn't want you to go to all that effort just for you to recommend 95% of the plugins!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants