URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 97584
[ Назад ]

Исходное сообщение
"exim bounce"

Отправлено fevil , 29-Апр-20 21:11 
Добрый день.

Есть exim и проблема с bounce. Хочу запретить слать боунс если письмо пришло на не существующий адрес. Для этого добавил в начало acl в конфиг:

______________________________________
begin acl
acl_check_rcpt:
deny   domains = local_domains
       message = Can't verify recipient
       !verify  = recipient
______________________________________

exim этот блок игнорирует и срабатывает роутер:

rcpt_check_router:
    driver = redirect
    allow_fail
    no_verify
    data = "${if eq{}{${lookup mysql{ SQLUSR }}}{:fail: unknown local user}{$local_part@$domain} }"

при этом отправителю приходит письмо о невозможности доставки от mail-daemon. как заблокировать отправку этого сообщения а отправителю ответить 550?


заменил :fail: на :blackhole: теперь все письма принимаются и нет боунса. но мне видится некорректным это.
  
rcpt_check_router:
    driver = redirect
    allow_fail
    no_verify
    data = "${if eq{}{${lookup mysql{ SQLUSR }}}{:blackhole: unknown local user}{$local_part@$domain} }"

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


Содержание

Сообщения в этом обсуждении
"exim bounce"
Отправлено xm , 29-Апр-20 21:23 
Ну, во-первых, у вас ошибка в первом же правиле - именованный список без начального +

"exim bounce"
Отправлено fevil , 29-Апр-20 22:05 
> Ну, во-первых, у вас ошибка в первом же правиле - именованный список
> без начального +

Спасибо.Верное замечание, это во время тестирования потерял, но сути дела не меняет этот блок по прежнему игнорируется и уходит на router. Такое ощущение что !verify  = recipient всегда верное.


"exim bounce"
Отправлено xm , 30-Апр-20 00:41 
>> Ну, во-первых, у вас ошибка в первом же правиле - именованный список
>> без начального +
> Спасибо.Верное замечание, это во время тестирования потерял, но сути дела не меняет
> этот блок по прежнему игнорируется и уходит на router. Такое ощущение
> что !verify  = recipient всегда верное.

Ну так в Exim есть мощный режим отладки. Запускайте и смотрите что у вас там (не)срабатывает и почему.

# service exim stop
# exim -bd -q15m -d+all


"exim bounce"
Отправлено fevil , 30-Апр-20 01:23 
>>> Ну, во-первых, у вас ошибка в первом же правиле - именованный список
>>> без начального +
>> Спасибо.Верное замечание, это во время тестирования потерял, но сути дела не меняет
>> этот блок по прежнему игнорируется и уходит на router. Такое ощущение
>> что !verify  = recipient всегда верное.
> Ну так в Exim есть мощный режим отладки. Запускайте и смотрите что
> у вас там (не)срабатывает и почему.
> # service exim stop
> # exim -bd -q15m -d+all

в отладке и смотрю что
> !verify  = recipient

всегда проходит. Не зависимо есть пользователь или нет в системе всегда одинаково.


"exim bounce"
Отправлено xm , 30-Апр-20 19:26 
Эта проверка эмулирует доставку через набор роутеров Exim (что хорошо видно в отладке). Т.е. если она проходит, то один из роутеров срабатывает.

> в отладке и смотрю что
>> !verify  = recipient
>  всегда проходит. Не зависимо есть пользователь или нет в системе всегда
> одинаково.


"exim bounce"
Отправлено fevil , 30-Апр-20 01:18 
Провел небольшой эксперимент:

удалил блок:
> rcpt_check_router:
>     driver = redirect
>     allow_fail
>     no_verify
>     data = "${if eq{}{${lookup mysql{ SQLUSR }}}{:fail: unknown
> local user}{$local_part@$domain} }"

после этого в логе посыпались ошибки от LDA  что нет пользователя получателя и он не может ему письмо доставить.

вернул блок немного изменив его:

rcpt_check_router:
    driver = redirect
    allow_fail = yes
    data = :fail: Unknown local user
    no_more

в итоге получил в логе smtp :
rejected RCPT : Unknown local user

а отправителю пришел баунс от сервера отправления со значением:
SMTP error from remote mail server after RCPT TO:<nonuser@domain.example>:
550 Can't verify recipient


Взятый из блока:
>begin acl
>acl_check_rcpt:
>deny   domains = +local_domains
>       message = Can't verify recipient
>       !verify  = recipient

Подскажите я правильно понимаю что письмо приходит на сервер exim пытается отдать его на доставку LDA, тот говорит что нет такого пользователя, и тогда срабатывает роутер по обработке. Если это верно то как все же правильно проверить пользователя не отправляя на LDA а посмотреть его в базе перед приемкой?


"exim bounce"
Отправлено xm , 11-Май-20 21:40 
Судя по ошибке похоже на то.
Проверка получателя в ACL RCPT делается через

verify = recipient

>[оверквотинг удален]
>>begin acl
>>acl_check_rcpt:
>>deny   domains = +local_domains
>>       message = Can't verify recipient
>>       !verify  = recipient
> Подскажите я правильно понимаю что письмо приходит на сервер exim пытается отдать
> его на доставку LDA, тот говорит что нет такого пользователя, и
> тогда срабатывает роутер по обработке. Если это верно то как все
> же правильно проверить пользователя не отправляя на LDA а посмотреть его
> в базе перед приемкой?


"exim bounce"
Отправлено Аноним , 12-Май-20 22:43 
Как тогда узнать дошло письмо получателю или нет? Человек может опечататься и будет думать что письмо до адресата дошло.
Лучше выявлять и блокировать тех кто постоянного шлёт на несуществующие адреса.