diff --git a/mail-service/pom.xml b/mail-service/pom.xml
index 7de82b12b28eb336acdf7536d076c2ba96ca1e56..f14d9f65234fdf05b9c0f8e83d08a1a9a27397e1 100644
--- a/mail-service/pom.xml
+++ b/mail-service/pom.xml
@@ -30,7 +30,7 @@
 	<parent>
 		<groupId>de.itvsh.kop.common</groupId>
 		<artifactId>kop-common-parent</artifactId>
-		<version>1.7.0</version>
+		<version>2.3.1</version>
 		<relativePath/>
 	</parent>
 
@@ -45,8 +45,7 @@
 		<shedlock.version>4.25.0</shedlock.version>
 		<logcaptor.version>2.7.10</logcaptor.version>
 		<kop.license.version>1.3.0</kop.license.version>
-		<maven-jaxb2-plugin.version>0.15.2</maven-jaxb2-plugin.version>
-		<javax.xml.soap.version>1.4.0</javax.xml.soap.version>
+		<jaxb-maven-plugin.version>3.0.1</jaxb-maven-plugin.version>
 	</properties>
 
 	<dependencies>
@@ -134,8 +133,8 @@
 			<artifactId>commons-lang3</artifactId>
 		</dependency>
 		<dependency>
-			<groupId>org.apache.httpcomponents</groupId>
-			<artifactId>httpclient</artifactId>
+			<groupId>org.apache.httpcomponents.client5</groupId>
+			<artifactId>httpclient5</artifactId>
 		</dependency>
 		<dependency>
 			<groupId>commons-beanutils</groupId>
@@ -205,9 +204,9 @@
 			</plugin>
 
 			<plugin>
-				<groupId>org.jvnet.jaxb2.maven2</groupId>
-				<artifactId>maven-jaxb2-plugin</artifactId>
-				<version>${maven-jaxb2-plugin.version}</version>
+				<groupId>org.jvnet.jaxb</groupId>
+				<artifactId>jaxb-maven-plugin</artifactId>
+				<version>${jaxb-maven-plugin.version}</version>
 				<configuration>
 					<schemas>
 						<schema>
diff --git a/mail-service/src/main/java/de/itvsh/ozg/mail/email/EMailService.java b/mail-service/src/main/java/de/itvsh/ozg/mail/email/EMailService.java
index 63f0afbb546fadefaac2c47a9ab49ba7f17fb721..c49dba5962f2c3493f1f6ce01661438190b328bb 100644
--- a/mail-service/src/main/java/de/itvsh/ozg/mail/email/EMailService.java
+++ b/mail-service/src/main/java/de/itvsh/ozg/mail/email/EMailService.java
@@ -25,9 +25,6 @@ package de.itvsh.ozg.mail.email;
 
 import java.util.Objects;
 
-import javax.mail.MessagingException;
-import javax.mail.internet.MimeMessage;
-
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationEventPublisher;
@@ -38,6 +35,8 @@ import org.springframework.stereotype.Service;
 
 import de.itvsh.kop.common.errorhandling.TechnicalException;
 import de.itvsh.ozg.mail.email.MailSendRequest.MailAttachment;
+import jakarta.mail.MessagingException;
+import jakarta.mail.internet.MimeMessage;
 import lombok.extern.log4j.Log4j2;
 
 @Service
diff --git a/mail-service/src/main/java/de/itvsh/ozg/mail/email/MailSendRequest.java b/mail-service/src/main/java/de/itvsh/ozg/mail/email/MailSendRequest.java
index 12e29155c1724804853d0c79066edb688dfc6635..d690e84d1461884ec24531d15082c7a9531a1466 100644
--- a/mail-service/src/main/java/de/itvsh/ozg/mail/email/MailSendRequest.java
+++ b/mail-service/src/main/java/de/itvsh/ozg/mail/email/MailSendRequest.java
@@ -25,8 +25,7 @@ package de.itvsh.ozg.mail.email;
 
 import java.util.Collection;
 
-import javax.activation.DataSource;
-
+import jakarta.activation.DataSource;
 import lombok.Builder;
 import lombok.Getter;
 import lombok.Singular;
diff --git a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/PostfachNachricht.java b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/PostfachNachricht.java
index 37a0f527ffc294cfbc4df07ab4a01e5bd14cc4c5..d103e02cd56ff3604e8044526086e096f048496d 100644
--- a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/PostfachNachricht.java
+++ b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/PostfachNachricht.java
@@ -27,8 +27,7 @@ import java.time.ZonedDateTime;
 import java.util.Collections;
 import java.util.List;
 
-import javax.validation.constraints.NotNull;
-
+import jakarta.validation.constraints.NotNull;
 import lombok.Builder;
 import lombok.Getter;
 
diff --git a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/PostfachService.java b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/PostfachService.java
index 71d4ab8ef2068c943ccc7b7ed04f889682608447..491d56927460240f3849a05bed9f95c11a078575 100644
--- a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/PostfachService.java
+++ b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/PostfachService.java
@@ -29,8 +29,6 @@ import java.util.Optional;
 import java.util.function.Predicate;
 import java.util.stream.Stream;
 
-import javax.validation.Valid;
-
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationEventPublisher;
@@ -41,6 +39,7 @@ import de.itvsh.ozg.mail.attributes.ClientAttributeService;
 import de.itvsh.ozg.mail.postfach.PostfachNachricht.Direction;
 import de.itvsh.ozg.mail.postfach.osi.OsiPostfachServerProcessException;
 import de.itvsh.ozg.pluto.common.callcontext.CurrentUserService;
+import jakarta.validation.Valid;
 import lombok.NonNull;
 import lombok.extern.log4j.Log4j2;
 
diff --git a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/Absender.java b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/Absender.java
index e6e05510d1993fafd1c266da19e00ce53e614480..72f3fba8a10061b9343e9f6eb8e23447db142692 100644
--- a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/Absender.java
+++ b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/Absender.java
@@ -1,10 +1,7 @@
 package de.itvsh.ozg.mail.postfach.bayernid;
 
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.Pattern;
-
-import org.springframework.boot.context.properties.ConstructorBinding;
-
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Pattern;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Getter;
@@ -12,7 +9,6 @@ import lombok.Getter;
 @Getter
 @Builder
 @AllArgsConstructor
-@ConstructorBinding
 class Absender {
 	@Pattern(regexp = "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}")
 	private String postkorbId;
diff --git a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdConfiguration.java b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdConfiguration.java
index ad9f4be702c9de1b9c44e0049a2bd124e17258dc..a082aa822938148ca5c814aa8244a65e16978a07 100644
--- a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdConfiguration.java
+++ b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdConfiguration.java
@@ -9,16 +9,21 @@ import java.security.NoSuchAlgorithmException;
 import java.security.UnrecoverableKeyException;
 import java.security.cert.CertificateException;
 
-import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
-import org.apache.http.impl.client.HttpClientBuilder;
-import org.apache.http.ssl.SSLContextBuilder;
+import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
+import org.apache.hc.client5.http.impl.io.BasicHttpClientConnectionManager;
+import org.apache.hc.client5.http.io.HttpClientConnectionManager;
+import org.apache.hc.client5.http.socket.ConnectionSocketFactory;
+import org.apache.hc.client5.http.socket.PlainConnectionSocketFactory;
+import org.apache.hc.client5.http.ssl.SSLConnectionSocketFactory;
+import org.apache.hc.core5.http.config.RegistryBuilder;
+import org.apache.hc.core5.ssl.SSLContextBuilder;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.oxm.jaxb.Jaxb2Marshaller;
-import org.springframework.ws.transport.http.HttpComponentsMessageSender;
-import org.springframework.ws.transport.http.HttpComponentsMessageSender.RemoveSoapHeadersInterceptor;
+import org.springframework.ws.transport.http.HttpComponents5MessageSender;
+import org.springframework.ws.transport.http.HttpComponents5MessageSender.RemoveSoapHeadersInterceptor;
 
 @Configuration
 @ConditionalOnProperty(prefix = "ozgcloud.bayernid", name = { "server" })
@@ -48,14 +53,21 @@ class BayernIdConfiguration {
 		return remoteService;
 	}
 
-	HttpComponentsMessageSender initMessageSender()
+	HttpComponents5MessageSender initMessageSender()
 			throws CertificateException, KeyStoreException, NoSuchAlgorithmException, IOException, UnrecoverableKeyException, KeyManagementException {
 
 		var httpClient = HttpClientBuilder.create()
-				.setSSLSocketFactory(createSslConnectionSocketFactory())
-				.addInterceptorFirst(new RemoveSoapHeadersInterceptor())
+				.setConnectionManager(createConnectionManager())
+				.addRequestInterceptorFirst(new RemoveSoapHeadersInterceptor())
 				.build();
-		return new HttpComponentsMessageSender(httpClient);
+		return new HttpComponents5MessageSender(httpClient);
+	}
+
+	private HttpClientConnectionManager createConnectionManager()
+			throws UnrecoverableKeyException, CertificateException, NoSuchAlgorithmException, KeyStoreException, IOException, KeyManagementException {
+		var socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create().register("https", createSslConnectionSocketFactory())
+				.register("http", new PlainConnectionSocketFactory()).build();
+		return new BasicHttpClientConnectionManager(socketFactoryRegistry);
 	}
 
 	private SSLConnectionSocketFactory createSslConnectionSocketFactory()
diff --git a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdPostfachRemoteService.java b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdPostfachRemoteService.java
index 667a96e7285126d2ac38bd1237960564d10145a1..5c0378643d2cda6206c437ffe26323b325f80e68 100644
--- a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdPostfachRemoteService.java
+++ b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdPostfachRemoteService.java
@@ -2,9 +2,6 @@ package de.itvsh.ozg.mail.postfach.bayernid;
 
 import java.util.stream.Stream;
 
-import javax.annotation.PostConstruct;
-import javax.xml.bind.JAXBElement;
-
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.oxm.jaxb.Jaxb2Marshaller;
@@ -20,6 +17,8 @@ import de.akdb.egov.bsp.nachrichten.BspQuittung;
 import de.itvsh.ozg.mail.postfach.PostfachNachricht;
 import de.itvsh.ozg.mail.postfach.PostfachRemoteService;
 import de.itvsh.ozg.mail.postfach.PostfachRuntimeException;
+import jakarta.annotation.PostConstruct;
+import jakarta.xml.bind.JAXBElement;
 import lombok.extern.log4j.Log4j2;
 
 @Log4j2
diff --git a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdProperties.java b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdProperties.java
index 3debbdd2a877e3c977acfd662e28bbd16759fbdb..b6a6b28ab43c85d335cdc4de64cc9c35137ebe99 100644
--- a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdProperties.java
+++ b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdProperties.java
@@ -1,13 +1,12 @@
 package de.itvsh.ozg.mail.postfach.bayernid;
 
-import javax.validation.constraints.NotEmpty;
-
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.validation.annotation.Validated;
 
+import jakarta.validation.constraints.NotEmpty;
 import lombok.Getter;
 import lombok.Setter;
 
diff --git a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/Zertifikat.java b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/Zertifikat.java
index 54a0cd2c89efa2078ebc1c18b5cc63e20277d7d7..0515677768d3c1853e8cfdfc4a0f361bee653cf5 100644
--- a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/Zertifikat.java
+++ b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/Zertifikat.java
@@ -1,6 +1,5 @@
 package de.itvsh.ozg.mail.postfach.bayernid;
 
-import org.springframework.boot.context.properties.ConstructorBinding;
 import org.springframework.core.io.Resource;
 
 import lombok.AllArgsConstructor;
@@ -10,7 +9,6 @@ import lombok.Getter;
 @Getter
 @Builder
 @AllArgsConstructor
-@ConstructorBinding
 class Zertifikat {
 	private Resource keystore;
 	private String password;
diff --git a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/osi/OsiPostfachRemoteService.java b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/osi/OsiPostfachRemoteService.java
index c198740de14dd8a47cbc9fbb25fdb274834c4563..9625d099d758756a2f6787fc49629d03fb75d159 100644
--- a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/osi/OsiPostfachRemoteService.java
+++ b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/osi/OsiPostfachRemoteService.java
@@ -28,8 +28,6 @@ import java.util.Objects;
 import java.util.function.Supplier;
 import java.util.stream.Stream;
 
-import javax.annotation.PostConstruct;
-
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@@ -46,6 +44,7 @@ import de.itvsh.ozg.mail.postfach.PostfachBadRequestException;
 import de.itvsh.ozg.mail.postfach.PostfachNachricht;
 import de.itvsh.ozg.mail.postfach.PostfachRemoteService;
 import de.itvsh.ozg.mail.postfach.PostfachRuntimeException;
+import jakarta.annotation.PostConstruct;
 import lombok.extern.log4j.Log4j2;
 
 @Service
diff --git a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/osi/PostfachConfiguration.java b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/osi/PostfachConfiguration.java
index e86b93e99274c3cc02ff6cef200668e98b224d91..c16330f6374ca7c799dac8261230d85af510d868 100644
--- a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/osi/PostfachConfiguration.java
+++ b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/osi/PostfachConfiguration.java
@@ -26,12 +26,13 @@ package de.itvsh.ozg.mail.postfach.osi;
 import java.util.Objects;
 
 import org.apache.commons.lang3.StringUtils;
-import org.apache.http.HttpHost;
-import org.apache.http.auth.AuthScope;
-import org.apache.http.auth.UsernamePasswordCredentials;
-import org.apache.http.client.CredentialsProvider;
-import org.apache.http.impl.client.BasicCredentialsProvider;
-import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.hc.client5.http.auth.AuthScope;
+import org.apache.hc.client5.http.auth.CredentialsProvider;
+import org.apache.hc.client5.http.auth.UsernamePasswordCredentials;
+import org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider;
+import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
+import org.apache.hc.client5.http.impl.classic.HttpClients;
+import org.apache.hc.core5.http.HttpHost;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.boot.web.client.RestTemplateBuilder;
@@ -77,6 +78,7 @@ public class PostfachConfiguration implements RestTemplateCustomizer {
 				.setProxy(proxy).setDefaultCredentialsProvider(buildCredentialsProvider(proxy))
 				.build();
 
+		HttpClients.custom().build();
 		restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory(httpClient));
 	}
 
@@ -87,10 +89,10 @@ public class PostfachConfiguration implements RestTemplateCustomizer {
 			return null;
 		}
 
-		CredentialsProvider credsProvider = new BasicCredentialsProvider();
+		var credsProvider = new BasicCredentialsProvider();
 		credsProvider.setCredentials(
 				new AuthScope(proxyHost),
-				new UsernamePasswordCredentials(proxyConfig.getUsername(), proxyConfig.getPassword()));
+				new UsernamePasswordCredentials(proxyConfig.getUsername(), proxyConfig.getPassword().toCharArray()));
 		return credsProvider;
 	}
 
diff --git a/mail-service/src/test/java/de/itvsh/ozg/mail/email/EMailServiceTest.java b/mail-service/src/test/java/de/itvsh/ozg/mail/email/EMailServiceTest.java
index 2ef4b812b6e1e691d30ce9379b016f12b35bd028..2912e143e9b7005146a7c49ee6b387c2a3b087bf 100644
--- a/mail-service/src/test/java/de/itvsh/ozg/mail/email/EMailServiceTest.java
+++ b/mail-service/src/test/java/de/itvsh/ozg/mail/email/EMailServiceTest.java
@@ -27,11 +27,6 @@ import static de.itvsh.ozg.mail.email.MailSendRequestTestFactory.*;
 import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
 
-import javax.activation.DataSource;
-import javax.mail.MessagingException;
-import javax.mail.internet.MimeMessage;
-
-import lombok.SneakyThrows;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
@@ -43,7 +38,10 @@ import org.springframework.mail.MailSendException;
 import org.springframework.mail.javamail.JavaMailSender;
 import org.springframework.mail.javamail.MimeMessageHelper;
 
-import java.util.Arrays;
+import jakarta.activation.DataSource;
+import jakarta.mail.MessagingException;
+import jakarta.mail.internet.MimeMessage;
+import lombok.SneakyThrows;
 
 class EMailServiceTest {
 
diff --git a/mail-service/src/test/java/de/itvsh/ozg/mail/email/MailSendRequestTestFactory.java b/mail-service/src/test/java/de/itvsh/ozg/mail/email/MailSendRequestTestFactory.java
index 9e2573785097d7cafded7b59dc1bbe6426200a24..9420e50191ff9f7722f8afe47c3ba94ab06cb2c6 100644
--- a/mail-service/src/test/java/de/itvsh/ozg/mail/email/MailSendRequestTestFactory.java
+++ b/mail-service/src/test/java/de/itvsh/ozg/mail/email/MailSendRequestTestFactory.java
@@ -25,9 +25,8 @@ package de.itvsh.ozg.mail.email;
 
 import java.util.UUID;
 
-import javax.mail.util.ByteArrayDataSource;
-
 import de.itvsh.ozg.mail.email.MailSendRequest.MailAttachment;
+import jakarta.mail.util.ByteArrayDataSource;
 
 class MailSendRequestTestFactory {
 
diff --git a/mail-service/src/test/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdPostfachRemoteServiceTest.java b/mail-service/src/test/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdPostfachRemoteServiceTest.java
index 3db294ce97c6705a1b73a485741e47fb1e94efb7..2e0e8678b7c6340211bcf16abc5685b4eebd2c91 100644
--- a/mail-service/src/test/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdPostfachRemoteServiceTest.java
+++ b/mail-service/src/test/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdPostfachRemoteServiceTest.java
@@ -26,8 +26,6 @@ package de.itvsh.ozg.mail.postfach.bayernid;
 import static org.assertj.core.api.Assertions.*;
 import static org.mockito.Mockito.*;
 
-import javax.xml.bind.JAXBElement;
-
 import org.apache.commons.lang3.StringUtils;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
@@ -42,6 +40,7 @@ import org.springframework.ws.client.core.WebServiceTemplate;
 import akdb.bsp.postkorb.komm.webservice.SendBspNachrichtNativeOutput;
 import de.itvsh.ozg.mail.postfach.PostfachNachrichtTestFactory;
 import de.itvsh.ozg.mail.postfach.PostfachRuntimeException;
+import jakarta.xml.bind.JAXBElement;
 
 class BayernIdPostfachRemoteServiceTest {