sendmail

mulder

Guest
sendmail

Подскажите как обратится к
/usr/bin/sendmail/
из своего скрипта или вообще хоть как-то

Будет ли выигрыш от его использования при рассылке очень большого количества сообщений (надо сделать рассылку для пользователей своего сайта) по сравнению с PHP-функцией mail()?
 

Georgy

Guest
php функция [m]mail[/m]() так же использует сэндмэйл --- php.ini › sendmail_path

P.S.

запускай скрипт из крона. cron
 

Old_Strannik

Guest
Автор оригинала: Georgy
php функция [m]mail[/m]() так же использует сэндмэйл --- php.ini › sendmail_path

P.S.
запускай скрипт из крона. cron
Полностью согласен...
Активизировать рассылку через web-сервер чревато тем что сработает timeout web-сервера и рассылка прервется незавершившись.
Запускать скрипт рассылки лучше действительно либо из cron'а, либо из shell'а.
 

mulder

Guest
Так в том-то и проблема, что очень долго шлет.
Мне сказали что надо пользоваться админ средствами МТА.
Но у меня обычный хостинг, админ прав у меня нет.

А как через шелл передать сендмейлу список адресов?
Ну в общем поподробнее если можно, плз.
 

Old_Strannik

Guest
Автор оригинала: mulder
Так в том-то и проблема, что очень долго шлет.
Мне сказали что надо пользоваться админ средствами МТА.
Но у меня обычный хостинг, админ прав у меня нет.
Если скрипт долго отсылает, то это может происходить по самым различным причинам (перегружен сервер, сервер размещен на слабеньком канале и т.д.)

Бороться с этим можно только делая рассылку не напрямую, а через очередь, например для sendmail можно попробовать обращаться к нему с использованием ключей:
-odq

А как через шелл передать сендмейлу список адресов?
Ну в общем поподробнее если можно, плз.
Очень просто и вариантов тут воз и маленькая тележка, например:
1. Запускается скрипт на вход которому подается файл со списком адресов, ну например так:
bash#perl spam.pl < maillist.txt

Скрипту остается обрабатывать поток input и делать необходимые операции.

2. Запускается скрипт с передачей ему определенных параметров:
- имя файла со списком адресов
- имя файла с текстом письма для рассылки
- и т.д.

В этом случае строка запуска будет выглядеть так:
bash#perl spam.pl maillist.txt bodymail.txt

Скрипту остается открыть перечисленные файлы, прочитать их содержимое и сделать необходимые операции.
 

mulder

Guest
Сервер нормальный, просто адресатов очень много (пока что 15 000).

А PHP-шный скрипт через шелл как запустить? И так чтоб адреса не из файла брало, а сразу из базы.
 

Georgy

Guest
так обыно пишешь скрипт выборки из базы и посыла, как для броузера, только запускашь его

bash#/path/to/php </my/home/dir/spam/spam.php -- и все

такую строку можно прописать в кроне и время запуска сделать каждые 10 минут и выбирать не все адреса, а например по 1000, потом сл. 1000 etc....
 

mulder

Guest
Так я аналогично могу по 1000 запускать из самого скрипта...

Вопрос в том, даст ли мне рассылка напрямую через sendmail прирост скорости по сравнению с PHP-функйией mail?
 

Said

Guest
по идее выигрыша быть не должно, но на практике когда я использовал sendmail мой скрипт отрабатывал заметно медленнее чем с mail, хотя возможно дело в неправильных ключах.

Удобно для этого использовать класс PEAR Mail - позволяет легко менять варианты mail/semdmail/smtp: достаточно создать объект с соотв. параметром

$mail_object =& Mail::factory('sendmail', $params);
или
$mail_object =& Mail::factory('mail');

$mail_object->send($recipients, $headers, $body);

так что можешь сравнить
 

Antony

Guest
Ну на Перл например я беру путь к сэндмэлу в переменную
типа
$mail_prog="/usr/local/bin/sendmail -t";
 

mulder

Guest
Мне говорили, что если б была возможность использовать напрямую МТА, то это бы заметно помогло.

Насколько это правда?
А МТА не использует тот же sendmail?

Может есть другой способ? Суть проблемы вот в чем:
надо пользователям сайта отсылать новости сайта где-то раз в месяц. Пользователей уже 15000 и будет больше.
Я создавал для этого письмо и отправлял его пачками по 1000, т.е. в ВСС через запятую вписывал по 1000 пользователей. Так делают все форумы - если слать по одному, то точно очень медленно.
Но дело в том что, письмо при этом может дойти через день после отправки, хотя сам скрипт исполняется довольно быстро. Не знаю почему и где оно болтается, видно серевер их в какую-то очередь ставит и что-то еще. Если слать по одному письмо доходит моментально. Если вписать более 1000 адресатов, то письмо может и не дойти совсем.

Главная задача на данный момент, чтоб эти письма доходили быстрее, т.е. чтоб все пользователи сайта получили их по крайней мере в один день.
 

cap

Guest
Где лежало письмо нужно смотреть в его заголовках...
А твой хостер не предоставляет списков рассылки?
 

mulder

Guest
Автор оригинала: cap
Где лежало письмо нужно смотреть в его заголовках...
А твой хостер не предоставляет списков рассылки?
Я их про это спрашивал, а они мне на sendmail тыкнули.
 

cap

Guest
Тогда смотри в заголовки и вычисляй, где происходит затык...
 

mulder

Guest
Ну посмотрел. И что я могу тут сделать?

Return-Path: <[email protected]>
Received: from relay.rbc.ru (relay.rbc.ru [80.68.240.103])
by relay.chv.ukrpack.net (8.12.6/8.12.6) with ESMTP id h4CJudVQ094916
for <[email protected]>; Mon, 12 May 2003 22:56:41 +0300 (EEST)
(envelope-from [email protected])
Received: from rox.rbc.ru ([80.68.242.20]:2063 "EHLO rox.rbc.ru")
by drop.rbc.ru with ESMTP id <S43264AbTELT4K>;
Mon, 12 May 2003 23:56:10 +0400
Received: from rox.rbc.ru (localhost [127.0.0.1])
by rox.rbc.ru (8.12.6/8.12.6) with ESMTP id h4CJr5Of086716;
Mon, 12 May 2003 23:56:10 +0400 (MSD)
(envelope-from [email protected])
Received: (from nobody@localhost)
by rox.rbc.ru (8.12.6/8.12.6/Submit) id h4C7iZIE035932;
Mon, 12 May 2003 11:44:35 +0400 (MSD)
Date: Mon, 12 May 2003 11:44:35 +0400 (MSD)
 

cap

Guest
Я вот эту строчку не очень понял...
Received: from rox.rbc.ru (localhost [127.0.0.1])
by rox.rbc.ru (8.12.6/8.12.6) with ESMTP id h4CJr5Of086716;
Mon, 12 May 2003 23:56:10 +0400 (MSD)
(envelope-from [email protected])

Получается, что письмо ллежало на сервере 12 часов, а потом он его сам себе отправил?
 

mulder

Guest
Вот именно.
В чем загвоздка может быть? Так получается если только в ВСС много пользователей вписывать. Если по одному - то уходит моментально.
 

Apache Manager

Guest
еще есть разные пути на сервере самый распространенный это
/user/sbin/sendmail

Что бы это все проверить нада в на серваке набрать команду
whereis sendmail она покажет полный путь
 

cap

Guest
Только в том случае, если он есть в путях...

Можно еще type sendmail сказать ;)
 
Сверху