URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 51375
[ Назад ]

Исходное сообщение
"вопрос к знатокам POSTFIX..."

Отправлено chart , 08-Дек-04 12:07 
подскажите...есть релейный сервер postfix, вся входящая почта проходит через него на внутренний почтовый сервер компании...
ЗАДАЧА: сделать так чтобы на relay postfix блокировалась почта для отдельных юзеров...(тоесть есть домен test.ru, почта проходит через релей сервер....так вот надо чтоб для выборочных юзеров (vasya@test.ru) почта не принималась вообще, тоесть рубиась на релейном постфиксе...ну для остальных конечно проходила...
спасибо...подскажите кто сталкивался...

Содержание

Сообщения в этом обсуждении
"вопрос к знатокам POSTFIX..."
Отправлено jonatan , 08-Дек-04 12:50 
Файл /etc/postfix/main.cf

relay_domains test.ru
smtpd_recipient_restrictions =
   ...
   check_recipient_access hash:/etc/postfix/recipient_access

Файл /etc/postfix/recipient_access

vasya@test.ru   REJECT

Ну и конечно
postmap /etc/postfix/recipient_access
/etc/init.d/postfix reload


"вопрос к знатокам POSTFIX..."
Отправлено chart , 08-Дек-04 13:13 
а должно быть в smtpd_recipient_restrictions = ???

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


"вопрос к знатокам POSTFIX..."
Отправлено chart , 08-Дек-04 14:53 
smtpd_recipient_restrictions - проверка на этапе получения писем

но у меня вся почта перестает ходить...а это вообще работает если сервер релейный??????


"вопрос к знатокам POSTFIX..."
Отправлено jonatan , 08-Дек-04 16:22 
Покажи свой smtpd_recipient_restrictions

"вопрос к знатокам POSTFIX..."
Отправлено jonatan , 08-Дек-04 16:26 
smtpd_recipient_restrictions =
        permit_mynetworks,
        reject_unauth_destination,
        check_recipient_access hash:/etc/postfix/recipient_access

"вопрос к знатокам POSTFIX..."
Отправлено SatanaClause , 08-Дек-04 16:08 
как я понял надо сделать
>vasya@test.ru   REJECT

с помощью regexp намного проще
== main.cf
header_checks = regexp:/usr/..../regexp.idiots
== main.cf


== regexp.idiots
/^From.*vasya@test\.ru.*/i REJECT Fuck Off # так блокировать адрес
/^Received.*82\.135\.189\.243.*/i REJECT Fuck Off # а так ip
== regexp.idiots

таким образом и боди можно и аттачмент и все в одном флаконе :)


"вопрос к знатокам POSTFIX..."
Отправлено jonatan , 08-Дек-04 16:20 
Угу. Только письмо доставляется адресу, указанному в RCPT TO. Плюс после того, как сервер получил DATA, он обязан принять все письмо, даже если оно  будет REJECT.

"вопрос к знатокам POSTFIX..."
Отправлено chart , 08-Дек-04 16:46 

ничего не выходит...итак, postfix relay за ним exhange на котором все юзеры, был юзер pupkin@test.ru, потом он был удален, на его имя валится масса спама и т.д......хочется чтоб ehchange не принимал почту для pupkin@test.ru вообще, поесть для этого ящика она резалась на релейном постфиксе....(если это вообще возможно)

с манипуляциями с  smtpd_helo_restrictions - проверка на этапе HELO/EHLO
smtpd_sender_restrictions - проверка на этапе отправки писем
smtpd_recipient _restrictions - проверка на этапе получения писем ничего не выходит......или все попрежнему проваливается или вообще перестает ходить почта....

как бороть???


"вопрос к знатокам POSTFIX..."
Отправлено jonatan , 08-Дек-04 17:02 
У нас абсолютно аналогичная ситуация (postfix снаружи, exchange 2000 внутри). Наличие пользователя в AD проверяется postfix-ом через LDAP. Хотя можно и верификацию настроить на внутренний домен (reject_unverified_recipient). То, что я писал раньше работает, лично проверил.

"вопрос к знатокам POSTFIX..."
Отправлено chart , 08-Дек-04 17:27 
спасибо....все получилось..

Failed to deliver to 'it@test.ru'
SMTP module(domain @195.2.83.145:test.ru) reports:
message text rejected by mail.test.ru:
550 Error: HAAAAAAAA!!!


"вопрос к знатокам POSTFIX..."
Отправлено SatanaClause , 09-Дек-04 10:48 
>Угу. Только письмо доставляется адресу, указанному в RCPT TO.

Ну с адресом перепутал, бывает :)

>Плюс после того, как сервер получил DATA, он обязан принять все письмо, >даже если
>оно  будет REJECT.

Кто вам сказал такую херню ? Как тока постфикс натыкается на какое-либо правило которое запрещает прием письма, то говорит REJECT и рвет соединение!

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

Специально проверял берет ли постфикс письма или нет, дал REJECT'у отдельный код ошибки и смотрел скоко писем и какова размера было откинуто с этим кодом...


"вопрос к знатокам POSTFIX..."
Отправлено unk , 09-Дек-04 10:58 
>>Плюс после того, как сервер получил DATA, он обязан принять все письмо, >даже если
>>оно  будет REJECT.
>Кто вам сказал такую херню ? Как тока постфикс натыкается на какое-либо
>правило которое запрещает прием письма, то говорит REJECT и рвет соединение!

Вы толи не понимаете того о чем говорите, толи откровенно врете!


"вопрос к знатокам POSTFIX..."
Отправлено alan , 09-Дек-04 11:16 
>Вы толи не понимаете того о чем говорите, толи откровенно врете!

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

Dec  8 10:44:29 ciurlionio postfix/smtpd[799]: connect from unknown[82.135.177.201]
Dec  8 10:44:31 ciurlionio postfix/smtpd[799]: 2B08821BB: client=unknown[82.135.177.201]
Dec  8 10:44:35 ciurlionio postfix/cleanup[800]: 2B08821BB: reject: header Received: from server.org (unknown [82.135.177.201])??by rel-1.ciurlionio.lt (Postfix) with SMTP id 2B08821BB??for <metocentr@ciurlionio.lt>; Wed,  8 Dec 2004 10:44:31 +0200 (EET) from unknown[82.135.177.201]; from=<raipiene@omni.lt> to=<metocentr@ciurlionio.lt> proto=SMTP helo=<server.org>: The spam and viruses are forbidden by the law!
Dec  8 10:44:41 ciurlionio postfix/smtpd[799]: disconnect from unknown[82.135.177.201]

а вот правило по которому это произошло
/^Received.*82\.135\.177\.201.*/i       REJECT The spam and viruses are forbidden by the law!


"вопрос к знатокам POSTFIX..."
Отправлено unk , 09-Дек-04 11:32 
>>Вы толи не понимаете того о чем говорите, толи откровенно врете!
>
>Смыст мне тут лопшу наушм вещать, вот вам наглядный пример из лога
>к примеру
Лог поскипан...
Ну с чего вы взяли, что smtpd завет cleanup при получении каждой строчки от клиента. Прежде чем нести чушь почитайте про архитектуру postfix.

"вопрос к знатокам POSTFIX..."
Отправлено alan , 09-Дек-04 11:44 
>>>Вы толи не понимаете того о чем говорите, толи откровенно врете!
>>
>>Смыст мне тут лопшу наушм вещать, вот вам наглядный пример из лога
>>к примеру
>Лог поскипан...
>Ну с чего вы взяли, что smtpd завет cleanup при получении каждой
>строчки от клиента. Прежде чем нести чушь почитайте про архитектуру postfix.
>
но письмо целиком принято небыло, я и с аттачментами так експерементировал, прикреплял 2 мега и запрещал этот файл, он его даже пересылать не начял, может если проверять по телу сообщения тогда письмо будет полностю принято а потом тока разобранно но по заголовкам не принемает он его полностю, заголовки полностью принемает все письмо нет

"вопрос к знатокам POSTFIX..."
Отправлено unk , 09-Дек-04 12:10 
>>Ну с чего вы взяли, что smtpd завет cleanup при получении каждой
>>строчки от клиента. Прежде чем нести чушь почитайте про архитектуру postfix.
> но письмо целиком принято небыло, я и с аттачментами так експерементировал,
>прикреплял 2 мега и запрещал этот файл, он его даже пересылать
>не начял, может если проверять по телу сообщения тогда письмо будет
>полностю принято а потом тока разобранно но по заголовкам не принемает
>он его полностю, заголовки полностью принемает все письмо нет
Если вам хочется в это верить, то делайте это тихо, не нужно вводить в заблуждение других людей. Если вы не доверяете документации postfix, то попробуйте сами проверить свое утверждение:
Добавьте в ваши регэкспы для заголовков строчку "/FOO: REJECT Foo rejected",
Зайдите телнетом к себе на 25 порт и поглядите в какой момент будет отлуп на это самое "FOO:". Если лень, то поверьте мне и докам, что reject будет только после "<CR><LF>.<CR><LF>".
Я согласен, что возможность не принимать все письмо полностью была бы очень полезна, но увы, это противоречит как существующим стандартам, так и модульной архитектуре postfix'а.


"вопрос к знатокам POSTFIX..."
Отправлено alan , 09-Дек-04 12:24 
>Я согласен, что возможность не принимать все письмо полностью была бы очень
>полезна, но увы, это противоречит как существующим стандартам, так и модульной
>архитектуре postfix'а.

да действительно, через телнет именно так. Но как можно обяснить что он не пересылал двухметровый аттачмент ? постфикс рвет соединение неприняв и 0,5МБ... может я просто чегото непонимаю, но опытам с этим фильтром я неделю посветил...


"вопрос к знатокам POSTFIX..."
Отправлено unk , 09-Дек-04 12:33 
>да действительно, через телнет именно так. Но как можно обяснить что он
>не пересылал двухметровый аттачмент ? постфикс рвет соединение неприняв и 0,5МБ...
Это объясняется не верно поставленным эксперементом.
Откуда вы взяли эти 0.5Mb - смотрели на индикатор в каком-то MUA?

>может я просто чегото непонимаю, но опытам с этим фильтром я
>неделю посветил...
Зачем тратить неделю своего времяни если это ясно и четко описанно в документации.


"вопрос к знатокам POSTFIX..."
Отправлено alan , 09-Дек-04 12:41 
>Это объясняется не верно поставленным эксперементом.
>Откуда вы взяли эти 0.5Mb - смотрели на индикатор в каком-то MUA?

взял простенький прокси для виндоуса и посмотрел сколько переданно было...

Ладно возможно я неправ и действительно поставил неправельный експеремент... Отсюда вытекает вопрос, можно ли заставить постфикс проверять налету? Полагаю что не постфиксом можно через фаервол...


"вопрос к знатокам POSTFIX..."
Отправлено unk , 09-Дек-04 13:01 
>можно ли заставить постфикс проверять налету? Полагаю что не постфиксом можно
>через фаервол...
Сделав это вы устроите себе DOS.
По стандарту клиент в промежутке между "DATA" и "<CR><LF>.<CR><LF>" в праве не реагировать на реплики сервера (более того они просто не предусмотрены).
Если вы на этом этапе скажете 5xx клиент все равно продолжит передачу письма, а после "<CR><LF>.<CR><LF>" будет ждать ответа сервера пока не отвалится по таймауту. Т.е вы получаете большое количество висящих соединений.
Если же вы во время DATA тихо прибьете соединение, то клиент вернется через небольшой промежуток времени.
Про нагрузку на cpu я уж вообще молчу.
Просто примите как факт - если SMTP сессия дошла до состояния DATA письмо будет принято целиком.

"вопрос к знатокам POSTFIX..."
Отправлено alan , 09-Дек-04 13:13 
>Просто примите как факт - если SMTP сессия дошла до состояния DATA
>письмо будет принято целиком.

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


"вопрос к знатокам POSTFIX..."
Отправлено unk , 09-Дек-04 13:20 
>но веть заголовок это не дата, к примеру данные об отправителе, получателе,
>хосте, типе и размере аттачмента передаются в заголовке, тоесть можно отказаться
>принимать дальше.
Alan, извините, но я устал... Идите читать RFC, начните с 821,2821 и на закуску 1869.


"вопрос к знатокам POSTFIX..."
Отправлено alan , 09-Дек-04 13:34 
>Alan, извините, но я устал... Идите читать RFC, начните с 821,2821 и
>на закуску 1869.

OK! спаcибо что так долго долбню втреали, а не послали куда подальше :) пойду читать..


"вопрос к знатокам POSTFIX..."
Отправлено jonatan , 09-Дек-04 12:26 
Делаю следующее.

/etc/postfix/main.cf
header_checks = regexp:/etc/postfix/header_checks

/etc/postfix/header_checks
/^To:.*(user@domain\.tld)/ REJECT

telnet host 25
Connected to host.
Escape character is '^]'.
220 host.domain.tld ESMTP Postfix
HELO host1.domain.tld
250 host.domain.tld
MAIL FROM: test@dom.ru
250 OK
RCPT TO: user@domain.tld
250 OK
DATA
354 End data with <CR><LF>.<CR><LF>
From: test@dom.ru
To: user@domain.tld
Subject: test mail

123
.
550 Error: Message content rejected

Еще вопросы есть?


"вопрос к знатокам POSTFIX..."
Отправлено chart , 09-Дек-04 12:30 
я применил ваш фильтр...и это полностью помогло решить мне свою проблему...во всяком случае письмо дальше релея не идет...цель достигнута..
спасибо..