Страница 1 из 1
Exim + mysql (запрет отправки на группы)
Добавлено: 2008-09-16 16:23:03
JaNet
Есть сервер на 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 - его не получать.
Re: Exim + mysql (запрет отправки на группы)
Добавлено: 2008-09-16 16:32:58
Alex Keda
линух...
=====
в роутере условие добавь.
Re: Exim + mysql (запрет отправки на группы)
Добавлено: 2008-09-16 17:11:17
JaNet
да я понимаю что в роутерах, формат условия никак не вырисовывается.. не поможете?
Re: Exim + mysql (запрет отправки на группы)
Добавлено: 2008-09-16 21:42:37
dikens3
Встречалось совсем недавно.
В роутере что-то типа sender = .... нужно добавить.
Я делаю немного иначе.
1. Все пользователи у меня аутентифицирутся.
2. Сама блокировка на этапе rcpt:
Re: Exim + mysql (запрет отправки на группы)
Добавлено: 2008-09-17 9:09:10
JaNet
ок, поищу
просто я реализовал группы рассылки, и будет не очень приятно, коль из инета спамеры начнут слать письма на подобные ящики, откуда уже будет расходится всем
для этого и делается..
Re: Exim + mysql (запрет отправки на группы)
Добавлено: 2008-09-17 9:21:41
dikens3
JaNet писал(а):ок, поищу
просто я реализовал группы рассылки, и будет не очень приятно, коль из инета спамеры начнут слать письма на подобные ящики, откуда уже будет расходится всем
для этого и делается..
Правильно делается. Лучше вообще это дело ограничить секретарём и т.п. сотрудниками.(судя по моему опыту, т.к. некоторые пользователи ещё умудряются отправить ответ, тоже всем ес-но. )
Re: Exim + mysql (запрет отправки на группы)
Добавлено: 2008-09-17 15:29:25
JaNet
осталось понять, как это наваять...
родилось нечто подобное в роутерах, перед алиасами.. сомневаюсь что будет работать, просто не до конца понятна логика, прокомментируйте плз. большого желания нет тестировать на рабочем сервере)
в базе
Код: Выделить всё
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
Re: Exim + mysql (запрет отправки на группы)
Добавлено: 2008-09-23 17:00:06
JaNet
попробовал, не пашет
то есть пашет, но не работает условие - пропускает все равно все письма на
test@domain.ru
вопрос - что не так?
Re: Exim + mysql (запрет отправки на группы)
Добавлено: 2008-09-23 17:02:08
JaNet
попробовал, не пашет
то есть пашет, но не работает условие - пропускает все равно все письма на
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:
.........
Re: Exim + mysql (запрет отправки на группы)
Добавлено: 2008-09-24 8:43:02
Urgor
Код: Выделить всё
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
Re: Exim + mysql (запрет отправки на группы)
Добавлено: 2008-09-24 10:29:12
JaNet
неа, все равно пропускает.. 8(
Re: Exim + mysql (запрет отправки на группы)
Добавлено: 2008-10-01 9:51:26
JaNet
ребят, подскажите...
неужто никто не делал?
Re: Exim + mysql (запрет отправки на группы)
Добавлено: 2008-10-01 11:34:42
Alex Keda
http://www.lissyara.su/?id=1215#local_parts
за это время что вы тут ждёте ответа вполне можно было документацию прочитать.
Re: Exim + mysql (запрет отправки на группы)
Добавлено: 2008-10-01 13:43:47
JaNet
вдумчиво прочитал
Код: Выделить всё
# Если установлена опция “senders”, адрес отправителя конверта должен быть задан в наборе адресов.
если стоит опция данная, значит если нет отправителя указанного в опции, то письмо будет отвергаться.
но письмо все равно принимается.
Код: Выделить всё
senders = ${lookup mysql{SELECT who FROM userforward \
WHERE local_part='${local_part}' AND domain='${domain}'}}
получается, это вообще игнориурется?
Re: Exim + mysql (запрет отправки на группы)
Добавлено: 2008-10-02 10:24:26
schizoid
может не в тему, просто как идея?
Отбрасывание прочь (ф топку - прим. lissyara

- как вы думаете, какое у меня щас настроение и состояние, после того, как больше года ушло на перевод и до конца осталось два абзаца?

) всех сообщений от одного сайта, исключая письма от postmaster:
# Exim filter
Код: Выделить всё
if $reply_address contains "@spam.site.example" and
$reply_address does not contain "postmaster@"
then
seen finish
endif
Re: Exim + mysql (запрет отправки на группы)
Добавлено: 2008-10-02 11:53:24
Urgor
JaNet писал(а):получается, это вообще игнориурется?
а в дебаге что пишет?
Re: Exim + mysql (запрет отправки на группы)
Добавлено: 2008-10-13 16:57:38
damir_madaga
JaNet решилась ли задачка? Сейчас столкнулся с такой же!
Re: Exim + mysql (запрет отправки на группы)
Добавлено: 2008-10-14 12:47:35
JaNet
Знакомого попросил, решили.
Обращаю внимание, что нужно указывать
полные адреса в поле 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
Re: Exim + mysql (запрет отправки на группы)
Добавлено: 2010-10-11 10:42:34
gyash
Спасибо за такой подробный ман, но у меня проблема, если в поле 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 такого вида
Re: Exim + mysql (запрет отправки на группы)
Добавлено: 2010-10-12 20:02:08
dikens3
через двоеточие попробуй (:)
Код: Выделить всё
reception@isker.kz : maxim.lizogubov@isker.kz