Connection to Postfix
-
Hi,
as far as I understood right (and as it works for me) Postfix uses virtualtransport for moving incoming mails to the Kopano dagent, which listens on Port 2003 (default).So, in Posfix main.cf I have the following settings concerning the virtual users / transport.
virtual_mailbox_maps = hash:/etc/postfix/virtual virtual_alias_maps = hash:/etc/postfix/virtual virtual_transport = lmtp:127.0.0.1:2003
As you can see, I only use flatfile (virtual) for my mailboxes and aliases.
How does Kopano know, where incoming emails have to be assigned to? Does it check the kopano-users in kopano-db -> looking up the emailaddresses -> then assigns the incoming mail to the user with the matching emailaddress?
(I am using users which are added via kopano-admin. The users are stored in die Kopano-db)
Thanks for your answers!
-
Hello @mcdaniels ,
dagent can accept deliveries either to the primary email address of the user, or the username of a user.
-
Personally I am using the following config with postfix to validate kopano db users:
virtual_alias_maps = hash:/etc/postfix/virtual virtual_mailbox_domains = mysql:/etc/postfix/kopano-domains.conf virtual_mailbox_maps = mysql:/etc/postfix/kopano-users.conf virtual_transport = lmtp:localhost:2003
And kopano-domains.conf
user = <db user> password = <db pass> hosts = <db host> dbname = <db name> query = select value from objectproperty where objectid=(select objectid from objectproperty where value LIKE '%%@%s' and propname='emailaddress' limit 1) and propname='loginname';
kopano-users.conf with the same except for query
query = select value from objectproperty where objectid=(select objectid from objectproperty where value='%s' and propname='emailaddress' limit 1) and propname='loginname';
They are modified from the documentation since I need to check for the e-mail address (different domains on the system) and not the userrname.
-
Hello,
@fbartels - Thanks!@bosim Thank you for the examples.
It seems like that I know, what Postfix/Kopano is doing if I use this config:virtual_mailbox_maps = hash:/etc/postfix/virtual virtual_alias_maps = hash:/etc/postfix/virtual
Mail comes in, Postfix checks the maps -> hands it over to dagent (with the emailaddress) -> so it is assigned to the correct kopano-db-user.
Your SQL query for the kopano-domains deliver only the username. (If I use it the right way):
select value from objectproperty where objectid=(select objectid from objectproperty where value LIKE '%%@%s' and propname='emailaddress' limit 1) and propname='loginname';
Output is a Username, but should be the domain?
I am sure I have a wrong understanding of it…
-
Good morning,
…just playing around a little bit with mysql-queries.I wonder if the following query would be enough for postfix to check if a mailaddress is existing in kopano-db.
SELECT value FROM objectproperty where propname = 'emailaddress' and value = '%s'
edit: the query seems to work.
-
Great you got it working. The wierd %s@%s logic is to take out the domains not the users.
Bo