diff --git a/goofy-server/src/main/java/de/itvsh/goofy/common/RegexUtil.java b/goofy-server/src/main/java/de/itvsh/goofy/common/RegexUtil.java
new file mode 100644
index 0000000000000000000000000000000000000000..a2515e95649b80ee8860c35cdcd62c52fc28f334
--- /dev/null
+++ b/goofy-server/src/main/java/de/itvsh/goofy/common/RegexUtil.java
@@ -0,0 +1,10 @@
+package de.itvsh.goofy.common;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public class RegexUtil {
+
+	public static final String VALIDATION_EMAIL = "[a-z0-9!#$%&'*+\\/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+\\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?";
+}
\ No newline at end of file
diff --git a/goofy-server/src/main/java/de/itvsh/goofy/vorgang/RedirectRequest.java b/goofy-server/src/main/java/de/itvsh/goofy/vorgang/RedirectRequest.java
index ce9be39a56474cd274e8c21c72a155b6e93c467c..091a2c17ed6d4384b98592c3924aa9ef0462fa98 100644
--- a/goofy-server/src/main/java/de/itvsh/goofy/vorgang/RedirectRequest.java
+++ b/goofy-server/src/main/java/de/itvsh/goofy/vorgang/RedirectRequest.java
@@ -2,15 +2,28 @@ package de.itvsh.goofy.vorgang;
 
 import static de.itvsh.goofy.common.ValidationMessageCodes.*;
 
-import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Email;
+import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.Size;
 
+import de.itvsh.goofy.common.RegexUtil;
+import lombok.AccessLevel;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+
+@Getter
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+@AllArgsConstructor(access = AccessLevel.PACKAGE)
+@ToString
 public class RedirectRequest {
 
-	@NotNull(message = FIELD_IS_NULL)
+	@Email(regexp = RegexUtil.VALIDATION_EMAIL, message = FIELD_INVALID)
+	@NotEmpty(message = FIELD_IS_EMPTY)
 	private String email;
 
-	@NotNull(message = FIELD_IS_NULL)
 	@Size(min = 8, message = FIELD_SIZE)
+	@NotEmpty(message = FIELD_IS_EMPTY)
 	private String password;
 }
\ No newline at end of file
diff --git a/goofy-server/src/test/java/de/itvsh/goofy/common/RegexUtilTest.java b/goofy-server/src/test/java/de/itvsh/goofy/common/RegexUtilTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..4511f2563f5b4948039d46f0b9762bf3fc69b131
--- /dev/null
+++ b/goofy-server/src/test/java/de/itvsh/goofy/common/RegexUtilTest.java
@@ -0,0 +1,46 @@
+package de.itvsh.goofy.common;
+
+import static org.assertj.core.api.Assertions.*;
+
+import java.util.regex.Pattern;
+
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.ValueSource;
+
+public class RegexUtilTest {
+
+	@Nested
+	class TestValidationEMail {
+
+		private final String REGEX = RegexUtil.VALIDATION_EMAIL;
+
+		@ParameterizedTest
+		@ValueSource(strings = {
+				"localpart@domain.com",
+				"local-part-1234567890!#$%&'*+/=?^_`{|}~-.'/&%*@domain.com",
+				"local-part-@domain.domain.com",
+				"l@d.c"
+		})
+		void shoulMatchValidEMail(String eMail) {
+			boolean match = Pattern.matches(REGEX, eMail);
+
+			assertThat(match).isTrue();
+		}
+
+		@ParameterizedTest
+		@ValueSource(strings = {
+				"local-part@",
+				"local@part@domain.com",
+				"local@part@",
+				"@domain.com",
+				"local@part@domain.com",
+				"local@@domain.com",
+				"local@domaincom" })
+		void shoulNotMatchInvalidEmail(String eMail) {
+			boolean match = Pattern.matches(REGEX, eMail);
+
+			assertThat(match).isFalse();
+		}
+	}
+}
\ No newline at end of file