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

Исходное сообщение
"Exim - ограничеть от внешней почты."

Отправлено Denis_56 , 31-Июл-09 16:14 
Доброе время суток.
Есть FreeBSD 6.4 + Exim 4.69 +  MySQL + …
Вопрос как ограничить от внешней почты сервисные аккаунты, например  мне надо что бы для пользователей mail, root, webmaster… почта с внешних доменов не приходила (отбрасывалась), но при этом в нутрии доме почтовый обмен между ними был?
В таблице ввел дополнительное поле «no_local» и для этих пользователей там стоит значение 0.

Содержание

Сообщения в этом обсуждении
"Exim - ограничеть от внешней почты."
Отправлено BlackHawk , 31-Июл-09 16:17 
>Доброе время суток.
>Есть FreeBSD 6.4 + Exim 4.69 +  MySQL + …
>Вопрос как ограничить от внешней почты сервисные аккаунты, например  мне надо
>что бы для пользователей mail, root, webmaster… почта с внешних доменов
>не приходила (отбрасывалась), но при этом в нутрии доме почтовый обмен
>между ними был?
>В таблице ввел дополнительное поле «no_local» и для этих пользователей там стоит
>значение 0.

и прописать deny например... или правильный транспорт...


"Exim - ограничеть от внешней почты."
Отправлено Denis_56 , 31-Июл-09 16:45 
>
>и прописать deny например... или правильный транспорт...

вариант с deny мне больше нравится, но я не могу до конца осознать как его реализовать, знаний по Exim не хватает

deny    message = "Sorry, the user was not found. Try again."
domains = +local_domains

с чем сравнивать: $ {lookup mysql{SELECT recipients FROM users WHERE  no_login=’0’}}
?


"Exim - ограничеть от внешней почты."
Отправлено Denis_56 , 04-Авг-09 16:37 
После долгих размышлений пришел к следующему заперту:

Deny   message   = "Sorry, the user was not found. Try again."
       Domains   = +local_domains
       condition = ${if and{{eq{$(lookup mysql{SELECT local_part FROM user WHERE local_part='${local_part}' AND no_local=true}}}{$local_part}{yes}{no}}{eq{$sender_address_domain}{$domain}{yes}{no}}}}

правда теперь выдает ошибку при принятии почты =(

2009-08-04 16:21:51 H=(mxb.rambler.ru) [81.19.66.30] F=<test@rambler.ru> temporarily rejected RCPT <test@pupkin.ru>: failed to expand ACL string "${if and{{eq{$(lookup mysql{SELECT local_part FROM users WHERE local_part='${local_part}' AND no_local=true}}}{$local_part}{yes}{no}}{eq{$sender_address_domain}{$domain}{yes}{no}}}}": $ not followed by letter, digit, or { inside "and{...}" condition

Что не так, синтаксис вроде правильный…


"Exim - ограничеть от внешней почты."
Отправлено BlackHawk , 04-Авг-09 21:13 
>[оверквотинг удален]
>       Domains   = +local_domains
>
>       condition = ${if and{{eq{$(lookup mysql{SELECT
>local_part FROM user WHERE local_part='${local_part}' AND no_local=true}}}{$local_part}{yes}{no}}{eq{$sender_address_domain}{$domain}{yes}{no}}}}
>
>правда теперь выдает ошибку при принятии почты =(
>
>2009-08-04 16:21:51 H=(mxb.rambler.ru) [81.19.66.30] F=<test@rambler.ru> temporarily rejected RCPT <test@pupkin.ru>: failed to expand ACL string "${if and{{eq{$(lookup mysql{SELECT local_part FROM users WHERE local_part='${local_part}' AND no_local=true}}}{$local_part}{yes}{no}}{eq{$sender_address_domain}{$domain}{yes}{no}}}}": $ not followed by letter, digit, or { inside "and{...}" condition
>
>Что не так, синтаксис вроде правильный…

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


"Exim - ограничеть от внешней почты."
Отправлено Denis_56 , 05-Авг-09 08:15 
>
>я бы для начала урезал бы запрос до минимума, а потом уже
>наращивал... тем более оно ж сказал что ему не нравится

Само собой я урезал и проверял по отдельности, работает, а вот в связке ни как =(


"Exim - ограничеть от внешней почты."
Отправлено BlackHawk , 05-Авг-09 13:13 
>>
>>я бы для начала урезал бы запрос до минимума, а потом уже
>>наращивал... тем более оно ж сказал что ему не нравится
>
>Само собой я урезал и проверял по отдельности, работает, а вот в
>связке ни как =(

значит где-то таки ошибся, что очень легко в exim-омвских запросах... попробуй через макросы написать - будет легче в конфиге читать его


"Exim - ограничеть от внешней почты."
Отправлено Denis_56 , 05-Авг-09 13:38 
Решил этот вопрос, обошелся без AND

Deny   message   = "Sorry, the user was not found. Try again."
       Domains   = +local_domains
       condition = ${if eq{$(lookup mysql{SELECT local_part FROM user WHERE local_part='${local_part}' AND no_local=true}}}{$local_part}{yes}{no}}
       condition = ${if eq{$sender_address_domain}{$domain}{yes}{no}}