Forum Webscript.Ru

Программирование => Perl => Тема начата: 09h от 01 Июня 2006, 17:35:55

Название: проблема с sendmail
Отправлено: 09h от 01 Июня 2006, 17:35:55
бред какойто ... много раз пользовался sendmail`ом никогда проблем не возникало... вот небольшой скрипт для теста который все время работал и перестал#!/usr/bin/perl

my $from = "09h\\@mail.ru";
my $from_name = "09h";
my $to = "admin\\@iron26.ru";
my $to_name = "Your";
my $subject = "aaaaaa";
my $text = "aaaaaaaaaaaaaaaaaaa";

open (MAIL, "|/usr/sbin/sendmail -t");
print MAIL "From: $from_name <$from>\\n";
print MAIL "To: $to_name <$to>\\n";
print MAIL "Content-Type: text/html; charset=\\"Windows-1251\\"\\n";
print MAIL "Subject: $subject\\n\\n";
print MAIL "$text";
close (MAIL);

print "Content-type: text/html\\n\\n";
print "send to $to !";
1. не выдает никаких ошибок
2. не отправляет с машины вообще ничего (снифером смотрел)
пробовал запускать на работе, дома и еще на 2-х хостах дома и на работе стоит винхр, денвер... раньше на тока поставленной винде и денвере все работало а ща не хотит...
Что за мистика такая??? че делать? я в ужасе
Название: проблема с sendmail
Отправлено: 09h от 01 Июня 2006, 18:33:41
скачал денвера последнюю версию тоже самое

а через Net::SMTP есть у ковонить живой пример отправки писем?
через свой smtp сервер отправляются письма только на адреса с темже доменом ...

нужно отправлять письма на мэил.ру
Название: проблема с sendmail
Отправлено: NeoNox от 01 Июня 2006, 19:07:23
В документации к модулю есть живой пример отправки писем.
Название: проблема с sendmail
Отправлено: 09h от 01 Июня 2006, 19:29:04
сделал на io::socket::inet но с сендмэйлом так и не понял что за глюк ) уже на 7 компутерах попробовал ... везде без ошибок и при этом вообще ничего не уходит в инет
Название: проблема с sendmail
Отправлено: NeoNox от 01 Июня 2006, 20:23:12
Логи читать мейлсервера нужно.
Или запускать Net::SMTP с опцией Debug => 1
Название: проблема с sendmail
Отправлено: 09h от 01 Июня 2006, 20:46:37
#!/usr/bin/perl -wT

use IO::Socket::INET;

$mailserver = "smtp.mail.ru";

print "Content-type: text/html\\n\\n";

$sock = IO::Socket::INET->new(PeerAddr => "$mailserver:smtp(25)", Timeout => \'4\');

sysread $sock,$answer_data,255;
print "1: $answer_data
";

syswrite $sock, "helo $mailserver\\r\\n";
sysread $sock,$answer_data,255;
print "2: $answer_data
";

syswrite $sock, "MAIL FROM: <09h\\@mail.ru> AUTH=09h\\@mail.ru\\r\\n";
sysread $sock,$answer_data,255;
print "3: $answer_data
";

syswrite $sock, "RCPT TO:\\r\\n";
sysread $sock,$answer_data,255;
print "4: $answer_data
";

syswrite $sock, "DATA\\r\\n";
sysread $sock,$answer_data,255;
print "5: $answer_data
";

syswrite $sock, "Blah blah blah...\\r\\n";

syswrite $sock, "...etc. etc. etc.\\r\\n";

syswrite $sock, ".\\r\\n";
sysread $sock,$answer_data,255;
print "6: $answer_data
";

syswrite $sock, "QUIT\\r\\n";
sysread $sock,$answer_data,255;
print "7: $answer_data
";


close $sock;
чтото я с AUTH не пойму ничего...

отвечает

1: 220 mail.ru ESMTP Thu, 01 Jun 2006 20:43:43 +0400
2: 250 mx6.mail.ru Hello smtp.mail.ru [212.96.102.250]
3: 250 OK
4: 250 Accepted
5: 354 Enter message, ending with "." on a line by itself
6: 550 Message was not accepted -- invalid mailbox. Local mailbox AUTH=09h@mail.ru is unavailable: user not found
7: 221 mx6.mail.ru closing connection

бывают вообще smtp сервера без авторизации? как сделать эту авторизацию? что неправильно сделал?
Название: проблема с sendmail
Отправлено: vladsu от 03 Июня 2006, 12:21:23
На сколько мне известно, чтобы посылать через мейл.ру нужно иметь ящик у них, и потом посылается без всякой авторизации, по крайней мере у меня.
Название: проблема с sendmail
Отправлено: 09h от 03 Июня 2006, 15:01:54
ну MAIL FROM: 09h@mail.ru ведь и так на мэил.ру
а если без AUTH=... тогда сразу говорит
1: 220 mail.ru ESMTP Sat, 03 Jun 2006 15:00:54 +0400
2: 250 mx3.mail.ru Hello smtp.mail.ru [212.96.102.107]
3: 250 OK
4: 250 Accepted
5: 503 Administrative prohibition -- authorization required. Users in your domain are not allowed to send email without authorization. See http://www.mail.ru/pages/help/261.html for details.
6: 500 unrecognized command
7: 500 unrecognized command 500 unrecognized command
Название: проблема с sendmail
Отправлено: 09h от 03 Июня 2006, 15:04:12
че делать? как быть?
Название: проблема с sendmail
Отправлено: vladsu от 05 Июня 2006, 00:53:55
Посмотрите ПС.
Название: проблема с sendmail
Отправлено: 09h от 05 Июня 2006, 10:25:35
что за ПС? мона без сокращения ?)
гы ) кажись понял что нужно ... снифер как всегда рулит ))
Название: проблема с sendmail
Отправлено: xames от 05 Июня 2006, 11:32:04
perldoc MIME::Lite

http://search.cpan.org/~yves/MIME-Lite-3.01/lib/MIME/Lite.pm

Посмотри, может не стоит заморачиваться, а проще воспользоваться модулем?
Название: проблема с sendmail
Отправлено: NeoNox от 05 Июня 2006, 12:58:08
Цитировать
09h:
че делать? как быть?

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



xames, это немного из другой оперы, но модуль полезнай.

Решение:

Цитировать

use Net::SMTP_auth;

$smtp = Net::SMTP_auth->new(\'smtp.mail.ru\', Debug => 1);
$smtp->auth(\'CRAM-MD5\', \'09h@mail.ru\', \'ТВОЙ ПАРОЛЬ\');

$smtp->mail(\'09h@mail.ru\');
$smtp->to(\'09h@mail.ru\'\');

$smtp->data();
$smtp->datasend("To: 09h\\@mail.ru \\n");
$smtp->datasend("\\n");
$smtp->datasend("A simple test message\\n");
$smtp->dataend();

$smtp->quit;
Название: проблема с sendmail
Отправлено: vladsu от 06 Июня 2006, 01:09:41
Цитировать
09h:
что за ПС? мона без сокращения ?)


Однако, Вы даже форумом пользоваться не умеете? Посмотрите на последнюю строчку любого сообщения в форуме. А расшифровывается это как "Персональное сообщение". Чтобы посмотреть пришедшие сообшения на Ваше имя выберете соответствующий пункт в выпадающем меню "Навигация".
Название: проблема с sendmail
Отправлено: NeoNox от 06 Июня 2006, 11:24:56
vladsu, меня любопытство замучало, что ты в ПС написал таког что нельзя было в форуме, а, поделись?
Название: проблема с sendmail
Отправлено: 09h от 06 Июня 2006, 11:58:30
всем спасибо за ответы ))
Название: проблема с sendmail
Отправлено: vladsu от 06 Июня 2006, 12:37:56
Цитировать
NeoNox:
vladsu, меня любопытство замучало, что ты в ПС написал таког что нельзя было в форуме, а, поделись?

Для тебя точно ничего нового, просто не хотелось спамеров плодить. Но если тебе уж так интерестно, могу переслать копию.
Название: проблема с sendmail
Отправлено: NeoNox от 06 Июня 2006, 12:42:39
Нет не надо (;
Да и спамерам от понимания системы авторизации при нынешней документированности мейлсерверов точно ничего нового не будет.
Название: проблема с sendmail
Отправлено: 09h от 09 Июня 2006, 23:55:05
Net::SMTP_auth сила )) отправил письмо через него и в логе весь разговор клиента с сервером ))
Название: проблема с sendmail
Отправлено: 09h от 10 Июня 2006, 14:22:37
ну письма отправлять получается но вот всетаки разобратся до конца охота с этим смтп и авторизацией ))
вот кусок разговора с сервером который Net::SMTP_auth записал
...
>>> EHLO localhost.localdomain

<<< 250-mail2.nthost.ru. Preved, krosavcheg! :)

<<< 250-PIPELINING

<<< 250-8BITMIME

<<< 250-SIZE 10485760

<<< 250 AUTH LOGIN PLAIN CRAM-MD5

>>> AUTH CRAM-MD5

<<< 334 PDE5NDU4LjExNDk2NzYzNTVAbWFpbDIubnRob3N0LnJ1Pg==

>>> YWRtaW5AaXJvbjI2LnJ1IDcxYmIzODg3YzBlZjgyMzJjYWI0OWM5YjZlNTM3MWE1

<<< 235 ok, go ahead (#2.0.0)
...
как я понял CRAM-MD5 это чтото вроде метода которым инфа какаето (логин с паролем наверное) шифруется в длинный набор символов на нерусском языке
как мона этот ответ <<< 334 PDE5NDU4LjExNDk2NzYzNTVAbWFpbDIubnRob3N0LnJ1Pg== от сервера привести в человеческий вид чтоб узнать что он хочет
ну вот еще есть догадка одна )) первые 21 сомволов которые скрипт с Net::SMTP_auth отвечает серверу после AUTH CRAM-MD5 всегда одинаковые я вот и подумал что в localhost.localdomain тоже 21 символ )) как мона такие пачки символов расшифровывать? где чаво почитать про это мона? ниче в яндексе ненашел ... а на сайтах нерусей все не по русски ((
Название: проблема с sendmail
Отправлено: vladsu от 11 Июня 2006, 03:10:05
Цитировать
09h:
ак мона этот ответ <<< 334 PDE5NDU4LjExNDk2NzYzNTVAbWFpbDIubnRob3N0LnJ1Pg== от сервера привести в человеческий вид

Нет.
Цитировать
09h:
ниче в яндексе ненашел

Уж не знаю как Вы ищете, попробуйте "алгоритм шифрования md5" так.
Название: проблема с sendmail
Отправлено: 09h от 11 Июня 2006, 23:21:58
хмм... ну если эта хтука назад не переводится никак тогда как мона узнать что надо после такого ответа от сервера сказать ему?
чтото вроде >>> YWRtaW5AaXJvbjI2LnJ1IDcxYmIzODg3YzBlZjgyMzJjYWI0OWM5YjZlNTM3MWE1 первые 21 символ вроде понял что передается ... а дальше что? гдето ведь это описано будет