On 9/19/23 15:51, Michael Grant via dovecot wrote:
I've been using dovecot using system usernames (my unix uname as my
IMAP username).  But today I tried New Outlook which requires the imap
username match my email address.

Is there some way to tell dovecot that username@host is the same as uname?
(where username@host is an email address and uname is a unix login
which might be completely different).

  Heya mgrant, been a long time!

If you're using a database for authentication, you can do this sort of translation past using stored functions in MySQL. Queries look something like this:

password_query = SELECT userid AS username, domain, password FROM mail_users WHERE userid = addr_to_uname('%u') AND domain = addr_to_domain_or_default('%u', 'domain.com')

  One of the functions is something like this:

--------------------------------
DELIMITER ?
CREATE FUNCTION addr_to_domain_or_default (userid VARCHAR(255), default_domain VARCHAR(255)) RETURNS VARCHAR(255) DETERMINISTIC
BEGIN
DECLARE at_pos INT;
DECLARE addr_out VARCHAR(255);

SELECT LOCATE('@', userid) INTO at_pos;
IF at_pos = 0 THEN
  CASE userid
    WHEN 'user1' THEN SET addr_out = 'domain1.com';
    WHEN 'user2' THEN SET addr_out = 'domain2.com';
    ELSE         SET addr_out = default_domain;
  END CASE;
ELSE
  SELECT SUBSTRING(userid, at_pos + 1) INTO addr_out;
END IF;

RETURN addr_out;

END ?
DELIMITER ;
--------------------------

This isn't exactly the functionality you want, but it illustrates the kinds of translations that can easy be done on the database side. I've been using a scheme like this for many years with great results.

            -Dave

--
Dave McGuire, AK4HZ
New Kensington, PA

_______________________________________________
dovecot mailing list -- dovecot@dovecot.org
To unsubscribe send an email to dovecot-le...@dovecot.org

Reply via email to