diff options
Diffstat (limited to 'hosts/sif')
-rw-r--r-- | hosts/sif/default.nix | 78 | ||||
-rw-r--r-- | hosts/sif/email/default.nix | 111 | ||||
-rw-r--r-- | hosts/sif/email/relay.crt | 11 | ||||
-rw-r--r-- | hosts/sif/email/relay.key | 19 | ||||
-rw-r--r-- | hosts/sif/email/secrets.yaml (renamed from hosts/sif/mail/secrets.yaml) | 0 | ||||
-rw-r--r-- | hosts/sif/hw.nix | 2 | ||||
-rw-r--r-- | hosts/sif/mail/default.nix | 70 |
7 files changed, 170 insertions, 121 deletions
diff --git a/hosts/sif/default.nix b/hosts/sif/default.nix index f4de24e8..b436542f 100644 --- a/hosts/sif/default.nix +++ b/hosts/sif/default.nix | |||
@@ -12,8 +12,8 @@ let | |||
12 | in { | 12 | in { |
13 | imports = with flake.nixosModules.systemProfiles; [ | 13 | imports = with flake.nixosModules.systemProfiles; [ |
14 | ./hw.nix | 14 | ./hw.nix |
15 | ./mail ./libvirt ./greetd | 15 | ./email ./libvirt ./greetd |
16 | tmpfs-root bcachefs initrd-all-crypto-modules default-locale openssh rebuild-machines niri-unstable networkmanager | 16 | tmpfs-root bcachefs initrd-all-crypto-modules default-locale openssh rebuild-machines niri-unstable networkmanager lanzaboote |
17 | flakeInputs.nixos-hardware.nixosModules.lenovo-thinkpad-p1 | 17 | flakeInputs.nixos-hardware.nixosModules.lenovo-thinkpad-p1 |
18 | flakeInputs.impermanence.nixosModules.impermanence | 18 | flakeInputs.impermanence.nixosModules.impermanence |
19 | flakeInputs.nixVirt.nixosModules.default | 19 | flakeInputs.nixVirt.nixosModules.default |
@@ -34,6 +34,10 @@ in { | |||
34 | initrd = { | 34 | initrd = { |
35 | systemd = { | 35 | systemd = { |
36 | emergencyAccess = config.users.users.root.hashedPassword; | 36 | emergencyAccess = config.users.users.root.hashedPassword; |
37 | extraBin = { | ||
38 | "vim" = lib.getExe pkgs.vim; | ||
39 | "grep" = lib.getExe pkgs.gnugrep; | ||
40 | }; | ||
37 | }; | 41 | }; |
38 | luks.devices = { | 42 | luks.devices = { |
39 | nvm0 = { device = "/dev/disk/by-uuid/bef17e86-d929-4a60-97cb-6bfa133face7"; bypassWorkqueues = true; }; | 43 | nvm0 = { device = "/dev/disk/by-uuid/bef17e86-d929-4a60-97cb-6bfa133face7"; bypassWorkqueues = true; }; |
@@ -47,13 +51,8 @@ in { | |||
47 | 51 | ||
48 | blacklistedKernelModules = [ "nouveau" ]; | 52 | blacklistedKernelModules = [ "nouveau" ]; |
49 | 53 | ||
50 | # Use the systemd-boot EFI boot loader. | 54 | lanzaboote.configurationLimit = 15; |
51 | loader = { | 55 | loader = { |
52 | systemd-boot = { | ||
53 | enable = true; | ||
54 | configurationLimit = 15; | ||
55 | netbootxyz.enable = true; | ||
56 | }; | ||
57 | efi.canTouchEfiVariables = true; | 56 | efi.canTouchEfiVariables = true; |
58 | timeout = null; | 57 | timeout = null; |
59 | }; | 58 | }; |
@@ -77,6 +76,14 @@ in { | |||
77 | }; | 76 | }; |
78 | } | 77 | } |
79 | ]; | 78 | ]; |
79 | consoleLogLevel = 3; | ||
80 | kernelParams = [ | ||
81 | "quiet" | ||
82 | "boot.shell_on_fail" | ||
83 | "udev.log_priority=3" | ||
84 | "rd.systemd.show_status=auto" | ||
85 | "plymouth.use-simpledrm" | ||
86 | ]; | ||
80 | 87 | ||
81 | tmp.useTmpfs = true; | 88 | tmp.useTmpfs = true; |
82 | 89 | ||
@@ -98,6 +105,8 @@ in { | |||
98 | server ptbtime2.ptb.de prefer iburst nts | 105 | server ptbtime2.ptb.de prefer iburst nts |
99 | server ptbtime3.ptb.de prefer iburst nts | 106 | server ptbtime3.ptb.de prefer iburst nts |
100 | server ptbtime4.ptb.de prefer iburst nts | 107 | server ptbtime4.ptb.de prefer iburst nts |
108 | pool ntppool1.time.nl prefer iburst nts | ||
109 | pool ntppool2.time.nl prefer iburst nts | ||
101 | 110 | ||
102 | authselectmode require | 111 | authselectmode require |
103 | minsources 3 | 112 | minsources 3 |
@@ -130,6 +139,12 @@ in { | |||
130 | useNetworkd = true; | 139 | useNetworkd = true; |
131 | }; | 140 | }; |
132 | 141 | ||
142 | environment.etc."NetworkManager/dnsmasq.d/dnssec.conf" = { | ||
143 | text = '' | ||
144 | conf-file=${pkgs.dnsmasq}/share/dnsmasq/trust-anchors.conf | ||
145 | dnssec | ||
146 | ''; | ||
147 | }; | ||
133 | environment.etc."NetworkManager/dnsmasq.d/libvirt_dnsmasq.conf" = { | 148 | environment.etc."NetworkManager/dnsmasq.d/libvirt_dnsmasq.conf" = { |
134 | text = '' | 149 | text = '' |
135 | except-interface=virbr0 | 150 | except-interface=virbr0 |
@@ -372,19 +387,6 @@ in { | |||
372 | ]; | 387 | ]; |
373 | 388 | ||
374 | services = { | 389 | services = { |
375 | uucp = { | ||
376 | enable = true; | ||
377 | nodeName = "sif"; | ||
378 | remoteNodes = { | ||
379 | "ymir" = { | ||
380 | publicKeys = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG6KNtsCOl5fsZ4rV7udTulGMphJweLBoKapzerWNoLY root@ymir"]; | ||
381 | hostnames = ["ymir.yggdrasil.li" "ymir.niflheim.yggdrasil"]; | ||
382 | }; | ||
383 | }; | ||
384 | |||
385 | defaultCommands = lib.mkForce []; | ||
386 | }; | ||
387 | |||
388 | avahi.enable = true; | 390 | avahi.enable = true; |
389 | 391 | ||
390 | fwupd.enable = true; | 392 | fwupd.enable = true; |
@@ -403,8 +405,8 @@ in { | |||
403 | 405 | ||
404 | logind = { | 406 | logind = { |
405 | lidSwitch = "suspend"; | 407 | lidSwitch = "suspend"; |
406 | lidSwitchDocked = "lock"; | 408 | lidSwitchDocked = "ignore"; |
407 | lidSwitchExternalPower = "lock"; | 409 | lidSwitchExternalPower = "ignore"; |
408 | }; | 410 | }; |
409 | 411 | ||
410 | atd = { | 412 | atd = { |
@@ -446,11 +448,6 @@ in { | |||
446 | 448 | ||
447 | systemd.tmpfiles.settings = { | 449 | systemd.tmpfiles.settings = { |
448 | "10-localtime"."/etc/localtime".L.argument = "/.bcachefs/etc/localtime"; | 450 | "10-localtime"."/etc/localtime".L.argument = "/.bcachefs/etc/localtime"; |
449 | |||
450 | # "10-regreet"."/var/cache/regreet/cache.toml".C.argument = toString ((pkgs.formats.toml {}).generate "cache.toml" { | ||
451 | # last_user = "gkleen"; | ||
452 | # user_to_last_sess.gkleen = "Niri"; | ||
453 | # }); | ||
454 | }; | 451 | }; |
455 | 452 | ||
456 | users = { | 453 | users = { |
@@ -610,25 +607,6 @@ in { | |||
610 | 607 | ||
611 | environment.etc."X11/xorg.conf.d/50-wacom.conf".source = lib.mkForce ./wacom.conf; | 608 | environment.etc."X11/xorg.conf.d/50-wacom.conf".source = lib.mkForce ./wacom.conf; |
612 | 609 | ||
613 | systemd.services."ac-plugged" = { | ||
614 | description = "Inhibit handling of lid-switch and sleep"; | ||
615 | |||
616 | path = with pkgs; [ systemd coreutils ]; | ||
617 | |||
618 | script = '' | ||
619 | exec systemd-inhibit --what=handle-lid-switch --why="AC is connected" --mode=block sleep infinity | ||
620 | ''; | ||
621 | |||
622 | serviceConfig = { | ||
623 | Type = "simple"; | ||
624 | }; | ||
625 | }; | ||
626 | |||
627 | services.udev.extraRules = with pkgs; lib.mkAfter '' | ||
628 | SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="0", RUN+="${systemd}/bin/systemctl --no-block stop ac-plugged.service" | ||
629 | SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="1", RUN+="${systemd}/bin/systemctl --no-block start ac-plugged.service" | ||
630 | ''; | ||
631 | |||
632 | systemd.services."nix-daemon".serviceConfig = { | 610 | systemd.services."nix-daemon".serviceConfig = { |
633 | MemoryAccounting = true; | 611 | MemoryAccounting = true; |
634 | MemoryHigh = "50%"; | 612 | MemoryHigh = "50%"; |
@@ -688,7 +666,7 @@ in { | |||
688 | directories = [ | 666 | directories = [ |
689 | "/nix" | 667 | "/nix" |
690 | "/root" | 668 | "/root" |
691 | "/home" | 669 | "/home" |
692 | "/var/log" | 670 | "/var/log" |
693 | "/var/lib/sops-nix" | 671 | "/var/lib/sops-nix" |
694 | "/var/lib/nixos" | 672 | "/var/lib/nixos" |
@@ -698,9 +676,9 @@ in { | |||
698 | "/var/lib/bluetooth" | 676 | "/var/lib/bluetooth" |
699 | "/var/lib/upower" | 677 | "/var/lib/upower" |
700 | "/var/lib/postfix" | 678 | "/var/lib/postfix" |
679 | "/var/lib/regreet" | ||
701 | "/etc/NetworkManager/system-connections" | 680 | "/etc/NetworkManager/system-connections" |
702 | { directory = "/var/uucp"; user = "uucp"; group = "uucp"; mode = "0700"; } | 681 | config.boot.lanzaboote.pkiBundle |
703 | { directory = "/var/spool/uucp"; user = "uucp"; group = "uucp"; mode = "0750"; } | ||
704 | ]; | 682 | ]; |
705 | files = [ | 683 | files = [ |
706 | ]; | 684 | ]; |
diff --git a/hosts/sif/email/default.nix b/hosts/sif/email/default.nix new file mode 100644 index 00000000..bebf7980 --- /dev/null +++ b/hosts/sif/email/default.nix | |||
@@ -0,0 +1,111 @@ | |||
1 | { config, lib, pkgs, ... }: | ||
2 | { | ||
3 | services.postfix = { | ||
4 | enable = true; | ||
5 | enableSmtp = false; | ||
6 | enableSubmission = false; | ||
7 | setSendmail = true; | ||
8 | # networksStyle = "host"; | ||
9 | settings.main = { | ||
10 | recpipient_delimiter = "+"; | ||
11 | mydestination = []; | ||
12 | myhostname = "sif.midgard.yggdrasil"; | ||
13 | |||
14 | mydomain = "yggdrasil.li"; | ||
15 | |||
16 | local_transport = "error:5.1.1 No local delivery"; | ||
17 | alias_database = []; | ||
18 | alias_maps = []; | ||
19 | local_recipient_maps = []; | ||
20 | |||
21 | inet_interfaces = "loopback-only"; | ||
22 | |||
23 | message_size_limit = 0; | ||
24 | |||
25 | authorized_submit_users = "inline:{ gkleen= }"; | ||
26 | authorized_flush_users = "inline:{ gkleen= }"; | ||
27 | authorized_mailq_users = "inline:{ gkleen= }"; | ||
28 | |||
29 | smtp_generic_maps = "inline:{ root=root+sif }"; | ||
30 | |||
31 | mynetworks = ["127.0.0.0/8" "[::1]/128"]; | ||
32 | smtpd_client_restrictions = ["permit_mynetworks" "reject"]; | ||
33 | smtpd_relay_restrictions = ["permit_mynetworks" "reject"]; | ||
34 | |||
35 | sender_dependent_default_transport_maps = ''regexp:${pkgs.writeText "sender_relay" '' | ||
36 | /@(cip|stud)\.ifi\.(lmu|uni-muenchen)\.de$/ smtp:smtp.ifi.lmu.de | ||
37 | /@ifi\.(lmu|uni-muenchen)\.de$/ smtp:smtpin1.ifi.lmu.de:587 | ||
38 | /@math(ematik)?\.(lmu|uni-muenchen)\.de$/ smtps:smtp.math.lmu.de:465 | ||
39 | /@(campus\.)?lmu\.de$/ smtp:postout.lrz.de | ||
40 | ''}''; | ||
41 | sender_bcc_maps = ''regexp:${pkgs.writeText "sender_bcc" '' | ||
42 | /^uni2work(-[^@]*)?@ifi\.lmu\.de$/ uni2work@ifi.lmu.de | ||
43 | /@ifi\.lmu\.de$/ gregor.kleen@ifi.lmu.de | ||
44 | ''}''; | ||
45 | relayhost = ["[surtr.yggdrasil.li]:465"]; | ||
46 | default_transport = "relay"; | ||
47 | |||
48 | smtp_sasl_auth_enable = true; | ||
49 | smtp_sender_dependent_authentication = true; | ||
50 | smtp_sasl_tls_security_options = "noanonymous"; | ||
51 | smtp_sasl_mechanism_filter = ["plain"]; | ||
52 | smtp_sasl_password_maps = "regexp:/run/credentials/postfix.service/sasl_passwd"; | ||
53 | smtp_cname_overrides_servername = false; | ||
54 | smtp_always_send_ehlo = true; | ||
55 | smtp_tls_security_level = "dane"; | ||
56 | |||
57 | smtp_tls_loglevel = "1"; | ||
58 | smtp_dns_support_level = "dnssec"; | ||
59 | }; | ||
60 | settings.master = { | ||
61 | submission = { | ||
62 | type = "inet"; | ||
63 | private = false; | ||
64 | command = "smtpd"; | ||
65 | args = [ | ||
66 | "-o" "syslog_name=postfix/$service_name" | ||
67 | ]; | ||
68 | }; | ||
69 | smtp = { }; | ||
70 | smtps = { | ||
71 | type = "unix"; | ||
72 | private = true; | ||
73 | privileged = true; | ||
74 | chroot = false; | ||
75 | command = "smtp"; | ||
76 | args = [ | ||
77 | "-o" "smtp_tls_wrappermode=yes" | ||
78 | "-o" "smtp_tls_security_level=encrypt" | ||
79 | ]; | ||
80 | }; | ||
81 | relay = { | ||
82 | command = "smtp"; | ||
83 | args = [ | ||
84 | "-o" "smtp_fallback_relay=" | ||
85 | "-o" "smtp_tls_security_level=verify" | ||
86 | "-o" "smtp_tls_wrappermode=yes" | ||
87 | "-o" "smtp_tls_cert_file=${./relay.crt}" | ||
88 | "-o" "smtp_tls_key_file=/run/credentials/postfix.service/relay.key" | ||
89 | ]; | ||
90 | }; | ||
91 | }; | ||
92 | }; | ||
93 | |||
94 | systemd.services.postfix = { | ||
95 | serviceConfig.LoadCredential = [ | ||
96 | "sasl_passwd:${config.sops.secrets."postfix-sasl-passwd".path}" | ||
97 | "relay.key:${config.sops.secrets."relay-key".path}" | ||
98 | ]; | ||
99 | }; | ||
100 | |||
101 | sops.secrets = { | ||
102 | postfix-sasl-passwd = { | ||
103 | key = "sasl-passwd"; | ||
104 | sopsFile = ./secrets.yaml; | ||
105 | }; | ||
106 | relay-key = { | ||
107 | format = "binary"; | ||
108 | sopsFile = ./relay.key; | ||
109 | }; | ||
110 | }; | ||
111 | } | ||
diff --git a/hosts/sif/email/relay.crt b/hosts/sif/email/relay.crt new file mode 100644 index 00000000..ac13e7cb --- /dev/null +++ b/hosts/sif/email/relay.crt | |||
@@ -0,0 +1,11 @@ | |||
1 | -----BEGIN CERTIFICATE----- | ||
2 | MIIBjDCCAQygAwIBAgIPQAAAAGgLfNoL/PSMAsutMAUGAytlcTAXMRUwEwYDVQQD | ||
3 | DAx5Z2dkcmFzaWwubGkwHhcNMjUwNDI1MTIwOTQ1WhcNMzUwNDI2MTIxNDQ1WjAR | ||
4 | MQ8wDQYDVQQDDAZna2xlZW4wKjAFBgMrZXADIQB3outi3/3F4YO7Q97WAAaMHW0a | ||
5 | m+Blldrgee+EZnWnD6N1MHMwHwYDVR0jBBgwFoAUTtn+VjMw6Ge1f68KD8dT1CWn | ||
6 | l3YwHQYDVR0OBBYEFFOa4rYZYMbXUVdKv98NB504GUhjMA4GA1UdDwEB/wQEAwID | ||
7 | 6DAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMCMAUGAytlcQNzABC0 | ||
8 | 0UgIt7gLZrU1TmzGoqPBris8R1DbKOJacicF5CU0MIIjHcX7mPFW8KtB4qm6KcPq | ||
9 | kF6IaEPmgKpX3Nubk8HJik9vhIy9ysfINcVTvzXx8pO1bxbvREJRyA/apj10nzav | ||
10 | yauId0cXHvN6g5RLAMsMAA== | ||
11 | -----END CERTIFICATE----- | ||
diff --git a/hosts/sif/email/relay.key b/hosts/sif/email/relay.key new file mode 100644 index 00000000..412a44e0 --- /dev/null +++ b/hosts/sif/email/relay.key | |||
@@ -0,0 +1,19 @@ | |||
1 | { | ||
2 | "data": "ENC[AES256_GCM,data:lBlTuzOS75pvRmcTKT4KhHMH44RlE2SvCFAUP+GfsXws1Uai7DZ1MmbhvxxCa+pcLW19+sQYxrXLRNZWby1yOeKBJ2UQeYV5LOk9LSL/WIE3FZkCo5Dv0O0gSFKjjb61WN22a4JnHbLWADf/mLT3GZv91XfvFDo=,iv:ho8wQH3UNzX9JPW5gVcUGtxZzdVwsMFus0Z4KYe5t48=,tag:dAgZyHOva2xVVhE1nTl+lg==,type:str]", | ||
3 | "sops": { | ||
4 | "age": [ | ||
5 | { | ||
6 | "recipient": "age1rmmhetcmllq0ahl5qznlr0eya2zdxwl9h6y5wnl97d2wtyx5t99sm2u866", | ||
7 | "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB6eTVRSUdFNUZGZmcxSUlT\nWmlsOGNyWXIzMGNTZjlKbXlhcEdZUXFRVkR3Cll0T0RMd0h2UW16QkR3SHlhYmNZ\nNDFrYXh3Rkp5NWsvcWc3UFJJaHVwT1UKLS0tIHhXVEI0VHBZVkpDQ1FzWENjMmJH\nb1FQWXVUUTBiZ1pKWG00MTNqVEo2SjAKK3VOU+QgRuxWYWEcrJiVMRFCprBICz4F\ngD+9zuPUzPezyJkYwTs+M+wX5GYkXppqm5W58yQLS2UDD38sr+SRjg==\n-----END AGE ENCRYPTED FILE-----\n" | ||
8 | }, | ||
9 | { | ||
10 | "recipient": "age1fj65apkhfkrwyv5tx6zcs9nkjg8267fy733qph30sc7zfn7vapjqkd5kne", | ||
11 | "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBzWmJmZDVFazN2bDY1TkNG\nNXpJN2twMFFjZUxMTVdSNzJwQTFiYktrcGdrCjk4eFVHTko0bFVMSlFFWm9tbjMr\nbWNHMEQ1Rm1qUVhodlB1RGw2aDc4TUEKLS0tIERBK0J5NkN4OXJEZ1ZOZXhNc1Jm\naWNnUmZGbTIxdmNkYi9TZ2h2bGs3MVEKPQGaEf7M/5/xvSOfawpIp50fB3QfFSuz\nPgkrPMneaBeUx+uBYMyEFX4rpzLIBR3pnYMjAfoc+bjWaOtGQuEqyQ==\n-----END AGE ENCRYPTED FILE-----\n" | ||
12 | } | ||
13 | ], | ||
14 | "lastmodified": "2025-04-25T12:14:44Z", | ||
15 | "mac": "ENC[AES256_GCM,data:pObl2bJA93az9E3Ya+hA3ekI8TKKZ9NNTi0KzmWZBOiQwi9FuQYtpnmmT80L1KXWyOKJV6wGdAri3mNe/ue2S0TziSbQ/4+Dj4ubFKgkH7thb5q2dFyxw5FzhYzRQiXFqD/pxcNN9uL0lQI2Al0Eci0zX8Kcd1rAQ6RzLEoSmco=,iv:zo/3QFKTUEDxLy1k5yyU7Z1JMZ7cKdYUc6GHjaTTZKQ=,tag:f63Eja3lBfwJCYAOyEt56g==,type:str]", | ||
16 | "unencrypted_suffix": "_unencrypted", | ||
17 | "version": "3.10.2" | ||
18 | } | ||
19 | } | ||
diff --git a/hosts/sif/mail/secrets.yaml b/hosts/sif/email/secrets.yaml index 3c74b710..3c74b710 100644 --- a/hosts/sif/mail/secrets.yaml +++ b/hosts/sif/email/secrets.yaml | |||
diff --git a/hosts/sif/hw.nix b/hosts/sif/hw.nix index 1bcf0261..e567c37d 100644 --- a/hosts/sif/hw.nix +++ b/hosts/sif/hw.nix | |||
@@ -25,7 +25,7 @@ | |||
25 | # system.etc.overlay.enable = false; | 25 | # system.etc.overlay.enable = false; |
26 | 26 | ||
27 | boot.initrd.systemd.packages = [ | 27 | boot.initrd.systemd.packages = [ |
28 | (pkgs.writeTextDir "/etc/systemd/system/\\x2ebcachefs.mount.d/block_scan.conf" '' | 28 | (pkgs.writeTextDir "/etc/systemd/system/sysroot-.bcachefs.mount.d/block_scan.conf" '' |
29 | [Mount] | 29 | [Mount] |
30 | Environment=BCACHEFS_BLOCK_SCAN=1 | 30 | Environment=BCACHEFS_BLOCK_SCAN=1 |
31 | '') | 31 | '') |
diff --git a/hosts/sif/mail/default.nix b/hosts/sif/mail/default.nix deleted file mode 100644 index 8d6cd705..00000000 --- a/hosts/sif/mail/default.nix +++ /dev/null | |||
@@ -1,70 +0,0 @@ | |||
1 | { config, lib, pkgs, ... }: | ||
2 | { | ||
3 | services.postfix = { | ||
4 | enable = true; | ||
5 | enableSmtp = true; | ||
6 | enableSubmission = false; | ||
7 | setSendmail = true; | ||
8 | networksStyle = "host"; | ||
9 | hostname = "sif.midgard.yggdrasil"; | ||
10 | destination = []; | ||
11 | relayHost = "uucp:ymir"; | ||
12 | recipientDelimiter = "+"; | ||
13 | masterConfig = { | ||
14 | uucp = { | ||
15 | type = "unix"; | ||
16 | private = true; | ||
17 | privileged = true; | ||
18 | chroot = false; | ||
19 | command = "pipe"; | ||
20 | args = [ "flags=Fqhu" "user=uucp" ''argv=${config.security.wrapperDir}/uux -z -a $sender - $nexthop!rmail ($recipient)'' ]; | ||
21 | }; | ||
22 | smtps = { | ||
23 | type = "unix"; | ||
24 | private = true; | ||
25 | privileged = true; | ||
26 | chroot = false; | ||
27 | command = "smtp"; | ||
28 | args = [ "-o" "smtp_tls_wrappermode=yes" "-o" "smtp_tls_security_level=encrypt" ]; | ||
29 | }; | ||
30 | }; | ||
31 | config = { | ||
32 | default_transport = "uucp:ymir"; | ||
33 | |||
34 | inet_interfaces = "loopback-only"; | ||
35 | |||
36 | authorized_submit_users = ["!uucp" "static:anyone"]; | ||
37 | message_size_limit = "0"; | ||
38 | |||
39 | sender_dependent_default_transport_maps = ''regexp:${pkgs.writeText "sender_relay" '' | ||
40 | /@(cip|stud)\.ifi\.(lmu|uni-muenchen)\.de$/ smtp:smtp.ifi.lmu.de | ||
41 | /@ifi\.(lmu|uni-muenchen)\.de$/ smtp:smtpin1.ifi.lmu.de:587 | ||
42 | /@math(ematik)?\.(lmu|uni-muenchen)\.de$/ smtps:smtp.math.lmu.de:465 | ||
43 | /@(campus\.)?lmu\.de$/ smtp:postout.lrz.de | ||
44 | ''}''; | ||
45 | sender_bcc_maps = ''regexp:${pkgs.writeText "sender_bcc" '' | ||
46 | /^uni2work(-[^@]*)?@ifi\.lmu\.de$/ uni2work@ifi.lmu.de | ||
47 | /@ifi\.lmu\.de$/ gregor.kleen@ifi.lmu.de | ||
48 | ''}''; | ||
49 | |||
50 | smtp_sasl_auth_enable = true; | ||
51 | smtp_sender_dependent_authentication = true; | ||
52 | smtp_sasl_tls_security_options = "noanonymous"; | ||
53 | smtp_sasl_mechanism_filter = ["plain"]; | ||
54 | smtp_sasl_password_maps = "regexp:/var/db/postfix/sasl_passwd"; | ||
55 | smtp_cname_overrides_servername = false; | ||
56 | smtp_always_send_ehlo = true; | ||
57 | smtp_tls_security_level = "dane"; | ||
58 | |||
59 | smtp_tls_loglevel = "1"; | ||
60 | smtp_dns_support_level = "dnssec"; | ||
61 | }; | ||
62 | }; | ||
63 | |||
64 | sops.secrets.postfix-sasl-passwd = { | ||
65 | key = "sasl-passwd"; | ||
66 | path = "/var/db/postfix/sasl_passwd"; | ||
67 | owner = "postfix"; | ||
68 | sopsFile = ./secrets.yaml; | ||
69 | }; | ||
70 | } | ||