On Wed, Oct 15, 2008 at 12:51:32PM +0400, Nikita Kipriyanov wrote:

> smtpd_restriction_classes = insiders_only
> insiders_only = check_sender_access mysql:/etc/postfix/insiders.cf, reject
> 
> smtpd_recipient_restrictions = ..., check_recipient_access 
> mysql:/etc/postfix/protected_destinations.cf, ...
> 
> --- insiders.cf ---
> hosts = localhost
> user = mail
> password = password
> dbname = mail
> query = SELECT 1 FROM `insiders` WHERE `address`='%s'

I don't recall "1" being a valid documented access(5) action. Consider

    query = SELECT 'OK' FROM 'insiders' WHERE 'address'='%s'

(the quotes around 'insiders' and 'address' are optional when these are
not reserved words in your SQL database. This said always quoting is a
good habit).


> --- protected_destinations.cf ---
> 
> hosts = localhost
> user = mail
> password = password
> dbname = mail
> query = SELECT 'insiders_only' FROM `lists` WHERE 
> CONCAT(`listName`,'@list.domain')='%s' limit 1

This is not efficient, because it can't be indexed. Consider using a
"domain=" filter in the table definition and

        listName = '%u'

in the WHERE clause. Otherwise every query is a table scan.

-- 
        Viktor.

Disclaimer: off-list followups get on-list replies or get ignored.
Please do not ignore the "Reply-To" header.

To unsubscribe from the postfix-users list, visit
http://www.postfix.org/lists.html or click the link below:
<mailto:[EMAIL PROTECTED]>

If my response solves your problem, the best way to thank me is to not
send an "it worked, thanks" follow-up. If you must respond, please put
"It worked, thanks" in the "Subject" so I can delete these quickly.

Reply via email to