Compare commits

..

1 commit

Author SHA1 Message Date
a89dab0dbd Add pushing to hrz allowlist 2024-03-31 17:40:46 +02:00

View file

@ -37,7 +37,7 @@ in {
proxy_interfaces = "130.83.2.184"; proxy_interfaces = "130.83.2.184";
smtputf8_enable = "no"; # HRZ does not know SMTPUTF8 smtputf8_enable = "no"; # HRZ does not know SMTPUTF8
}; };
relayHost = "mailout.hrz.tu-darmstadt.de"; # Relay to HRZ (see https://www.hrz.tu-darmstadt.de/services/it_services/email_infrastruktur/index.de.jsp) relayHost = "mailout.hrz.tu-darmstadt.de"; # Relay to HRZ
}; };
mailman = { mailman = {
enable = true; enable = true;
@ -45,12 +45,11 @@ in {
hyperkitty.enable = true; hyperkitty.enable = true;
webHosts = [cfg.hostName]; webHosts = [cfg.hostName];
serve.enable = true; # serve.enable = true; #
# Don't include confirmation tokens in reply addresses, because we would need to send them to HRZ otherwise.
settings.mta.verp_confirmations = "no"; settings.mta.verp_confirmations = "no";
}; };
nginx.virtualHosts.${cfg.hostName} = { nginx.virtualHosts.${cfg.hostName} = {
enableACME = true; # Get certificates (primarily for postfix) enableACME = true;
forceSSL = false; # Don't use HTTPS behind the proxy forceSSL = false;
}; };
}; };
@ -68,23 +67,22 @@ in {
networking.firewall.allowedTCPPorts = [25 80 443]; networking.firewall.allowedTCPPorts = [25 80 443];
# Update HRZ allowlist # Update HRZ allowlist
# For account details see https://www-cgi.hrz.tu-darmstadt.de/mail/ #
# will stop working if no valid TUIDs are associated to our domain.
systemd.timers."mailAllowlist" = { systemd.timers."mailAllowlist" = {
wantedBy = ["timers.target"]; wantedBy = ["timers.target"];
timerConfig = { timerConfig = {
OnBootSec = "5m"; # Run every 5 minutes OnBootSec = "5m"; # Run every 5 minutes
OnUnitActiveSec = "5m"; OnUnitActiveSec = "5m";
RandomizedDelaySec = "2m"; # prevent overload on regular intervals RandomizedDelaySec = "1m"; # Randomized delay
Unit = "mailAllowlist.service"; Unit = "mailAllowlist.service";
}; };
}; };
systemd.services."mailAllowlist" = { systemd.services."mailAllowlist" = {
description = "Allowlist update: Post the mail addresses used by mailman to the HRZ allowllist"; description = "Post the mail addresses used by mailman to the HRZ allow list";
script = '' script = ''
# Get the mail addresses' local-part # Parse addresses
cut -d '@' -f 1 /var/lib/mailman/data/postfix_lmtp | grep -v '#' | grep "\S" > /tmp/addresses cut -d '@' -f 1 /var/lib/mailman/data/postfix_lmtp | grep -v '#' | grep "\S" > /tmp/addresses
# Post local-parts to HRZ # Post addresses to HRZ
${pkgs.curl}/bin/curl https://www-cgi.hrz.tu-darmstadt.de/mail/whitelist-update.php -F emaildomain=lists.mathebau.de -F password=$(cat /run/secrets/allowlistPass) -F emailliste=@/tmp/addresses -F meldungen=voll ${pkgs.curl}/bin/curl https://www-cgi.hrz.tu-darmstadt.de/mail/whitelist-update.php -F emaildomain=lists.mathebau.de -F password=$(cat /run/secrets/allowlistPass) -F emailliste=@/tmp/addresses -F meldungen=voll
# Cleanup # Cleanup
rm /tmp/addresses rm /tmp/addresses