diff --git a/internal/user/smtp.go b/internal/user/smtp.go
index 67682f37..b27f6d34 100644
--- a/internal/user/smtp.go
+++ b/internal/user/smtp.go
@@ -66,6 +66,9 @@ func (user *User) sendMail(authID string, from string, to []string, r io.Reader)
return fmt.Errorf("failed to read message: %w", err)
}
+ // If running a QA build, dump to disk.
+ debugDumpToDisk(b)
+
// Compute the hash of the message (to match it against SMTP messages).
hash, err := getMessageHash(b)
if err != nil {
diff --git a/internal/user/smtp_debug.go b/internal/user/smtp_debug.go
new file mode 100644
index 00000000..b9a4e25c
--- /dev/null
+++ b/internal/user/smtp_debug.go
@@ -0,0 +1,35 @@
+// Copyright (c) 2022 Proton AG
+//
+// This file is part of Proton Mail Bridge.
+//
+// Proton Mail Bridge is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Proton Mail Bridge is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Proton Mail Bridge. If not, see .
+
+//go:build build_qa
+
+package user
+
+import (
+ "os"
+ "time"
+)
+
+func debugDumpToDisk(b []byte) {
+ if os.Getenv("BRIDGE_SMTP_DEBUG") == "" {
+ return
+ }
+
+ if err := os.WriteFile(time.Now().Format(time.RFC3339Nano)+"_smtp_debug.eml", b, 0600); err != nil {
+ panic(err)
+ }
+}
diff --git a/internal/user/smtp_default.go b/internal/user/smtp_default.go
new file mode 100644
index 00000000..c5d67c43
--- /dev/null
+++ b/internal/user/smtp_default.go
@@ -0,0 +1,22 @@
+// Copyright (c) 2022 Proton AG
+//
+// This file is part of Proton Mail Bridge.
+//
+// Proton Mail Bridge is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Proton Mail Bridge is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Proton Mail Bridge. If not, see .
+
+//go:build !build_qa
+
+package user
+
+func debugDumpToDisk(b []byte) {}