Exim + mysql (запрет отправки на группы)

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
JaNet
сержант
Сообщения: 195
Зарегистрирован: 2008-09-16 16:15:04
Откуда: Питер
Контактная информация:

Exim + mysql (запрет отправки на группы)

Непрочитанное сообщение JaNet » 2008-09-16 16:23:03

Есть сервер на exim-based, авторизация юзеров через mysql.

конфиги:

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

exim.conf:
-----------------------------------------------------------------------------
userforward:
   driver = redirect
   allow_fail
   allow_defer
   data = ${lookup mysql{SELECT recipients FROM userforward \
                 WHERE local_part='${local_part}' AND domain='${domain}'}}
-----------------------------------------------------------------------------
mysql database:

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

-- Структура таблицы `userforward`
--

CREATE TABLE IF NOT EXISTS `userforward` (
  `local_part` varchar(64) NOT NULL default '',
  `domain` varchar(128) NOT NULL default '',
  `recipients` text,
  PRIMARY KEY  (`local_part`,`domain`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

--
-- Дамп данных таблицы `userforward`
--

INSERT INTO `userforward` (`local_part`, `domain`, `recipients`) VALUES
('all', 'domains.ru', 'user1', 'user2', 'user3');
по текущему условию, если есть почта на all@domain.ru - рассылаем ее на пользователей (список)
как добавить проверку - рассылать письма на этот ящик могут лишь некоторые внутренние пользователи домена (список)
то есть, если пришло письмо снаружи, на ящик all@domain.ru - его не получать.

Хостинговая компания 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/

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

Re: Exim + mysql (запрет отправки на группы)

Непрочитанное сообщение Alex Keda » 2008-09-16 16:32:58

линух...
=====
в роутере условие добавь.
Убей их всех! Бог потом рассортирует...

JaNet
сержант
Сообщения: 195
Зарегистрирован: 2008-09-16 16:15:04
Откуда: Питер
Контактная информация:

Re: Exim + mysql (запрет отправки на группы)

Непрочитанное сообщение JaNet » 2008-09-16 17:11:17

да я понимаю что в роутерах, формат условия никак не вырисовывается.. не поможете?

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

Re: Exim + mysql (запрет отправки на группы)

Непрочитанное сообщение dikens3 » 2008-09-16 21:42:37

Встречалось совсем недавно.
В роутере что-то типа sender = .... нужно добавить.

Я делаю немного иначе.

1. Все пользователи у меня аутентифицирутся.
2. Сама блокировка на этапе rcpt:

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

deny   !authenticated = *
          local_parts = all
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

JaNet
сержант
Сообщения: 195
Зарегистрирован: 2008-09-16 16:15:04
Откуда: Питер
Контактная информация:

Re: Exim + mysql (запрет отправки на группы)

Непрочитанное сообщение JaNet » 2008-09-17 9:09:10

ок, поищу
просто я реализовал группы рассылки, и будет не очень приятно, коль из инета спамеры начнут слать письма на подобные ящики, откуда уже будет расходится всем
для этого и делается..

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

Re: Exim + mysql (запрет отправки на группы)

Непрочитанное сообщение dikens3 » 2008-09-17 9:21:41

JaNet писал(а):ок, поищу
просто я реализовал группы рассылки, и будет не очень приятно, коль из инета спамеры начнут слать письма на подобные ящики, откуда уже будет расходится всем
для этого и делается..
Правильно делается. Лучше вообще это дело ограничить секретарём и т.п. сотрудниками.(судя по моему опыту, т.к. некоторые пользователи ещё умудряются отправить ответ, тоже всем ес-но. )
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

JaNet
сержант
Сообщения: 195
Зарегистрирован: 2008-09-16 16:15:04
Откуда: Питер
Контактная информация:

Re: Exim + mysql (запрет отправки на группы)

Непрочитанное сообщение JaNet » 2008-09-17 15:29:25

осталось понять, как это наваять...

родилось нечто подобное в роутерах, перед алиасами.. сомневаюсь что будет работать, просто не до конца понятна логика, прокомментируйте плз. большого желания нет тестировать на рабочем сервере)

в базе

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

local_part 	   domain 	        recipients 	                who
all 	           domain.ru 	user1,user2,user3 	admin,secretar

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

rassylka:
    driver = redirect
    data = ${lookup mysql{SELECT recipients FROM userforward \
                     WHERE local_part='${local_part}' AND domain='${domain}'}}
    senders = ${lookup mysql{SELECT who FROM userforward \
                     WHERE local_part='${local_part}' AND domain='${domain}'}}
    domains = ! +local_domains
    forbid_pipe
    forbid_file
    errors_to = postmaster

JaNet
сержант
Сообщения: 195
Зарегистрирован: 2008-09-16 16:15:04
Откуда: Питер
Контактная информация:

Re: Exim + mysql (запрет отправки на группы)

Непрочитанное сообщение JaNet » 2008-09-23 17:00:06

попробовал, не пашет
то есть пашет, но не работает условие - пропускает все равно все письма на test@domain.ru

вопрос - что не так?

JaNet
сержант
Сообщения: 195
Зарегистрирован: 2008-09-16 16:15:04
Откуда: Питер
Контактная информация:

Re: Exim + mysql (запрет отправки на группы)

Непрочитанное сообщение JaNet » 2008-09-23 17:02:08

попробовал, не пашет
то есть пашет, но не работает условие - пропускает все равно все письма на test@domain.ru

вопрос - что не так?

в догонку - роутер стоит первым...

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

begin routers

dnslookup:
   driver = dnslookup
   domains = ! +local_domains
   transport = remote_smtp
   ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
   no_more

rassylka:
.........

Аватара пользователя
Urgor
лейтенант
Сообщения: 677
Зарегистрирован: 2006-03-14 16:30:18
Откуда: Гилея (СПб)
Контактная информация:

Re: Exim + mysql (запрет отправки на группы)

Непрочитанное сообщение Urgor » 2008-09-24 8:43:02

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

rassylka:
    driver = redirect
    data = ${lookup mysql{SELECT recipients FROM userforward \
                     WHERE local_part='${local_part}' AND domain='${domain}'}}
    senders = ${lookup mysql{SELECT who FROM userforward \
                     WHERE local_part='${local_part}' AND domain='${domain}'}}
    domains = ! +local_domains    --- при отправке на чужие домены?
    forbid_pipe
    forbid_file
    errors_to = postmaster
Может так:

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

rassylka:
    driver = redirect
    domains = +local_domains
    senders = ${lookup mysql{SELECT who FROM userforward \
                     WHERE local_part='${local_part}' AND domain='${domain}'}}
    data = ${lookup mysql{SELECT recipients FROM userforward \
                     WHERE local_part='${local_part}' AND domain='${domain}'}}
    forbid_pipe
    forbid_file
    errors_to = postmaster
Власть в руках у чужаков, и ты им платишь дань...

JaNet
сержант
Сообщения: 195
Зарегистрирован: 2008-09-16 16:15:04
Откуда: Питер
Контактная информация:

Re: Exim + mysql (запрет отправки на группы)

Непрочитанное сообщение JaNet » 2008-09-24 10:29:12

неа, все равно пропускает.. 8(

JaNet
сержант
Сообщения: 195
Зарегистрирован: 2008-09-16 16:15:04
Откуда: Питер
Контактная информация:

Re: Exim + mysql (запрет отправки на группы)

Непрочитанное сообщение JaNet » 2008-10-01 9:51:26

ребят, подскажите...
неужто никто не делал?

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

Re: Exim + mysql (запрет отправки на группы)

Непрочитанное сообщение Alex Keda » 2008-10-01 11:34:42

http://www.lissyara.su/?id=1215#local_parts
за это время что вы тут ждёте ответа вполне можно было документацию прочитать.
Убей их всех! Бог потом рассортирует...

JaNet
сержант
Сообщения: 195
Зарегистрирован: 2008-09-16 16:15:04
Откуда: Питер
Контактная информация:

Re: Exim + mysql (запрет отправки на группы)

Непрочитанное сообщение JaNet » 2008-10-01 13:43:47

вдумчиво прочитал

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

# Если установлена опция “senders”, адрес отправителя конверта должен быть задан в наборе адресов.
если стоит опция данная, значит если нет отправителя указанного в опции, то письмо будет отвергаться.
но письмо все равно принимается.

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

   senders = ${lookup mysql{SELECT who FROM userforward \
                     WHERE local_part='${local_part}' AND domain='${domain}'}}
получается, это вообще игнориурется?

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: Exim + mysql (запрет отправки на группы)

Непрочитанное сообщение schizoid » 2008-10-02 10:24:26

может не в тему, просто как идея?
Отбрасывание прочь (ф топку - прим. lissyara :) - как вы думаете, какое у меня щас настроение и состояние, после того, как больше года ушло на перевод и до конца осталось два абзаца? :)) всех сообщений от одного сайта, исключая письма от postmaster:
# Exim filter

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

if $reply_address contains "@spam.site.example" and
$reply_address does not contain "postmaster@"
then
seen finish
endif
ядерный взрыв...смертельно красиво...жаль, что не вечно...

Аватара пользователя
Urgor
лейтенант
Сообщения: 677
Зарегистрирован: 2006-03-14 16:30:18
Откуда: Гилея (СПб)
Контактная информация:

Re: Exim + mysql (запрет отправки на группы)

Непрочитанное сообщение Urgor » 2008-10-02 11:53:24

JaNet писал(а):получается, это вообще игнориурется?
а в дебаге что пишет?
Власть в руках у чужаков, и ты им платишь дань...

Аватара пользователя
damir_madaga
старшина
Сообщения: 447
Зарегистрирован: 2007-10-01 8:13:38
Откуда: Красноярск
Контактная информация:

Re: Exim + mysql (запрет отправки на группы)

Непрочитанное сообщение damir_madaga » 2008-10-13 16:57:38

JaNet решилась ли задачка? Сейчас столкнулся с такой же!
Женщины и софт - должны быть бесплатными!

JaNet
сержант
Сообщения: 195
Зарегистрирован: 2008-09-16 16:15:04
Откуда: Питер
Контактная информация:

Re: Exim + mysql (запрет отправки на группы)

Непрочитанное сообщение JaNet » 2008-10-14 12:47:35

Знакомого попросил, решили.
Обращаю внимание, что нужно указывать полные адреса в поле who вида user@domain.ru

Структура базы:

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

CREATE TABLE IF NOT EXISTS `userforward` (
  `local_part` varchar(64) NOT NULL default '',
  `domain` varchar(128) NOT NULL default '',
  `recipients` text,
  `who` text NOT NULL,
  PRIMARY KEY  (`local_part`,`domain`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

--
-- Дамп данных таблицы `userforward`
--

INSERT INTO `userforward` (`local_part`, `domain`, `recipients`, `who`) VALUES
('all', 'domain.ru', 'user1,user2,user3,user4', 'secretary@domain.ru'),
('test', 'domain.ru', 'root,adm', 'me@domain.ru');
Конфиг Exim'a:

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

begin routers

dnslookup:
   driver = dnslookup
   domains = ! +local_domains
   transport = remote_smtp
   ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
   no_more

rassylka:
        driver = redirect
        allow_fail
        allow_defer
        senders = ${lookup mysql{SELECT who FROM userforward WHERE local_part='${local_part}' AND do
main='${domain}'}}
        data = ${lookup mysql{SELECT recipients FROM userforward WHERE local_part='${local_part}' AN
D domain='${domain}'}}
        forbid_pipe
        forbid_file
        errors_to = postmaster
Проверяем:

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

mail# telnet localhost 25
Trying 127.0.0.1...
Connected to mail.domain.ru.
Escape character is '^]'.
220 mail.domain.ru ESMTP Exim 4.69 Tue, 14 Oct 2008 13:26:14 +0400
helo aol.com
250 mail.domain.ru Hello aol.com [127.0.0.1]
mail from:me@domain.ru
250 OK
rcpt to:test@domain.ru
250 Accepted
quit
221 mail.domain.ru closing connection
Connection closed by foreign host.

mail# telnet localhost 25
Trying 127.0.0.1...
Connected to mail.domain.ru.
Escape character is '^]'.
220 mail.domain.ru ESMTP Exim 4.69 Tue, 14 Oct 2008 13:28:49 +0400
helo aol.com
250 mail.domain.ru Hello aol.com [127.0.0.1]
mail from:adm@domain.ru
250 OK
rcpt to:test@domain.ru
550 unknown user

gyash
рядовой
Сообщения: 49
Зарегистрирован: 2010-01-19 7:36:53
Откуда: Казахстан Атырау

Re: Exim + mysql (запрет отправки на группы)

Непрочитанное сообщение gyash » 2010-10-11 10:42:34

Спасибо за такой подробный ман, но у меня проблема, если в поле who написать более одного разрешенного отправителя, то только первый может сделать рассылку, втрой если отправить то придет вот такое письмо

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

This message was created automatically by mail delivery software.

A message that you sent could not be delivered to one or more of its recipients. This is a permanent error. The following address(es) failed:

  all@isker.kz
    Unrouteable address

------ This is a copy of the message, including all the headers. ------
Как бы это поправить?

Записи в поле who такого вида

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

Re: Exim + mysql (запрет отправки на группы)

Непрочитанное сообщение dikens3 » 2010-10-12 20:02:08

через двоеточие попробуй (:)

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

reception@isker.kz : maxim.lizogubov@isker.kz
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.