SMTP порт или...?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
$Yastrebov$
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 154
Зарегистрирован: 24.01.2007 (Ср) 7:27
Откуда: Ukraine

SMTP порт или...?

Сообщение $Yastrebov$ » 06.03.2007 (Вт) 9:48

В программе реализуется передача письма через 25 порт. Но увы, либо провайдеры его закрыли, либо Firewall матерится!

Как проверить С ПОМОЩЬЮ VB-КОДА открыт ли на компьютере, где установленна программа, 25 порт? Возможно варианты передачи параметров в cmd (типа telnet smtp.mail.ru 25)
и возврат полученного значения обратно в код.
Как проверить не мешает ли отправке письма Firewall?
Можно ли использовать какой-либо другой вариант передачи текстовой информации посредством Интернета? Как это можно реализовать?
Жизнь, она как коробка конфет - никогда не знаешь, что вытянешь!

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 06.03.2007 (Вт) 10:16

В программе реализуется передача письма через 25 порт. Но увы, либо провайдеры его закрыли, либо Firewall матерится!


Тока VB освоят и уже почтовых червей писать. Нехорошо! :)

$Yastrebov$
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 154
Зарегистрирован: 24.01.2007 (Ср) 7:27
Откуда: Ukraine

Сообщение $Yastrebov$ » 06.03.2007 (Вт) 13:37

Тока VB освоят и уже почтовых червей писать. Нехорошо!


ТОКА ответ напишу, чтобы поумничать!

Если уважаемый jangle ответ Вы не знаете, то и писать не стоит!
Количество моих сообщений на прекрасном форуме VBStreets никаким образом не указывает на мой опыт программирования на VB. Интересно из каких умозаключений вы к этому пришли???
Видимо у Вас был опыт в написании "червей". Так как, что у кого болит, тот о том и говорит! Я подобным не занимаюсь.

----
В моем случае используется форма для связи с автором (со мной), для консультации пользователей по моему программному продукту. Сообщение приходит мне как письмо на почту. Но последнее время, некоторые пользователи сообщают, что отправить письмо через форму не получается. Проследив причину - выявили закрытый 25 порт.

Вопрос остается открытым!
Жизнь, она как коробка конфет - никогда не знаешь, что вытянешь!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.03.2007 (Вт) 13:50

Если закрыт 25, можно на 80, организовав на своём сервере приём POST-запроса HTTP с описанием проблемы.
Отправка POST-запроса описана в FAQ.

Однако в любом случае, правильный ответ на вопрос "что делать, когда файрвол пользователя блокирует мою программу" - описать в документации, какой порт и для чего следует открыть. У меня тоже файрвол, и тоже блокирует. И просто так открывать что-то я не буду.

А что касается проверки, что закрыто и что нет, есть курс лечения.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 06.03.2007 (Вт) 14:22

По моему ответ очевиден, послать запрос любому SMTP серверу:

HELO <SP> <IP> <CRLF>

Где IP - адрес твоей машины, подождать скажем секунд 20, если сервер вернет код в диапазоне от 200 до 399, значит порт открыт. Если тайм-аут истечет, значит сервер не отвечат, или порт закрыт файрволом. Вот такой алгоритм.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 06.03.2007 (Вт) 14:32

$Yastrebov$
Учтите, что Mail.Ru чтобы уменшить число спама сделали обязательным, чтобы адрес отправителя совпадал с именем пользователя под которым вы авторизировались.



Т.е. если вы хотите отправить письмо, к примеру, с ящика fireline_forum@mail.ru то авторизироваться вы должны с именем пользователя = fireline_forum (а не fireline_forum@mail.ru, как многие пытаются.) и своим паролем.

Адрес отправителя и адрес возврата тоже должны быть = fireline_forum@mail.ru

Если ваш аккаунт заведён на другом почтовом сервер (скажем list.ru) то коннектиться вы изначально должны к smtp.list.ru а отправка письма должна проходить точно таким же образом.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 06.03.2007 (Вт) 14:52

Учтите, что Mail.Ru чтобы уменшить число спама сделали обязательным, чтобы адрес отправителя совпадал с именем пользователя под которым вы авторизировались.


На маил.ру сделали отправку по SMTP с авторизацией, у меня например адрес не совпадает с именем логина, но тем не менее все отправляется.

Есть еще одна причина, по которой не стоит отправлять SMTP из своей программы. Многие вирусы умеют анализировать рулесы файрволов, выдирая имена разрешенных приложений. Затем они делают Inject своего кода в запущенный процесс разрешенного приложения, и от его имени начинают гнать вирусный траф по открытому порту. По крайней мере нарывался один раз на такую ситуацию с Kaspersky Anti Xaker (самый тупой файервол).
По моему, лучше просто дать ссылку в хелпе на твой e-mail, и пусть пишет из своего почтового клиента. В противном случае ты добавляешь геммороя клиентам, добавляя лишнюю дырку в системе, в виде программы работающей с TCP/IP

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 06.03.2007 (Вт) 14:57

jangle писал(а):На маил.ру сделали отправку по SMTP с авторизацией, у меня например адрес не совпадает с именем логина, но тем не менее все отправляется.


Читайте внимательно.

В настройках почтовой программы необходимо указать, что сервер исходящей почты (или сервер SMTP) требует авторизации. При отправке писем через наш SMTP-сервер содержимое поля From: должно совпадать с именем почтового ящика, в котором была осуществлена SMTP-авторизация: если в настройках почтовой программы указан почтовый ящик mailname@mail.ru, listname@list.ru, bkname@bk.ru или inboxname@inbox.ru, то именно это имя почтового ящика должно указываться в поле From:.


—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

$Yastrebov$
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 154
Зарегистрирован: 24.01.2007 (Ср) 7:27
Откуда: Ukraine

Сообщение $Yastrebov$ » 06.03.2007 (Вт) 22:13

А что касается проверки, что закрыто и что нет, есть курс лечения.


2GSerg курс лечения прошел;) но суть моего вопроса как раз состояла не в том, как проверить подключение к Интернету, а проверить открыт ли 25 порт, что не одно и тоже!

Однако в любом случае, правильный ответ на вопрос "что делать, когда файрвол пользователя блокирует мою программу" - описать в документации, какой порт и для чего следует открыть.


2GSerg Увы многие пользователи не желают читать документацию и на то их воля!

Если закрыт 25, можно на 80, организовав на своём сервере приём POST-запроса HTTP с описанием проблемы.
Отправка POST-запроса описана в FAQ.


2GSerg с этим обязательно ознакомлюсь!

Учтите, что Mail.Ru чтобы уменшить число спама сделали обязательным, чтобы адрес отправителя совпадал с именем пользователя под которым вы авторизировались.


2Хакер
Программа уже работает и передает письма))) Просто это не всегда получается! Но все равно благодарю!

Если тайм-аут истечет, значит сервер не отвечат, или порт закрыт файрволом. Вот такой алгоритм.


2jangle
У меня фактически так все и реализовано, но этот простой...
Я отлавливаю "паузу" Winsock, но часто простой задерживается на длительный период до того, как я получаю Winsock.Error и грозный пользователь недоумивает! Есть ли другие пути? Более быстрая реакция? Существуют ведь СКАНЕРЫ ПОРТОВ. Увы с закрытым кодом.

В противном случае ты добавляешь геммороя клиентам, добавляя лишнюю дырку в системе, в виде программы работающей с TCP/IP


2jangle
Вот это действительно проблема((( Значит 25 порту (и альтернативным портам отказать??? А ведь было столько надежд! (((
Жизнь, она как коробка конфет - никогда не знаешь, что вытянешь!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.03.2007 (Вт) 22:33

$Yastrebov$ писал(а):2GSerg курс лечения прошел;) но суть моего вопроса как раз состояла не в том, как проверить подключение к Интернету, а проверить открыт ли 25 порт, что не одно и тоже!

Если ты всё-таки думаешь, что не одно и тоже, то курс лечения надо повторить.

Там ясно написано - попытка сделать задуманное и отлов ошибки - единственно верный способ.

$Yastrebov$ писал(а):2GSerg Увы многие пользователи не желают читать документацию и на то их воля!

Значит, они прочитают её, когда файрвол их спросит, что делать с программой. Если файрвол молча заблокирует, программа не сработает, и тогда снова будет вопрос. Поэтому хорошо бы завести FAQ с первым пунктом "Почему отправка не происходит?".

$Yastrebov$ писал(а):
Если закрыт 25, можно на 80, организовав на своём сервере приём POST-запроса HTTP с описанием проблемы.
Отправка POST-запроса описана в FAQ.


2GSerg с этим обязательно ознакомлюсь!

Что, однако, ни в коей мере не гарантирует успеха, а запросто приведёт ровно к тем же проблемам, что с портом 25.

$Yastrebov$ писал(а):2jangle
У меня фактически так все и реализовано, но этот простой...
Я отлавливаю "паузу" Winsock, но часто простой задерживается на длительный период до того, как я получаю Winsock.Error и грозный пользователь недоумивает! Есть ли другие пути? Более быстрая реакция? Существуют ведь СКАНЕРЫ ПОРТОВ. Увы с закрытым кодом.

Если ты ещё и сканер портов поставишь, то (с учётом наличия контактной инфы в твоей проге) к тебе запросто очень быстро придут уполномоченные товарищи.

Если файрвол блокирует запрос, винсок обламывается практически мгновенно.
Если винсок тупит, дело не в файрволе, а в программе, которая что-то делает неправильно.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

$Yastrebov$
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 154
Зарегистрирован: 24.01.2007 (Ср) 7:27
Откуда: Ukraine

Сообщение $Yastrebov$ » 06.03.2007 (Вт) 23:09

Если ты ещё и сканер портов поставишь, то (с учётом наличия контактной инфы в твоей проге) к тебе запросто очень быстро придут уполномоченные товарищи.


Не знал, что это запрещено? :shock:

Если файрвол блокирует запрос, винсок обламывается практически мгновенно.
Если винсок тупит, дело не в файрволе, а в программе, которая что-то делает неправильно.


Буду проверять код. Спасибо за советы! Если возникнут сложно еще отпишусь!
Жизнь, она как коробка конфет - никогда не знаешь, что вытянешь!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 98

    TopList