I think it should not be implemented using an interceptor. Some parts of the server use DefaultPartionNexus.search() directly rather then going through the interceptor chain (SubentryInterceptor, ReferrralManagerImpl, GroupCache, TupleCache, TriggerSpecCache). Those parts won't be able to perform alias dereferncing if alias dereferencing is handled within an interceptor.
Instead I propose to add this feature to the PartitionNexus. I started to create a new cursor implementation that handles alias dereferencing. In case alias dereferncing is reqeuested it adds an or'ed filter to the original user's filter: (|<user filter>(objectClass=alias)). Alias entries returned by the partition are dereferenced by the cursor and a sub-search is performed.
Using this technique the partition implementation don't need to implement alias dereferencing. The alias indices (alias, oneAlias, subAlias) are not neccessary any more and can be removed from JDBM partition. Additionally alias dereferencing across partitions is possible.