public void setSocket(final Socket socket) throws IOException {
        this.socket = socket;
        this.input = this.socket.getInputStream();
        this.reader = new CRLFTerminatedReader(this.input,StandardCharsets.UTF_8);
        this.writer = new PrintWriter(new OutputStreamWriter(this.socket.getOutputStream(), StandardCharsets.UTF_8));

        this.socket.setSoTimeout(CONNECTION_TIMEOUT);
    }
Initializes our reader, writer, and the i/o filter chains based on the
specified socket. This is called internally when we startup and when (if) SSL
is started.
src/main/java/de/gessnerfl/fakesmtp/smtp/server/Session.java