Я хотел бы знать, какого поведения следует ожидать, когда я пытаюсь отправить электронное письмо на адрес, где на соответствующем сервере не запущен рабочий экземпляр демона SMTP (по какой-либо причине).
Мое ожидание: Демон почтовой программы, ответственный за исходящий SMTP-запрос, должен обнаружить, что что-то не так, и сгенерировать сообщение об ошибке для отправителя.
Реальность: Почта отправляется без ошибок и вроде бы просто исчезает.
Я знаю, что в основном каждый должен знать, что электронное письмо, отправленное без ошибок, автоматически не означает, что оно доставлено благополучно, но я думаю, что здесь что-то не хватает.
Подробности:
Есть рабочий хост Debian с некоторыми другими запущенными демонами, но, насколько я знаю, ничего не связанного с почтой, так что определенно ничего не прослушивает порт 25. Я только что закончил настройку домена с записью DNS A, указывающей на IP-адрес этот хост, но без каких-либо записей MX, поэтому он вернется к записи A, если я не ошибаюсь.
К сожалению, настройка переадресации адресов электронной почты или управление почтовым сервером - это не то, с чем у меня есть предыдущий опыт, но есть вероятность, что в будущем я, возможно, захочу использовать этот домен и для обработки электронной почты. Поэтому я подумал, что было бы интересно изучить, что произойдет, если без какой-либо предварительной настройки я попытаюсь отправить что-то на адрес вымышленного пользователя в этом домене. Вернется ли он с каким-нибудь разумным сообщением об ошибке? Я пробовал его из Gmail, а также из Proton, но, как упоминалось выше, они прошли без нареканий. И это странно, зная, что на порту 25 нет службы. С telnet я получаю сообщение «Невозможно подключиться к удаленному хосту: соединение отклонено» для порта 25, чего я и ожидал.
Конечно, в этом случае причина недоступности очевидна, но я не думаю, что ситуация сильно изменилась бы, если бы, например, ранее работавший демон SMTP был остановлен или хост отключился.
Так что мне не хватает?
Если этого следует ожидать и не стоит беспокоиться, тогда, я думаю, должно быть ясно, что в таких ситуациях, как моя, нужно настроить демон SMTP, чтобы явно отклонять все входящие сообщения, правильно?
Как упоминалось ниже, оказалось, что я немного нетерпелив, и через некоторое время я получил уведомления, которых не хватало.
Для справки в будущем, ниже были временные интервалы для тех двух служб, которые я пробовал.
GMail:
Озадаченный этим явлением, я попробовал это еще два раза с аналогичными результатами:
Все сообщения сопровождались описанием FAILED_PRECONDITION: connect error (111): Connection refused
, что согласуется с полученным мной ранее ответом Telnet.
ProtonMail:
Опять же, оба сообщения показали Diagnostic-Code: [...] Connection refused
заявление, как и ожидалось.
Если почта отправляется с обычного правильно настроенного почтового сервера, вы не увидите мгновенного сообщения об ошибке. Вы, вероятно, скоро получите его (через 12 часов или около того).
Что происходит: почтовый сервер, принимавший почту от пользователя на ваш сервер debian, помещает это сообщение в очередь. На следующем этапе он пытается очистить эту очередь, инициализируя соединение с SMTP-сервером, подходящим для домена получателя. Вы правы, это будет либо MX, либо A.
Если сообщение не может быть доставлено мгновенно (как в вашем случае), оно будет отложено, и другая попытка будет предпринята через несколько минут / часов / дней. Если эта другая попытка не удалась, вы может получить уведомление почтовой программы deamon о том, что сообщение все еще находится в очереди и не может быть доставлено, но сервер будет продолжать попытки.
Это может длиться около недели. Через неделю сервер предположит, что сообщение не может быть доставлено вообще, и отправит вам уведомление о «возвращенном письме», в котором сообщается, что сообщение не может быть доставлено, и теперь оно удаляется из очереди.
Все эти временные интервалы, о которых я упоминал, зависят от конфигурации почтового сервера, и вы не можете заранее сказать, когда вам будет отправлено первое уведомление и когда сервер прекратит попытки.