Я понимаю, что вы белые.
Попробую на пальцах. Вы шлёте через сторонний SMTP. Сторонний SMTP (IP/обратный DNS) влетают в чёрные списки.
Вы (не знаете об этом) и продолжаете слать через него же.
Письма приходят куда угодно, но не в индекс. Вы же об этом не узнаете. (то есть, конечно, узнаете, если поймаете боунс анделивереда). Но такие письма продолжают портить вашему белому почтовому домену хм… репутацию.
Теперь разница относительно сторонний SMTP VS vds.
На VDS вы одни, а на стороннем SMTP сотни людей разный степени серости.
Есть почтовые сервисы, которые используют термин «Репутация рассыльщика» применительно ко всему: домены, IP, ДЦ.
В любом случае, DKIM, SPF и нормально прописанный обратный DNS (а не как у амазона по дефолту) решат больинство проблем.
Скорее всего, вам отдаётся редирект через JS или meta.
Поэтому, убирайте curl_setopt($ch, CURLOPT_FILE, $fp) и в $content будет ваш HTML-ник с редиректом. Задача этот HTML-ник распарсить(т.е вынуть оттуда ссылки и правильным referer перейти по ней)
Первое. Посмотрите результат экзека.
$content = curl_exec( $ch );
Второе. Посмотрите на информацию типа кода и тд.
$response = curl_getinfo( $ch )
Далее. Не включены cookies
curl_setopt( $ch, CURLOPT_COOKIEJAR, 'cookies.txt');
curl_setopt ($ch, CURLOPT_COOKIEFILE, 'cookies.txt');
Попробуйте не писать в хендл, а возвращать в поток (content) (потом вернёте на хендл).
Обычно после этого понятно, что не так.
И да, рефёрер с протоколом. site.ru/
rkhunter это первое, что я сделал.
Руткитов (к сожалению, ага) нет, конфиги зинета дефолтные. (вторая vds-ка это вообще была чистая система и поставленные пакеты)