diff --git a/src/modules/imap/capabilities.rs b/src/modules/imap/capabilities.rs index 18932c4..24bbf33 100644 --- a/src/modules/imap/capabilities.rs +++ b/src/modules/imap/capabilities.rs @@ -16,7 +16,6 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . - use crate::modules::error::code::ErrorCode; use crate::modules::imap::session::SessionStream; use crate::{modules::error::BichonResult, raise_error}; diff --git a/src/modules/imap/manager.rs b/src/modules/imap/manager.rs index adc512a..15548e9 100644 --- a/src/modules/imap/manager.rs +++ b/src/modules/imap/manager.rs @@ -28,7 +28,7 @@ use crate::modules::imap::client::Client; use crate::modules::imap::oauth2::OAuth2; use crate::modules::imap::session::SessionStream; use crate::modules::oauth2::token::OAuth2AccessToken; -use crate::{decrypt, raise_error}; +use crate::{bichon_version, decrypt, raise_error}; use async_imap::Session; use tracing::error; @@ -143,6 +143,19 @@ impl ImapConnectionManager { .await; return Err(error); } + + if capabilities.has_str("ID") || capabilities.has_str("id") { + session + .id([ + ("name", Some("bichon")), + ("version", Some(bichon_version!())), + ("vendor", Some("rustmailer")), + ]) + .await + .map_err(|e| { + raise_error!(format!("{:#?}", e), ErrorCode::ImapCommandFailed) + })?; + } } Err(error) => { error!("Failed to fetch IMAP capabilities: {:#?}", error);