Два года назад мной был написан несложный PHP-скрипт для формы обратной связи. Письма приходили на почту mail.ru. Как выяснил позднее, в скрипте была ошибка. В «From» я вставлял емэйл-адрес клиента (по сути, подделывал отправителя), однако письма приходили, и ладно.
Исходный код:
$email = $_POST['email'];
$headers .= "From: " . $email . "rn";
А не так давно заметил, что заявки перестали приходить… Проверил форму — не работает. Вызвало недоумение, ибо никто ничего не трогал, и два года всё работало нормально. По ходу экспериментов выяснилось, что если использовать такой код:
$email = "Сбербанк <help@sberbank.ru";
$headers .= "From: " . $email . ">>rn";
то можно совершенно спокойно подделывать любого отправителя (в данном случае Сбербанк).
Письма приходят во входящие. Как спам определяются не с первого раза. В интерфейсе Mail.ru пишется «Мы не можем проверить подлинность отправителя», однако если вы собираете почту с помощью программы (например, Outlook), то там никакой надписи, естественно, нет.
Ключевое место — дополнительный символ ">". Без этого символа письма с подделанным отправителем, как и положено, НЕ приходят. Очевидно, у почты Mail.ru ошибка в обработке заголовков «headers».
Проверял этот баг на Яндексе. У Яндекса такой проблемы нет (письма с подделанным отправителем не пропускает даже в папку «спам»).
P.S. Представитель Mail.ru сказал «мы не считаем данную ситуацияю ошибкой», поэтому выкладываю эту информацию с чистой совестью.
Автор: MikhailNsk