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

Проверка авторизации в acl_check_rcpt

Добавлено: 2016-01-20 17:54:47
ElDeRone
Задача: требовать аутентификацию для пользователей, посылающих письма с существующих ящиков из локальных доменов не из локальных сетей.
в acl_check_rcpt:

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

deny !authenticated = *
      domains = +local_domains
      !hosts = +relay_from_hosts
вроде бы работает, но при этом режет письма из доменов указанных в relay_to_domains

как починить? как сделать правильно?

Проверка авторизации в acl_check_rcpt

Добавлено: 2016-01-24 16:29:58
Alex Keda
с положением восклицательных знаков, внимательней

Проверка авторизации в acl_check_rcpt

Добавлено: 2016-01-25 12:39:24
ElDeRone
если я правильно все понимаю, код читается так:

запретить всем неавторизованным
из локальных доменов
не из разрешенных сетей

Отправлено спустя 1 минуту 39 секунд:
там между строками И или ИЛИ?

Отправлено спустя 8 минут 54 секунды:
но все равно непонятно, как эта acl'ка влияет на relay_to_domains?

Проверка авторизации в acl_check_rcpt

Добавлено: 2016-01-25 15:04:31
xM
ElDeRone писал(а): там между строками И или ИЛИ?
И. Только учтите что у вас там два НЕ ещё :-)

Отправлено спустя 7 минут 50 секунд:
Вообще, есть require если именно надо требовать. В принципе, реализовать можно и логикой accept / deny

Проверка авторизации в acl_check_rcpt

Добавлено: 2016-01-26 9:46:54
ElDeRone
То есть первый воскл. знак распространяется на все подстроки в том числе?

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

require authenticated = *
      domains = +local_domains
      !hosts = +relay_from_hosts
а такая конструкция не запретит сторонним почтовикам присылать мне письма без авторизации?

Проверка авторизации в acl_check_rcpt

Добавлено: 2016-01-26 9:58:16
xM
Отрицание только на конкретную строку действует.
Это правило у вас даст передаст управление следующему для аутентифицированных пользователей локальных доменов не из локальных сетей. В противном случае будет deny.
В этой связи если вы будет использовать именно такое правило, надо тщательно выбирать место, куда его вставлять исходя из логики вашей конфигурации.

Проверка авторизации в acl_check_rcpt

Добавлено: 2016-01-26 10:05:30
ElDeRone
xM писал(а): Это правило у вас даст передаст управление следующему для аутентифицированных пользователей локальных доменов не из локальных сетей. В противном случае будет deny.
в противном случае это для всех остальных?
то есть таки нелокальные домены не смогут присылать мне письма?

Проверка авторизации в acl_check_rcpt

Добавлено: 2016-01-26 10:09:17
xM
Смотря где поставить, я ж говорю.

Отправлено спустя 1 минуту :
Require дает accept при совпадении всех условий и deny в противном случае

Проверка авторизации в acl_check_rcpt

Добавлено: 2016-01-26 10:15:26
ElDeRone

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

acl_check_rcpt:

  accept
    hosts = :

  deny    message       = Restricted characters in address
          domains       = +local_domains
          local_parts   = ^[.] : ^.*[@%!/|`#&?]

  deny    message       = Restricted characters in address
          domains       = !+local_domains
          local_parts   = ^[./|] : ^.*[@%!] : ^.*/\\.\\./


  accept  local_parts   = postmaster
          domains       = +local_domains


#  require verify        = sender

#  deny !authenticated = *
#       domains = +local_domains
#       !hosts = +relay_from_hosts

  accept  hosts         = +relay_from_hosts
          control       = submission

  accept  authenticated = *
          control       = submission/sender_retain

  require message = relay not permitted
          domains = +local_domains : +relay_to_domains

  require verify = recipient

  deny
    message = sender envelope address $sender_address is locally blacklisted here. If you think this is wrong, get in touch with postmaster
    !acl = acl_local_deny_exceptions
    senders = ${if exists{CONFDIR/local_sender_blacklist}\
                   {CONFDIR/local_sender_blacklist}\
                   {}}

  accept
    domains = +relay_to_domains
    endpass
    verify = recipient

  
  accept                                                     
    dnslists = zen.spamhaus.org
    message = Your IP address ($sender_host_address) is blacklisted by Spamhaus\n\(http://www.spamhaus.org/query/bl?ip=$sender_host_address)\n\$dnslist_text
    set acl_m1 = "spam@domain.com"

  accept
наверное вот эту часть

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

  accept
    domains = +relay_to_domains
    endpass
    verify = recipient
надо поставить выше того правила...

Проверка авторизации в acl_check_rcpt

Добавлено: 2016-01-26 12:25:35
xM
Ох, трудно сказать. Надо видеть конфиг.
Но, вообще, приём relay_to_domains надо делать до, конечно.

Отправлено спустя 5 минут 14 секунд:
Лично я с аутентифицированными разбираюсь сразу после проверки синтаксиса HELO и MAIL TO
# --- local domain spoofing control
...
deny authenticated = *
condition = ${if !match_domain{$sender_address_domain}{+local_domains}}
!senders = :
message = Sending from foreign domain denied
delay = 5s

# --- limit user activity
deny authenticated = *
ratelimit = 100 / 1h / strict / $authenticated_id

# --- accept authenticated users
accept authenticated = *
control = dkim_disable_verify

# --- accept authenticated users only for local domains
deny message = Authentication need to relay
!hosts = +relay_from_hosts
sender_domains = !+ghs_domains : +local_domains
...
+ghs_domains - это у меня один домен частично хостится на Google.
Можете модифицировать под ваши потребности.

Отправлено спустя 15 минут 26 секунд:
xM писал(а): Require дает accept при совпадении всех условий и deny в противном случае
Вру. Не accept, передает проверку следующему правилу, конечно.

Проверка авторизации в acl_check_rcpt

Добавлено: 2016-03-10 18:47:45
ElDeRone

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

deny !authenticated = *
        condition = ${if match_domain{$sender_address_domain}{+local_domains}}
        domains = +local_domains
        !hosts = +relay_from_hosts
вот так вроде работает
проверил четыре варианта неавторизованных:
1. с левого айпишника с нашего домена на наш домен - зарубило, ок
2. с левого айпишника с ненашего домена на наш домен - пропустило, ок
3. с разрешенного айпишника с ненашего домена на наш домен - пропустило, ок
4. с разрешенного айпишника с нашего домена на наш домен - пропустило, ок

какие еще могут быть варианты? может упустил чего...