Я использую PHP-библиотеку SwiftMailer для массовой отправки писем (в соответствии с CANSPAM и RFC).
Все работает нормально, пока я не перейду через домен, в котором нет соответствующей записи MX в DNS. В этот момент мой скрипт просто зависает - я предполагаю, что это потому, что sendmail не вернулся. Это может длиться всего несколько минут или много часов.
Я подтвердил, что адреса, на которых висит мой сценарий (косая черта sendmail), не содержат DNS-записи MX. Все остальное отправляет нормально.
Есть ли способ проверить, существует ли DNS MX внутри PHP, прежде чем я попытаюсь отправить сообщение? Является ли это масштабируемым (т. Е. Будет ли этот дополнительный поиск в DNS действительно тормозить меня, или это будет нормально, так как в / в то время MX кэшируется локально для использования sendmail при доставке сообщения)?
Спасибо за вашу помощь
--- ОБНОВЛЕНИЕ ---
Я попробовал решения ниже, которые помогли мне сузить, в чем проблема. Кажется, это не вопрос того, существует ли запись MX. Проблема в том, что поиск в DNS требует вечного возврата. Есть ли простой способ установить время ожидания, поэтому, если DNS не вернется через <5 с, я могу двигаться дальше? </p>