Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Как запустить sendmail целиком из командной строки?

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Интернет
Предыдущая тема :: Следующая тема  
Автор Сообщение
DeN2002



Зарегистрирован: 25.07.2002
Сообщения: 29
Откуда: Красноярск

СообщениеДобавлено: Ср Авг 14 2002 22:32    Заголовок сообщения: Как запустить sendmail целиком из командной строки? Ответить с цитатой

Я чайник в UNIX и не знаю по каким принципам там работает консоль.

Вот фрагмент кода на Perl:

system("at now + 1 minute");
system("/usr/sbin/sendmail -t -odq");
system("From: \"Администратор\" ");
system("To: \"$NAME\" ");
system("Subject: Тема...");
system("\n\n");
system("Сообщение...");
system("\n\n"); .. итоге, письмо не приходит.

Что я делаю не так? Подскажите пожалуйста, если можно.

С уважением, DeN.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
and3008



Зарегистрирован: 12.10.2001
Сообщения: 14893
Откуда: Н.Новгород

СообщениеДобавлено: Чт Авг 15 2002 13:22    Заголовок сообщения: Мдя... (+) Ответить с цитатой

Это ж надо...

Я в шоке...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Dmitry.Karpov http://www.
Гость





СообщениеДобавлено: Чт Авг 15 2002 20:22    Заголовок сообщения: Ты не путай консоль и shell Ответить с цитатой

Когда ты запускаешь команду с консоли (с клавиатуры), ее stdin соответствует той же консоли. Но system("команда аргументы") запускает команду с аргументами, но stdin наследуется у Perl-программы, а новые команды system("...") не выводят чего-то в stdin запущенной команды, а запускают новые экземпляры shell.

Тут надо делать немного совсем иначе. К сожалению, я так и не изучил Perl, поэтому объясняю на пальцах. сначала надо открыть файл через пайп-команду - что-то типа
OPEN("| /usr/sbin/sendmail -t -odq")
и потом писАть в этот файл все, что ты хочешь скормить СендИэйлу.

А я запускаю отправку по почте таким shell-скриптом:

rmail denshish@mail.ru <<\.
From prof
From: Dmitry.Karpov@pi2.ru
To: denshish@mail.ru
Subject: тема сообщения
MIME-Version: 1.0
Content-Type: text/plain; charset=koi8-r
Content-Transfer-Encoding: 8bit

тело сообщения
.

Точка после <<\ и после тела сообщения (одна в строкЕ) связаны, вместо точки там можно использовать любое слово (RTFM про shell). Кажется, то же самое можно сделать и на Perl.

А and3008 мог бы ответить детальнее - наверно, у него просто шок от постановки вопроса...
Вернуться к началу
DeN2002



Зарегистрирован: 25.07.2002
Сообщения: 29
Откуда: Красноярск

СообщениеДобавлено: Чт Авг 15 2002 22:36    Заголовок сообщения: Так у меня ж другая проблема?! Ответить с цитатой

Да я ранее так и делал. Открывал себе спокойно OPEN(F,"|/usr/sbin/sendmail -t -odq"), а затем выводил туда что хотел. Все работало. Потом мне понадобилось отсрочить отправку письма. Я обратился на форуме с этим вопросом. Вы мне ответили, что можно использовать команду at. Проблема в том, что команда at запускает то, что также передается через STDIN.

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

at now + 1 minute
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Dmitry.Karpov http://www.
Гость





СообщениеДобавлено: Чт Авг 15 2002 23:15    Заголовок сообщения: Попробуй типа OPEN(F,"|at now + 1 minute") и далее скорми ему остальное! Ответить с цитатой

Неужели неочевидно, что в таком случае команда "/usr/sbin/sendmail -t -odq" - это не команда, а составная часть stdin для команды "at now + 1 minute"? Это потом уже at будет интепретировать первую строчку как команду, которую надо запустить. Правда, я не уверен, что at скормит на stdin СендМайлу остальное...

Есть еще один вариант: записать задание для at в файл и пусть at запустит файл как скрипт (сценарий).
Вернуться к началу
DeN2002



Зарегистрирован: 25.07.2002
Сообщения: 29
Откуда: Красноярск

СообщениеДобавлено: Пт Авг 16 2002 01:12    Заголовок сообщения: Не получается :(( Ответить с цитатой

Попробовал оба варианта. Ничего не происходит. Обидно, что даже отследить ничего нельзя Sad

С уважением, DeN.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Борис
Гость





СообщениеДобавлено: Пт Авг 16 2002 10:17    Заголовок сообщения: Re: Не получается :(( Ответить с цитатой

Ты, главное, пойми, что, когда ты даешь команду system("команда"), perl делает вот что: sh -c команда. А когда ты в шелле (sh) отправляешь через sendmail, ты делаешь по сути вот что:
sendmail получатель
Вернуться к началу
DeN2002



Зарегистрирован: 25.07.2002
Сообщения: 29
Откуда: Красноярск

СообщениеДобавлено: Пт Авг 16 2002 15:33    Заголовок сообщения: И что мне делать? Ответить с цитатой

Я не знаю UNIX'овых команд и использую все, что нахожу в книжке по Perl. Именно поэтому я и обратился за помощью к тем, кто знает команды UNIX.

Извините за чайниковость.

С уважением, DeN.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Борис
Гость





СообщениеДобавлено: Пт Авг 16 2002 17:55    Заголовок сообщения: Re: И что мне делать? Ответить с цитатой

man sh
man chmod
и пойми следующие идеи. Естественно, чисто в приведенном виде может быть неправильно, ты пойми идею и оформи своими красками. Будет твоя картина.

1) через файл.
делаешь средствами Perl'а файл (perlfile) с таким содержимым:
----------------------------------
sendmail получатель
Вернуться к началу
DeN2002



Зарегистрирован: 25.07.2002
Сообщения: 29
Откуда: Красноярск

СообщениеДобавлено: Пт Авг 16 2002 20:36    Заголовок сообщения: Все это зашло слишком далеко... Ответить с цитатой

Все это зашло слишком далеко. Я не знаю команд ни SH ни CHMOD. Я скромно работаю с перлом и не лезу в Unix.

Мне нужно было сделать так, чтобы за 30 минут не было послано больше 10 писем, иначе система, предоставляющая бесплатный хостинг, решит, что у меня стоит скрипт массовой рассылки. Я поступлю проще: т.к. отправка/неотправка письма зависит от пользователя, то я просто запрещу им посылать письма чаще, чем через каждые 3-4 минуты. Не очень удобно, зато просто.

С уважением, DeN.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Борис
Гость





СообщениеДобавлено: Сб Авг 17 2002 16:36    Заголовок сообщения: Re: Все это зашло слишком далеко... Ответить с цитатой

Так вот в чем дело! Вопрос в том, чтобы не попасть в спаммеры!
Хмммм... Просто?... Есть вопросы, которые "просто" не решаются, IMHO, здесь как раз такой случай.
Вернуться к началу
DeN2002



Зарегистрирован: 25.07.2002
Сообщения: 29
Откуда: Красноярск

СообщениеДобавлено: Сб Авг 17 2002 22:14    Заголовок сообщения: Ответ на: "Re: Все это зашло слишком дале..- Борис- 17-08-2002 17:36" И в чем могут быть подводны Ответить с цитатой

На чем я могу споткнуться в таком случае?

С уважением, DeN.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Борис
Гость





СообщениеДобавлено: Пн Авг 19 2002 09:43    Заголовок сообщения: Re: Ответ на: "Re: Все это зашло слишком дале..- Борис- 17-08-2002 17:36" И в чем могут быть подводные камни? Ответить с цитатой

Например, много законопослушных пользователей шлют почту (одновременно) через машину, которая подменяет их адреса своим. Тогда твой скрипт решит (если запрет на быструю повторную посылку будет приниматься на основании IP-адреса отправителя), что это один и тот же пользователь шлет много писем и обрежет их.
Наоборот, если спаммер управляет несколькими машинами, то твой скрипт решит, что это благонамеренные пользователи.
А сам твой скрипт? Если будет обрабатываеть столько нормальных сообщений от благонамеренных пользователей, что их будет больше, чем 10 писем за 30 минут? Его самого в спаммеры запишут.
Еще соображение. 30/10=3. То есть пауза, которую ты даешь пользователю у тебя равна паузе, которую дали тебе самому? Тогда у тебя фактически однопользовательская почта, так? Но тогда зачем вообще этот скрипт?
Вернуться к началу
DeN2002



Зарегистрирован: 25.07.2002
Сообщения: 29
Откуда: Красноярск

СообщениеДобавлено: Вт Авг 20 2002 03:54    Заголовок сообщения: Спасибо за ценные указания. Я решил... Ответить с цитатой

Да, зря я затеял всю эту бучу. Истина, как всегда, оказалась рядом. Я сделаю защиту на уровне пользовательского интерфейса. Действительно, у меня нет тех потоков пользователей, которые могут записать меня в спаммеры.

С уважением, DeN.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Интернет Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...