подскажите...есть релейный сервер postfix, вся входящая почта проходит через него на внутренний почтовый сервер компании...
ЗАДАЧА: сделать так чтобы на relay postfix блокировалась почта для отдельных юзеров...(тоесть есть домен test.ru, почта проходит через релей сервер....так вот надо чтоб для выборочных юзеров (vasya@test.ru) почта не принималась вообще, тоесть рубиась на релейном постфиксе...ну для остальных конечно проходила...
спасибо...подскажите кто сталкивался...
Файл /etc/postfix/main.cfrelay_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
а должно быть в smtpd_recipient_restrictions = ???попробовал, у меня заблокировалась вообще вся входящая и исходящая почта...почему?
smtpd_recipient_restrictions - проверка на этапе получения писемно у меня вся почта перестает ходить...а это вообще работает если сервер релейный??????
Покажи свой smtpd_recipient_restrictions
smtpd_recipient_restrictions =
permit_mynetworks,
reject_unauth_destination,
check_recipient_access hash:/etc/postfix/recipient_access
как я понял надо сделать
>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таким образом и боди можно и аттачмент и все в одном флаконе :)
Угу. Только письмо доставляется адресу, указанному в RCPT TO. Плюс после того, как сервер получил DATA, он обязан принять все письмо, даже если оно будет REJECT.
ничего не выходит...итак, postfix relay за ним exhange на котором все юзеры, был юзер pupkin@test.ru, потом он был удален, на его имя валится масса спама и т.д......хочется чтоб ehchange не принимал почту для pupkin@test.ru вообще, поесть для этого ящика она резалась на релейном постфиксе....(если это вообще возможно)с манипуляциями с smtpd_helo_restrictions - проверка на этапе HELO/EHLO
smtpd_sender_restrictions - проверка на этапе отправки писем
smtpd_recipient _restrictions - проверка на этапе получения писем ничего не выходит......или все попрежнему проваливается или вообще перестает ходить почта....как бороть???
У нас абсолютно аналогичная ситуация (postfix снаружи, exchange 2000 внутри). Наличие пользователя в AD проверяется postfix-ом через LDAP. Хотя можно и верификацию настроить на внутренний домен (reject_unverified_recipient). То, что я писал раньше работает, лично проверил.
спасибо....все получилось..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!!!
>Угу. Только письмо доставляется адресу, указанному в RCPT TO.Ну с адресом перепутал, бывает :)
>Плюс после того, как сервер получил DATA, он обязан принять все письмо, >даже если
>оно будет REJECT.Кто вам сказал такую херню ? Как тока постфикс натыкается на какое-либо правило которое запрещает прием письма, то говорит REJECT и рвет соединение!
У меня по такому принципу есть фильтры на адреса, хосты, разные вири с аттачментом (типо я ваш документ открой меня) чтоб антивирус лишний раз не напригать, на файлы аттачмента, да на что угодно можно сделать :) это же регулярные выражения...
Специально проверял берет ли постфикс письма или нет, дал REJECT'у отдельный код ошибки и смотрел скоко писем и какова размера было откинуто с этим кодом...
>>Плюс после того, как сервер получил DATA, он обязан принять все письмо, >даже если
>>оно будет REJECT.
>Кто вам сказал такую херню ? Как тока постфикс натыкается на какое-либо
>правило которое запрещает прием письма, то говорит REJECT и рвет соединение!Вы толи не понимаете того о чем говорите, толи откровенно врете!
>Вы толи не понимаете того о чем говорите, толи откровенно врете!Смыст мне тут лопшу наушм вещать, вот вам наглядный пример из лога к примеру
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!
>>Вы толи не понимаете того о чем говорите, толи откровенно врете!
>
>Смыст мне тут лопшу наушм вещать, вот вам наглядный пример из лога
>к примеру
Лог поскипан...
Ну с чего вы взяли, что smtpd завет cleanup при получении каждой строчки от клиента. Прежде чем нести чушь почитайте про архитектуру postfix.
>>>Вы толи не понимаете того о чем говорите, толи откровенно врете!
>>
>>Смыст мне тут лопшу наушм вещать, вот вам наглядный пример из лога
>>к примеру
>Лог поскипан...
>Ну с чего вы взяли, что smtpd завет cleanup при получении каждой
>строчки от клиента. Прежде чем нести чушь почитайте про архитектуру postfix.
>
но письмо целиком принято небыло, я и с аттачментами так експерементировал, прикреплял 2 мега и запрещал этот файл, он его даже пересылать не начял, может если проверять по телу сообщения тогда письмо будет полностю принято а потом тока разобранно но по заголовкам не принемает он его полностю, заголовки полностью принемает все письмо нет
>>Ну с чего вы взяли, что smtpd завет cleanup при получении каждой
>>строчки от клиента. Прежде чем нести чушь почитайте про архитектуру postfix.
> но письмо целиком принято небыло, я и с аттачментами так експерементировал,
>прикреплял 2 мега и запрещал этот файл, он его даже пересылать
>не начял, может если проверять по телу сообщения тогда письмо будет
>полностю принято а потом тока разобранно но по заголовкам не принемает
>он его полностю, заголовки полностью принемает все письмо нет
Если вам хочется в это верить, то делайте это тихо, не нужно вводить в заблуждение других людей. Если вы не доверяете документации postfix, то попробуйте сами проверить свое утверждение:
Добавьте в ваши регэкспы для заголовков строчку "/FOO: REJECT Foo rejected",
Зайдите телнетом к себе на 25 порт и поглядите в какой момент будет отлуп на это самое "FOO:". Если лень, то поверьте мне и докам, что reject будет только после "<CR><LF>.<CR><LF>".
Я согласен, что возможность не принимать все письмо полностью была бы очень полезна, но увы, это противоречит как существующим стандартам, так и модульной архитектуре postfix'а.
>Я согласен, что возможность не принимать все письмо полностью была бы очень
>полезна, но увы, это противоречит как существующим стандартам, так и модульной
>архитектуре postfix'а.да действительно, через телнет именно так. Но как можно обяснить что он не пересылал двухметровый аттачмент ? постфикс рвет соединение неприняв и 0,5МБ... может я просто чегото непонимаю, но опытам с этим фильтром я неделю посветил...
>да действительно, через телнет именно так. Но как можно обяснить что он
>не пересылал двухметровый аттачмент ? постфикс рвет соединение неприняв и 0,5МБ...
Это объясняется не верно поставленным эксперементом.
Откуда вы взяли эти 0.5Mb - смотрели на индикатор в каком-то MUA?>может я просто чегото непонимаю, но опытам с этим фильтром я
>неделю посветил...
Зачем тратить неделю своего времяни если это ясно и четко описанно в документации.
>Это объясняется не верно поставленным эксперементом.
>Откуда вы взяли эти 0.5Mb - смотрели на индикатор в каком-то MUA?взял простенький прокси для виндоуса и посмотрел сколько переданно было...
Ладно возможно я неправ и действительно поставил неправельный експеремент... Отсюда вытекает вопрос, можно ли заставить постфикс проверять налету? Полагаю что не постфиксом можно через фаервол...
>можно ли заставить постфикс проверять налету? Полагаю что не постфиксом можно
>через фаервол...
Сделав это вы устроите себе DOS.
По стандарту клиент в промежутке между "DATA" и "<CR><LF>.<CR><LF>" в праве не реагировать на реплики сервера (более того они просто не предусмотрены).
Если вы на этом этапе скажете 5xx клиент все равно продолжит передачу письма, а после "<CR><LF>.<CR><LF>" будет ждать ответа сервера пока не отвалится по таймауту. Т.е вы получаете большое количество висящих соединений.
Если же вы во время DATA тихо прибьете соединение, то клиент вернется через небольшой промежуток времени.
Про нагрузку на cpu я уж вообще молчу.
Просто примите как факт - если SMTP сессия дошла до состояния DATA письмо будет принято целиком.
>Просто примите как факт - если SMTP сессия дошла до состояния DATA
>письмо будет принято целиком.но веть заголовок это не дата, к примеру данные об отправителе, получателе, хосте, типе и размере аттачмента передаются в заголовке, тоесть можно отказаться принимать дальше.
>но веть заголовок это не дата, к примеру данные об отправителе, получателе,
>хосте, типе и размере аттачмента передаются в заголовке, тоесть можно отказаться
>принимать дальше.
Alan, извините, но я устал... Идите читать RFC, начните с 821,2821 и на закуску 1869.
>Alan, извините, но я устал... Идите читать RFC, начните с 821,2821 и
>на закуску 1869.OK! спаcибо что так долго долбню втреали, а не послали куда подальше :) пойду читать..
Делаю следующее./etc/postfix/main.cf
header_checks = regexp:/etc/postfix/header_checks/etc/postfix/header_checks
/^To:.*(user@domain\.tld)/ REJECTtelnet 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 mail123
.
550 Error: Message content rejectedЕще вопросы есть?
я применил ваш фильтр...и это полностью помогло решить мне свою проблему...во всяком случае письмо дальше релея не идет...цель достигнута..
спасибо..