Добрый день.
Ребята подскажите куда смотреть. У меня есть почтовый сервер на базе exim+dovecot. Пользователи хранятся в базе mysql. Авторизация и валидность пользователя проходят если у пользователя есть 1 специальном поле. Если в этом поле стоит 0 то со стороны почтового сервера этого пользователя не существует. И если отправить письмо такому пользователю - в ответ будет: 550 There is no requested mailbox.Собственно вопрос, как поменять сообщение об ошибке для пользователей с ноликом на - такое
550 Sorry your message cannot be delivered. This account has been disabled or discontinued.всем спасибо.
> Собственно вопрос, как поменять сообщение об ошибке для пользователей с ноликом[телепатрон ON]
У вас в конфиге экзима непременно есть роутер, в котором идет обращение к мусклю. Там, несомненно, будет некий кондишн с запросом вида "SELECT .... AND специальное_поле=1".
[телепатрон OFF]Вам нужно будет создать еще один роутер:
inactive:
driver = fail
condition = ${lookup mysql{SELECT ... AND специальное_поле=0}{yes}{no}}
message = Запрашиваемый аккаунт отключен за неуплату.
no_more
Этот роутер следует разместить сразу после роутеров, выполняющих деливери.
Телепатрон был верным. Спасибо большое. Но сделал немного иначе, добавил в acl_check_rcpt:
condition который совпадает с нужным sql запросом и выдает message = "Sorry your message cannot be delivered. This account has been disabled or discontinued."Насколько хуже/лучше такой вариант в отличии от создания еще одного роутера?
> Насколько хуже/лучше такой вариант в отличии от создания еще одного роутера?Лучше тем, что письмо можно отбить на стадии РЦПТ, не доводя дело до приема тела письма.
Хуже тем, что в дефолтных ацлях, обычно, редкостный бардак, и правильное место для него не так просто найти. Неправильная очередность проверок может привести к непредвиденным последствиям.УПД: После некоторого размышления пришел к выводу, что вынос проверки в АЦЛ - очень плохая идея. Причина - алиасы.