diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/AbstractMailboxSession.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/AbstractMailboxSession.java
index 5d8b45d8d915c7c6b8baee59322a824589fa0375..76dc6cae828467df4e942414226a0b032aff214b 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/AbstractMailboxSession.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/AbstractMailboxSession.java
@@ -35,7 +35,7 @@ import static org.briarproject.bramble.api.transport.TransportConstants.TAG_LENG
 import static org.briarproject.bramble.mailbox.protocol.MailboxMessage.TYPE.END;
 import static org.briarproject.bramble.mailbox.protocol.MailboxMessage.TYPE.SYNC;
 
-public abstract class AbstractMailboxSession implements Runnable {
+public abstract class AbstractMailboxSession implements MailboxSession {
 	private static final Logger LOG =
 			Logger.getLogger(AbstractMailboxSession.class.getName());
 	private final Executor ioExecutor;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxSession.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxSession.java
new file mode 100644
index 0000000000000000000000000000000000000000..82ba19178510f19be201e05321c2614108cf5442
--- /dev/null
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxSession.java
@@ -0,0 +1,12 @@
+package org.briarproject.bramble.mailbox;
+
+import java.io.IOException;
+
+public interface MailboxSession extends Runnable {
+	/**
+	 * Must be called once at the end of a AbstractMailboxSession to signal the end of
+	 * the session to the peer. This call blocks until the remote session
+	 * signals that it was ended.
+	 */
+	void endSession() throws IOException;
+}