nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1let
2 certs = import ./common/acme/server/snakeoil-certs.nix;
3 domain = certs.domain;
4in
5import ./make-test-python.nix {
6 name = "postfix";
7
8 nodes.machine =
9 { pkgs, ... }:
10 {
11 imports = [ common/user-account.nix ];
12 services.postfix = {
13 enable = true;
14 enableSubmission = true;
15 enableSubmissions = true;
16 tlsTrustedAuthorities = "${certs.ca.cert}";
17 config.smtpd_tls_chain_files = [
18 certs.${domain}.key
19 certs.${domain}.cert
20 ];
21 submissionsOptions = {
22 smtpd_sasl_auth_enable = "yes";
23 smtpd_client_restrictions = "permit";
24 milter_macro_daemon_name = "ORIGINATING";
25 };
26 };
27
28 security.pki.certificateFiles = [
29 certs.ca.cert
30 ];
31
32 networking.extraHosts = ''
33 127.0.0.1 ${domain}
34 '';
35
36 environment.systemPackages =
37 let
38 sendTestMail = pkgs.writeScriptBin "send-testmail" ''
39 #!${pkgs.python3.interpreter}
40 import smtplib
41
42 with smtplib.SMTP('${domain}') as smtp:
43 smtp.sendmail('root@localhost', 'alice@localhost', 'Subject: Test\n\nTest data.')
44 smtp.quit()
45 '';
46
47 sendTestMailStarttls = pkgs.writeScriptBin "send-testmail-starttls" ''
48 #!${pkgs.python3.interpreter}
49 import smtplib
50 import ssl
51
52 ctx = ssl.create_default_context()
53
54 with smtplib.SMTP('${domain}') as smtp:
55 smtp.ehlo()
56 smtp.starttls(context=ctx)
57 smtp.ehlo()
58 smtp.sendmail('root@localhost', 'alice@localhost', 'Subject: Test STARTTLS\n\nTest data.')
59 smtp.quit()
60 '';
61
62 sendTestMailSmtps = pkgs.writeScriptBin "send-testmail-smtps" ''
63 #!${pkgs.python3.interpreter}
64 import smtplib
65 import ssl
66
67 ctx = ssl.create_default_context()
68
69 with smtplib.SMTP_SSL(host='${domain}', context=ctx) as smtp:
70 smtp.sendmail('root@localhost', 'alice@localhost', 'Subject: Test SMTPS\n\nTest data.')
71 smtp.quit()
72 '';
73 in
74 [
75 sendTestMail
76 sendTestMailStarttls
77 sendTestMailSmtps
78 ];
79 };
80
81 testScript = ''
82 machine.wait_for_unit("postfix.service")
83 machine.succeed("send-testmail")
84 machine.succeed("send-testmail-starttls")
85 machine.succeed("send-testmail-smtps")
86 '';
87}