python312Packages.millheater: 0.11.8 -> 0.12.0
[NixPkgs.git] / nixos / tests / postfix.nix
blob1dbe6a4c519344c321b489bbd6aa3e15a4143d9d
1 let
2   certs = import ./common/acme/server/snakeoil-certs.nix;
3   domain = certs.domain;
4 in
5 import ./make-test-python.nix {
6   name = "postfix";
8   nodes.machine = { pkgs, ... }: {
9     imports = [ common/user-account.nix ];
10     services.postfix = {
11       enable = true;
12       enableSubmission = true;
13       enableSubmissions = true;
14       tlsTrustedAuthorities = "${certs.ca.cert}";
15       sslCert = "${certs.${domain}.cert}";
16       sslKey = "${certs.${domain}.key}";
17       submissionsOptions = {
18           smtpd_sasl_auth_enable = "yes";
19           smtpd_client_restrictions = "permit";
20           milter_macro_daemon_name = "ORIGINATING";
21       };
22     };
24     security.pki.certificateFiles = [
25       certs.ca.cert
26     ];
28     networking.extraHosts = ''
29       127.0.0.1 ${domain}
30     '';
32     environment.systemPackages = let
33       sendTestMail = pkgs.writeScriptBin "send-testmail" ''
34         #!${pkgs.python3.interpreter}
35         import smtplib
37         with smtplib.SMTP('${domain}') as smtp:
38           smtp.sendmail('root@localhost', 'alice@localhost', 'Subject: Test\n\nTest data.')
39           smtp.quit()
40       '';
42       sendTestMailStarttls = pkgs.writeScriptBin "send-testmail-starttls" ''
43         #!${pkgs.python3.interpreter}
44         import smtplib
45         import ssl
47         ctx = ssl.create_default_context()
49         with smtplib.SMTP('${domain}') as smtp:
50           smtp.ehlo()
51           smtp.starttls(context=ctx)
52           smtp.ehlo()
53           smtp.sendmail('root@localhost', 'alice@localhost', 'Subject: Test STARTTLS\n\nTest data.')
54           smtp.quit()
55       '';
57       sendTestMailSmtps = pkgs.writeScriptBin "send-testmail-smtps" ''
58         #!${pkgs.python3.interpreter}
59         import smtplib
60         import ssl
62         ctx = ssl.create_default_context()
64         with smtplib.SMTP_SSL(host='${domain}', context=ctx) as smtp:
65           smtp.sendmail('root@localhost', 'alice@localhost', 'Subject: Test SMTPS\n\nTest data.')
66           smtp.quit()
67       '';
68     in [ sendTestMail sendTestMailStarttls sendTestMailSmtps ];
69   };
71   testScript = ''
72     machine.wait_for_unit("postfix.service")
73     machine.succeed("send-testmail")
74     machine.succeed("send-testmail-starttls")
75     machine.succeed("send-testmail-smtps")
76   '';