Страница 1 из 1

Проверка пользователей в базе для exim и dovecot

Добавлено: 2008-05-29 15:08:44
neptunix
Настроил работу exim с локальной доставкой через dovecot (сначала доставка работала через mysql_delivery)

Так вот - если доставка работает через dovecot - то как exim проверяет существование получателей?

В конфиге написано:

Код: Выделить всё

  accept  domains       = +local_domains
  endpass
  message       = No such user in this domain
  log_message   = Такого пользователя нет в домене
  verify        = recipient
Но нигде явно не прописана проверка пользователя на существование в mysql (т.е. чтобы exim обратился в базу в таблицу mailbox и посмотрел там)
Самое смешное что оно работает, правда мне не понятно как. :twisted:

И еще - если в таблице поставить active = 0 - то exim все равно принимает для этого пользователя почту, а вот dovecot deliver уже отфутболивает.

Re: Проверка пользователей в базе для exim и dovecot

Добавлено: 2008-05-29 20:19:40
Alex Keda
знаит надо явную проверку.

Re: Проверка пользователей в базе для exim и dovecot

Добавлено: 2008-05-30 9:54:49
neptunix
lissyara писал(а):знаит надо явную проверку.
У меня вопрос немного в другом) Как exim тогда проверяет пользователей если это явно нигде не задано?

Re: Проверка пользователей в базе для exim и dovecot

Добавлено: 2008-05-30 10:40:05
Alex Keda
роутингом

Re: Проверка пользователей в базе для exim и dovecot

Добавлено: 2008-05-30 11:02:17
neptunix
lissyara писал(а):роутингом
А можно расшифровать, если не сложно?

Re: Проверка пользователей в базе для exim и dovecot

Добавлено: 2008-05-30 11:05:47
Alex Keda
пытается сроутить сообщение.
успешно - значит есть, нет - значит нет

Re: Проверка пользователей в базе для exim и dovecot

Добавлено: 2008-05-30 11:17:20
neptunix
lissyara писал(а):пытается сроутить сообщение.
успешно - значит есть, нет - значит нет
то есть в моем случае exim спрашивает у dovecot-а есть ли такой пользователь?

Re: Проверка пользователей в базе для exim и dovecot

Добавлено: 2008-05-30 15:29:11
Alex Keda
нет. до этого он не доходит - он проверяет все условия и всё.
если выполняется этот роутер - то значит юзер существует

Re: Проверка пользователей в базе для exim и dovecot

Добавлено: 2008-05-30 22:26:39
neptunix
lissyara писал(а):нет. до этого он не доходит - он проверяет все условия и всё.
если выполняется этот роутер - то значит юзер существует
а как он физически понимает что юзер существует? То есть как роутер выполняется?
exim лезет в /var/spool/mail и смотрит существует ли там каталог пользователя? Ерунда какая-то

Re: Проверка пользователей в базе для exim и dovecot

Добавлено: 2008-05-30 22:42:26
Alex Keda

Код: Выделить всё

exim -d+all vasya@domen.ru < /etc/rc.conf
и раскуриваие вывода.
+ чтение документации.

Re: Проверка пользователей в базе для exim и dovecot

Добавлено: 2008-05-31 9:04:39
dikens3
neptunix писал(а):а как он физически понимает что юзер существует? То есть как роутер выполняется? exim лезет в /var/spool/mail и смотрит существует ли там каталог пользователя? Ерунда какая-то
1. Проверка адреса получателя по списку роутеров, в которых указан транспорт для доставки.
2. Если роутер обрабатывает наш домен, тогда проверяется возможность выполнения этого роутера. Если результат этой возможности положительный - пользователь существует.
3. Сообщение передается в транспорт, который тоже может отфутболивать сообщения по разным причинам, таким как превышение объёма почтового ящика или самого сообщения и т.п.

Если чё напутал в полезных скриптах есть система отладки.

Re: Проверка пользователей в базе для exim и dovecot

Добавлено: 2008-06-04 15:32:59
freeman
neptunix писал(а):
lissyara писал(а):нет. до этого он не доходит - он проверяет все условия и всё.
если выполняется этот роутер - то значит юзер существует
а как он физически понимает что юзер существует? То есть как роутер выполняется?
Чувствую что у тебя есть такое

Код: Выделить всё

dovecot_user:
  driver = accept
  condition = ${lookup mysql{SELECT `goto` FROM \
  `alias` WHERE \
  `address`='${quote_mysql:$local_part@$domain}' OR \
  `address`='${quote_mysql:@$domain}'}{yes}{no}}
  transport = dovecot_delivery
Вот тут и идёт проверка.
neptunix писал(а):.....
И еще - если в таблице поставить active = 0 - то exim все равно принимает для этого пользователя почту, а вот dovecot deliver уже отфутболивает.
Вот это и мне вчера перестало нравится, правда никак не доберусь исправить :)
Поправте меня если не прав. При такой конфигурации Exim сначала принимает письма даже для отключенных пользователей (active = 0), вместо того чтобы сказать что пользователь неизвестен. Потом довекот их обратно футболит. Просто сейчас увидел что пользователей нет уже, а спам и километровые письма на них канал, логи и т.д. забивают.
Кстати таже ситуация и с квотами средствами Dovecot - трафик/время и даже дисковое пространство всё одно тратится на приём писем :( :?