Hi!
Вот нужно для обработки правил прокмейла узнать как sendmail завершил отправку письма - успешно или неуспешно. Как получить от него код возврата и в каком виде он будет (0/1, код ошибки или ...)?Удачи!
HAN
>Hi!
>Вот нужно для обработки правил прокмейла узнать как sendmail завершил отправку письма
>- успешно или неуспешно. Как получить от него код возврата и
>в каком виде он будет (0/1, код ошибки или ...)?в виде что по RFC, их(rfc) всего два: rfc821 и rfc1893, если не ошибаюсь
и правильно понял>Удачи!
>HAN
>>Hi!
>>Вот нужно для обработки правил прокмейла узнать как sendmail завершил отправку письма
>>- успешно или неуспешно. Как получить от него код возврата и
>>в каком виде он будет (0/1, код ошибки или ...)?
>
>в виде что по RFC, их(rfc) всего два: rfc821 и rfc1893, если
>не ошибаюсь
>и правильно понялНебыло времени на чтение конференции, поэтому так поздно отвечаю - нужно просто запустить сендмайл из командной строки и узнать отправилось ли письмо или был отлуп. Ведь есть у него коды возврата, но вот как это дело получить? Как сформировать командную строку или как кинуть этот код на STDOUT?
Удачи!
HAN
>>>Hi!
>>>Вот нужно для обработки правил прокмейла узнать как sendmail завершил отправку письма
>>>- успешно или неуспешно. Как получить от него код возврата и
>>>в каком виде он будет (0/1, код ошибки или ...)?
>>
>>в виде что по RFC, их(rfc) всего два: rfc821 и rfc1893, если
>>не ошибаюсь
>>и правильно понял
>
>Небыло времени на чтение конференции, поэтому так поздно отвечаю - нужно просто
>запустить сендмайл из командной строки и узнать отправилось ли письмо или
>был отлуп. Ведь есть у него коды возврата, но вот как
>это дело получить? Как сформировать командную строку или как кинуть этот
>код на STDOUT?а man sendmail не помогает?
>Удачи!
>HAN
Hi!
>>запустить сендмайл из командной строки и узнать отправилось ли письмо или
>>был отлуп. Ведь есть у него коды возврата, но вот как
>>это дело получить? Как сформировать командную строку или как кинуть этот
>>код на STDOUT?
>
>а man sendmail не помогает?
>
Есть у него такая опция в командной строке ErrorMode=x, но _где_ его "поймать" этот ответ? Кроме лога конечно, нужно сразу "на лету", тк. по этому ответу будут соответственные действия с письмом (уже не этой сессией сендмейла).Удачи!
HAN
EX_OK 0 /* successful termination */
EX__BASE 64 /* base value for error messages */
EX_USAGE 64 /* command line usage error */
EX_DATAERR 65 /* data format error */
EX_NOINPUT 66 /* cannot open input */
EX_NOUSER 67 /* addressee unknown */
EX_NOHOST 68 /* host name unknown */
EX_UNAVAILABLE 69 /* service unavailable */
EX_SOFTWARE 70 /* internal software error */
EX_OSERR 71 /* system error (e.g., can't fork) */
EX_OSFILE 72 /* critical OS file missing */
EX_CANTCREAT 73 /* can't create (user) output file */
EX_IOERR 74 /* input/output error */
EX_TEMPFAIL 75 /* temp failure; user is invited to retry */
EX_PROTOCOL 76 /* remote error in protocol */
EX_NOPERM 77 /* permission denied */
EX_CONFIG 78 /* configuration error */
EX__MAX 78 /* maximum listed value */Ты емеешь в виду эти или какие.?
>EX_OK 0
> /* successful termination */
>EX__BASE 64
> /* base value for error messages */
>EX_USAGE 64
> /* command line usage error */
>EX_DATAERR 65 /*
>data format error */
>EX_NOINPUT 66 /*
>cannot open input */
>EX_NOUSER 67
>/* addressee unknown */
>EX_NOHOST 68
>/* host name unknown */
>EX_UNAVAILABLE 69 /* service unavailable */
>EX_SOFTWARE 70 /* internal
>software error */
>EX_OSERR 71
> /* system error (e.g., can't fork) */
>EX_OSFILE 72
>/* critical OS file missing */
>EX_CANTCREAT 73 /* can't create
>(user) output file */
>EX_IOERR 74
> /* input/output error */
>EX_TEMPFAIL 75 /* temp
>failure; user is invited to retry */
>EX_PROTOCOL 76 /* remote
>error in protocol */
>EX_NOPERM 77
>/* permission denied */
>EX_CONFIG 78
>/* configuration error */
>EX__MAX 78
> /* maximum listed value */
>
>Ты емеешь в виду эти или какие.?Это я знаю, исходники смотрел. Ну если еще можно будет по конкретным ошибкам, то это будет отлично. Пока мне хотя-бы 0 или 1 (отправлено письмо или нет). Только еще раз уточню - я не пишу программу которая может использовать библиотеки сендмейла, мне нужно отдавать ответ из отработки сенмейла в командной строке (вобщем в шелле sh/csh).
Удачи!
HAN
Ну так и задавай коды ошибок, которые тут есть.#!/usr/bin/perl -w
my ($arg_1) = $ARGV[0];
my ($dir) = $ARGV[1];
my ($arg_2) = $ARGV[2];
my ($email) = $ARGV[3];open(F,">>/tmp/test");
print FILE sprintf("\n%s %s %s %s\n", $arg_1, $dir,$arg_2l,,$email);
whyle(<stdin>)
{
print FILE $_;
}
close (F);exit 67; # к примеру,
67 - Неизвестный пользователь
В итоге сендмейл получит от Прграммы код возврата и сгенерирует ответ.У меня других нет :-(
Ими и пользовался когда прогу разбирал и переписывал, для мейлера.
>Ну так и задавай коды ошибок, которые тут есть.
>
>#!/usr/bin/perl -w
>my ($arg_1) = $ARGV[0];
>my ($dir) = $ARGV[1];
>my ($arg_2) = $ARGV[2];
>my ($email) = $ARGV[3];
>
>open(F,">>/tmp/test");
>print FILE sprintf("\n%s %s %s %s\n", $arg_1, $dir,$arg_2l,,$email);
>whyle(<stdin>)
>{
> print FILE $_;
>}
>close (F);
>
>exit 67; # к примеру,
>
>67 - Неизвестный пользователь
>В итоге сендмейл получит от Прграммы код возврата и сгенерирует ответ.
>
>У меня других нет :-(
>Ими и пользовался когда прогу разбирал и переписывал, для мейлера.Hi!
Что-то ты тут сильно закрутил, вроде почистил этот код ошибки исправил - ну и что это дает? даю ему на вход командную строку вида
script sendmail -O NoRecipientAction=Add-To user@domain.com - идет вход в бесконечный цикл... Или как этот скрипт применять? Поясни плиз.
Вот мне нужно только поймать что ответит сендмейл на командную строку (это пример) echo "123 123" | sendmail -O NoRecipientAction=Add-To user@domain.com. Может и твой пример что-то подобное делает но я что-то не соображу... Подскажи, плиз.Удачи!
HAN
Этот скрипт, суть самый прорстой мейлер, коим является mail.local, procmail
Если глянуть в нутрь sendmail.cf на предмет строки mail.local
то можно увидеть наличие програмки которая валяется в каталоге .../sbin/ или где то там, дополненая ключами.
тот есть на вход скрипту передаются параметры такие как email (более детально надо глянуть) и прочие ключики,
просле чего сам сендмеил на stdin вываливает все что к нему пришло в качестве письма.
в ответ, по завершениее цикла while (<stdin>)
сендмейл ожидает код возврата (один из тех что приводились выше)
и на основании этого решает что делать далее.
либо Говорить что письмо получено (status=sent) либо писать отлуп.