Class SqlUserLookup

java.lang.Object
com.mimecast.robin.sasl.SqlUserLookup
All Implemented Interfaces:
AutoCloseable

public class SqlUserLookup extends Object implements AutoCloseable
SqlUserLookup provides user existence lookup against a configured SQL database. It is intended as an alternative to the Dovecot UNIX domain socket userdb lookup. Usage: construct with a JDBC URL/user/password or provide a HikariDataSource.
  • Field Details

    • log

      private static final org.apache.logging.log4j.Logger log
    • ds

      private final com.zaxxer.hikari.HikariDataSource ds
    • userQuery

      private final String userQuery
    • domainQuery

      private final String domainQuery
    • aliasQuery

      private final String aliasQuery
  • Constructor Details

    • SqlUserLookup

      public SqlUserLookup(String jdbcUrl, String user, String password, String userQuery)
    • SqlUserLookup

      public SqlUserLookup(String jdbcUrl, String user, String password, String userQuery, String domainQuery, String aliasQuery)
    • SqlUserLookup

      public SqlUserLookup(com.zaxxer.hikari.HikariDataSource ds, String userQuery)
    • SqlUserLookup

      public SqlUserLookup(com.zaxxer.hikari.HikariDataSource ds, String userQuery, String domainQuery, String aliasQuery)
    • SqlUserLookup

      public SqlUserLookup(com.zaxxer.hikari.HikariDataSource sharedDs, String userQuery, boolean unused)
  • Method Details

    • lookup

      public Optional<SqlUserLookup.UserRecord> lookup(String email)
    • isDomainServed

      public boolean isDomainServed(String domain)
      Checks if a domain is served by this mail system. Returns true if domainQuery is not configured (backward compatible).
      Parameters:
      domain - Domain to check (e.g. "example.com").
      Returns:
      True if the domain is served or no domain query is configured.
    • resolveAlias

      public Optional<String> resolveAlias(String email)
      Resolves an email alias to its real destination address. Returns empty if aliasQuery is not configured (backward compatible).
      Parameters:
      email - Email address to resolve.
      Returns:
      Optional destination address, or empty if no alias exists.
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable