From 414a1434e09071a25bb8ca3c33ac41a57a77eb73 Mon Sep 17 00:00:00 2001 From: mdecimus Date: Sun, 25 Feb 2024 19:27:29 +0100 Subject: [PATCH] Add allow plain text auth on ManageSieve --- crates/managesieve/src/core/client.rs | 2 +- crates/managesieve/src/op/capability.rs | 6 ++++-- resources/config/imap/listener.toml | 1 - 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/crates/managesieve/src/core/client.rs b/crates/managesieve/src/core/client.rs index 5aaf8a5d..77373613 100644 --- a/crates/managesieve/src/core/client.rs +++ b/crates/managesieve/src/core/client.rs @@ -114,7 +114,7 @@ impl Session { Command::Capability | Command::Logout | Command::Noop => Ok(command), Command::Authenticate => { if let State::NotAuthenticated { .. } = &self.state { - if self.stream.is_tls() { + if self.stream.is_tls() || self.imap.allow_plain_auth { Ok(command) } else { Err(StatusResponse::no("Cannot authenticate over plain-text.") diff --git a/crates/managesieve/src/op/capability.rs b/crates/managesieve/src/op/capability.rs index 27013c68..8f1998d4 100644 --- a/crates/managesieve/src/op/capability.rs +++ b/crates/managesieve/src/op/capability.rs @@ -34,10 +34,12 @@ impl Session { response.extend_from_slice(b"\"\r\n"); response.extend_from_slice(b"\"VERSION\" \"1.0\"\r\n"); if !self.stream.is_tls() { - response.extend_from_slice(b"\"SASL\" \"\"\r\n"); response.extend_from_slice(b"\"STARTTLS\"\r\n"); - } else { + } + if self.stream.is_tls() || self.imap.allow_plain_auth { response.extend_from_slice(b"\"SASL\" \"PLAIN OAUTHBEARER\"\r\n"); + } else { + response.extend_from_slice(b"\"SASL\" \"\"\r\n"); }; if let Some(sieve) = self .jmap diff --git a/resources/config/imap/listener.toml b/resources/config/imap/listener.toml index 9e207e5f..8f4d6357 100644 --- a/resources/config/imap/listener.toml +++ b/resources/config/imap/listener.toml @@ -14,4 +14,3 @@ tls.implicit = true [server.listener."sieve"] bind = ["[::]:4190"] protocol = "managesieve" -tls.implicit = true