@Override
    @PostConstruct
    public synchronized void start() {
        LOGGER.info("SMTP server {} starting", getDisplayableLocalSocketAddress());
        if (this.started) {
            throw new IllegalStateException("SMTPServer can only be started once. Restarting is not allowed even after a proper shutdown.");
        }

        // Create our server socket here.
        ServerSocket serverSocket;
        try {
            serverSocket = this.createServerSocket();
        } catch (final Exception e) {
            throw new FailedToCreateServerSocketException(e);
        }

        final var serverThread = new BaseSmtpServerRunnable(this, serverSocket);
        final var threadBuilder = isVirtualThreadsEnabled() ? Thread.ofVirtual() : Thread.ofPlatform();
        this.serverThread = threadBuilder.name(BaseSmtpServerRunnable.class.getName() + " " + getDisplayableLocalSocketAddress()).start(serverThread);
        this.baseSmtpServerRunnable = serverThread;

        this.started = true;
    }
Call this method to get things rolling after instantiating the SMTPServer.
<p>
An SMTPServer which has been shut down, must not be reused.
src/main/java/de/gessnerfl/fakesmtp/smtp/server/BaseSmtpServer.java