
Exim: запретить части народа слать письма в мир
Модератор: xM
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
- Urgor
- лейтенант
- Сообщения: 668
- Зарегистрирован: 2006-03-14 16:30:18
- Откуда: Гилея (СПб)
- Контактная информация:
Exim: запретить части народа слать письма в мир
Как можно в Exim'e запретить части народа слать письма в мир, оставив возможность переписываться внутри компании? То что надо еще одну колонку добить в базу -- это я догадался
А вот как модифицировать правила так чтоб это заработало?

Власть в руках у чужаков, и ты им платишь дань...
Услуги хостинговой компании Host-Food.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/
Тарифы на виртуальные сервера (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/
- dikens3
- подполковник
- Сообщения: 4856
- Зарегистрирован: 2006-09-06 16:24:08
- Откуда: Нижний Новгород
- Контактная информация:
В начале поставь это:
Потом
Сам файл у меня выглядит так:
Это пример, не перемудри с ним.
Код: Выделить всё
# Запрещаем, если невозможно проверить лок. отправителя.
require verify = sender
Код: Выделить всё
# Принимаем, если аутентифицировался, получаетель наш домен, и пользователь существует.
accept authenticated = *
domains = +local_domains
message = "Unknown user"
verify = recipient
Код: Выделить всё
# Прибиваем заблокированные E-mail'ы и Домены
deny message = E-Mail: "$sender_address" is blocked
senders = dbm*@;/usr/local/etc/exim/files/dbm/bad_emails.dbm
Код: Выделить всё
ECM-2005@list.ru
renault.media@renault.com
mebel@elturista.com
info@dip.ru
*@orlando.quik.com
*@metro.quik.com
*@slo.quik.com
*@kzbz.biz
*@obravybr.com
*@mydomain.ru
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
- Urgor
- лейтенант
- Сообщения: 668
- Зарегистрирован: 2006-03-14 16:30:18
- Откуда: Гилея (СПб)
- Контактная информация:
- Alex Keda
- стреляли...
- Сообщения: 35426
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
- Urgor
- лейтенант
- Сообщения: 668
- Зарегистрирован: 2006-03-14 16:30:18
- Откуда: Гилея (СПб)
- Контактная информация:
Лис, у тя в конфиге http://www.lissyara.su/?id=1175 написано:
А где у тебя проверяется активность юзверьских аккаунтов?
Код: Выделить всё
# Делаем список локальных доменов. Далее этот
# список будет фигурировать в виде +local_domains
# В данном случае домены выбираются из БД MySQL. Также
# можно их просто перечислить через двоеточие. Есть интересная
# возможность, можно указать юзер@[хост] - lissyara@[222.222.4.5]
domainlist local_domains = ${lookup mysql{SELECT `domain` \
FROM `domain` WHERE \
`domain`='${domain}' AND \
`active`='1'}}
Власть в руках у чужаков, и ты им платишь дань...
- Alex Keda
- стреляли...
- Сообщения: 35426
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
- dikens3
- подполковник
- Сообщения: 4856
- Зарегистрирован: 2006-09-06 16:24:08
- Откуда: Нижний Новгород
- Контактная информация:
Как бы сделал я:
1. Проверяем пользователя (т.е без аутентификации никому нельзя в мир ничего посылать)
2. Пропускаем всех авторизованных на наши домены и сущ. E-Mail
3. Авторизованных (пофиг даже если неавторизованы) из моего домена с E-Mail'ами (senders) прибиваем.
4. Пропускаем всех авторизованных на внешние домены и сущ. E-Mail.
можешь hosts использовать конечно, вместо аутентификации.
1. Проверяем пользователя (т.е без аутентификации никому нельзя в мир ничего посылать)
2. Пропускаем всех авторизованных на наши домены и сущ. E-Mail
3. Авторизованных (пофиг даже если неавторизованы) из моего домена с E-Mail'ами (senders) прибиваем.
4. Пропускаем всех авторизованных на внешние домены и сущ. E-Mail.
можешь hosts использовать конечно, вместо аутентификации.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
- dikens3
- подполковник
- Сообщения: 4856
- Зарегистрирован: 2006-09-06 16:24:08
- Откуда: Нижний Новгород
- Контактная информация:
О, примерно следующее можно замутить
Код: Выделить всё
deny message "Запрещено посылать почту в мир"
hosts = 192.168.1.0/24
senders = asasas@mydomain
domain = !local_domains
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
- Urgor
- лейтенант
- Сообщения: 668
- Зарегистрирован: 2006-03-14 16:30:18
- Откуда: Гилея (СПб)
- Контактная информация:
И не смешноlissyara писал(а):в последней строке приведёного тобою листинга))

Ксли active=0 то он все равно дает отсылать почту, и получать тоже, а это не хорошо.
Хмм. Интересная идеяdikens3 писал(а):Код: Выделить всё
deny message "Запрещено посылать почту в мир" hosts = 192.168.1.0/24 senders = asasas@mydomain domain = !local_domains


Власть в руках у чужаков, и ты им платишь дань...
- dikens3
- подполковник
- Сообщения: 4856
- Зарегистрирован: 2006-09-06 16:24:08
- Откуда: Нижний Новгород
- Контактная информация:
По поводу получать exim не причём, копай Курьер или что у тебя там.Urgor писал(а): Ксли active=0 то он все равно дает отсылать почту, и получать тоже
Код: Выделить всё
PGSQL_PORT 5432
PGSQL_USERNAME exim
PGSQL_PASSWORD eximpassword
PGSQL_DATABASE mail
PGSQL_USER_TABLE users
PGSQL_CLEAR_PWFIELD password
PGSQL_UID_FIELD 26
PGSQL_GID_FIELD 6
PGSQL_LOGIN_FIELD login
PGSQL_NAME_FIELD name
PGSQL_HOME_FIELD '/mnt/tmp/'
PGSQL_MAILDIR_FIELD maildir
PGSQL_QUOTA_FIELD quota
PGSQL_WHERE_CLAUSE status = '1'
PGSQL_WHERE_CLAUSE status = '1'
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
- Alex Keda
- стреляли...
- Сообщения: 35426
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
неверный ответ.Urgor писал(а):И не смешноlissyara писал(а):в последней строке приведёного тобою листинга))
![]()
Ксли active=0 то он все равно дает отсылать почту, и получать тоже, а это не хорошо.Хмм. Интересная идеяdikens3 писал(а):Код: Выделить всё
deny message "Запрещено посылать почту в мир" hosts = 192.168.1.0/24 senders = asasas@mydomain domain = !local_domains
Ща попробуем
Он для этого пользователя почту не принимает.
А чтобы не отсылалось - копай авториаию .и там допиши это же...
Убей их всех! Бог потом рассортирует...
- Urgor
- лейтенант
- Сообщения: 668
- Зарегистрирован: 2006-03-14 16:30:18
- Откуда: Гилея (СПб)
- Контактная информация:
Для этого домена -- да не принемает, а вот для юзера у меня принял. Поправил:
Теперь не принемает. Ок.
Код: Выделить всё
mysqluser:
driver = accept
condition = ${if eq{} {${lookup mysql{SELECT home FROM users \
WHERE (id='${quote_mysql:$local_part@$domain}' OR \
id='${quote_mysql:@$domain}') AND \
active=1}}}{no}{yes}}
Власть в руках у чужаков, и ты им платишь дань...
- Alex Keda
- стреляли...
- Сообщения: 35426
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
- dikens3
- подполковник
- Сообщения: 4856
- Зарегистрирован: 2006-09-06 16:24:08
- Откуда: Нижний Новгород
- Контактная информация:
Это почему?lissyara писал(а): неверный ответ.
Он для этого пользователя почту не принимает.
А чтобы не отсылалось - копай авториаию .и там допиши это же...
Не пробовал конечно, но по логике всё путём, должно работать.
Для хостов 192.168.1.0/24, если отправитель asasas@mydomain.ru и домен получателя не у нас - идёт в лес.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
- Urgor
- лейтенант
- Сообщения: 668
- Зарегистрирован: 2006-03-14 16:30:18
- Откуда: Гилея (СПб)
- Контактная информация:
Что-то никак не вьеду
Написал так:
Но не работает, пропускает и все 
Запрос в мускуле отрабатывает и выдает запрещенные ящики....

Код: Выделить всё
addresslist local_users = ${lookup mysql{SELECT id FROM users \
WHERE `active`='1' and `noinet`='1'}}
deny message = "Запрещено посылать почту в мир"
hosts = 192.168.0.0/24
senders = +local_users
domains = !local_domains

Запрос в мускуле отрабатывает и выдает запрещенные ящики....
Власть в руках у чужаков, и ты им платишь дань...
- dikens3
- подполковник
- Сообщения: 4856
- Зарегистрирован: 2006-09-06 16:24:08
- Откуда: Нижний Новгород
- Контактная информация:
Вобщем самое разумное аутентификация млин!!!
Додумался я наконец. (Так устроен почтовый сервер вообщето..Трудные времена настали. Звёзды так сложились. :-))
Всем кому нужно писать в мир пропиши пароли в клиентах, а кому запрещено, установи какие-нибудь, пофиг. Пусть подбирают.. :-)
Получится то, что ты хочешь. Кто не аутентифицирован пишет на твой домен. :-)
Додумался я наконец. (Так устроен почтовый сервер вообщето..Трудные времена настали. Звёзды так сложились. :-))
Всем кому нужно писать в мир пропиши пароли в клиентах, а кому запрещено, установи какие-нибудь, пофиг. Пусть подбирают.. :-)
Получится то, что ты хочешь. Кто не аутентифицирован пишет на твой домен. :-)
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
- Urgor
- лейтенант
- Сообщения: 668
- Зарегистрирован: 2006-03-14 16:30:18
- Откуда: Гилея (СПб)
- Контактная информация:
Если написать:Все отлавливает и ругается. А если:Не ловит
В доке сказано: И если ввести запрос в мускуле он нормально выдает список запрещенных адресов... мдя. Можно как-нить поглядеть что попадает в этот список у Exim'а?
Код: Выделить всё
deny message = "Запрещено посылать почту в мир"
hosts = 192.168.0.0/24
senders = mymail@domain.ru
domains = !+local_domains
Код: Выделить всё
addresslist local_users = ${lookup mysql{SELECT id FROM users \
WHERE `active`='1' and `noinet`='1'}}
deny message = "Запрещено посылать почту в мир"
hosts = 192.168.0.0/24
senders = +local_users
domains = !+local_domains

Код: Выделить всё
senders = +my_list
senders = *@+my_list
In the first one, my_list is a named address list, whereas in the second example it is a named domain list.
Власть в руках у чужаков, и ты им платишь дань...
- Alex Keda
- стреляли...
- Сообщения: 35426
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
отладку включи. тогда запросы показываются.
http://www.lissyara.su/?id=1205
http://www.lissyara.su/?id=1205
Убей их всех! Бог потом рассортирует...
- dikens3
- подполковник
- Сообщения: 4856
- Зарегистрирован: 2006-09-06 16:24:08
- Откуда: Нижний Новгород
- Контактная информация:
Код: Выделить всё
logwrite = Это сообщение пишется в лог экзима
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
- Urgor
- лейтенант
- Сообщения: 668
- Зарегистрирован: 2006-03-14 16:30:18
- Откуда: Гилея (СПб)
- Контактная информация:
Вот что попало в лог:Есть мысли как это поправить?
Код: Выделить всё
86283 processing "deny"
86283 check hosts = 192.168.0.0/24
86283 host in "192.168.0.0/24"? yes (matched "192.168.0.0/24")
86283 check senders = ${lookup mysql{SELECT id FROM users WHERE noinet = 1 }}
86283 search_open: mysql "NULL"
86283 cached open
86283 search_find: file="NULL"
86283 key="SELECT id FROM users WHERE noinet = 1 " partial=-1 affix=NULL starflags=0
86283 LRU list:
86283 internal_search_find: file="NULL"
86283 type=mysql key="SELECT id FROM users WHERE noinet = 1 "
86283 database lookup required for SELECT id FROM users WHERE noinet = 1
86283 MYSQL query: SELECT id FROM users WHERE noinet = 1
86283 MYSQL using cached connection for localhost/exim/exim
86283 lookup yielded: admin@mbfkk.spb.ru
86283 device@mbfkk.spb.ru
86283 faxmaster@mbfkk.spb.ru
86283 fax@mbfkk.spb.ru
86283 address match: subject=admin@mbfkk.spb.ru pattern=admin@mbfkk.spb.ru
86283 device@mbfkk.spb.ru
86283 faxmaster@mbfkk.spb.ru
86283 fax@mbfkk.spb.ru
86283 admin@mbfkk.spb.ru in "admin@mbfkk.spb.ru
86283 device@mbfkk.spb.ru
86283 faxmaster@mbfkk.spb.ru
86283 fax@mbfkk.spb.ru"? no (end of list)
86283 deny: condition test failed
Власть в руках у чужаков, и ты им платишь дань...
- Urgor
- лейтенант
- Сообщения: 668
- Зарегистрирован: 2006-03-14 16:30:18
- Откуда: Гилея (СПб)
- Контактная информация:
Странно. Такое чувство что списки адресов не работают.
Покурив доки переписал правило так:Заработало!
В логе же видим:Т.е. он сначала сравнивает домен, а потом полностью мыло??? Гм. Понял лишь то, что нифига не понял 

Код: Выделить всё
deny message = Sorry. Sender Access Limited.
hosts = +relay_from_hosts
domains = !+local_domains
senders = ${lookup mysql{SELECT id FROM users \
WHERE `id`='${quote_mysql:$sender_address}' \
and `noinet`='1'}}

Код: Выделить всё
90068 processing "deny"
90068 check hosts = +relay_from_hosts
90068 cached yes match for +relay_from_hosts
90068 cached lookup data = NULL
90068 host in "+relay_from_hosts"? yes (matched "+relay_from_hosts" - cached)
90068 check domains = !+local_domains
90068 search_open: mysql "NULL"
90068 cached open
90068 search_find: file="NULL"
90068 key="SELECT domainname FROM domains WHERE domainname='mail.ru' AND (type='LOCAL' OR type='VIRTUAL') AND `active`='1'" partial=-1 affix=NULL starflags=0
90068 LRU list:
90068 internal_search_find: file="NULL"
90068 type=mysql key="SELECT domainname FROM domains WHERE domainname='mail.ru' AND (type='LOCAL' OR type='VIRTUAL') AND `active`='1'"
90068 cached data used for lookup of SELECT domainname FROM domains WHERE domainname='mail.ru' AND (type='LOCAL' OR type='VIRTUAL') AND `active`='1'
90068 lookup failed
90068 mail.ru in ""? no (end of list)
90068 mail.ru in "!+local_domains"? yes (end of list)
90068 check senders = ${lookup mysql{SELECT id FROM users WHERE `id`='${quote_mysql:$sender_address}' and `noinet`='1'}}
90068 search_open: mysql "NULL"
90068 cached open
90068 search_find: file="NULL"
90068 key="SELECT id FROM users WHERE `id`='admin@mbfkk.spb.ru' and `noinet`='1'" partial=-1 affix=NULL starflags=0
90068 LRU list:
90068 internal_search_find: file="NULL"
90068 type=mysql key="SELECT id FROM users WHERE `id`='admin@mbfkk.spb.ru' and `noinet`='1'"
90068 database lookup required for SELECT id FROM users WHERE `id`='admin@mbfkk.spb.ru' and `noinet`='1'
90068 MYSQL query: SELECT id FROM users WHERE `id`='admin@mbfkk.spb.ru' and `noinet`='1'
90068 MYSQL using cached connection for localhost/exim/exim
90068 lookup yielded: admin@mbfkk.spb.ru
90068 address match: subject=admin@mbfkk.spb.ru pattern=admin@mbfkk.spb.ru
90068 mbfkk.spb.ru in "mbfkk.spb.ru"? yes (matched "mbfkk.spb.ru")
90068 admin@mbfkk.spb.ru in "admin@mbfkk.spb.ru"? yes (matched "admin@mbfkk.spb.ru")
90068 deny: condition test succeeded
90068 SMTP>> 550 Sorry. Sender Access Limited.
90068 LOG: MAIN REJECT
90068 H=(URGOR2) [192.168.0.37] F=<admin@mbfkk.spb.ru> rejected RCPT <xxxxx@mail.ru>: Sorry. Sender Access Limited.

Власть в руках у чужаков, и ты им платишь дань...
-
- мл. сержант
- Сообщения: 93
- Зарегистрирован: 2009-06-19 13:14:04
- Откуда: почти С-Пб
Re:
Urgor писал(а):Странно. Такое чувство что списки адресов не работают.Покурив доки переписал правило так:
Заработало!Код: Выделить всё
deny message = Sorry. Sender Access Limited. hosts = +relay_from_hosts domains = !+local_domains senders = ${lookup mysql{SELECT id FROM users \ WHERE `id`='${quote_mysql:$sender_address}' \ and `noinet`='1'}}
В логе же видим:
Код: Выделить всё
90068 processing "deny" ([/quote] Все работает, спасибо Вам! М.б. поместить это в "полезные скрипты"?
- Urgor
- лейтенант
- Сообщения: 668
- Зарегистрирован: 2006-03-14 16:30:18
- Откуда: Гилея (СПб)
- Контактная информация:
Re: Re:
По этому правилу чел отправлять в нет письма не сможет, но сможет получать из инета. Плюс не проверяется аутентификация, т.е. если юзер Петя в заголовках письма укажет что он юзер Вася и васе можно слать в нет, письмо пройдет.qwertykma писал(а):Все работает, спасибо Вам! М.б. поместить это в "полезные скрипты"?
Власть в руках у чужаков, и ты им платишь дань...
- dikens3
- подполковник
- Сообщения: 4856
- Зарегистрирован: 2006-09-06 16:24:08
- Откуда: Нижний Новгород
- Контактная информация:
Re: Re:
В полезные скрипты загляни.Urgor писал(а):По этому правилу чел отправлять в нет письма не сможет, но сможет получать из инета. Плюс не проверяется аутентификация, т.е. если юзер Петя в заголовках письма укажет что он юзер Вася и васе можно слать в нет, письмо пройдет.qwertykma писал(а):Все работает, спасибо Вам! М.б. поместить это в "полезные скрипты"?
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
- Urgor
- лейтенант
- Сообщения: 668
- Зарегистрирован: 2006-03-14 16:30:18
- Откуда: Гилея (СПб)
- Контактная информация:
Re: Re:
Ты это мне? Так года два как уже решили с тобой в другой темеdikens3 писал(а):В полезные скрипты загляни.

Власть в руках у чужаков, и ты им платишь дань...