Xfce updates 2024-12-27 (#368555)
[NixPkgs.git] / nixos / tests / maddy / unencrypted.nix
blob0e66d4059549df2f080f49d543775e7c2df2287e
1 import ../make-test-python.nix (
2   { pkgs, ... }:
3   {
4     name = "maddy-unencrypted";
5     meta = with pkgs.lib.maintainers; {
6       maintainers = [ onny ];
7     };
9     nodes = {
10       server =
11         { ... }:
12         {
13           services.maddy = {
14             enable = true;
15             hostname = "server";
16             primaryDomain = "server";
17             openFirewall = true;
18             ensureAccounts = [ "postmaster@server" ];
19             ensureCredentials = {
20               # Do not use this in production. This will make passwords world-readable
21               # in the Nix store
22               "postmaster@server".passwordFile = "${pkgs.writeText "postmaster" "test"}";
23             };
24           };
25         };
27       client =
28         { ... }:
29         {
30           environment.systemPackages = [
31             (pkgs.writers.writePython3Bin "send-testmail" { } ''
32               import smtplib
33               from email.mime.text import MIMEText
35               msg = MIMEText("Hello World")
36               msg['Subject'] = 'Test'
37               msg['From'] = "postmaster@server"
38               msg['To'] = "postmaster@server"
39               with smtplib.SMTP('server', 587) as smtp:
40                   smtp.login('postmaster@server', 'test')
41                   smtp.sendmail('postmaster@server', 'postmaster@server', msg.as_string())
42             '')
43             (pkgs.writers.writePython3Bin "test-imap" { } ''
44               import imaplib
46               with imaplib.IMAP4('server') as imap:
47                   imap.login('postmaster@server', 'test')
48                   imap.select()
49                   status, refs = imap.search(None, 'ALL')
50                   assert status == 'OK'
51                   assert len(refs) == 1
52                   status, msg = imap.fetch(refs[0], 'BODY[TEXT]')
53                   assert status == 'OK'
54                   assert msg[0][1].strip() == b"Hello World"
55             '')
56           ];
57         };
58     };
60     testScript = ''
61       start_all()
62       server.wait_for_unit("maddy.service")
63       server.wait_for_open_port(143)
64       server.wait_for_open_port(587)
65       client.succeed("send-testmail")
66       client.succeed("test-imap")
67     '';
68   }