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