ACL - кто как ?

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
CNostra
проходил мимо

ACL - кто как ?

Непрочитанное сообщение CNostra » 2007-01-24 19:01:06

Предлагаю вопросы по 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

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Abigor
старшина
Сообщения: 425
Зарегистрирован: 2006-03-02 11:13:15
Откуда: РФ. г. Иркутск
Контактная информация:

Непрочитанное сообщение Abigor » 2007-01-25 5:33:48

у меня эта 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 спам сообщений, пока не одного нужного за три недели не наблюдалось

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2007-01-25 8:18:21

2 аффтар.
Авторизоваться не пробовали? Попробуйте, помогает.
2 Abigor
Не пора ли в отдельный файл выносить список?
Убей их всех! Бог потом рассортирует...

Cnostra
проходил мимо

Непрочитанное сообщение Cnostra » 2007-01-25 10:14:29

IP не постоянный но есть весь пул IP.

За авторизацию спасибо задумался

Аватара пользователя
Abigor
старшина
Сообщения: 425
Зарегистрирован: 2006-03-02 11:13:15
Откуда: РФ. г. Иркутск
Контактная информация:

Непрочитанное сообщение Abigor » 2007-01-25 14:58:43

lissyara
не наю, не вижу в этом смысла если честно, хотя надо подумать.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2007-01-25 15:36:14

самому легче стенет.
я вообще конфиг на 10 частей разобрал :)))
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Abigor
старшина
Сообщения: 425
Зарегистрирован: 2006-03-02 11:13:15
Откуда: РФ. г. Иркутск
Контактная информация:

Непрочитанное сообщение Abigor » 2007-01-26 5:34:38

вот это хорошая идея. не подскажешь как вынклудить куски, лень искать =))

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2007-01-26 9:05:05

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

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
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2007-01-26 9:05:59

даже целиком ожно :))

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

# моя конфига экзма. Будь проклят тот день,
# когда мне пришла в голову мысль подписать
# русские поясния ко всем пунктам! :) Хоть и
# делал я это в первую очередь для себя -
# чтоб лучше понять его, но работа эта оказалась
# слишком масштабная и неблагодарная...

# Инклюдим главные настройки
.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

# Фсё. Конфиг кончился. Два дня убил.
# &copy; lissyara       2006-02-25, 01:19
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Kolesnikov
рядовой
Сообщения: 42
Зарегистрирован: 2007-01-09 14:49:39
Откуда: г.Тайга

Непрочитанное сообщение Kolesnikov » 2007-01-26 11:08:34

у меня эта acl имеет такой вид
А нет где-нибудь расписано, как составлять такие расширенные параметры? , желательно по русски. А то в spec.pdf от exim черт ногу сломит про эти expression.

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-01-26 11:15:15

Меня прикалывает как вставляется кусок конфига в зависимости от переменной. Полный улёт.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2007-01-26 12:02:51

debian?
=====
будь прокляты написатели этого конфига.
я час разбирался как застаить почту работать не локально а лать на другой сервак :)))
Убей их всех! Бог потом рассортирует...

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-01-26 12:42:17

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

MAILNAME = smtp.example.ru
MAINDOMAIN = example.ru 

 .ifdef MAILNAME
primary_hostname = MAILNAME
qualify_domain = MAINDOMAIN
.else
MAILNAME = @
.endif 
Примерно так: -)
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
Zedik
сержант
Сообщения: 283
Зарегистрирован: 2007-01-20 22:30:57
Откуда: 127.0.0.1

Непрочитанное сообщение Zedik » 2007-02-01 11:11:04

На днях уважаемый 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 наружу почта не должна пройти без аутентификации
Прокомментируйте пожалуйста

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-02-01 11:26:06

Вобщем значительно лучше уже, несколько поправок:

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

##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 в кондишене были, помнишь я тебе писал?
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
Zedik
сержант
Сообщения: 283
Зарегистрирован: 2007-01-20 22:30:57
Откуда: 127.0.0.1

Непрочитанное сообщение Zedik » 2007-02-01 11:44:41

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” не найжено, почта отклоняется.
и тут не дается однозначного ответа насчет дальнейшего действия

Аватара пользователя
Kolesnikov
рядовой
Сообщения: 42
Зарегистрирован: 2007-01-09 14:49:39
Откуда: г.Тайга

Непрочитанное сообщение Kolesnikov » 2007-02-01 12:06:45

насколько я знаю 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 может быть использовано для более детальной проверки."
Про локальный домен здесь ни слова, проверяются все сообщения.

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-02-01 13:12:33

Kolesnikov писал(а): В переводе примерно, следующее: "ПРоверка состоит в попытке маршрутизации до адреса, для возможности доставки на него обратного сообщения. В этом случае, удаленные адреса проверяются только на наличие домена, но callouts может быть использовано для более детальной проверки."
Про локальный домен здесь ни слова, проверяются все сообщения.
Понятно же написано, если внешний, только наличие домена, если внутренний(локальный), ещё и сам почтовый адрес пользователя на возможность доставки BOUNCE MESSAGE.
Спасибо за уточнение.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-02-01 13:21:10

Например:
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 для локальной сети.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-02-01 13:32:55

Kolesnikov писал(а): В переводе примерно, следующее: "ПРоверка состоит в попытке маршрутизации до адреса, для возможности доставки на него обратного сообщения. В этом случае, удаленные адреса проверяются только на наличие домена, но callouts может быть использовано для более детальной проверки."
Про локальный домен здесь ни слова, проверяются все сообщения.
Я пробовал, от имени postmaster@mail.ru не даёт посылать в мир, как бы это не описывалось. Вобщем нужно попробовать, у кого есть интерес, у меня сейчас нет возможности.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
Kolesnikov
рядовой
Сообщения: 42
Зарегистрирован: 2007-01-09 14:49:39
Откуда: г.Тайга

Непрочитанное сообщение Kolesnikov » 2007-02-01 18:09:48

dikens3 писал(а): Я пробовал, от имени postmaster@mail.ru не даёт посылать в мир, как бы это не описывалось. Вобщем нужно попробовать, у кого есть интерес, у меня сейчас нет возможности.
Только что попробовал от postmaster@moidomen.ru с включенной опцией require verify = sender . Все прекрасно доставилось. Или ты имеешь в виду именно от postmaster домена mail.ru ?
Тут недавно не могло до меня дойти письмо от Транстелекомовского почтовика zapsib.transtk.ru. У них что-то с днс случалось видимо. Я вижу в логах отпинывание Could not complete sender verify Проверил этот домен, а днс молчит о его существовании. Спустя час письмо прилетело, проверил -- уже есть такой домен ))

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-02-01 18:28:23

Я имею ввиду любой не локальный домен. Пусть будет mail.ru
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
Kolesnikov
рядовой
Сообщения: 42
Зарегистрирован: 2007-01-09 14:49:39
Откуда: г.Тайга

Непрочитанное сообщение Kolesnikov » 2007-02-01 18:54:12

dikens3 писал(а):Я имею ввиду любой не локальный домен. Пусть будет mail.ru
Пошли мне на kolesnikov<пёс>mx.tanet.ru или давай тебе пошлю от postmaster своего домена.

Аватара пользователя
Zedik
сержант
Сообщения: 283
Зарегистрирован: 2007-01-20 22:30:57
Откуда: 127.0.0.1

Непрочитанное сообщение Zedik » 2007-02-02 8:26:18

хм...
с включенной require verify = sender
сейчас проверил отправить письмо от post@mail.ru со своего домена на mail@mail.ru.... письмо ушло :shock:

Аватара пользователя
Kolesnikov
рядовой
Сообщения: 42
Зарегистрирован: 2007-01-09 14:49:39
Откуда: г.Тайга

Непрочитанное сообщение Kolesnikov » 2007-02-02 9:26:00

Ты создал у себя домен mail.ru? или просто в конце письма поставил mailto: post@mail.ru ?