I am using mysql (quite successfully in most cases) to do lookups for
a variety of reasons in postfix.

Recently, I had some issues with a domain lookup and in the testing
tried varying my MySQL query between using %d and %s as the lookup
key.

The documentation is clear on this when the query is for an address.
It may be as clear, and I may not be understanding this, but I would
like to ask for help understanding the difference when the lookup is
for a domain.

In this case, I have in main.cf:

relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

and the query in /etc/postfix/mysql_relay_domains.cf is:

query = SELECT 'OK' FROM domain WHERE domain='%d' AND type='relay'

I chose %d because I'm looking up only the domain in this case. I
noticed that this worked fine when the domain in question is of the
form "domain.tld" but didn't work (meaning the result returned from
postmap -q... was null) when the domain is of the form
"sub.domain.tld" (even though "sub.domain.tld" is in the "domain"
table with type "relay").

When I changed the query to use %s, it worked in both cases. So my
questions are:

1) Is this expected behavior?
2) in the case where the lookup is for a domain, what is the operative
difference between using %d and %s

I am hoping to gain a better understanding of these two substitutions.
Recommendations on best-practices are appreciated as well, but I'd
like to understand the expected behavior.

If this is documented and I missed it or didn't understand it well,
please point me to the documentation page.

Reply via email to