Почему current thread is not owner? Мьютекс захвачен ! Задачу решил, но не так как в правильном решении. Что такое mail.wait mail.notify почему не просто notify?
synchronized (mail) {
    String name = Thread.currentThread().getName();
    try {
    while (mail.getText() == null) {
            wait();
    }
    long endTime = System.currentTimeMillis();
        System.out.format("%s MailServer received: [%s] in %d ms after start", name, mail.getText(), (endTime - startTime));
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}