@Override
    public void run() {
        MDC.setContextMap(parentLoggingMdcContext);
        sessionId = server.getSessionIdFactory().create();
        MDC.put("SessionId", sessionId);
        final String originalName;
        originalName = Thread.currentThread().getName();
        Thread.currentThread()
                .setName(Session.class.getName() + "-" + socket.getInetAddress() + ":" + socket.getPort());

        logDebugDetailsOnRun();

        try {
            runCommandLoop();
        } catch (final IOException e1) {
            handleIOExceptionOnRun(e1);
        } catch (final Exception e) {
            handleExceptionDuringRun(e);
        } finally {
            onRunCompleted(originalName);
        }
    }
The thread for each session runs on this and shuts down when the quitting
member goes true.
src/main/java/de/gessnerfl/fakesmtp/smtp/server/Session.java