Доброе время суток.
Есть FreeBSD 6.4 + Exim 4.69 + MySQL + …
Вопрос как ограничить от внешней почты сервисные аккаунты, например мне надо что бы для пользователей mail, root, webmaster… почта с внешних доменов не приходила (отбрасывалась), но при этом в нутрии доме почтовый обмен между ними был?
В таблице ввел дополнительное поле «no_local» и для этих пользователей там стоит значение 0.
>Доброе время суток.
>Есть FreeBSD 6.4 + Exim 4.69 + MySQL + …
>Вопрос как ограничить от внешней почты сервисные аккаунты, например мне надо
>что бы для пользователей mail, root, webmaster… почта с внешних доменов
>не приходила (отбрасывалась), но при этом в нутрии доме почтовый обмен
>между ними был?
>В таблице ввел дополнительное поле «no_local» и для этих пользователей там стоит
>значение 0.и прописать deny например... или правильный транспорт...
>
>и прописать 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’}}
?
После долгих размышлений пришел к следующему заперту: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
Что не так, синтаксис вроде правильный…
>[оверквотинг удален]
> 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-омвских запросах... попробуй через макросы написать - будет легче в конфиге читать его
Решил этот вопрос, обошелся без ANDDeny 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}}