Отправка ссылок на открытки сайта без спама
7 сообщений
#14 лет назад
Здравствуйте, уважаемые программисты! Прошу помощи, может кто-то сталкивался и знает решение.Появилась идея сделать сайт с открытками, с возможностью отправки получателю в письме ссылки на страницу с открыткой и пожеланиями. Для отсылки будет использоваться плагин wordpress.
В связи с этим возникает вопрос: если в будущем таких писем будет отправляться множество, то не посчитают ли почтовики это спамом? Думаю, если письма будут отправляться с одного адреса, то посчитают.
Если четко сформулировать первый вопрос, то он такой:
1. Можно ли избежать попадания писем в спам при большом количестве отправок ежедневно с одного адреса почты, используя программные либо еще какие-то методы?
Еще пришла такая мысль. Отправитель на сайте также будет вводить в форму свой e-mail. Вопрос номер два:
2. Можно ли сделать так, чтобы почтовик считал, что письмо отправляется с e-mail отправителя?
Заранее спасибо!
1809 сообщений
#14 лет назад
1. Если отправлять письма с задержкой в 60 секунд между ними, то все будет ОК. Если нужно будет отправлять письма чаще или больше, лучше использовать внешние сервисы для этого.2. Не совсем понятен вопрос. Сделать так, чтобы получателю пришло письмо с обратным адресом указанного отправителя (а не сайта) - вообще стандартными методами. Или что-то другое подразумевалось?
7 сообщений
#14 лет назад
raznomir2, большое спасибо за ответ! По поводу первого пункта вашего ответа. А можно ли ставить отправку писем в очередь? Допустим, в один момент 100 человек нажали кнопку "Отправить". Им выдается сообщение типа "Спасибо, ваше письмо поставлено в очередь", а затем письма последовательно отправляются. Получается, если кнопку нажимают почти одновременно, то скрипт должен работать с милисекундами, чтобы понять, какое письмо отправить первее. А если и милисекунды совпадут (в принципе, это же не исключено), то чтоб письма отправлялись случайным образом. В принципе, вообще тогда можно сделать, что каждая "заявка на отправку" добавляется в общую "базу". Если в "базе" есть "заявки на отправку", то скрипт отправляет их случайным образом до тех пор, пока они не закончатся. Появилась новая "заявка" - снова отправляет.
Прошу прощения, что оперирую такими понятиями в кавычках. Просто с терминами программирования сильно не знакома, приходится описывать своими словами.
Тут же вопрос. При отправке с задержкой в 60 секунд все же есть риск попасть под действие спам-фильтров? Сразу же я это не проверю, а за несколько дней люди отправят открытки, они не дойдут, и посетители больше никогда не вернутся на этот сайт. Есть ли хотя бы способ оперативно узнать, попадают ли письма в спам или нет?
На некоторых сайтах видела опцию "Отправить копию письма на свой e-mail". Таким образом человек может удостовериться, что письмо отправлено. Но почта отправителя может быть на яндексе, а получателя - на мэйл.ру. На яндекс письмо может дойти, а на мэйл.ру нет. Или наоборот. К тому же отправка двух писем - это двойная "нагрузка". Думаю, этот способ не особо приемлем.
Во втором вопросе подразумевалось, можно ли сделать так, чтобы именно почтовый сервис считал, что письмо отправлено с адреса отправителя. В таком случае, адреса отправителей будут разные и спамом это считаться не будет. Но уже сейчас понимаю, что тогда любой мог бы собрать базу адресов и спамить вовсю от их имени. Наверное, такое не реализуешь

Вот только что еще придумала. Может, есть способ сделать так, чтобы письма отправлялись с чередующихся адресов? Допустим, у меня есть рабочий ящик на mail.ru, на gmail, на яндексе. У меня есть три "заявки" на отправку писем. Первое отправляется скриптом с моего ящика на мэйл.ру, второе с gmail, третье с яндекса. Но в таком случае я уже завишу от работоспособности трех сервисов. Запуталась уже
1809 сообщений
#14 лет назад
Цитата ("luboffke"):А можно ли ставить отправку писем в очередь?
Можно. Даже нужно.
Собственно, у нас так и организовано, письмо отправляется внутренней функцией, которая и заведывает всей этой кухней - постановкой в очередь, отправкой первого письма из очереди и т.д. Если сайт не слишком посещаем (например, поначалу), то еще нужно будет прикрутить к CRON (такой сервис есть у хостеров), чтобы раз в минуту вызывался скрипт проверки, не пора ли следующее письмо отправлять, может чего в очереди есть неотправленное.
Ну а детали уже расписывать тут долго, тем более, если Вы в программировании не сильны.
Цитата ("luboffke"):
При отправке с задержкой в 60 секунд все же есть риск попасть под действие спам-фильтров?
Под общие фильтры поисковиков, так сказать, чтобы сайт забанили вообще - нет.
А вот попадет ли конкретное письмо под фильтры конкретного пользователя - сказать нельзя, мало ли что он там себе наставит? Только это уже не связано вообще с методами отправки писем, хоть раз в 60 секунд, хоть раз в год.
Цитата ("luboffke"):
Во втором вопросе подразумевалось, можно ли сделать так, чтобы именно почтовый сервис считал, что письмо отправлено с адреса отправителя. В таком случае, адреса отправителей будут разные и спамом это считаться не будет.
Нет, почтовики умные, так их не надурить.

263 сообщения
#14 лет назад
Цитата ("luboffke"):...В связи с этим возникает вопрос: если в будущем таких писем будет отправляться множество, то не посчитают ли почтовики это спамом?
Невежливо отвечать вопросом на вопрос, но... кто такие "почтовики" и зачем они Вам нужны?
Цитата ("luboffke"):
1. Можно ли избежать попадания писем в спам при большом количестве отправок ежедневно с одного адреса почты, используя программные либо еще какие-то методы?
Можно. Чаще всего, используются следующие варианты:
(1) Ваша программа должна отправлять письма по протоколу SMTP непосредственно получателям. Если Вы пишете на php, то там должен быть какой-либо модуль реализующий этот протокол;
(2) На Вашем сервере Вы устанавливаете какую-либо почтовую подсистему (sendmail, postfix, exim, и т.п.), конфигурируете ее так, чтобы исходящая почта доставлялась непосредственно адресатам (обычно, этот режим устанавливается по умолчанию) и конфигурируете Вашу прикладную программу так, чтобы исходящая почта поступала в Вашу локальную почтовую систему (вызов sendmail или SMTP на localhost).
Можно придумать еще пару вариантов, но это уже будет сложнее. Ограничения по первым двум вариантам: Ваш провайдер может перехватывать трафик по порту 25 (SMTP) и принудительно заворачивать его на свой почтовый сервер. Это можно выяснить послав себе самому тестовое письмо и изучив его заголовки. В этом случае, надо или сменить провайдера или поэкспериментировать с протоколом SMTPs (режим STARTTLS в sendmail).
В случае, если большое количество абонентов находится на каком-либо одном публичном почтовом сервере (например, mail.ru) и Вы отсылаете большой пакет почты, Ваши письма могут быть на какое-то время задержаны на их серверах, отмечены как спам и т.д. В этом случае, письма на публичные сервера надо отсылать с какой-либо задержкой.
Цитата ("luboffke"):
2. Можно ли сделать так, чтобы почтовик считал, что письмо отправляется с e-mail отправителя?
Все спамеры мечтают об этом. К сожалению (или к счастью) нельзя. Почта передается по протоколам группы TCP от одного почтового сервера к другому. Во время обмена данными по протоколу TCP каждая сторона всегда знает IP адрес второй стороны и зная IP адрес всегда можно установить домен отправителя. Тот адрес отправителя, который передается в письме в заголовке "From:" почтовыми системами, за редким исключением, благодушно игнорируется.
1809 сообщений
#14 лет назад
Цитата ("Illarion_SA"):Ваша программа должна отправлять письма по протоколу SMTP непосредственно получателям.
Некоторые хостера это блокируют из соображений безопасности. Нужно отдельно уточнять либо просить открыть у конкретного хостера.
263 сообщения
#14 лет назад
Цитата ("raznomir2"):Некоторые хостера это блокируют из соображений безопасности. Нужно отдельно уточнять либо просить открыть у конкретного хостера.
Это просто проверить, достаточно с Вашего сервера набрать что-то вроде:
$ telnet a.mx.mail.yahoo.com 25
Trying 67.195.168.31...
Connected to a.mx.mail.yahoo.com (67.195.168.31).
Escape character is '^]'.
220 mta173.mail.ac4.yahoo.com ESMTP YSmtp service ready
QUIT
221 mta173.mail.ac4.yahoo.com
Connection closed by foreign host.
Другое дело, что даже если провайдер и разрешает трафик SMTP, то когда на него посыпятся жалобы на рассылку спама (а жалобы будут всегда, поскольку люди имеют обыкновение сначала жаловаться, а потом - иногда - думать), то придется доказывать провайдеру, что это не спам, а запланированная рассылка и т.п. Поэтому к таким разговорам лучше готовиться заранее, с провайдером поддерживать хорошие отношения, а в рассылаемые письма включить всю возможную аттрибутику: от кого послано, почему послано, как прекратить рассылку и т.п.
7 сообщений
#14 лет назад
Цитата ("Illarion_SA"):
Невежливо отвечать вопросом на вопрос, но... кто такие "почтовики" и зачем они Вам нужны?
Это я имела в виду почтовые сервисы в целом типа mail.ru

Цитата ("Illarion_SA"):
Другое дело, что даже если провайдер и разрешает трафик SMTP, то когда на него посыпятся жалобы на рассылку спама (а жалобы будут всегда, поскольку люди имеют обыкновение сначала жаловаться, а потом - иногда - думать), то придется доказывать провайдеру, что это не спам, а запланированная рассылка и т.п. Поэтому к таким разговорам лучше готовиться заранее, с провайдером поддерживать хорошие отношения, а в рассылаемые письма включить всю возможную аттрибутику: от кого послано, почему послано, как прекратить рассылку и т.п.
На моем сайте пользователями будут отсылаться в письмах ссылки на страницы с открытками. Адреса, имена отправителей и получателей, заголовки писем, содержание постоянно будут разными. Поэтому это же не рассылка в обычном понимании. Я не знаю, насколько целесообразно в письме писать о том, как прекратить получение таких писем, если в среднем, один человек будет получать такое письмо раз в год (открытки, в основном, к дню рождения).
Думаю, вначале, когда мой сайт будет не очень популярным, то, если установить задержку в 60 секунд (как советует raznomir2), то все должно быть в порядке. А потом, когда открытки будут отправлять часто, то, может, напрямую обратиться к mail.ru и прочим, чтоб они посмотрели на сайт и убедились в том, что люди сами отправляют, и это не спам? Но не знаю, как они к этому отнесутся. У mail.ru и яндекса есть свои сервисы отправки открыток, у других почтовых сервисов, скорее всего, тоже.
1809 сообщений
#14 лет назад
Потом можно будет попробовать через внешние сервисы, вроде unisender позволяет такое, не уверена. Мэйлру и прочие смотреть на Ваш сайт не будут, оно им даром не надо. 
5330 сообщений
#14 лет назад
Цитата ("Illarion_SA"):(1) Ваша программа должна отправлять письма по протоколу SMTP непосредственно получателям.
????!!!!!! куда, простите слать???
бегать за мной с моим почтовым клиентом???
или на мой сервер почты, который тут же переносит все в спам?
ну да ладно, это лирика.
автору темы следует пойти к нормальным админам для настройки сервера почты что бы письма не попадали в спам. это достаточно просто
263 сообщения
#14 лет назад
Цитата ("luboffke"):...Адреса, имена отправителей и получателей, заголовки писем, содержание постоянно будут разными. Поэтому это же не рассылка в обычном понимании.
В содержание писем, обычно, спам-фильтры не заглядывают. Подсчитывается количество писем поступающих от данного IP адреса в единицу времени, если это число превышает некоторый предел, то почтовый сервер или просит переслать письмо попозже или возвращает код 5xx - неустранимая ошибка. В любом случае, та программа, через которую Вы делаете рассылку, должна правильно обрабатывать все ошибочные ситуации, поэтому лучше пользоваться стандартными средствами, всякими там sendmail, postfix, etc.
Цитата ("luboffke"):
Я не знаю, насколько целесообразно в письме писать о том, как прекратить получение таких писем, если в среднем, один человек будет получать такое письмо раз в год (открытки, в основном, к дню рождения).
Это не только целесообразно, но иногда, даже, требуется законом, например, если Ваш сервер находится на территории США, то такая приписка требуется в соответствии с CanSpam Act. В основном, эта приписка нужна при переговорах с провайдером - после того как они заблокируют Ваш сервер и при переговорах со всякими публичными сервисами вроде SpamHaus.org.
Цитата ("luboffke"):
Думаю, вначале, когда мой сайт будет не очень популярным, то, если установить задержку в 60 секунд (как советует raznomir2), то все должно быть в порядке.
Т.е. за час Вы сможете послать не больше 60 открыток абонентам одного почтового сервера, например, mail.ru? А если Вы поставите задержку на все письма без исключения, то за час Вы сможете отправить всего 60 открыток? Это не очень много. Делайте рассылку через почтовую систему и не ленитесь заглядывать в логи или, если, рассылаете своими средствами, обрабатывайте все коды завершения от сервера-получателя. Если заметите, что Вас блокируют, тогда и устанавливайте эти задержки. В любом случае, лучше слать используя стандартные почтовые средства - там и задержки по направлениям, пожалуй что, можно будет устанавливать, а писать это все врукопашную... жизни не хватит.
Цитата ("luboffke"):
...напрямую обратиться к mail.ru и прочим, чтоб они посмотрели на сайт и убедились в том, что люди сами отправляют, и это не спам?
Никто и никогда на Ваш сайт смотреть не будет. Тот же mail.ru - это достаточно сложная почтовая система и ради одного Вашего сайта вносить изменения в ее конфигурацию никто не будет.
1809 сообщений
#14 лет назад
Цитата ("Illarion_SA"):а писать это все врукопашную... жизни не хватит.
Тю... чего там писать? Лениво и неспешно за день максимум, с длинными перерывами на чай и вдумчивым тестированием. Причем все стандартными средствами, ничего изобретать не надо. Конечно, если знать php, а не изучать его на ходу.
У нас такая система с очередью писем уже года три как работает на всех сайтах клиентов, нормально все.
263 сообщения
#14 лет назад
Цитата ("ArtPro"):Цитата ("Illarion_SA"):(1) Ваша программа должна отправлять письма по протоколу SMTP непосредственно получателям.
????!!!!!! куда, простите слать???
бегать за мной с моим почтовым клиентом???
или на мой сервер почты, который тут же переносит все в спам?
Ну, если Вас интересуют технические подробности отсылки почты, то программа-отправитель должна выделить из адреса получателя домен абонента, запросить в DNS записи MX для этого домена, ранжировать полученный список IP адресов по приоритету и передать письмо по протоколу SMTP сначала на первый адрес, если не получится - на второй и т.д. Конечно, чтобы Ваш сервер "тут же не перенес это в спам" надо сформировать правильные заголовки и выдерживать требования SMTP. Обычно, это все делается или стандартной почтовой системой сервера-отправителя или библиотечными модулями SMTP.
Цитата ("ArtPro"):
автору темы следует пойти к нормальным админам для настройки сервера почты что бы письма не попадали в спам. это достаточно просто
В большинстве случаев, никакой особой настройки даже не требуется, хотя бывают и исключения.
Цитата ("raznomir2"):
Цитата ("Illarion_SA"):а писать это все врукопашную... жизни не хватит.
Тю... чего там писать? Лениво и неспешно за день максимум, с длинными перерывами на чай и вдумчивым тестированием.
Зависит, наверное, от того что именно, или на каком уровне, писать. Например, запустить sendmail и пихнуть ему на STDIN текст письма это одно, а взять адрес получателя письма, разобрать его, определить адрес MX сервера и поболтать с ним по SMTP это другое, а послать в режиме STARTTLS совсем третье, а корректно, при этом, отработать все коды завершения и таймауты - уже совсем четвертое.
Цитата ("raznomir2"):
...У нас такая система с очередью писем уже года три как работает на всех сайтах клиентов, нормально все.
А как Вы отправку писем из очереди делаете (если не секрет, конечно)?
1809 сообщений
#14 лет назад
Цитата ("Illarion_SA"):А как Вы отправку писем из очереди делаете (если не секрет, конечно)?
Если сайт часто посещаем, просто цепляется при загрузке любой страницы проверка очереди. Если редко - через CRON. Писала выше вроде об этом.
Цитата ("Illarion_SA"):
Зависит, наверное, от того что именно, или на каком уровне, писать. Например, запустить sendmail и пихнуть ему на STDIN текст письма это одно, а взять адрес получателя письма, разобрать его, определить адрес MX сервера и поболтать с ним по SMTP это другое, а послать в режиме STARTTLS совсем третье, а корректно, при этом, отработать все коды завершения и таймауты - уже совсем четвертое.
Зачем вообще в эти дебри лезть? Чем Вас банальный mail() или mb_send_mail(), если для мультибайтовых, не устраивает?
263 сообщения
#14 лет назад
Цитата ("raznomir2"):Цитата ("Illarion_SA"):А как Вы отправку писем из очереди делаете (если не секрет, конечно)?
Если сайт часто посещаем, просто цепляется при загрузке любой страницы проверка очереди. Если редко - через CRON. Писала выше вроде об этом.
Меня, собственно, интересовало не когда (по какому событию) Вы достаете почту из очереди, а каким методом Вы ее отправляете адресату.
Кстати (чистого любопытства для), если сайт посещаемый, а проверка очереди занимает времени больше чем интервал между загрузками страниц, то у Вас возможные коллизии как-то обрабатываются?
1809 сообщений
#14 лет назад
Цитата ("Illarion_SA"):Кстати (чистого любопытства для), если сайт посещаемый, а проверка очереди занимает времени больше чем интервал между загрузками страниц, то у Вас возможные коллизии как-то обрабатываются?
Что называете коллизиями? Попытку двух разных страниц, так сказать, отправить письма одновременно?
В целом предусмотрено, но даже это не страшно. Интервал в 60 секунд не жестко-смертельный же. Если вдруг чего-то там сбойнет, в крайнем случае отправится два письма с меньшим интервалом, это не проблема. Лимит идет не на интервалы, а на количество писем за какой-то определенный период времени, 60 в час наиболее типичный лимит.
Или Вы о чем-то другом?
263 сообщения
#14 лет назад
Цитата ("raznomir2"):Цитата ("Illarion_SA"):Зависит, наверное, от того что именно, или на каком уровне, писать. Например, запустить sendmail и пихнуть ему на STDIN текст письма это одно, а взять адрес получателя письма, разобрать его, определить адрес MX сервера и поболтать с ним по SMTP это другое, а послать в режиме STARTTLS совсем третье, а корректно, при этом, отработать все коды завершения и таймауты - уже совсем четвертое.
Зачем вообще в эти дебри лезть? Чем Вас банальный mail() или mb_send_mail(), если для мультибайтовых, не устраивает?
Все зависит от задачи, от потребностей. Я попробую вкратце, без лишних подробностей... Например, если я отсылаю почту методом sendmail + STDIN, то я могу для каждого письма указать свою конфигурацию sendmail и таким образом, например, какие-то письма отослать немедленно, какие-то поставить в очередь, какие-то пересылать через один relay host, какие-то через другой и за счет этого избежать лишней работы по написанию своих почтовых очередей, чаще всего, в этом методе письмо просто ставится в очередь sendmail, чтобы не загромождать ресурсы сервера и "вернуть страницу" как можно раньше. Если я делаю своими методами протокол SMTP, то это решение будет самым быстроходным (этот метод используют все спамерские программы). Если я использую метод SMTP+STARTTLS, то мой провайдер уже не сможет "завернуть" это письмо на свой сервер или, скажем, отфильтровать его содержимое, он сможет только блокировать это письмо. Ну и наконец, если к этому всему прибавить еще и полную обработку ошибок, получится еще одна почтовая система и Ваше имя прославится в веках

1809 сообщений
#14 лет назад
Цитата ("Illarion_SA"):Все зависит от задачи, от потребностей. Я попробую вкратце, без лишних подробностей... Например, если я отсылаю почту методом sendmail + STDIN, то я могу для каждого письма указать свою конфигурацию sendmail и таким образом, например, какие-то письма отослать немедленно, какие-то поставить в очередь...
Ну настолько влезать в управление рассылками не требовалось ни разу.

Вот единственное, что надо было организовать такие интервалы, чтобы в спамеры не записали, и все. Остальное все устраивало более чем.
Плюс к этому, далеко не всякий хостер разрешит баловаться с почтой помимо стандартной функции, об этом уже писала.
Так что да, зависит от задачи.
263 сообщения
#14 лет назад
Цитата ("raznomir2"):...Что называете коллизиями? Попытку двух разных страниц, так сказать, отправить письма одновременно?
Да, например, программа проверки очереди отправила письмо адресату А, но не успела удалить его из очереди, в это время, та же программа, но запущенная другой страницей, опять отправляет то же письмо тому же адресату.
Цитата ("raznomir2"):
...Если вдруг чего-то там сбойнет, в крайнем случае отправится два письма с меньшим интервалом, это не проблема.
Главное, чтобы она не отправило одно и тоже письмо два раза. А то, где два, там и три, а стало быть и пара сотен, особенно, если на Ваш сайт делают атаку DoS. А это уже чревато и объяснениями с провайдером и блокировкой сервера во всех спам-листах. Лучше, наверное, все-таки придерживаться стандартных решений.
1809 сообщений
#14 лет назад
Цитата ("Illarion_SA"):Да, например, программа проверки очереди отправила письмо адресату А, но не успела удалить его из очереди, в это время, та же программа, но запущенная другой страницей, опять отправляет то же письмо тому же адресату.
А, ясно. Не, это учитывается.