Страница 1 из 1
[РЕШЕНО] ( Exim + procmail ) && "Получение статуса доставки"
Добавлено: 2010-03-01 16:56:22
erGo
Всем здрям.
Есть такая ситуяйция: с выделенного почтового сервака письма приходят на мой определённому юзеру и процмылом оного шлются трубой в скрипт. Скрипт коннектится с локальному сайту (под апачем) у и делает свои телодвижения. Но вот незадача - апач иногда лежит (до 10 секунд в сутки), а письма идут всегда. В итоге - иногда письма до сайта не доходят и никто об этом не знает, кроме отправителя, и то - ежели он проверит.
Как екзиму отправлять в трубу с контролем и дефером, минуя процмыл, я разобрался. Как екзим отправляет в процмыл - тоже. И возник вопрос - а может ли екзим получать от процмыла статус доставки? а то не хочется несколько десятков правил портировать из процмыла в экзим
Сенкс э лот фор хелп.
Re: ( Exim + procmail ) && "Получение статуса доставки"
Добавлено: 2010-03-02 16:30:22
erGo
Нашёл
нужную инфу в факе екзима:
If you want to run pipes and examine their results, you need to set up a single delivery to a delivery agent such as procmail which provides this kind of facility
Нашёл в мане процмыла, как его вызывать, чтоб он не баунсил письмо в случае ошибки, а репортовал о "временной ошибке":
-t Make procmail fail softly, i.e., if procmail cannot deliver the
mail to any of the destinations you gave, the mail will not
bounce, but will return to the mailqueue. Another delivery-
attempt will be made at some time in the future.
Нашёл и
такое:
(Note: invoking procmail with the -t flag causes it to return EX_TEMPFAIL instead of EX_CANTCREAT. This would cause the message to be requeued. However, this is not generally recommended.)
Нашёл образцы, как это сделано:
тута и
здеся.
Сделал. Конфиги:
exim:
Код: Выделить всё
begin routers
...
procmail:
driver = accept
check_local_user
local_parts = my-user
transport = transport_pipe_procmail
require_files = ${local_part}:${home}:${home}/.procmailrc:/usr/local/bin/procmail
no_verify
begin transports
...
transport_pipe_procmail:
driver = pipe
command = "/usr/local/bin/procmail -t"
temp_errors = *
timeout_defer = true
timeout = 1h
procmailrc:
Код: Выделить всё
PATH=$HOME/bin:/usr/bin:/sbin:/usr/sbin:/bin:/usr/local/bin:/usr/local/sbin
MAILDIR=$HOME/Mail/ # Youd better make sure it exists
LOGFILE=$HOME/log/procmail.log
LOGABSTRACT=all
LOCKTIMEOUT=600
VERBOSE=yes
YEARM=`/bin/date +%Y-%m`
:0 H
* ^From.*MAILER-DAEMON
/dev/null
:0 c
$YEARM
:0 H
* ^To.*my-user@myhost
$HOME/log/test
На $HOME/log/test установлены права, запрещающие пользователю процмыла писать в файл. В логе процмыла ошибка светится. А лог екзима говорит - успешно доставлен.
Куда ещё подскажете копать?
[РЕШЕНО] ( Exim + procmail ) && "Получение статуса доставки"
Добавлено: 2010-03-03 12:17:35
erGo
Разобрался.
Код: Выделить всё
begin transports
...
transport_pipe_procmail:
driver = pipe
command = "/usr/local/bin/procmail -t -m /path/to/procmailrc"
temp_errors = *
timeout_defer = true
timeout = 1h
Тему можно закрывать.
[offtop]
Прикольный у меня театр одного актёра получился ))
[/offtop]
Re: [РЕШЕНО] ( Exim + procmail ) && "Получение статуса доставки"
Добавлено: 2010-03-03 14:12:03
Alex Keda
бывает
я вообще часто вопрос пишу в форум, пока написал - понял как надо
)
Re: [РЕШЕНО] ( Exim + procmail ) && "Получение статуса доста
Добавлено: 2010-03-04 18:59:36
dikens3
Автор, напишите свою ситуацию и ваше решение в полезные скрипты.