Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Perl + sendmail (http://forum.oszone.net/showthread.php?t=31041)

ivank 08-08-2004 01:47 212940

Есть такой код:
Код:

open (MAIL,"| $SEND_MAIL -t");
print MAIL "To: $to\n";
print MAIL "From: $fromaddr\n";
print MAIL "Reply-to: $replyaddr\n" if $replyaddr;
print MAIL "X-Mailer: Perl Powered Socket Mailer\n";
print MAIL "Content-Type: text/plain; charset=Windows-1251\n";
print MAIL "Subject: $subject\n\n";
print MAIL "$message";
print MAIL "\n";

Всё бы прекрасно, вот только не шлёт оно письма на mail.ru :( (угадайте с трёх раз откуда я этот кусок взял :)). Вопрос: это некорректный код или неправильно настроен sendmail?

Prisoner 08-08-2004 02:52 212941

Молча не шлет? И только на мыло.ру?

ivank 08-08-2004 05:27 212942

Молча (в смысле на stdin/stderr ничего не говорит). Может в логи что-то и пишет, но они мне не доступны.

Добавлено:

На сколько мне известно не шлёт только на mail.ru (bk.ru, inbox.ru это тот же мэйл.ру)

Prisoner 09-08-2004 00:57 212943

Вроде все нормально (насколько подсказывают мне мои скуlные познания Perl), больше бы информации :\.

Vlad Drakula 09-08-2004 20:04 212944

ivank
я предложу тредтий вариант - мейл ру просто бъет эти письма, я сталкивался с подобной пробленной когда мне от хостера не доходили письма...

archy 09-08-2004 22:31 212945

Попробуй написать так:
Код:

open (MAIL,"| $SEND_MAIL -t") || die "sendmail sux";
и посмотри, что будет дальше

mar 09-08-2004 23:37 212946

ivank
Цитата:

Может в логи что-то и пишет, но они мне не доступны
Вот те на! а я думала, что это выделенный сервер и все логи админу доступны :o
Упс! - забавно:
Код:


-bash-2.05b$ telnet forum.oszone.net smtp
Trying 66.79.174.172...
Connected to forum.oszone.net.
Escape character is '^]'.
220 master.phpdevs.com ESMTP
quit
221 master.phpdevs.com
Connection closed by foreign host.


ошибок в коде вроде бы нет. (кажется - по тому куску, что виден)
Вариант раз - нервная реакция на кодировку (в свое время предлагалось все не в koi посылать подальше)
Вариант два - пробовать все-таки получить логи (хотя предложение *archy, несмотря на его заманчивость, :) может и не пройти: я думаю, что sendmail ставит письма в очередь, а чудеса начинаются потом)
Вариант три: пргнать код с какого-нибудь независимого сервера, где логи можно поглядеть на какой-нибудь адрес mail.ru
Кто больше? :)

ivank 10-08-2004 00:20 212947

Цитата:

Попробуй написать так:

Код: open (MAIL,"| $SEND_MAIL -t") || die "sendmail sux";
sendmail есть и запускается, так что не прокатит.

Собственно говоря, перл тут совсем не причём. Поскольку если я говорю то же самое sendmail'у через ssh сам, то эффект наблюдается прежний.

Цитата:

Вариант раз - нервная реакция на кодировку (в свое время предлагалось все не в koi посылать подальше)
Нет, если указывать кои или не указывать ничего, то ничего не меняется.

Цитата:

Вот те на! а я думала, что это выделенный сервер и все логи админу доступны
Сервер выделенный, да. Только я не сисадмин. Мне только логи апача легко достать, за остальным надо обращаться к самому главному. Что видимо и придётся делать.

[s]Исправлено: ivank, 0:25 10-08-2004[/s]

mar 10-08-2004 18:00 212948

ivank Лови! если у тебя нет дополнительных данных для скрипта-отправителя, то вот ответы mail.ru:
Код:

#!/usr/local/bin/perl -w
$SEND_MAIL = "/usr/sbin/sendmail";
$to = "mnesin\@mail.ru";
$fromaddr = "mar\@mail.bio.pu.ru";
$subject = "test";
$message = "test_mess";
## дальше - твое
open (MAIL,"| $SEND_MAIL -t");
print MAIL "To: $to\n";
print MAIL "From: $fromaddr\n";
#print MAIL "Reply-to: $replyaddr\n" if $replyaddr;
print MAIL "X-Mailer: Perl Powered Socket Mailer\n";
print MAIL "Content-Type: text/plain; charset=Windows-1251\n";
print MAIL "Subject: $subject\n\n";
print MAIL "$message";
print MAIL "\n";

Пока все правильно?
Получаем:
Код:

cat /var/log/maillog
Aug 10 17:52:22 bastion sendmail[19052]: RAA19050: to=mnesin@mail.ru, ctladdr=mar (1010/0),
 delay=00:00:11, xdelay=00:00:11, mailer=esmtp, relay=mxs.mail.ru. [194.67.23.20], stat=User unknown
Aug 10 17:52:22 bastion sendmail[19052]: RAA19050: RAA19052: DSN: User unknown
Aug 10 17:52:22 bastion sendmail[19052]: RAA19052: to=mar, delay=00:00:00, xdelay=00:00:00,
 mailer=local, stat=Sent
Aug 10 17:59:01 bastion sendmail[19077]: RAA19077: from=mar, size=153, class=0, pri=30153, nrcpts=1,
 msgid=<200408101759.RAA19077@localhost>, relay=mar@localhost

И имеем письмо мне:
Код:

The original message was received at Tue, 10 Aug 2004 17:52:11 GMT
from mar@localhost
 
 * ----- The following addresses had permanent fatal errors -----
mnesin@mail.ru
 
 * ----- Transcript of session follows -----
... while talking to mxs.mail.ru.:
>>> RCPT To:<mnesin@mail.ru>
<<< 550-Verification failed for <mar@localhost> Unrouteable address
<<< 550 non-local sender verification failed
550 mnesin@mail.ru... User unknown

[s]Исправлено: mar, 18:05 10-08-2004[/s]

ivank 14-08-2004 20:05 212949

Спасибо. Хотя я всё равно, видимо, банально через SMTP сервер слать буду (т.к. через него всё ходит). Т.к. почему сия ошибка возникает: ни малейшего представления не имею.

mar 14-08-2004 20:43 212950

ivank
Цитата:

банально через SMTP сервер слать буду
"истинно, истинно, говорю я вам" *;) мне этот вариант тоже всегда больше нравится :)

заодно проверила свой старый перловый, через smtp работающий, почтовик на предмет посылки на mail.ru - никаких проблем


Добавлено:

ivank
существенное дополнение: я стала разбираться в чем дело и выяснила, что при посылке просто руками mail имя@mail.ru получается та же петрушка с тем же отлупом. Тут уже было впору подумать о конфигурации sendmail-а. Оказалось, что там у меня на серваке не была выставлена опуция маскарадить localhost.localdomain После того, как это было сделано
CMlocalhost.localdomain в /etc/sendmail.cf (FreeBSD), все стало отправляться нормально. Опять запустила скрипт, сделанный из твоего и письмо дошло нормально(!) То есть в моем случае проблемы были в моих старых конфигурационных хвостах. И не скрипта, а сервака. Понятно также, что при работе по smtp системе было наплевать на все эти конфигурации - все передавалось по протоколу.
Так что - извини, может я тебя и дезинформировала, - надо все-таки логи сервера смотреть.


Время: 11:31.

Время: 11:31.
© OSzone.net 2001-