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

Проверить sender из локального домена в ACL, как?

Добавлено: 2006-11-16 14:46:50
Brom
Господа, помогите, за Exim засел недавно, и что-то никак не даются эти ACL. Никак узреть суть не могу.

Вот что хотелось бы, проверять mail from на предмет наличия в локальном домене на уровне ACL. Т.е. чтобы после ввода rcpt был отлуп в виде "550 not local sender over smtp". При включенном require verify sender, он то проверят, но уже на уровне роутеров(видно из логов mysql, select идет из таблиц aliases, users). А это ИМХо есть криво. Да и ответ на несущ. локального пользователя приходит вида "анроутабле адрес".
Если конечно я в правильном направлении мыслю!

Никак не могу столкнуться с места и писать эти ACL правильно.
Заранее спасибо!

Добавлено: 2006-11-16 14:52:15
dikens3
По поводу unroutable address.
virtual_localuser:
driver = accept
domains = ${lookup pgsql{SELECT domain FROM domains WHERE domain='${domain}'}}
local_parts = ${lookup pgsql{SELECT login FROM users WHERE login='${local_part}' AND domain='${domain}'}}
transport = local_delivery
cannot_route_message = Unknown user

Добавлено: 2006-11-16 15:08:38
Brom
dikens3, спасибо, этот unroutable address сбил меня с толку касательно правильно механизма обработки. Тем паче cannot_route_message = Unknown local user в конфиге в секции localuser присутствует, не заметил, короче RTFM.

Добавлено: 2006-11-16 16:52:13
Brom
В продолжение темы, пользователей типа someuser@localdomain он проверяет, если отправителя нет, отлуп. Но вот если mail from:someuser@somedomain, то отправлять дает. Как прибить такое?

Добавлено: 2006-11-16 17:49:52
dikens3
1. Запретить отправлять с лок. сети.
2. Настроить Аутентификацию.

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

...
# Запрещаем, если невозможно проверить лок. отправителя.
  require verify        = sender

# Принимаем, если аутентифицировался, получаетель наш домен, и пользователь существует.
  accept  authenticated = *
          domains       = +local_domains
          message       = "Unknown user"
          verify        = recipient

# Проверяем, существует ли получатель
  deny    log_message   = Recipient verify failed
          hosts         = +my_lan_hosts
         !verify        = recipient/callout=20s,defer_ok

# Принимаем, если аутентифицировался и получаетель СУЩЕСТВУЮЩИЙ внешний домен.
  accept  authenticated = *
          domains       = !+local_domains
...