diff options
| author | manuel <manuel@mausz.at> | 2022-05-19 11:52:04 +0200 |
|---|---|---|
| committer | manuel <manuel@mausz.at> | 2022-05-19 11:52:04 +0200 |
| commit | 026d6c79538ad9dbe646f3ee5559470419583fe9 (patch) | |
| tree | 1895efa58c91c58c20b1962147452b3a83ad8355 | |
| parent | 34bc44373eed99e37cbcd00bb528bcdabc1461f9 (diff) | |
| download | qmail-026d6c79538ad9dbe646f3ee5559470419583fe9.tar.gz qmail-026d6c79538ad9dbe646f3ee5559470419583fe9.tar.bz2 qmail-026d6c79538ad9dbe646f3ee5559470419583fe9.zip | |
SMTP: add support for required TLS
| -rw-r--r-- | qmail-smtpd.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/qmail-smtpd.c b/qmail-smtpd.c index 7867197..f038314 100644 --- a/qmail-smtpd.c +++ b/qmail-smtpd.c | |||
| @@ -80,6 +80,7 @@ void tls_nogateway(); | |||
| 80 | int ssl_rfd = -1, ssl_wfd = -1; /* SSL_get_Xfd() are broken */ | 80 | int ssl_rfd = -1, ssl_wfd = -1; /* SSL_get_Xfd() are broken */ |
| 81 | stralloc proto = {0}; | 81 | stralloc proto = {0}; |
| 82 | int tls_before_auth = 0; | 82 | int tls_before_auth = 0; |
| 83 | int tls_require = 0; | ||
| 83 | #endif | 84 | #endif |
| 84 | 85 | ||
| 85 | #ifdef SMTPUTF8 | 86 | #ifdef SMTPUTF8 |
| @@ -345,6 +346,7 @@ void setup() | |||
| 345 | 346 | ||
| 346 | #ifdef TLS | 347 | #ifdef TLS |
| 347 | if (env_get("TLSBEFOREAUTH")) tls_before_auth = 1; | 348 | if (env_get("TLSBEFOREAUTH")) tls_before_auth = 1; |
| 349 | if (env_get("TLSREQUIRE")) tls_require = 1; | ||
| 348 | if (env_get("SMTPS")) { smtps = 1; tls_init(); } | 350 | if (env_get("SMTPS")) { smtps = 1; tls_init(); } |
| 349 | else | 351 | else |
| 350 | #endif | 352 | #endif |
| @@ -724,6 +726,9 @@ void smtp_rset(arg) char *arg; | |||
| 724 | void smtp_mail(arg) char *arg; | 726 | void smtp_mail(arg) char *arg; |
| 725 | { | 727 | { |
| 726 | if (!seenhelo) { err_wanthelo(); return; } | 728 | if (!seenhelo) { err_wanthelo(); return; } |
| 729 | #if defined(TLS) | ||
| 730 | if (tls_require && !ssl) { err_wantstarttls(); return; } | ||
| 731 | #endif | ||
| 727 | if (!addrparse(arg)) { err_syntax(); return; } | 732 | if (!addrparse(arg)) { err_syntax(); return; } |
| 728 | flagsize = 0; | 733 | flagsize = 0; |
| 729 | mailfrom_parms(arg); | 734 | mailfrom_parms(arg); |
