Страница 1 из 2
ACL - кто как ?
Добавлено: 2007-01-24 19:01:06
CNostra
Предлагаю вопросы по ACL вынести в отдельный топик.
Есть много инетерсных рулезов на все случае жизни делимся...
У меня сразу же вопрос к знатокам.
deny message =
"I'm don't like you host"
condition = ${if match{$sender_host_name} \
{adsl|pool|
dialup|peer|dhcp} \
{yes}{no}}
Естественно при работе с КПК или Мобильного: пример для UMC:
2007-01-24 17:16:53 H=88-214-90-92.
dialup.umc.net.ua (Inbox) [88.214.90.92] I=[89.252.24.9]:25 F=<
crud-pda@nostra.com.ua> rejected RCPT <
nostra@nostra.com.ua>:
"I'm don't like you host"
Все режется,
как написать указать в АКЛе исключение для определенного хоста
89.252.24.9
Добавлено: 2007-01-25 5:33:48
Abigor
у меня эта acl имеет такой вид
Код: Выделить всё
deny
hosts = !+relay_from_hosts
condition = ${if or {\ {match{$sender_host_name}{\N((\d{1,3}[\.\-_x]){3}|.*(wireless|broadband|modem|dyn|cable|client|dial|dsl|dhcp|user|vpn|ppp|[^sx]pool|unassigned).*\.[-a-z0-9]+\.\w+|.*(cust|host).*\.[-a-z0-9]+\.\w+[^r][^u]$|.*\d{6,12}.*\.[-a-z0-9]+\.\w+)\N}}\
{match{$acl_c1}{\N((\d{1,3}[\.\-_x]){3}|.*(wireless|broadband|modem|dyn|cable|client|dial|dsl|dhcp|user|vpn|ppp|[^sx]pool|unassigned).*\.[-a-z0-9]+\.\w+|.*(cust|host).*\.[-a-z0-9]+\.\w+[^r][^u]$|.*\d{6,12}.*\.[-a-z0-9]+\.\w+)\N}} \
}{yes}{no}}
message = Mail from $sender_address to $local_part@$domain is blocked, cant receive mail from dynamic ip, use your ISP SMTP server, contact admin@isea.ru.
вопрос уже тебе, а ты уверен что для этого кпк ip всегда постоянный? если да, то тебе в помощь вот это
hosts = !+relay_from_hosts
p.s. мое правило режет у меня в сутки до 15000 спам сообщений, пока не одного нужного за три недели не наблюдалось
Добавлено: 2007-01-25 8:18:21
Alex Keda
2 аффтар.
Авторизоваться не пробовали? Попробуйте, помогает.
2 Abigor
Не пора ли в отдельный файл выносить список?
Добавлено: 2007-01-25 10:14:29
Cnostra
IP не постоянный но есть весь пул IP.
За авторизацию спасибо задумался
Добавлено: 2007-01-25 14:58:43
Abigor
lissyara
не наю, не вижу в этом смысла если честно, хотя надо подумать.
Добавлено: 2007-01-25 15:36:14
Alex Keda
самому легче стенет.
я вообще конфиг на 10 частей разобрал
))
Добавлено: 2007-01-26 5:34:38
Abigor
вот это хорошая идея. не подскажешь как вынклудить куски, лень искать
)
Добавлено: 2007-01-26 9:05:05
Alex Keda
Код: Выделить всё
grep include /usr/local/etc/exim/configure
.include_if_exists /usr/local/etc/exim/includes/100.main.conf
.include_if_exists /usr/local/etc/exim/includes/200.acl_check_rcpt.conf
.include_if_exists /usr/local/etc/exim/includes/300.acl_check_rcpt_spam_rule.conf
.include_if_exists /usr/local/etc/exim/includes/400.acl_check_rcpt_end.conf
.include_if_exists /usr/local/etc/exim/includes/500.acl_check_data.conf
.include_if_exists /usr/local/etc/exim/includes/600.routers.conf
.include_if_exists /usr/local/etc/exim/includes/700.transports.conf
.include_if_exists /usr/local/etc/exim/includes/800.retry_and_rewrite.conf
.include_if_exists /usr/local/etc/exim/includes/900.authenticators.conf
Добавлено: 2007-01-26 9:05:59
Alex Keda
даже целиком ожно
)
Код: Выделить всё
# моя конфига экзма. Будь проклят тот день,
# когда мне пришла в голову мысль подписать
# русские поясния ко всем пунктам! :) Хоть и
# делал я это в первую очередь для себя -
# чтоб лучше понять его, но работа эта оказалась
# слишком масштабная и неблагодарная...
# Инклюдим главные настройки
.include_if_exists /usr/local/etc/exim/includes/100.main.conf
### конфигурация ACL для входящей почты
begin acl
# Эти правила срабатывают для каждого получателя
acl_check_rcpt:
# Начало файла ACL - те, кого срубаем сразу же
.include_if_exists /usr/local/etc/exim/includes/200.acl_check_rcpt.conf
# Проверки на спам - по хостам и прочему.
.include_if_exists /usr/local/etc/exim/includes/300.acl_check_rcpt_spam_rule.conf
# Конец конфигурации - блэк-листы, задержки и прочее
.include_if_exists /usr/local/etc/exim/includes/400.acl_check_rcpt_end.conf
# Тут идут ACL проверяющие содержимое (тело) письма.
# Без них будут пропускаться все сообщения.
acl_check_data:
# Инклюдим конфигурацию проверки тела письма
.include_if_exists /usr/local/etc/exim/includes/500.acl_check_data.conf
# чё делаем с почтой
begin routers
# Инклюдим конфигурацию роутреров
.include_if_exists /usr/local/etc/exim/includes/600.routers.conf
# начинаются транспорты - как доставляем почту
begin transports
# Инклюдим транспорты
.include_if_exists /usr/local/etc/exim/includes/700.transports.conf
# Конфигурация повторов и перезаписи
.include_if_exists /usr/local/etc/exim/includes/800.retry_and_rewrite.conf
# Секция авторизации при отправке писем. Ввиду того,
# что почтовых клиентов много, и все всё делают
# по-своему, то и механизмов авторизации три...
begin authenticators
# Аутентификация юзеров.
.include_if_exists /usr/local/etc/exim/includes/900.authenticators.conf
# Фсё. Конфиг кончился. Два дня убил.
# © lissyara 2006-02-25, 01:19
Добавлено: 2007-01-26 11:08:34
Kolesnikov
у меня эта acl имеет такой вид
А нет где-нибудь расписано, как составлять такие расширенные параметры? , желательно по русски. А то в spec.pdf от exim черт ногу сломит про эти expression.
Добавлено: 2007-01-26 11:15:15
dikens3
Меня прикалывает как вставляется кусок конфига в зависимости от переменной. Полный улёт.
Добавлено: 2007-01-26 12:02:51
Alex Keda
debian?
=====
будь прокляты написатели этого конфига.
я час разбирался как застаить почту работать не локально а лать на другой сервак
))
Добавлено: 2007-01-26 12:42:17
dikens3
Код: Выделить всё
MAILNAME = smtp.example.ru
MAINDOMAIN = example.ru
.ifdef MAILNAME
primary_hostname = MAILNAME
qualify_domain = MAINDOMAIN
.else
MAILNAME = @
.endif
Примерно так: -)
Добавлено: 2007-02-01 11:11:04
Zedik
На днях уважаемый
dikens3 объяснил на примере ACL принцип их действия.И хотелось бы узнать ваши комментарии на мой взгляд на принцип действия конкретных ACL.
исходные данные: local_domains из базы полчает mail.domen.ru
relay_from_hosts = localhost:127.0.0.0/8 : 10.0.0.0/16
begin acl
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 = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
##До этого момента все понятно, вопросов нет.
##1. Принимаем всех кто аутентифицировался, если без аутентификации(не прошел, или ее нет) то идем в #пункт 2
accept authenticated = *
##2. Проверяем отправителя, если отправитель не верный то отрубаем сразу, если верный то идем в пункт 3
require verify = sender
##3. Принимаем если получатель в моем домене (mail.domen.ru) и если пользователь ##существует в этом домене, если не мой домен то в пункт 4, если мой но нет юзера то отрубаем
accept domains = +local_domains
verify = recipient
##4. Принимаем если обращение идет с хоста принадлежащего к relay_from_hosts, если не принадлежит, то идем в пункт 5
accept hosts = +relay_from_hosts
##5. Запрещаем всем, кто не попал в выше стоящие правила и выдаем сообщение.
deny message = relay not permitted
Как я считаю, почта с наружнего домена mail.ru ко мне в mail.domen.ru приходить должна. с адреса 10.0.10.10 должна уходить
без аутентификации и внутрь и наружу... а вот с адреса 192.168.0.1 наружу почта не должна пройти
без аутентификации
Прокомментируйте пожалуйста
Добавлено: 2007-02-01 11:26:06
dikens3
Вобщем значительно лучше уже, несколько поправок:
Код: Выделить всё
##1. Принимаем всех кто аутентифицировался, если без аутентификации(не прошел, или ее нет) то идем в #пункт 2
accept authenticated = *
##2. Проверяем отправителя, если отправитель не верный то отрубаем сразу, если верный то идем в пункт 3
require verify = sender
Поменять пункты местами, насколько я знаю
require verify = sender проверяет отправителя, только если он из твоего домена. (mail.domain.ru). Не нужно пускать пользователя в мир с обратным адресом
postmaster@mail.ru. Сначала проверить потом авторизовывать. :-)
Код: Выделить всё
##3. Принимаем если получатель в моем домене (mail.domen.ru) и если пользователь ##существует в этом домене, если не мой домен то в пункт 4, если мой но нет юзера то отрубаем
accept domains = +local_domains
verify = recipient
А что будет сказано отправителю, если такого пользователя в твоём домене несуществует? (relay not permitted? :-)) Никакой реализации отрубания тут нет. endpass и message в кондишене были, помнишь я тебе писал?
Добавлено: 2007-02-01 11:44:41
Zedik
dikens3 писал(а):
Поменять пункты местами, насколько я знаю
require verify = sender проверяет отправителя, только если он из твоего домена. (mail.domain.ru). Не нужно пускать пользователя в мир с обратным адресом
postmaster@mail.ru. Сначала проверить потом авторизовывать. :-)
да, согласен, везде фигурирует такое расположение, чуть не доработал...
А что будет сказано отправителю, если такого пользователя в твоём домене несуществует? (relay not permitted? :-)) Никакой реализации отрубания тут нет. endpass и message в кондишене были, помнишь я тебе писал?
как читать правило
##4. Принимаем если обращение идет с хоста принадлежащего к relay_from_hosts, если не принадлежит, то идем в пункт 5
accept hosts = +relay_from_hosts
?
Потому как если я с ящика
user@mail.domen.ru с компьютера c IP 10.0.10.10 без настроек аутентификации хочу отправить письмо на mail.ru, то оно не проходит...
Из мануала к экзиму:
Например:
accept hosts = +ignore_unknown : friend.example : \
192.168.4.5
принимает
(почту, видимо )) от любого хоста, имя которого “friend.example”, и от “192.168.4.5”, независимо найдено или нет его имя. Без “+ignore_unknown”, если имя “192.168.4.5” не найжено, почта отклоняется.
и тут не дается однозначного ответа насчет дальнейшего действия
Добавлено: 2007-02-01 12:06:45
Kolesnikov
насколько я знаю require verify = sender проверяет отправителя, только если он из твоего домена. (mail.domain.ru). Не нужно пускать пользователя в мир с обратным адресом
postmaster@mail.ru.
Не согласен. Вот цитата из оригинала:
Код: Выделить всё
Verification consists of trying to route the address, to see if a bounce message could be delivered to it. In the case of remote addresses, basic verification checks only the domain, but callouts can be used for more verification if required.
В переводе примерно, следующее: "ПРоверка состоит в попытке маршрутизации до адреса, для возможности доставки на него обратного сообщения. В этом случае, удаленные адреса проверяются только на наличие домена, но callouts может быть использовано для более детальной проверки."
Про локальный домен здесь ни слова, проверяются все сообщения.
Добавлено: 2007-02-01 13:12:33
dikens3
Kolesnikov писал(а):
В переводе примерно, следующее: "ПРоверка состоит в попытке маршрутизации до адреса, для возможности доставки на него обратного сообщения. В этом случае, удаленные адреса проверяются только на наличие домена, но callouts может быть использовано для более детальной проверки."
Про локальный домен здесь ни слова, проверяются все сообщения.
Понятно же написано, если внешний, только наличие домена, если внутренний(локальный), ещё и сам почтовый адрес пользователя на возможность доставки BOUNCE MESSAGE.
Спасибо за уточнение.
Добавлено: 2007-02-01 13:21:10
dikens3
Например:
accept hosts = +ignore_unknown : friend.example : \
192.168.4.5
принимает
(почту, видимо )) от любого хоста, имя которого “friend.example”, и от “192.168.4.5”, независимо найдено или нет его имя. Без “+ignore_unknown”, если имя “192.168.4.5” не найжено, почта отклоняется.
Действие будет
accept
Код: Выделить всё
# От кого можно принимать почту с ошибками в HELO/EHLO
helo_accept_junk_hosts = +relay_from_hosts
Так можно избавится от проверок HELO/EHLO для локальной сети.
Добавлено: 2007-02-01 13:32:55
dikens3
Kolesnikov писал(а):
В переводе примерно, следующее: "ПРоверка состоит в попытке маршрутизации до адреса, для возможности доставки на него обратного сообщения. В этом случае, удаленные адреса проверяются только на наличие домена, но callouts может быть использовано для более детальной проверки."
Про локальный домен здесь ни слова, проверяются все сообщения.
Я пробовал, от имени
postmaster@mail.ru не даёт посылать в мир, как бы это не описывалось. Вобщем нужно попробовать, у кого есть интерес, у меня сейчас нет возможности.
Добавлено: 2007-02-01 18:09:48
Kolesnikov
dikens3 писал(а):
Я пробовал, от имени
postmaster@mail.ru не даёт посылать в мир, как бы это не описывалось. Вобщем нужно попробовать, у кого есть интерес, у меня сейчас нет возможности.
Только что попробовал от
postmaster@moidomen.ru с включенной опцией r
equire verify = sender . Все прекрасно доставилось. Или ты имеешь в виду именно от postmaster домена
mail.ru ?
Тут недавно не могло до меня дойти письмо от Транстелекомовского почтовика zapsib.transtk.ru. У них что-то с днс случалось видимо. Я вижу в логах отпинывание
Could not complete sender verify Проверил этот домен, а днс молчит о его существовании. Спустя час письмо прилетело, проверил -- уже есть такой домен ))
Добавлено: 2007-02-01 18:28:23
dikens3
Я имею ввиду любой не локальный домен. Пусть будет mail.ru
Добавлено: 2007-02-01 18:54:12
Kolesnikov
dikens3 писал(а):Я имею ввиду любой не локальный домен. Пусть будет mail.ru
Пошли мне на kolesnikov<пёс>mx.tanet.ru или давай тебе пошлю от postmaster своего домена.
Добавлено: 2007-02-02 8:26:18
Zedik
хм...
с включенной
require verify = sender
сейчас проверил отправить письмо от
post@mail.ru со своего домена на
mail@mail.ru.... письмо ушло
Добавлено: 2007-02-02 9:26:00
Kolesnikov
Ты создал у себя домен mail.ru? или просто в конце письма поставил mailto:
post@mail.ru ?