On 2021-11-20 15:20, Wietse Venema wrote:
Viktor Dukhovni:
On Sat, Nov 20, 2021 at 11:05:25AM -0500, Wietse Venema wrote:
- If you must use other tables, update src/util/dict.h
#define DICT_FLAG_FOLD_FIX (0) /* case-fold key with fixed-case map */
#define DICT_FLAG_FOLD_MUL (0) /* case-fold key with fixed-case map */
This will nuke the flags that request case folding.
I had the same idea, but was reluctant to suggest it before finding out
whether the desired goal was case-sensitivity in just one table, one
table type, or all lookups.
If it is all lookups by a specific driver, they could edit
dict_<name_of_driver>.c and:
#include <dict.h>
....
#undef DICT_FLAG_FOLD_FIX
define DICT_FLAG_FOLD_FIX (0)
#undef DICT_FLAG_FOLD_MUL
#define DICT_FLAG_FOLD_MUL (0)
Otherwise, a simple edit will not be sufficient, because many tables
are searched by more than one program. For example, the cleanup
daemon and smtpd daemon both search the virtual alias table.
For that to work, the table would have to "know" if case folding
is on or off.
virtual_alias_maps = {hash:/etc/postfix/virtual flags=nocasefold,...}
I have work in progress code from a few years ago that to introduce
table options, in this the partial addresss/domain search order.
But that code is not close to completion.
I need Postfix to be case-preserving. If internally it's
case-insensitive that's fine so long as "alice.sm...@example.com" gets
stored as is. The ldap driver will need that specific capitalization in
query strings because the case-folded versions will return empty sets,
not the alias expansion, mailbox path, and next-hop records returned for
the case-preserved versions.