Misfin-Server                             
       
       Misfin-server is a mailserver written in golang that supports the
       Misfin(B) and the informal Misfin(C) specs. It is licensed as
       BSD-3-Clause.
       
 (HTM) Misfin-Server Repo
       
       You can find more info on Satch's misfin page, and Lem's original
       misfin capsule:
 (HTM) Misfin: a smallnet messaging protocol
 (HTM) Original Misfin Capsule
       
       If you have any questions, send a misfin mail to
       clseibold@auragem.letz.dev, or an email to
       christian.seibold32@outlook.com.
       
       Available misfin clients for fetching and reading your mail from your
       mailserver include:
 (HTM) misfinmail
 (HTM) Skylab (works with both misfin-server and cipres' misfin server implementation)
       
       
       Features
       --------
       
       * Basic Geminimail interface to read mail [Sending short mails from
       the interface coming soon]
       * Mailinglists and Newsletters
       * Mailinglist Federation Support
       * GMAP support - a protocol for fetching messages from a mailbox on a
       mailserver (similar to IMAP/POP3)
       * Inbox, Archive, and Trash folders
       * Unread tags, and custom tags
       * Mailinglist Subs can exclude themselves from receiving messages
       with particular labels in their subject
       * Mailinglist permissions to control who can subscribe, who can send
       to the mailinglist, and who can view the mailinglist's archive.
       * Security: Max Concurrent Connections Limit, Rate-limiting (enabled
       by default) [IP Blocking coming soon]
       
       More on GMAP here:
 (HTM) The Gemini-Misfin Access Protocol (GMAP)
       
       
       Misfin Federated Mailinglist
       ----------------------------
       
       We have a federated mailinglist for misfin, hosted by tilde.green,
       AuraGem, and Satch. All three of these servers are federated with each
       other.
 (HTM) Satch.xyz's Instance
 (HTM) Tilde.Green's Instance
 (HTM) AuraGem's Instance
       
       You can setup your own instance of the misfin federated mailinglist
       by contacting Satch, Jmjl, or me on the misfin mailinglist, or via the
       ##misfin libera.chat IRC.
       
       
       AuraGem's Misfin Server
       -----------------------
       
       You can see AuraGem's misfin server geminimail interface here,
       including its public mailinglists:
 (HTM) AuraGem Misfin Geminimail Interface
       
       User mailbox registrations are not open at the moment. Instead, one
       could register at these places:
 (HTM) Satch's Misfin Server
 (HTM) Tilde.Green, Available to Pubnix Members Only
 (HTM) Hashnix.Club Misfin Server
       
       
       Precompiled Binaries
       --------------------
       
       You can find precompiled binaries here, for Linux and Windows:
 (DIR) /g/misfin-server/precompiled/
       
       
       Installing/Building Misfin-Server
       ---------------------------------
       
       To build, install golang and run the following command:
       
       ```
       go install gitlab.com/clseibold/misfin-server/misfin-server@master
       ```
       
       You can also clone the repo and run `go build ./...` instead.
       
       
       Initialization
       --------------
       
       Before you can run the server, you must initialize it. This will
       create your configuration and your certificates. All certificates of
       mailboxes and mailinglists will be stored on the server. To
       initialize, run the init subcommand, giving it an optional filepath to
       save your config to (defaults to current directory):
       
       ```
       misfin-server init [config_filepath]
       ```
       
       When using a custom config_filepath, you will need to pass it to
       every command from here on out.
       
       The init subcommand will interactively guide you through setting up
       your configuration, asking for the hostname, port, bind address, and
       the directory to store mailboxes.
       
       Once this is done, create your first mailbox (see below), and then
       you can start the server with the following command, passing in an
       optional config filepath (defaults to current directory):
       
       ```
       misfin-server serve [config_filepath]
       ```
       
       
       Creating User Mailbox
       ---------------------
       
       You can create a user mailbox by running the following command while
       the server is down:
       
       ```
       misfin-server make mailbox [config_filepath]
       ```
       
       It will interactively prompt you for mailbox information.
       
       You can set your new mailbox to be a server admin by running the
       following command:
       
       ```
       misfin-server config mailbox type admin
       ```
       
       
       Enable the Gemini Interface
       ---------------------------
       
       Misfin-server comes with an optional geminimail interface where users
       can read their mail via gemini. You can enable the gemini interface by
       shutting down the server and running the following command:
       
       ```
       misfin-server config server gemini-permission public
       ```
       
       You can choose to replace "public" with "member-only" or "admin-only"
       to restrict access to the interface to those with mailboxes on the
       mailserver or those who are configured as admins.
       
       Start the server back up. You can now navigate to the gemini
       interface on the misfin port (1958).
       
       
       Allow Registration Via the Gemini Interface
       -------------------------------------------
       
       You can allow registration through the gemini interface by shutting
       down the server and running the following command:
       
       ```
       misfin-server config server gemini-user-registration-permission public
       ```
       
       You can replace "public" with "admin-only" to restrict registration
       to admins only.
       
       
       Creating Mailinglists or Newsletters
       ------------------------------------
       
       An admin can create a mailinglist or newsletter with the `make
       mailinglist` and `make newsletter` subcommands:
       
       ```
       misfin-server make mailinglist [config_filepath]
       ```
       
       The command will guide you through options to setup the new mailbox.
       It will prompt you for two permission settings.
       
       The Send Permission
       
       This permission controls who can send to the mailinglist.
       * Subs - the default for mailinglists. Only subs can send to the
       mailinglist.
       * writers - the default for newsletters. Only designated writers or
       admins can send to the mailinglist.
       * open - anyone can send, even if not a sub.
       
       The Subs Function
       
       This permission controls who can sub and whose subscriptions are
       automatically accepted.
       * accept-all - auto-accepts everyone as a sub who sends a subscribe
       message. Mailinglist will be publicly visible on the gemini interface
       (if enabled), but the archive permission must be set to show the
       archive (see below).
       * accept-server-members - auto-accepts those with a mailbox on the
       same server as the mailinglist.
       * closed - auto-rejects everyone.
       * prompt - prompts the admin to manually accept. This is NOT
       implemented yet.
       
       Setting Writers and Admins on Mailinglists
       
       You can set a sub's type to admin or writer by running the following
       command (while the server is not running):
       
       ```
       misfin-server config mailinglist-sub <mailinglist_name> <sub_address> type admin
       ```
       
       Replace "<mailinglist_name>" with the name of the mailinglist.
       Replace "<sub_address>" with the address of the subscriber you are
       modifying. Options for the user's type include "admin", "writer", or
       "user".
       
       Admins can modify the settings of the mailinglist, delete messages in
       the archive, and can always send to a mailinglist. Writers can send to
       mailinglists when the send permission is set to "writers". User's are
       normal subscribers who may or may not be able to send on the
       mailinglist (depending on the send permission), but can always receive
       messages from the mailinglist.
       
       
       Set Archive View Permission on Mailinglists/Newsletters
       -------------------------------------------------------
       
       You can set the archive view permission on mailinglists to determine
       who is allowed to see the archive of a mailinglist via the gemini
       interface. The subcommand is:
       
       ```
       misfin-server config mailbox <mailinglist_name> archive-view-permission public
       ```
       
       Replace "<mailinglist_name>" with the mailbox name of the
       mailinglist. Options for the permission value include "open", "subs",
       "admin-only", or "disabled". The default is "subs".
       
       
       More Docs
       ---------
       
       You can find more docs on the README document:
 (HTM) https://gitlab.com/clseibold/misfin-server