mox/testdata
Mechiel Lukkien 8804d6b60e
implement tls client certificate authentication
the imap & smtp servers now allow logging in with tls client authentication and
the "external" sasl authentication mechanism. email clients like thunderbird,
fairemail, k9, macos mail implement it. this seems to be the most secure among
the authentication mechanism commonly implemented by clients. a useful property
is that an account can have a separate tls public key for each device/email
client.  with tls client cert auth, authentication is also bound to the tls
connection. a mitm cannot pass the credentials on to another tls connection,
similar to scram-*-plus. though part of scram-*-plus is that clients verify
that the server knows the client credentials.

for tls client auth with imap, we send a "preauth" untagged message by default.
that puts the connection in authenticated state. given the imap connection
state machine, further authentication commands are not allowed. some clients
don't recognize the preauth message, and try to authenticate anyway, which
fails. a tls public key has a config option to disable preauth, keeping new
connections in unauthenticated state, to work with such email clients.

for smtp (submission), we don't require an explicit auth command.

both for imap and smtp, we allow a client to authenticate with another
mechanism than "external". in that case, credentials are verified, and have to
be for the same account as the tls client auth, but the adress can be another
one than the login address configured with the tls public key.

only the public key is used to identify the account that is authenticating. we
ignore the rest of the certificate. expiration dates, names, constraints, etc
are not verified. no certificate authorities are involved.

users can upload their own (minimal) certificate. the account web interface
shows openssl commands you can run to generate a private key, minimal cert, and
a p12 file (the format that email clients seem to like...) containing both
private key and certificate.

the imapclient & smtpclient packages can now also use tls client auth. and so
does "mox sendmail", either with a pem file with private key and certificate,
or with just an ed25519 private key.

there are new subcommands "mox config tlspubkey ..." for
adding/removing/listing tls public keys from the cli, by the admin.
2024-12-06 10:08:17 +01:00
..
ctl add aliases/lists: when sending to an alias, the message gets delivered to all members 2024-04-24 19:15:30 +02:00
dmarc-reports mox! 2023-01-30 14:27:06 +01:00
dmarcdb implement outgoing dmarc aggregate reporting 2023-11-02 09:12:30 +01:00
dsn deprecate having only localparts in an Account's Destinations, it should always be a full email address 2023-03-09 22:13:56 +01:00
httpaccount add aliases/lists: when sending to an alias, the message gets delivered to all members 2024-04-24 19:15:30 +02:00
imap implement tls client certificate authentication 2024-12-06 10:08:17 +01:00
imapserverfuzz for fuzzing the imapserver and smtpserver use different config files than regular tests 2023-05-22 15:37:03 +02:00
imaptest deprecate having only localparts in an Account's Destinations, it should always be a full email address 2023-03-09 22:13:56 +01:00
importtest.maildir add funtionality to import zip/tgz with maildirs/mboxes to account page 2023-02-16 09:57:27 +01:00
integration show the same spf record for a domain in the dnsrecords and dnscheck output/pages 2024-06-28 14:50:39 +02:00
junk mox! 2023-01-30 14:27:06 +01:00
message add pedantic mode (used by localserve) that refuses some behaviour that is invalid according to specifications and that we normally accept for compatibility 2023-03-12 15:16:01 +01:00
queue add a webapi and webhooks for a simple http/json-based api 2024-04-15 21:49:02 +02:00
smtp add aliases/lists: when sending to an alias, the message gets delivered to all members 2024-04-24 19:15:30 +02:00
smtpfromid in smtp submission, if a fromid is present in the mailfrom command, use it when queueing 2024-04-28 13:18:25 +02:00
smtpservercatchall simplify .gitignore, just on line for ignoring all the testdata/*/data directories 2023-11-09 19:47:33 +01:00
smtpserverfuzz for fuzzing the imapserver and smtpserver use different config files than regular tests 2023-05-22 15:37:03 +02:00
smtpserverquota add per-account quota for total message size disk usage 2023-12-20 20:54:12 +01:00
smtpserversendlimit simplify .gitignore, just on line for ignoring all the testdata/*/data directories 2023-11-09 19:47:33 +01:00
smtpsmuggle add faq for smtp smuggling, fix bug around handling "\nX\n" for any X, reject bare carriage returns and possibly smtp-smuggling attempts 2024-01-01 20:11:16 +01:00
store deprecate having only localparts in an Account's Destinations, it should always be a full email address 2023-03-09 22:13:56 +01:00
tlsreports work around missing timezone in timestamps in tls reports from microsoft 2023-02-05 10:55:34 +01:00
tlsrptsend implement outgoing tls reports 2023-11-09 19:47:26 +01:00
web improve http request handling for internal services and multiple domains 2024-05-11 11:13:14 +02:00
webadmin add aliases/lists: when sending to an alias, the message gets delivered to all members 2024-04-24 19:15:30 +02:00
webapisrv add a webapi and webhooks for a simple http/json-based api 2024-04-15 21:49:02 +02:00
webmail webmail: when moving a single message out of/to the inbox, ask if user wants to create a rule to automatically do that server-side for future deliveries 2024-04-21 17:14:08 +02:00
webserver improve http request handling for internal services and multiple domains 2024-05-11 11:13:14 +02:00
websocket add reverse proxying websocket connections 2023-05-30 22:11:31 +02:00
importtest.maildir.tgz implement storing non-system/well-known flags (keywords) for messages and mailboxes, with imap 2023-06-24 00:24:43 +02:00
importtest.mbox add funtionality to import zip/tgz with maildirs/mboxes to account page 2023-02-16 09:57:27 +01:00
importtest.mbox.zip implement storing non-system/well-known flags (keywords) for messages and mailboxes, with imap 2023-06-24 00:24:43 +02:00