Unverified Commit 8bc50699 authored by Maximilian Bosch's avatar Maximilian Bosch Committed by GitHub
Browse files

postfix: add sasl authentication tests (#441019)

parents 64334fda 2b50f4e4
Loading
Loading
Loading
Loading
+76 −15
Original line number Diff line number Diff line
@@ -19,6 +19,19 @@ import ./make-test-python.nix {
            certs.${domain}.key
            certs.${domain}.cert
          ];
          smtpd_sasl_auth_enable = "yes";
          cyrus_sasl_config_path =
            let
              smtpdConf = pkgs.writeTextFile {
                name = "smtpd.conf";
                destination = "/etc/sasl2/smtpd.conf";
                text = ''
                  pwcheck_method: saslauthd
                  mech_list: PLAIN LOGIN
                '';
              };
            in
            "${smtpdConf}/etc/sasl2";
        };
        submissionsOptions = {
          smtpd_sasl_auth_enable = "yes";
@@ -26,10 +39,17 @@ import ./make-test-python.nix {
          milter_macro_daemon_name = "ORIGINATING";
        };
      };
      services.saslauthd.enable = true;

      security.pki.certificateFiles = [
        certs.ca.cert
      ];
      security.pam.services = {
        # note: no 'd' on the end!
        smtp = {
          name = "smtp";
        };
      };

      networking.extraHosts = ''
        127.0.0.1 ${domain}
@@ -37,17 +57,16 @@ import ./make-test-python.nix {

      environment.systemPackages =
        let
          sendTestMail = pkgs.writeScriptBin "send-testmail" ''
            #!${pkgs.python3.interpreter}
          sendTestMail = pkgs.writers.writePython3Bin "send-testmail" { } ''
            import smtplib

            with smtplib.SMTP('${domain}') as smtp:
              smtp.sendmail('root@localhost', 'alice@localhost', 'Subject: Test\n\nTest data.')
                smtp.sendmail('root@localhost', 'alice@localhost',
                              'Subject: Test\n\nTest data.')
                smtp.quit()
          '';

          sendTestMailStarttls = pkgs.writeScriptBin "send-testmail-starttls" ''
            #!${pkgs.python3.interpreter}
          sendTestMailStarttls = pkgs.writers.writePython3Bin "send-testmail-starttls" { } ''
            import smtplib
            import ssl

@@ -57,19 +76,55 @@ import ./make-test-python.nix {
                smtp.ehlo()
                smtp.starttls(context=ctx)
                smtp.ehlo()
              smtp.sendmail('root@localhost', 'alice@localhost', 'Subject: Test STARTTLS\n\nTest data.')
                smtp.sendmail('root@localhost', 'alice@localhost',
                              'Subject: Test STARTTLS\n\nTest data.')
                smtp.quit()
          '';

          sendTestMailSmtps = pkgs.writeScriptBin "send-testmail-smtps" ''
            #!${pkgs.python3.interpreter}
          sendTestMailSmtps = pkgs.writers.writePython3Bin "send-testmail-smtps" { } ''
            import smtplib
            import ssl

            ctx = ssl.create_default_context()

            with smtplib.SMTP_SSL(host='${domain}', context=ctx) as smtp:
              smtp.sendmail('root@localhost', 'alice@localhost', 'Subject: Test SMTPS\n\nTest data.')
                smtp.sendmail('root@localhost', 'alice@localhost',
                              'Subject: Test SMTPS\n\nTest data.')
                smtp.quit()
          '';

          auth = pkgs.writers.writePython3Bin "auth" { } ''
            import smtplib

            with smtplib.SMTP('${domain}') as smtp:
                smtp.ehlo()
                smtp.login("alice", "foobar")
                smtp.quit()
          '';

          authStarttls = pkgs.writers.writePython3Bin "authStarttls" { } ''
            import smtplib
            import ssl

            ctx = ssl.create_default_context()

            with smtplib.SMTP('${domain}') as smtp:
                smtp.ehlo()
                smtp.starttls(context=ctx)
                smtp.ehlo()
                smtp.login("alice", "foobar")
                smtp.quit()
          '';

          authSmtps = pkgs.writers.writePython3Bin "authSmtps" { } ''
            import smtplib
            import ssl

            ctx = ssl.create_default_context()

            with smtplib.SMTP_SSL('${domain}', context=ctx) as smtp:
                smtp.ehlo()
                smtp.login("alice", "foobar")
                smtp.quit()
          '';
        in
@@ -77,6 +132,9 @@ import ./make-test-python.nix {
          sendTestMail
          sendTestMailStarttls
          sendTestMailSmtps
          auth
          authStarttls
          authSmtps
        ];
    };

@@ -85,5 +143,8 @@ import ./make-test-python.nix {
    machine.succeed("send-testmail")
    machine.succeed("send-testmail-starttls")
    machine.succeed("send-testmail-smtps")
    machine.succeed("auth")
    machine.succeed("authStarttls")
    machine.succeed("authSmtps")
  '';
}