This is the mailet we've been using since mid-August to handle virtual domains and users. Full documentation is in the header comment:
/** * Implements a Virtual User Table for JAMES. Derived from the * JDBCAlias mailet, but whereas that mailet uses a simple map from a * source address to a destination address, this handles simple * wildcard selection, verifies that a catchall address is for a domain * in the Virtual User Table, and handles forwarding. * * With JDBCAlias, if the destination address were remote it would be * subject to relay testing, even though it should be treated as a local * address. JDBCVirtualUserTable incorporates JDBCAlias processing for * local destinations, and Forward processing for remote destinations. * * To prevent from breaking existing JDBCAlias applications, and to * allow for evolution of this mailet, it is released as a new mailet, * rather than as an update to JDBCAlias. However, anyone using * JDBCAlias should be able to upgrade to JDBCVirtualUserTable. * * As with JDBCAlias, JDBCVirtualUserTable does not provide any * administation tools. You'll have to create the VirtualUserTable * yourself. The standard configuration is as follows: * * CREATE TABLE VirtualUserTable * ( * user varchar(64) NOT NULL default '', * domain varchar(255) NOT NULL default '', * target_address varchar(255) NOT NULL default '', * PRIMARY KEY (user,domain) * ); * * The standard query used with VirtualUserTable is: * * select VirtualUserTable.target_address from VirtualUserTable, VirtualUserTable as VUTDomains * where (VirtualUserTable.user like ? or VirtualUserTable.user like "\%") * and (VirtualUserTable.domain like ? * or (VirtualUserTable.domain like "\%" and VUTDomains.domain like ?)) * order by concat(VirtualUserTable.user,'@',VirtualUserTable.domain) desc limit 1 * * For a given [user, domain, domain] used with the query, this will * match as follows (in precedence order): * * 1. user@domain - explicit mapping for user@domain * 2. user@% - catchall mapping for user anywhere * 3. %@domain - catchall mapping for anyone at domain * 4. null - no valid mapping * * You need to set the connection. At the moment, there is a limit to * what you can change regarding the SQL Query, because there isn't a * means to specify where in the query to replace parameters. [TODO] * * <mailet match="All" class="JDBCVirtualUserTable"> * <table>db://maildb/VirtualUserTable</table> * <sqlquery>sqlquery</sqlquery> * </mailet> * * @author Noel J. Begman <[EMAIL PROTECTED]> */
JDBCVirtualUserTable.java
Description: Binary data
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
