PHP の SwiftMailer ライブラリを使用してメールを一括送信しています (CANSPAM および RFC に従っています)。
DNS に対応する MX エントリがないドメインに遭遇するまで、すべて正常に動作します。その時点で、私のスクリプトはただハングします。おそらく、sendmail が戻ってこないからだと思います。これは、ほんの数分続くこともあれば、何時間も続くこともあります。
スクリプト (スラッシュ sendmail) がハングするアドレスは、DNS MX エントリのないアドレスであることを確認しました。それ以外は問題なく送信されます。
メッセージを送信する前に、PHP 内に DNS MX が存在するかどうかを確認する方法はありますか? これはスケーラブルですか (つまり、DNS で余分なルックアップを行うと実際に速度が低下するのでしょうか、それとも sendmail がメッセージの配信に使用するために MX がローカルにキャッシュされるので問題ないでしょうか)?
ご協力いただきありがとうございます
--- 更新 --- 以下の解決策を試してみました。これにより、問題を絞り込むことができました。MX エントリが存在するかどうかの問題ではないようです。問題は、DNS ルックアップが返されるまでに時間がかかることです。タイムアウトを設定できる簡単な方法はありますか? DNS が 5 秒以内に返されない場合は、次に進むことができますか?