На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Пара вопросов по мылу
    Как на компе организовать SMTP сервер?
    Как отправлять и получать мыло без POP3 и SMTP сервера?
    Как сделать всё это не используя компоненты, а только на API?
      Есть библиотека (Free+Source) - Internet Component Suite там реализованы все нужные протоколы и сервера. Если не охота её использовать, то можно посмотреть как они это всё огранизовали и самому сделать. В целом отправка письма выглядит примерно следёющим образом:

      1) Соединяемся к DNS серверу
      2) Кверим DNS, находим IP адресата
      3) Соединяемся с адресатом
      4) Читаем спецификацию RFC - там указаны все комманды, запросы и ответы - реализуем это всё.


      Я такую программу писал - могу сказать сразу - работы там много, даже используя компоненты, реализующие протоколы, это работа на несколько месяцев. Много подводных камней и достичь высокой надёжности и производительности достаточно сложно - очень много тонкостей, которые выясняются по ходу дела, к тому же 99\% существующих email серверов не соблюдают на 100\% спецификации RFC, срабатывают всякие антивирусы, Firewall, антиспамерские фильтры и т.п. В общем, склепать програмку которая отошлёт email на свой адрес письмо без всяких серверов с использованием этой библиотеки можно за пару часов, а превратить это в надёжную программу займёт несколько месяцев.
        А где эту библиотеку можно нарыть?
          Официальный сайт не помню, но у меня на сайте есть (может не самая последняя версия): www.delphist.com
            Цитата Vit, 13.03.03, 00:22:04
            Много подводных камней и достичь высокой надёжности и производительности достаточно сложно - очень много тонкостей, которые выясняются по ходу дела, к тому же 99\% существующих email серверов не соблюдают на 100\% спецификации RFC, срабатывают всякие антивирусы, Firewall, антиспамерские фильтры и т.п.


            Категорически не согласен !

            Я бы сказал, что 99\% серверов полностью совместимы с RFC того или иного уровня... RFC развивается и добавляются новые стандарты... RFC регламинтируют ПРОТОКОЛ, т.е. описывают транзакции сервера/клиента как таковые... Желание же админа какого-то сервера не принимать почту от спаммера ни как не противоречит самому протоколу... Кроме того борьба со спамом и вирусами регламинтировано документами RFC (см. например RFC2505, RFC3098 и т.д.)

            Программа которую ты пишешь ДОЛЖНА предусматривать совместимость как со старыми так и новыми реализациями протоколов и правильно отрабатывать ситуации отказа, невозможности соединения с сервисом, использование другой версии, шифровки данных и т.п.

            Например: никто не мешает мне вывесить в интернет SMTP и разрешить соединения ТОЛЬКО с TLS/SSL и только с сертификатами, которые я могу проверить (не selfsigned)... Остальным вежливо отказывать выводя предупреждение, необходимо использование SSL...
            Это полностью соответствует RFC... Ни одна библиотека компонентов сейчас это не реализует в полной мере...

            Проблема не в серверах и RFC, а в несоответствии ТВОЕЙ программы стандартам RFC, существующим на сегодняшний день...

            Отказ сервера не значит, что он кривой... Может просто тебя не хотят видеть...

            Есть серьезные организации, которые официально уполномочены всячески портить жизнь спаммерам (mail-abuse.org , ordb.org) и последние реализации почтовых серверов (KMS 5.x.x например) пользуются их базами данных...

            Если ты нарушаешь правила поведения в интернет, то стоит пинять только на себя...,
            Сообщение отредактировано: repairman -
              В том то и дело, что да соответствуют тому или другому уровню, старому или новому, а проблема в том, что если пишешь программу, то она должна нормально работать со всеми(!) серверами... Да, примерно на 95\% серверов послать письмо нет проблем, а вот с остальными проблемы. Можете быть не согласны, но вот лишь несколько проблем которые я лично имел:

              1) Новая версия MS Exchange перестала принимать письма если в адресе отправителя есть слово "mail" - наш адрес с которого мы отправляли письма был airmail@trondent.com - внезапно тысячи клиентов перестали получать наши письма.

              2) AOL не пропускает письма есть IP отправителя и доменное имя прописанное в адресе отправителя разные (у нас некоторые сервера стояли без зарегистрированных DNS...)

              3) Внезапно выяснилось что у используемого DNS сервера провайдера есть проблемы - он не своевременно обновляет данные - пришлось ставить свой NDS


              и т.д. таких проблем не счесть.
                Цитата Vit, 13.03.03, 19:17:28


                2) AOL не пропускает письма есть IP отправителя и доменное имя прописанное в адресе отправителя разные (у нас некоторые сервера стояли без зарегистрированных DNS...)

                3) Внезапно выяснилось что у используемого DNS сервера провайдера есть проблемы - он не своевременно обновляет данные - пришлось ставить свой NDS


                и т.д. таких проблем не счесть.


                С MSExchange не общался, не знаю... Наворотов много, а нужных меньше половины...

                По поводу AOL и DNS... Речь идет не о НЕСООТВЕТСТВИИ КАКОМУ-ЛИБО СТАНДАРТУ, а о обычных, хоть и очень неприятных, ТЕЧНИЧЕСКИХ НЕПОЛАДКАХ В СЕТИ...
                А что будет, если упадет роутер на сегмент твоей сети ???

                На AOL, видимо, установлен типичный антиспам фильтр... Разве не логично, что человек, отправивший письмо ДОЛЖЕН дать свой верный E-MAIL ???
                Скрытие реального e-mail и попытка протолкнуть почту через анонимный HTTP или Socks прокси пахнет или нарушением закона или попыткой безнаказанной рассылки СПАМА...

                Я, как администратор, который каждый день выгребает мегабайты спама, отловленные почтовым роботом, ОБЕИМИ РУКАМИ ЗА ТАКИЕ ДЕЙТВИЯ AOL !!! И на своем почтовом сервере буду затягивать гайки против спаммеров до упора ! (При этом не нарушая стандартов принятых Network Working Group, что выпускает RFC, хотя это не всегда легко...)
                  Вообще-то мне это надо лля отправки сообщений на пару определённых серверов. Так что все остальные мне не нужны.
                  А описания этой библиотеки нигде нет?
                    Цитата repairman, 13.03.03, 21:46:57

                    С MSExchange не общался, не знаю... Наворотов много, а нужных меньше половины...


                    Вот в этом вся и проблема - почтовая программа должна работать с ЛЮБЫМИ серверами, любишь ты их или нет. клиенту не скажешь - мы не будем тебе посылать письма, нам твой почтовый сервер не нравится... Вот на это как раз и уходит время чтобы отладить не просто соответствие протоколу, а именно безсбойную работу с 99.9\% серверов.


                    Цитата repairman, 13.03.03, 21:46:57
                    По поводу AOL и DNS... Речь идет не о НЕСООТВЕТСТВИИ КАКОМУ-ЛИБО СТАНДАРТУ, а о обычных, хоть и очень неприятных, ТЕЧНИЧЕСКИХ НЕПОЛАДКАХ В СЕТИ...
                    А что будет, если упадет роутер на сегмент твоей сети ???


                    Согласен, это всё разные технические и т.п. мелочи, но их надо все выявить, и корректно обработать, таких неприятностей избежать. Позаботиться чтобы антиспамерские фильтры (причём любые) не срабатывали. Назови эти проблемы как хочешь, но они есть, они достаточно серьёзны и ни в какой книжке, ни в теории, список всех таких неприятностей не найдёшь - вот и получается что программу написать занимает пару дней, а чтобы заставить её нормально работать в 99.9\% случаев тратишь несколько месяцев. Кстати о раутере - и это проходили, и приходилось специально диагностировать ситуации когда сеть упала, DNS упал, инет вырубило и т.д. Простейший пример ты посылаешь письмо на nevzorov@yahoo.com, получаешь ответ что yahoo.com не доступен? В чём дело - неправильный ответ DNS? нас вырубили из инета? их сервер временно упал? и т.д.

                    Цитата repairman, 13.03.03, 21:46:57
                    На AOL, видимо, установлен типичный антиспам фильтр... Разве не логично, что человек, отправивший письмо ДОЛЖЕН дать свой верный E-MAIL ???


                    Логично, но RFC допускает не соответствие полей "From" и "Received" и ничего не говорит о том, что в если в Received стоит "<vnevzorov@trondent.com>", то IP адрес с которого отправленно письмо должен быть ассоциирован с доменом "trondent.com". Я делал не спамерскую программу - у нас легальный бизнес, по которому мы посылаем письма нашим клиентам - корпорациям, правда в очень большом количестве (но это не спам - это сервис который эти клиенты сами и заказали). Коль скоро RFC допускало такое, то по началу на эту штуку мы не обратили внимание - письма рассылает робот, т.е. посылать письма и ответы обратно на наш адрес бессмысленно - мы используем не нашу информацию, и никто на эти письма ответить не может, но имеются внутри этих корпораций-клиентов ответственные люди, поэтому если письмо приходит от нас, то клиент со всеми вопросами должен обращаться к ним, вот и попробовали писать в полях From, ReplyTo не наш адрес, а адрес человека ответственного за эту информацию (собственно так наши заказчики и хотели). И всё было прекрасно с подавляющим большинством клиентов, только вот письма в AOL не доходили.


                    Собственно дело не в том насколько соответствует RFC моя программа, я просто хочу показать что данная задача для практического воплощения достаточно сложна, так как в отличие от большинства других програм пользующих прямой коннект с удалённым сервером, в данном случае неизвестен ни тип сервера, ни ось на котором стоит сервер и т.п., но надо обеспечить работу со ВСЕМИ даже самими дегенеративными и самопальными серверами. Примерно та же ситуация с FTP - сделать свой универсальный клиент задача весьма и весьма не простая...
                      Цитата Antipich, 13.03.03, 22:14:34

                      А описания этой библиотеки нигде нет?



                      Дык она же с исходными кодами!
                      Кстати посмотри на сайте у автора.
                      Сообщение отредактировано: Vit -
                        2Vit:

                        Мда...
                        Насчет надежности ты прав... В общем я с тобой согласен...

                        Извени, что я ушел от темы.... Спам просто достал, я на нем уже циклится начинаю...
                        Надо начинать писать фильтр для почтовика... Второй месяц собираюсь, все какие-то срочные дела находятся...

                        Хочется спам убивать прямо на удаленном почтовике, чтобы не тащить этот мусор за казенные бабки, чтобы потом удалять его локально....
                        Может у тебя есть какие наработки по этому делу ?

                        2Song: Извени, ежели офтопик...
                          2Repairman - к сожалению я "однобокий" товарищ - написал штук 5 мэйлеров для отправки писем (SMTP, свой сервер, MAPI, с использованием интерфейсов Outlook)  и ни одного для получения писем - 1 раз поковырял POP3 компонент в течение часа - вот мой и весь опыт...

                          Но чисто теоретическая идея есть, мне лично нравится, даже удивлён что никто не реализовал такое.

                          1) Делается "белый список" - т.е. список адресов с которых вся почта тебе доходит
                          2) Если письмо приходит с адреса не входящего в список, то: во-первых это письмо сервер сразу убивает, а в ответ автору пишет послание примерно следующего содержания: "Извините, сработал антиспамерсая защита, чтобы активировать доступность писем с вашего адреса пришлите на этот адрес письмо с указанием вашей Фамилии и имени в Subject line и цели письма (не более 50ти символов) и пустым телом без аттачмента и ваш адрес будет рассмотрен для активации в течении ближайших дней"
                          3) Письма с пустым телом, без аттачментов и длинной Subject Line меньше 50 символов тоже разрешить принимать.

                          В общем проколов не вижу - письма будут приходить только от тех кто тебе нужен, остальные - если это твои друзья или по делу - то пробьются, попадание писем от спамеров станет крайне маловероятным, а в 50ти символах не очень то порекламируешь.
                          Сообщение отредактировано: Vit -
                          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                          0 пользователей:


                          Рейтинг@Mail.ru
                          [ Script execution time: 0,0387 ]   [ 16 queries used ]   [ Generated: 2.05.24, 00:18 GMT ]