-rf retry folder — в эту папку будет перемещено письмо, если в течении -rh часов его не удалось доставить? Так? В связи с этим, можно ли использовать в этом качестве папку почтового ящика, чтобы потом по POP3 забрать оттуда скопившиеся письма?
-sh isp_server — этот параметр будет использоваться если письмо не удалось доставить напрямую по МХ? Т.е. запись в DNS существует, а доставить не удается?
Спасибо.

Технически можно. Только зачем? Пусть лучше пойдёт в очередь отложенной доставки и продолжает долбиться, но пореже. У меня обычно за сутки уходили, если затыки вдруг случались. Сначала в течение четырёх часов долбились каждые пять минут, потом отъезжали в другую очередь, откуда пытались уйти каждые два часа.
Например, сервер-получатель лежит. Или мужики в надежде набрать на бутылку оптический кабель выгрызли.
С этим понятно.
Еще по параметрам. Если параметру -rh присвоить значение 0, что будет? Значение по умолчанию или письмо будет переложено в retry после первой же попытки?
А у меня не нулевой.
Если не ноль, то по истечении указанного числа часов (не совсем понятно, от чего — наверное, от даты создания файла) будет попытка переместить в retry, заведомо неудачная. В принципе, можно поставить не ноль, а очень много часов, чтобы параметр -r раньше отработал.
Кстати, вот ситуация, одним из способов решения которой, может быть перемещение недоставленного письма в ящик, вместо retry.
Если Eserv работает МХ-ом для чужого домена, то соответственно настроен форвард. Если принимающий, чужой сервер ляжет надолго, то на Eserve письмо переложится в retry-папку где я так понимаю, для отправки из которой, применятся SendMailAppRetry-параметр. В этом случае, DNS выдаст наш внешний IP, отправка на который может потребовать нетривиальной настройки фаервола(если он используется). В этом случае, наверно, проще переложить письма в общий ящик и пусть принимающий сервер сам забирает свои письма, когда будет готов для этого.
Вторым вариантом решения: Если бы был параметр, что-то вроде SendMailAppForwardRetry и папка ForwardRetry.
Я так понял по второму варианту. Но в стандартной конфигурации нет этих параметров.
Подскажите как их добавить.
Я так понимаю, что для этого надо переходить на PigMail?
Отдельно выдернуть планировщик, думаю, вещь неблагодарная.
Странно, почему в стандартном нет параметров повтора для форварда, ведь это же логично.
Если уж такой "чайник" как я дошел до этого.
Не знаете, подобная доработка не планируется?
А про возможности PigMail почитайте (лучше в документации по бете).
С PigMail я знакомился, согласен, что он гибче. Но объяснить и доказать необходимость выделения доп. денег, пусть и небольших, начальству трудно, особенно сейчас. Ведь в целом почта работает и это пока устраивает всех (мои изыскания и интерес никого не интересует).
Спасибо за помощь и внимание.
Я тут подумал, а если изменить штатный шедулер следующим образом:
- В \data\mail создать папку forwardretry
- в Eserv3.ini добавляем параметры в секцию[SMTP]:
Forwardretry={Dirs[Mail]}\forwardretrySendMailAppForwardRetry={SMTP[SmtpSend]} -rh 0 -ln 200 -r 3 -helo {Server[HostName]} -o {Dirs[Temp]}\forwardretry-{RANDOM-ID}-log.xml -f {SMTP[Forwardretry]}\ {SMTP[Return]}
- В conf\smtp\delivery создать файл runsendmailappforwardretry.rules.txt следующего содержания:
\ запуск агента отправки почты из очереди повторов форвардаSMTP[SendMailAppForwardRetry] StartApp DROP
- Изменить activate.f (plugins\scheduler) до следующего вида:
:NONAMES" SMTP[SynchronousSend]" EVALUATE >FLAG 0= \ не блокирован ли автомат?
IF
" {SMTP[Out]}\*.*" STR@ MyFileExists \ есть ли файлы на отправку?
IF
S" smtp\delivery\RunSendMailApp" EvalRules \ да, инициировать отправку
THEN
S" SMTP[EmailSmtpForward]" EVALUATE ['] (MyCheckEmailForward) ForEachFileRecord \ проделать то же самое с пересылкой
THEN
; TASK: MYSMC-
:NONAME
S" SMTP[SynchronousSend]" EVALUATE >FLAG 0= \ не блокирован ли автомат?
IF
" {SMTP[Retry]}\*.*" STR@ MyFileExists \ есть ли файлы на отправку?
IF
S" smtp\delivery\RunSendMailAppRetry" EvalRules \ да, инициировать отправку
THEN
THEN
; TASK: MYSMC-R
:NONAME
S" SMTP[SynchronousSend]" EVALUATE >FLAG 0= \ не блокирован ли автомат?
IF
" {SMTP[Forwardretry]}\*.*" STR@ MyFileExists \ есть ли файлы на отправку?
IF
S" smtp\delivery\RunSendMailAppForwardRetry" EvalRules \ да, инициировать отправку
THEN
THEN
; TASK: MYSMC-RF
:NONAME
3000 PAUSE
BEGIN
0 MYSMC- START CLOSE-FILE THROW \ запустить поток проверки
[ SMTP[SchedulerPause] >NUM ] LITERAL PAUSE \ минутная пауза
AGAIN
; TASK: MYSM-
:NONAME
3500 PAUSE
BEGIN
0 MYSMC-R START CLOSE-FILE THROW \ запустить поток проверки
[ SMTP[SchedulerRetryPause] >NUM ] LITERAL PAUSE \ минутная пауза
AGAIN
; TASK: MYSM-R
:NONAME
4000 PAUSE
BEGIN
0 MYSMC-RF START CLOSE-FILE THROW \ запустить поток проверки
[ SMTP[SchedulerRetryPause] >NUM ] LITERAL PAUSE \ минутная пауза
AGAIN
; TASK: MYSM-RF
0 MYSM- START CLOSE-FILE THROW
0 MYSM-R START CLOSE-FILE THROW
0 MYSM-RF START CLOSE-FILE THROW
- Перезапустить acSMTP
Как думаете, правильно? Получиться?И нужен smtpsend4 версии 4.24 от 16 ноября прошлого года — только у него командная строка имеет приоритет над INI, и он возьмёт правильный путь для -rf
Тогда может так?
- В \data\mail создать папку forwardretry
- в Eserv3.ini добавляем параметры в секцию[SMTP]:
Forwardretry={Dirs[Mail]}\forwardretrySendMailAppForwardRetry={SMTP[SmtpSend]} -rh 0 -ln 200 -r 3 -helo {Server[HostName]} -sm {FIELD2} -p {FIELD3} -o {Dirs[Temp]}\forwardretry-{RANDOM-ID}-log.xml -f {SMTP[Forwardretry]}\{FIELD2}\{FIELD3}\ {SMTP[Return]}Изменить параметр SendMailAppForward добавив ключ –rf {SMTP[Forwardretry]}\{FIELD2}\{FIELD3
- В conf\smtp\delivery создать файл runsendmailappforwardretry.rules.txt следующего содержания:
\ запуск агента отправки почты из очереди повторов форвардаSMTP[SendMailAppForwardRetry] StartApp DROP
- Добавить в index.f (plugins\scheduler) строки:
\ обработка одной записи списка пересылки почты: (MyCheckEmailForwardRetry) ( — ) " {SMTP[Forwardretry]}\{FIELD2}\{FIELD3}\*.*" STR@ MyFileExists \ есть ли файлы на отправку? IF S" smtp\delivery\RunSendMailAppForwardRetry" EvalRules \ да, инициировать отправку THEN;
- Изменить activate.f (plugins\scheduler) до следующего вида:
:NONAMES" SMTP[SynchronousSend]" EVALUATE >FLAG 0= \ не блокирован ли автомат?
IF
" {SMTP[Out]}\*.*" STR@ MyFileExists \ есть ли файлы на отправку?
IF
S" smtp\delivery\RunSendMailApp" EvalRules \ да, инициировать отправку
THEN
S" SMTP[EmailSmtpForward]" EVALUATE ['] (MyCheckEmailForward) ForEachFileRecord \ проделать то же самое с пересылкой
THEN
; TASK: MYSMC-
:NONAME
S" SMTP[SynchronousSend]" EVALUATE >FLAG 0= \ не блокирован ли автомат?
IF
" {SMTP[Retry]}\*.*" STR@ MyFileExists \ есть ли файлы на отправку?
IF
S" smtp\delivery\RunSendMailAppRetry" EvalRules \ да, инициировать отправку
THEN
THEN
; TASK: MYSMC-R
:NONAME
S" SMTP[SynchronousSend]" EVALUATE >FLAG 0= \ не блокирован ли автомат?
IF
S" SMTP[EmailSmtpForward]" EVALUATE ['] (MyCheckEmailForwardRetry) ForEachFileRecord
THEN
; TASK: MYSMC-RF
:NONAME
3000 PAUSE
BEGIN
0 MYSMC- START CLOSE-FILE THROW \ запустить поток проверки
[ SMTP[SchedulerPause] >NUM ] LITERAL PAUSE \ минутная пауза
AGAIN
; TASK: MYSM-
:NONAME
3500 PAUSE
BEGIN
0 MYSMC-R START CLOSE-FILE THROW \ запустить поток проверки
[ SMTP[SchedulerRetryPause] >NUM ] LITERAL PAUSE \ минутная пауза
AGAIN
; TASK: MYSM-R
:NONAME
4000 PAUSE
BEGIN
0 MYSMC-RF START CLOSE-FILE THROW \ запустить поток проверки
[ SMTP[SchedulerRetryPause] >NUM ] LITERAL PAUSE \ минутная пауза
AGAIN
; TASK: MYSM-RF
0 MYSM- START CLOSE-FILE THROW
0 MYSM-R START CLOSE-FILE THROW
0 MYSM-RF START CLOSE-FILE THROW
Подскажите где взять? У меня от 19 июля 2006 г (версию не знаю)
Правки да, примерно такие, только я у себя обошёлся двумя потоками и не стал заводить дополнительный каталог. Просто Retry обрабатывается по той же самой схеме, что и Out. Сначала общая очередь, потом направления по списку.
С потоками тоже разобрался, но доп. функцию в index.f все таки добавить надо? ведь именно там обрабатывается список форварда?
И еще, чтобы изменения в index.f и activate.f не затерлись их нужно переместить в myconf? Всю папку scheduler с путями?
Извиняюсь — что влез в Вашу беседу, но тоже уже давно этот вопрос смущает: если я не использую PigMail, а просто редактирую под себя какие-нить правила и затем файлы сохраню не в acSMTP\conf\ например, а в acSMTP\myconf\
Будет-ли это означать, что правила с одинаковыми названиями будут грузиться при их наличии именно из myconf а не из conf ? Ну и аналогично для acIMAP и acWEB. Или это где-то ещё дополнительно описывать?
Большое спасибо pig за помощь и консультацию.
Насчет myconf. Насколько я знаю перед просмотром любых папок conf с настройками сначало проверяется наличие myconf и если она присутствует, настройки и модули берутся оттуда. Это относится ко всем сервисам комплекта. А спросил для очистки совести. Раньше никогда не лазил в файлы .f