Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Функция mail, письмо и спам


Автор: s0lman 30.8.2011, 10:54
Всем привет
Один из скриптов, который дергается кроном, шлет отчет из пхп
Код

$headers = 'From: '. $from . "\r\n" .
    'Content-type: text/plain; charset=utf-8'."\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($adminEmail, $theme, $sendValue, $headers);


Другой - из баш-скрипта
Код

 /bin/echo "$2" | /bin/mail -s "$1" -r "$SENDER" "$recipient"


Проблема в том, что когда письма уходят из пхп скрипта (отправляю на винградовский ящик), то они попадают в спам, а если из баша - приходят во "входящие"

Более того - т.к. обратный резолвинг (dig -x ip) указывает не на мой домен, то для пхп-скрипта подсталяю отправителя, соответствующего домену  dig -x - что не спасает от распознавания как спам, а из баш-скрипта уходит от отправителя - моего домена, то без проблем доходит.
Сравнил хидеры - вручную добавлял
Код

User-Agent: Heirloom mailx 12.2 01/07/07
MIME-Version: 1.0

но результат тот же.

У кого какие идеи? Спасибо.


Автор: MuToGeN 30.8.2011, 11:18
В случае отправки через PHP мог быть хедер, ответственный за защиту от mail() injection. Точнее, не за защиту, а за то, чтоб в случае дырявых скриптов можно было быстро найти место, откуда вызывалась ф-я mail(). Теоретически слишком умные спам-фильтры (строятся они зачастую с использованием чуть ли не основ ИИ) могут не любить этот заголовок.
Включить либо выключить это дело можно только при пересборке похапе, ни через ini, ни в рантайме оно не конфигурится.
Ещё помимо хедеров стоит сравнить само тело сообщения (в случае multipart сообщений куча интересного может быть и в теле, которое в свою очередь состоит из нескольких блоков "заголовки-тело").

Автор: s0lman 30.8.2011, 11:24
Цитата(MuToGeN @  30.8.2011,  11:18 Найти цитируемый пост)
 сравнить само тело сообщения 

Там идет простой plain текст, ничего интересного в нем нет

Насчет заголовка - можно как-то убедиться, что он точно присутствует?

Автор: MuToGeN 30.8.2011, 11:41
Точного названия заголовка не помню, но смотреть стоит на то, что было получено, а не на то, как оно отправлялось (т.к. похапе будет приклеивать его к сообщению вне зависимости от того, что передается в mail() как доп. заголовки). Если он есть, там будет полный путь к файлу, откуда вызывалась mail() и номер строки.

Да и вообще стоит по-внимательнее присмотреться к заголовкам в сообщении, упавшем в спам. Зачастую спам-фильтры могут там (в хедерах) давать более подробные коментарии насчет своего решения.

Автор: s0lman 1.9.2011, 01:10
В общем, с хидерами у меня ничего не получилось, добавил e-mail отправителя в список контактов, то письмо не попадает в спам, что, по сути, и требовалось.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)