about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--modules/server/mail/default.nix81
-rw-r--r--sys/atuin.nix1
2 files changed, 82 insertions, 0 deletions
diff --git a/modules/server/mail/default.nix b/modules/server/mail/default.nix
new file mode 100644
index 000000000000..5d96223f5d61
--- /dev/null
+++ b/modules/server/mail/default.nix
@@ -0,0 +1,81 @@
+{ lib, pkgs, config, ... }:
+
+let
+  inherit (pkgs) runCommand;
+
+  mailmanCfg = config.services.mailman;
+in
+
+{
+  services.postgresql.enable = true;
+  services.postgresql.ensureDatabases = [ "mailman" ];
+  services.postgresql.ensureUsers = [
+    {
+      name = "mailman";
+      ensurePermissions = {
+        "DATABASE mailman" = "ALL PRIVILEGES";
+      };
+    }
+  ];
+
+  services.mailman.enable = true;
+
+  services.mailman.siteOwner = "postmaster@spectrum-os.org";
+  services.mailman.webHosts = [ "spectrum-os.org" ];
+  services.mailman.hyperkitty.enable = true;
+  services.mailman.hyperkitty.baseUrl = "http://localhost:18507/lists/hyperkitty/";
+  services.mailman.settings.database.class = "mailman.database.postgresql.PostgreSQLDatabase";
+  services.mailman.settings.database.url = "postgres:///mailman";
+  services.mailman.extraConfig = ''
+
+    [antispam]
+    header_checks:
+      X-Spam-Flag: YES
+
+    [logging.template]
+    level: debug
+  '';
+
+  services.mailman.webSettings.ADMINS = [ [ "Alyssa Ross" "hi@alyssa.is" ] ];
+  services.mailman.webSettings.ALLOWED_HOSTS = [ "localhost" "127.0.0.1" "spectrum-os.org" ];
+  services.mailman.webSettings.INSTALLED_APPS = [
+    "hyperkitty"
+    "postorius"
+    "django_mailman3"
+    "django.contrib.admin"
+    "django.contrib.auth"
+    "django.contrib.contenttypes"
+    "django.contrib.sessions"
+    "django.contrib.sites"
+    "django.contrib.messages"
+    "django.contrib.staticfiles"
+    "rest_framework"
+    "django_gravatar"
+    "compressor"
+    "haystack"
+    "django_extensions"
+    "django_q"
+    "allauth"
+    "allauth.account"
+    "allauth.socialaccount"
+  ];
+  services.mailman.webSettings.USE_X_FORWARDED_HOST = true;
+  services.mailman.webSettings.SECURE_PROXY_SSL_HEADER = [ "HTTP_X_FORWARDED_SCHEME" "https" ];
+  services.mailman.webSettings.SESSION_COOKIE_SECURE = true;
+  services.mailman.webSettings.SECURE_CONTENT_TYPE_NOSNIFF = true;
+  services.mailman.webSettings.SECURE_BROWSER_XSS_FILTER = true;
+  services.mailman.webSettings.CSRF_COOKIE_SECURE = true;
+  services.mailman.webSettings.CSRF_COOKIE_HTTPONLY = true;
+  services.mailman.webSettings.LANGUAGE_CODE = "en-gb";
+  services.mailman.webSettings.STATIC_URL = "/lists/static/";
+  services.mailman.webSettings.DEFAULT_FROM_EMAIL = "postmaster@spectrum-os.org";
+  services.mailman.webSettings.SERVER_EMAIL = "postmaster@spectrum-os.org";
+  services.mailman.webSettings.SOCIALACCOUNT_PROVIDERS = null;
+  services.mailman.webSettings.COMPRESS_CSS_HASHING_METHOD = "content";
+  services.mailman.webSettings.FILTER_VHOST = true;
+
+  systemd.services.mailman.after = [ "postgresql.service" ];
+
+  services.mailman.serve.enable = true;
+  services.mailman.serve.virtualRoot = "/lists";
+}
diff --git a/sys/atuin.nix b/sys/atuin.nix
index e1ac6bf612ce..afaea3987d44 100644
--- a/sys/atuin.nix
+++ b/sys/atuin.nix
@@ -127,6 +127,7 @@ in
     ../modules/server/ftp
     ../modules/server/git-http-backend
     ../modules/server/irc
+    ../modules/server/mail
     ../modules/server/nginx
     ../modules/server/nixpk.gs
     ../modules/server/pushmail