diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxManager.java
index 14480c3f6eb44bff3c9e08053ccbc33a4d1acd12..2a1bf7807b76460f53f88a8e95e503a9f94761a9 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxManager.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxManager.java
@@ -7,8 +7,6 @@ import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
 import org.briarproject.bramble.api.transport.StreamContext;
 
-import javax.annotation.Nullable;
-
 public interface MailboxManager {
 	/**
 	 * Connection to a contact's mailbox
@@ -23,24 +21,16 @@ public interface MailboxManager {
 	void handleOutgoingPrivateMailboxConnection(ContactId contactId,
 			DuplexTransportConnection connection, TransportId transportId);
 
-	/**
-	 * Connection from Owner to mailbox
-	 */
-	void handleIncomingMailboxOwnerConnection(StreamContext ctx,
-			TransportId transportId, TransportConnectionReader reader,
-			TransportConnectionWriter writer);
-
-	/**
-	 * Connection from contact (of owner) to mailbox
-	 */
-	void handleInomingOwnerContactConnection(StreamContext ctx,
-			TransportId transportId, TransportConnectionReader reader,
-			TransportConnectionWriter writer);
-
 	/**
 	 * Contacts without private mailbox which have been introduced
 	 * to private mailbox
 	 */
 	void handleContactWithoutMailbox(MailboxInfo mailboxInfo);
+
+	/**
+	 * Handle incoming connections from owner or contacts
+	 */
+	void handleIncomingConnection(StreamContext ctx, TransportId transportId,
+			TransportConnectionReader reader, TransportConnectionWriter writer);
 }
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxManagerImpl.java
index f5b3da2f693d19ec2f8d1ec470c92812d9193fa1..0b719a29257351f8405ab1b8e9c27117e861e751 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxManagerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxManagerImpl.java
@@ -6,7 +6,9 @@ import org.briarproject.bramble.api.data.BdfReader;
 import org.briarproject.bramble.api.data.BdfReaderFactory;
 import org.briarproject.bramble.api.data.BdfWriter;
 import org.briarproject.bramble.api.data.BdfWriterFactory;
+import org.briarproject.bramble.api.db.DatabaseComponent;
 import org.briarproject.bramble.api.db.DbException;
+import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
 import org.briarproject.bramble.api.mailbox.MailboxInfo;
 import org.briarproject.bramble.api.mailbox.MailboxManager;
@@ -36,7 +38,10 @@ import java.util.logging.Logger;
 import javax.inject.Inject;
 
 import static java.util.logging.Level.WARNING;
-import static org.briarproject.bramble.api.contact.ContactType.*;
+import static org.briarproject.bramble.api.contact.ContactType.CONTACT_MAILBOX;
+import static org.briarproject.bramble.api.contact.ContactType.MAILBOX_CONTACT;
+import static org.briarproject.bramble.api.contact.ContactType.MAILBOX_OWNER;
+import static org.briarproject.bramble.api.contact.ContactType.PRIVATE_MAILBOX;
 import static org.briarproject.bramble.api.transport.TransportConstants.TAG_LENGTH;
 import static org.briarproject.bramble.util.LogUtils.logException;
 
@@ -44,6 +49,7 @@ public class MailboxManagerImpl implements MailboxManager {
 	private static final Logger LOG =
 			Logger.getLogger(MailboxManagerImpl.class.getName());
 	private Executor ioExecutor;
+	private final DatabaseComponent db;
 	private MailboxSessionFactory mailboxSessionFactory;
 	private ConnectionRegistry connectionRegistry;
 	private StreamWriterFactory streamWriterFactory;
@@ -57,6 +63,7 @@ public class MailboxManagerImpl implements MailboxManager {
 
 	@Inject
 	public MailboxManagerImpl(@IoExecutor Executor ioExecutor,
+			DatabaseComponent db,
 			KeyManager keyManager, MailboxSessionFactory mailboxSessionFactory,
 			ConnectionRegistry connectionRegistry,
 			StreamWriterFactory streamWriterFactory,
@@ -64,6 +71,7 @@ public class MailboxManagerImpl implements MailboxManager {
 			BdfReaderFactory bdfReaderFactory,
 			BdfWriterFactory bdfWriterFactory) {
 		this.ioExecutor = ioExecutor;
+		this.db = db;
 		this.keyManager = keyManager;
 		this.mailboxSessionFactory = mailboxSessionFactory;
 		this.connectionRegistry = connectionRegistry;
@@ -90,8 +98,7 @@ public class MailboxManagerImpl implements MailboxManager {
 						PRIVATE_MAILBOX, contactId));
 	}
 
-	@Override
-	public void handleIncomingMailboxOwnerConnection(StreamContext ctx,
+	private void handleIncomingMailboxOwnerConnection(StreamContext ctx,
 			TransportId transportId, TransportConnectionReader reader,
 			TransportConnectionWriter writer) {
 
@@ -100,8 +107,7 @@ public class MailboxManagerImpl implements MailboxManager {
 						MAILBOX_OWNER));
 	}
 
-	@Override
-	public void handleInomingOwnerContactConnection(StreamContext ctx,
+	private void handleIncomingOwnerContactConnection(StreamContext ctx,
 			TransportId transportId, TransportConnectionReader reader,
 			TransportConnectionWriter writer) {
 		ioExecutor.execute(
@@ -121,6 +127,40 @@ public class MailboxManagerImpl implements MailboxManager {
 						.handleContactWithoutPrivateMailbox(mailboxInfo));
 	}
 
+	@Override
+	public void handleIncomingConnection(StreamContext ctx,
+			TransportId transportId, TransportConnectionReader reader,
+			TransportConnectionWriter writer) {
+		Transaction txn = null;
+		try {
+			txn = db.startTransaction(true);
+			ContactType type = db.getContactType(txn, ctx.getContactId());
+			switch (type) {
+				case MAILBOX_OWNER:
+					handleIncomingMailboxOwnerConnection(ctx,
+							transportId, reader, writer);
+					return;
+				case CONTACT:
+					handleIncomingOwnerContactConnection(ctx,
+							transportId, reader, writer);
+					return;
+			}
+			db.commitTransaction(txn);
+		} catch (DbException e) {
+			logException(LOG, WARNING, e);
+			try {
+				reader.dispose(true, true);
+			} catch (IOException ioException) {
+				logException(LOG, WARNING, ioException);
+			}
+			return;
+		} finally {
+			if (txn != null)
+				db.endTransaction(txn);
+		}
+
+	}
+
 	private class ManageMailboxConnection implements Runnable {
 		private boolean incoming;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/ConnectionManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/ConnectionManagerImpl.java
index 91847693c728c55af9c58b6387f2f67855848cc2..bfd3d59124452490c7e9afe8b25c75b0c8754154 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/ConnectionManagerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/ConnectionManagerImpl.java
@@ -1,10 +1,9 @@
 package org.briarproject.bramble.plugin;
 
+import org.briarproject.bramble.api.BrambleConfig;
 import org.briarproject.bramble.api.contact.ContactId;
-import org.briarproject.bramble.api.contact.ContactType;
 import org.briarproject.bramble.api.db.DatabaseComponent;
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
 import org.briarproject.bramble.api.mailbox.MailboxManager;
 import org.briarproject.bramble.api.plugin.ConnectionManager;
@@ -42,6 +41,7 @@ class ConnectionManagerImpl implements ConnectionManager {
 	private final KeyManager keyManager;
 	private final MailboxManager mailboxManager;
 	private final DatabaseComponent db;
+	private final BrambleConfig brambleConfig;
 	private final StreamReaderFactory streamReaderFactory;
 	private final StreamWriterFactory streamWriterFactory;
 	private final SyncSessionFactory syncSessionFactory;
@@ -52,6 +52,7 @@ class ConnectionManagerImpl implements ConnectionManager {
 			KeyManager keyManager,
 			MailboxManager mailboxManager,
 			DatabaseComponent db,
+			BrambleConfig brambleConfig,
 			StreamReaderFactory streamReaderFactory,
 			StreamWriterFactory streamWriterFactory,
 			SyncSessionFactory syncSessionFactory,
@@ -60,6 +61,7 @@ class ConnectionManagerImpl implements ConnectionManager {
 		this.keyManager = keyManager;
 		this.mailboxManager = mailboxManager;
 		this.db = db;
+		this.brambleConfig = brambleConfig;
 		this.streamReaderFactory = streamReaderFactory;
 		this.streamWriterFactory = streamWriterFactory;
 		this.syncSessionFactory = syncSessionFactory;
@@ -267,31 +269,13 @@ class ConnectionManagerImpl implements ConnectionManager {
 				disposeReader(false, false);
 				return;
 			}
-			contactId = ctx.getContactId();
-			Transaction txn = null;
-			try {
-				txn = db.startTransaction(true);
-				ContactType type = db.getContactType(txn, contactId);
-				switch (type) {
-					case MAILBOX_OWNER:
-						mailboxManager.handleIncomingMailboxOwnerConnection(ctx,
-								transportId, reader, writer);
-						return;
-					case MAILBOX_CONTACT:
-						mailboxManager.handleInomingOwnerContactConnection(ctx,
-								transportId, reader, writer);
-						return;
-				}
-				db.commitTransaction(txn);
-			} catch (DbException e) {
-				logException(LOG, WARNING, e);
-				disposeReader(true, true);
+			if (brambleConfig.isMailbox()) {
+				mailboxManager
+						.handleIncomingConnection(ctx, transportId, reader,
+								writer);
 				return;
-			}finally {
-				if (txn != null)
-					db.endTransaction(txn);
 			}
-
+			contactId = ctx.getContactId();
 			connectionRegistry.registerConnection(contactId, transportId, true);
 			// Start the outgoing session on another thread
 			ioExecutor.execute(this::runOutgoingSession);