Dear ISPConfig members, I have around 3TB dovecot mail server running as master-master, main server on one site and another dovecot mail server is located on different site; The dovecot was configured poorly and hosted on a single physical server which eventually running out of space; 1) my aim is to slowly migrate one mail-box at a time to a New ISPConfig Multiple Server setup, dedicated only for mail Services; I believe we can have both mail servers running at the same time; 2) Or, if you recommend Migrating everything one shot, that would be great, however, the following article below is scary if migration was not done using the right tool; https://doc.dovecot.org/admin_manual/migrating_mailboxes/ frankly, I don't like to rush and migrate everything one shot, I prefer to migrate one mail-box at a time and allow testing; 3) Is it possible to use the automation script mentioned below to setup multiple ISPConfig servers only for mail services, if not, is there an article on howtoforge you recommend for Multiple setup but dedicated only for Mail services? 4) FYI - PFA is being used to manage User accounts; So basically, what am looking for is only the following only, am not interested in Web hosting, Webmail, or DNS Management; Code: host FQDN IP panel panel.example.com 10.0.64.12 mx1 mx1.example.com 10.0.64.14 mx2 mx2.example.com 10.0.64.15 I am aware of the following articles, but would like to know from you if you have other recommended options / best practices you would like to share; https://www.howtoforge.com/ispconfig-autoinstall-debian-ubuntu/ https://www.howtoforge.com/tutorial/ispconfig-multiserver-setup-debian-ubuntu/ https://forum.howtoforge.com/threads/ispconfig-3-autoinstaller.86078/ Your time, caring, and sharing is highly appreciated; thank you so much for reading my post;
Are we talking about the expectation having one account ( account@example.net ) on one server and another ( account2@example.net ) on another server? Doubt ISPConfig is made for this. However one could, maybe, use the mirror function and just tell clients to use server a or b but someone is going to mess up sooner or later ( client ). But maybe I'm mistaken
@Christoph thank you for your time; Currently users use imap.example.com and smtp.example.com; I would say, if possible, to have the users who are willing to take a test drive, migrate to the new Mail server and start using sub-domains imaps.example.com and smtps.example.com instead which will be pointing to the New Mail server; Any thoughts of how to build a Multiple ISPConfig Servers setup, especially for Mail services will be highly appreciate it!
yes. You can freely define which services a system shall have. You can basically follow this guide: https://www.howtoforge.com/tutorial/ispconfig-multiserver-setup-debian-ubuntu/ which sets up a system consisting of two mirrored mail nodes. If your system shall be larger, then you must go a different route, which is having a high highly available storage system, e.g. 3+ servers running Ceph. Then have two or more mail nodes running ISPConfig mail system in mirror mode which all mount /var/vmail from the ceph storage cluster. And finally, you need either a load balancer in front of it. And dovecot likely needs to be configured using director in such a setup. Such a setup then should easily scale to ten thousands of mail accounts. I know a hosting company that used ISPConfig already more then 10 years ago for their mail system consisting of 5 mail nodes plus a central storage cluster which had more than 15k active accounts and the system was working perfectly fine.
I have the migration script, it work amazingly well so far. I am going from a multiple server (web(x2),db,mail,panel) setup to a hybrid main server (web,db,panel) plus (mail). can the migration tool migrate the databases to the new main server. if so will it copy all dbs for me
Dear ISPConfig Members, It's been almost a year, however, I was finally able to fire-up a setup of 2 IPSConfig Servers dedicated only for Email; However, I need your guidance please, since I still can't authenticate to the second mail server using imap or smtp; So, here in short version what I ran and configured: At the first mail server wget -O - https://get.ispconfig.org | sh -s -- --no-quota --no-pma --no-ftp --no-roundcube --no-mailman --no-dns --use-unbound --no-firewall --use-nginx --use-php=system --interactive At the second mail server - When asked, choose Expert in onrder to join it part of Multiple setup wget -O - https://get.ispconfig.org | sh -s -- --no-quota --no-pma --no-ftp --no-roundcube --no-mailman --no-dns --use-unbound --no-firewall --use-nginx --use-php=system --interactive I put together the Dovecot Dsync script as well using the instructions of Multiple Setup howto, but Dsync status at MX2 shows 0 users although I have created users on MX1; When I run 'doveadm -D sync -A -d ' at MX2 I got failed requests 1 I tried from MX1 web interface to make MX1 main Web and Database and make MX2 a mirror of MX1 but still no luck with MX2; Please note, when I ran the upper script at MX2 using --interactive at MX2, it joined MX1 and everything went smooth, but it seems neither the mailboxes, credentials, and databases of MX1 are syncing or mirroring with MX2; I have an awesome mail MX1 server up and running right now and we are using it, however, we need to divide the load, i.e, have MX2 handle the SMTP and MX1 handle the IMAP; Your time is highly appreciated; I need to know what is missing, how can I tell MX1 to Sync Mailboxes, Credentials, and all sort of Databases with MX2, hence if MX1 one day is gone, we can still use MX2 for authentication and access our emails using IMAP/SMTP? Thank you!!
Hello @nhybgtvfr, yes I did, thank you for your time Here what happens when I run Code: doveadm -D sync -A -d Code: PRD [root@mx1 ~]# doveadm -D sync -A -d Debug: Loading modules from directory: /usr/lib/dovecot/modules/doveadm Debug: Skipping module doveadm_acl_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_acl_plugin.so: undefined symbol: acl_user_module (this is usually intentional, so just ignore this message) Debug: Skipping module doveadm_quota_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_quota_plugin.so: undefined symbol: quota_user_module (this is usually intentional, so just ignore this message) Debug: Module loaded: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_sieve_plugin.so Debug: Skipping module doveadm_fts_lucene_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_lucene_plugin.so: undefined symbol: lucene_index_iter_deinit (this is usually intentional, so just ignore this message) Debug: Skipping module doveadm_fts_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_plugin.so: undefined symbol: fts_user_get_language_list (this is usually intentional, so just ignore this message) Debug: Skipping module doveadm_mail_crypt_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/libdoveadm_mail_crypt_plugin.so: undefined symbol: mail_crypt_box_get_pvt_digests (this is usually intentional, so just ignore this message) 2025-04-04 08:32:34 Debug: Loading modules from directory: /usr/lib/dovecot/modules 2025-04-04 08:32:34 Debug: Module loaded: /usr/lib/dovecot/modules/lib10_quota_plugin.so 2025-04-04 08:32:34 Debug: Loading modules from directory: /usr/lib/dovecot/modules/doveadm 2025-04-04 08:32:34 Debug: Skipping module doveadm_acl_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_acl_plugin.so: undefined symbol: acl_user_module (this is usually intentional, so just ignore this message) 2025-04-04 08:32:34 Debug: Module loaded: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_quota_plugin.so 2025-04-04 08:32:34 Debug: Skipping module doveadm_fts_lucene_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_lucene_plugin.so: undefined symbol: lucene_index_iter_deinit (this is usually intentional, so just ignore this message) 2025-04-04 08:32:34 Debug: Skipping module doveadm_fts_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_plugin.so: undefined symbol: fts_user_get_language_list (this is usually intentional, so just ignore this message) 2025-04-04 08:32:34 Debug: Skipping module doveadm_mail_crypt_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/libdoveadm_mail_crypt_plugin.so: undefined symbol: mail_crypt_box_get_pvt_digests (this is usually intentional, so just ignore this message) 2025-04-04 08:32:34 Debug: auth-master: userdb list: Started listing users (user_mask=) 2025-04-04 08:32:34 Debug: auth-master: conn unix:/run/dovecot/auth-userdb: Connecting 2025-04-04 08:32:34 Debug: auth-master: conn unix:/run/dovecot/auth-userdb (pid=590,uid=0): Client connected (fd=9) 2025-04-04 08:32:34 Debug: auth-master: userdb list: Returned username: logwatch@example.com 2025-04-04 08:32:34 doveadm(logwatch@example.com): Debug: auth-master: passdb lookup(logwatch@example.com): Started passdb lookup 2025-04-04 08:32:34 doveadm(logwatch@example.com): Debug: auth-master: conn unix:/run/dovecot/auth-userdb: Connecting 2025-04-04 08:32:34 doveadm(logwatch@example.com): Debug: auth-master: conn unix:/run/dovecot/auth-userdb (pid=590,uid=0): Client connected (fd=11) 2025-04-04 08:32:34 doveadm(logwatch@example.com): Debug: auth-master: passdb lookup(logwatch@example.com): auth PASS input: user=logwatch@example.com 2025-04-04 08:32:34 doveadm(logwatch@example.com): Debug: auth-master: passdb lookup(logwatch@example.com): Finished passdb lookup (user=logwatch@example.com ) 2025-04-04 08:32:34 doveadm(logwatch@example.com)<311522><>: Debug: auth-master: userdb lookup(logwatch@example.com): Started userdb lookup 2025-04-04 08:32:34 doveadm(logwatch@example.com)<311522><>: Debug: auth-master: userdb lookup(logwatch@example.com): auth USER input: logwatch@example.com home=/var/vmail/example.com/logwatch mail=maildir:/var/vmail/example.com/logwatch/Maildir uid=5000 gid=5000 quota_rule=*:storage=0B sieve=/var/vmail/example.com/logwatch/.sieve 2025-04-04 08:32:34 doveadm(logwatch@example.com)<311522><>: Debug: auth-master: userdb lookup(logwatch@example.com): Finished userdb lookup (username=logwatch@example.com home=/var/vmail/example.com/logwatch mail=maildir:/var/vmail/example.com/logwatch/Maildir uid=5000 gid=5000 quota_rule=*:storage=0B sieve=/var/vmail/example.com/logwatch/.sieve) 2025-04-04 08:32:34 doveadm(logwatch@example.com)<311522><>: Debug: Added userdb setting: mail=maildir:/var/vmail/example.com/logwatch/Maildir 2025-04-04 08:32:34 doveadm(logwatch@example.com)<311522><>: Debug: Added userdb setting: plugin/quota_rule=*:storage=0B 2025-04-04 08:32:34 doveadm(logwatch@example.com)<311522><>: Debug: Added userdb setting: plugin/sieve=/var/vmail/example.com/logwatch/.sieve 2025-04-04 08:32:34 doveadm(logwatch@example.com): Error: remote(mx2.example.com): doveadm(108.224.189.229,logwatch@example.com): User doesn't exist 2025-04-04 08:32:34 doveadm(logwatch@example.com): Error: Unknown user in remote 2025-04-04 08:32:34 doveadm: Error: Failed to iterate through some users 2025-04-04 08:32:34 doveadm: Debug: auth-master: userdb list: Finished listing users 2025-04-04 08:32:34 doveadm: Debug: auth-master: conn unix:/run/dovecot/auth-userdb (pid=590,uid=0): Disconnected: Connection closed (fd=9) 2025-04-04 08:32:34 doveadm: Debug: auth-master: conn unix:/run/dovecot/auth-userdb (pid=590,uid=0): Disconnected: Connection closed (fd=11) Then If I run check status Code: PRD [root@mx1 ~]# doveadm replicator status Queued 'sync' requests 0 Queued 'high' requests 0 Queued 'low' requests 0 Queued 'failed' requests 0 Queued 'full resync' requests 0 Waiting 'failed' requests 1 Total number of known users 1
I could not enter the following in previous post, but here is the output of MX2 server using the same commands Code: PRD [root@mx2 ~]# doveadm -D sync -A -d Debug: Loading modules from directory: /usr/lib/dovecot/modules/doveadm Debug: Skipping module doveadm_acl_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_acl_plugin.so: undefined symbol: acl_user_module (this is usually intentional, so just ignore this message) Debug: Skipping module doveadm_quota_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_quota_plugin.so: undefined symbol: quota_user_module (this is usually intentional, so just ignore this message) Debug: Module loaded: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_sieve_plugin.so Debug: Skipping module doveadm_fts_lucene_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_lucene_plugin.so: undefined symbol: lucene_index_iter_deinit (this is usually intentional, so just ignore this message) Debug: Skipping module doveadm_fts_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_plugin.so: undefined symbol: fts_user_get_language_list (this is usually intentional, so just ignore this message) Debug: Skipping module doveadm_mail_crypt_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/libdoveadm_mail_crypt_plugin.so: undefined symbol: mail_crypt_box_get_pvt_digests (this is usually intentional, so just ignore this message) 2025-04-04 08:39:32 Debug: Loading modules from directory: /usr/lib/dovecot/modules 2025-04-04 08:39:32 Debug: Module loaded: /usr/lib/dovecot/modules/lib10_quota_plugin.so 2025-04-04 08:39:32 Debug: Loading modules from directory: /usr/lib/dovecot/modules/doveadm 2025-04-04 08:39:32 Debug: Skipping module doveadm_acl_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_acl_plugin.so: undefined symbol: acl_user_module (this is usually intentional, so just ignore this message) 2025-04-04 08:39:32 Debug: Module loaded: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_quota_plugin.so 2025-04-04 08:39:32 Debug: Skipping module doveadm_fts_lucene_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_lucene_plugin.so: undefined symbol: lucene_index_iter_deinit (this is usually intentional, so just ignore this message) 2025-04-04 08:39:32 Debug: Skipping module doveadm_fts_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_plugin.so: undefined symbol: fts_user_get_language_list (this is usually intentional, so just ignore this message) 2025-04-04 08:39:32 Debug: Skipping module doveadm_mail_crypt_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/libdoveadm_mail_crypt_plugin.so: undefined symbol: mail_crypt_box_get_pvt_digests (this is usually intentional, so just ignore this message) 2025-04-04 08:39:32 Debug: auth-master: userdb list: Started listing users (user_mask=) 2025-04-04 08:39:32 Debug: auth-master: conn unix:/run/dovecot/auth-userdb: Connecting 2025-04-04 08:39:32 Debug: auth-master: conn unix:/run/dovecot/auth-userdb (pid=589,uid=0): Client connected (fd=9) 2025-04-04 08:39:32 Debug: auth-master: userdb list: Returned username: sysadmins@example.com 2025-04-04 08:39:32 doveadm(sysadmins@example.com): Debug: auth-master: passdb lookup(sysadmins@example.com): Started passdb lookup 2025-04-04 08:39:32 doveadm(sysadmins@example.com): Debug: auth-master: conn unix:/run/dovecot/auth-userdb: Connecting 2025-04-04 08:39:32 doveadm(sysadmins@example.com): Debug: auth-master: conn unix:/run/dovecot/auth-userdb (pid=589,uid=0): Client connected (fd=11) 2025-04-04 08:39:32 doveadm(sysadmins@example.com): Debug: auth-master: passdb lookup(sysadmins@example.com): auth PASS input: user=sysadmins@example.com 2025-04-04 08:39:32 doveadm(sysadmins@example.com): Debug: auth-master: passdb lookup(sysadmins@example.com): Finished passdb lookup (user=sysadmins@example.com ) 2025-04-04 08:39:32 doveadm(sysadmins@example.com)<304949><>: Debug: auth-master: userdb lookup(sysadmins@example.com): Started userdb lookup 2025-04-04 08:39:32 doveadm(sysadmins@example.com)<304949><>: Debug: auth-master: userdb lookup(sysadmins@example.com): auth USER input: sysadmins@example.com home=/var/vmail/example.com/sysadmins mail=maildir:/var/vmail/example.com/sysadmins/Maildir uid=5000 gid=5000 quota_rule=*:storage=0B sieve=/var/vmail/example.com/sysadmins/.sieve 2025-04-04 08:39:32 doveadm(sysadmins@example.com)<304949><>: Debug: auth-master: userdb lookup(sysadmins@example.com): Finished userdb lookup (username=sysadmins@example.com home=/var/vmail/example.com/sysadmins mail=maildir:/var/vmail/example.com/sysadmins/Maildir uid=5000 gid=5000 quota_rule=*:storage=0B sieve=/var/vmail/example.com/sysadmins/.sieve) 2025-04-04 08:39:32 doveadm(sysadmins@example.com)<304949><>: Debug: Added userdb setting: mail=maildir:/var/vmail/example.com/sysadmins/Maildir 2025-04-04 08:39:32 doveadm(sysadmins@example.com)<304949><>: Debug: Added userdb setting: plugin/quota_rule=*:storage=0B 2025-04-04 08:39:32 doveadm(sysadmins@example.com)<304949><>: Debug: Added userdb setting: plugin/sieve=/var/vmail/example.com/sysadmins/.sieve 2025-04-04 08:39:33 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: Effective uid=5000, gid=5000, home=/var/vmail/example.com/sysadmins 2025-04-04 08:39:33 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: Quota root: name=user backend=dict args=:file:/var/vmail/example.com/sysadmins/.quotausage 2025-04-04 08:39:33 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: Quota rule: root=user mailbox=* bytes=0 messages=0 2025-04-04 08:39:33 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: Quota grace: root=user bytes=0 (10%) 2025-04-04 08:39:33 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: quota-dict: user=sysadmins@example.com, uri=file:/var/vmail/example.com/sysadmins/.quotausage, noenforcing=0 2025-04-04 08:39:33 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: dict(file): dict created (uri=file:/var/vmail/example.com/sysadmins/.quotausage, base_dir=/run/dovecot) 2025-04-04 08:39:33 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: Namespace inbox: type=private, prefix=, sep=., inbox=yes, hidden=no, list=yes, subscriptions=yes location=maildir:/var/vmail/example.com/sysadmins/Maildir 2025-04-04 08:39:33 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: maildir++: root=/var/vmail/example.com/sysadmins/Maildir, index=, indexpvt=, control=, inbox=/var/vmail/example.com/sysadmins/Maildir, alt= 2025-04-04 08:39:33 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: quota: quota_over_flag check: quota_over_script unset - skipping 2025-04-04 08:39:33 doveadm(sysadmins@example.com): Debug: brain M: Namespace has location maildir:/var/vmail/example.com/sysadmins/Maildir 2025-04-04 08:39:33 doveadm(sysadmins@example.com): Debug: Mailbox INBOX: Mailbox opened 2025-04-04 08:39:33 doveadm(sysadmins@example.com): Debug: dict(file): Waiting for dict to finish pending operations 2025-04-04 08:39:33 doveadm(sysadmins@example.com): Debug: Namespace : Using permissions from /var/vmail/example.com/sysadmins/Maildir: mode=0700 gid=default 2025-04-04 08:39:33 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: brain M: Local mailbox tree: Sent guid=d72f4a0e25d0ee6720530000a31e478d uid_validity=1743704101 uid_next=1 subs=yes last_change=0 last_subs=0 2025-04-04 08:39:33 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: brain M: Local mailbox tree: Trash guid=d82f4a0e25d0ee6720530000a31e478d uid_validity=1743704102 uid_next=1 subs=yes last_change=0 last_subs=0 2025-04-04 08:39:33 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: brain M: Local mailbox tree: Junk guid=d92f4a0e25d0ee6720530000a31e478d uid_validity=1743688803 uid_next=1 subs=yes last_change=0 last_subs=0 2025-04-04 08:39:33 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: brain M: Local mailbox tree: Drafts guid=da2f4a0e25d0ee6720530000a31e478d uid_validity=1743704104 uid_next=1 subs=yes last_change=0 last_subs=0 2025-04-04 08:39:33 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: brain M: Local mailbox tree: INBOX guid=db2f4a0e25d0ee6720530000a31e478d uid_validity=1743704105 uid_next=1 subs=no last_change=0 last_subs=0 2025-04-04 08:39:33 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: brain M: Remote mailbox tree: Sent guid=a9b611216194ee67db1a00003c73e406 uid_validity=1743704101 uid_next=1 subs=yes last_change=0 last_subs=0 2025-04-04 08:39:33 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: brain M: Remote mailbox tree: Trash guid=aab611216194ee67db1a00003c73e406 uid_validity=1743704102 uid_next=1 subs=yes last_change=0 last_subs=0 2025-04-04 08:39:33 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: brain M: Remote mailbox tree: Junk guid=abb611216194ee67db1a00003c73e406 uid_validity=1743688803 uid_next=1 subs=yes last_change=0 last_subs=0 2025-04-04 08:39:33 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: brain M: Remote mailbox tree: Drafts guid=acb611216194ee67db1a00003c73e406 uid_validity=1743704104 uid_next=1 subs=yes last_change=0 last_subs=0 2025-04-04 08:39:33 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: brain M: Remote mailbox tree: INBOX guid=adb611216194ee67db1a00003c73e406 uid_validity=1743704105 uid_next=1 subs=no last_change=0 last_subs=0 2025-04-04 08:39:33 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: brain M: Mailbox Drafts: local=da2f4a0e25d0ee6720530000a31e478d/0/1, remote=acb611216194ee67db1a00003c73e406/0/1: GUIDs conflict - will be merged later 2025-04-04 08:39:33 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: brain M: Mailbox INBOX: local=db2f4a0e25d0ee6720530000a31e478d/0/1, remote=adb611216194ee67db1a00003c73e406/0/1: GUIDs conflict - will be merged later 2025-04-04 08:39:33 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: brain M: Mailbox Junk: local=d92f4a0e25d0ee6720530000a31e478d/0/1, remote=abb611216194ee67db1a00003c73e406/0/1: GUIDs conflict - will be merged later 2025-04-04 08:39:33 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: brain M: Mailbox Sent: local=d72f4a0e25d0ee6720530000a31e478d/0/1, remote=a9b611216194ee67db1a00003c73e406/0/1: GUIDs conflict - will be merged later 2025-04-04 08:39:33 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: brain M: Mailbox Trash: local=d82f4a0e25d0ee6720530000a31e478d/0/1, remote=aab611216194ee67db1a00003c73e406/0/1: GUIDs conflict - will be merged later 2025-04-04 08:39:33 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: Mailbox Drafts: Mailbox opened 2025-04-04 08:39:33 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: dict(file): Waiting for dict to finish pending operations 2025-04-04 08:39:33 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: Mailbox Drafts: Mailbox opened 2025-04-04 08:39:33 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: dict(file): Waiting for dict to finish pending operations 2025-04-04 08:39:33 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: Mailbox INBOX: Mailbox opened 2025-04-04 08:39:34 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: dict(file): Waiting for dict to finish pending operations 2025-04-04 08:39:34 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: Mailbox INBOX: Mailbox opened 2025-04-04 08:39:34 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: dict(file): Waiting for dict to finish pending operations 2025-04-04 08:39:34 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: Mailbox Junk: Mailbox opened 2025-04-04 08:39:35 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: dict(file): Waiting for dict to finish pending operations 2025-04-04 08:39:35 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: Mailbox Junk: Mailbox opened 2025-04-04 08:39:35 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: dict(file): Waiting for dict to finish pending operations 2025-04-04 08:39:35 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: Mailbox Sent: Mailbox opened 2025-04-04 08:39:35 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: dict(file): Waiting for dict to finish pending operations 2025-04-04 08:39:35 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: Mailbox Sent: Mailbox opened 2025-04-04 08:39:35 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: dict(file): Waiting for dict to finish pending operations 2025-04-04 08:39:35 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: Mailbox Trash: Mailbox opened 2025-04-04 08:39:36 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: dict(file): Waiting for dict to finish pending operations 2025-04-04 08:39:36 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: Mailbox Trash: Mailbox opened 2025-04-04 08:39:36 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: dict(file): Waiting for dict to finish pending operations 2025-04-04 08:39:36 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: Mailbox Drafts: Mailbox opened 2025-04-04 08:39:36 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: brain M: Change during sync: Remote lost mailbox GUID acb611216194ee67db1a00003c73e406 (maybe it was just deleted?) 2025-04-04 08:39:36 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: dict(file): Waiting for dict to finish pending operations 2025-04-04 08:39:36 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: Mailbox INBOX: Mailbox opened 2025-04-04 08:39:36 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: brain M: Change during sync: Remote lost mailbox GUID adb611216194ee67db1a00003c73e406 (maybe it was just deleted?) 2025-04-04 08:39:36 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: dict(file): Waiting for dict to finish pending operations 2025-04-04 08:39:36 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: Mailbox Junk: Mailbox opened 2025-04-04 08:39:36 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: brain M: Change during sync: Remote lost mailbox GUID abb611216194ee67db1a00003c73e406 (maybe it was just deleted?) 2025-04-04 08:39:36 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: dict(file): Waiting for dict to finish pending operations 2025-04-04 08:39:36 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: Mailbox Sent: Mailbox opened 2025-04-04 08:39:36 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: brain M: Change during sync: Remote lost mailbox GUID a9b611216194ee67db1a00003c73e406 (maybe it was just deleted?) 2025-04-04 08:39:36 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: dict(file): Waiting for dict to finish pending operations 2025-04-04 08:39:36 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: Mailbox Trash: Mailbox opened 2025-04-04 08:39:36 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: brain M: Change during sync: Remote lost mailbox GUID aab611216194ee67db1a00003c73e406 (maybe it was just deleted?) 2025-04-04 08:39:36 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: dict(file): Waiting for dict to finish pending operations 2025-04-04 08:39:36 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Warning: Mailbox changes caused a desync. You may want to run dsync again: Remote lost mailbox GUID acb611216194ee67db1a00003c73e406 (maybe it was just deleted?) 2025-04-04 08:39:36 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: User session is finished 2025-04-04 08:39:36 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: dict(file): Waiting for dict to finish pending operations 2025-04-04 08:39:36 doveadm(sysadmins@example.com)<304949><TZ7dOgTT72c1pwQAox5HjQ>: Debug: dict(file): dict destroyed 2025-04-04 08:39:36 doveadm(304949): Debug: auth-master: userdb list: Finished listing users 2025-04-04 08:39:36 doveadm(304949): Debug: auth-master: conn unix:/run/dovecot/auth-userdb (pid=589,uid=0): Disconnected: Connection closed (fd=9) 2025-04-04 08:39:36 doveadm: Debug: auth-master: conn unix:/run/dovecot/auth-userdb (pid=589,uid=0): Disconnected: Connection closed (fd=11) Checking replication status Code: PRD [root@mx2 ~]# doveadm replicator status Queued 'sync' requests 0 Queued 'high' requests 0 Queued 'low' requests 0 Queued 'failed' requests 0 Queued 'full resync' requests 0 Waiting 'failed' requests 1 Total number of known users 1
Please note: Only MX2 has authenticated to MX1 MySQL using the following MySQL commands Do I need to create the same thing on MX2 as well? but I am not sure how to do this, should I install mariadb server on MX2 first before running the script, hence this way both servers are masters? Code: CREATE USER 'root'@'mx2.exmaple' IDENTIFIED BY 'MX1_MySQL_PASSWORD'; GRANT ALL PRIVILEGES ON * . * TO 'root'@'mx2.exmaple' IDENTIFIED BY 'MX1_MySQL_PASSWORD' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; CREATE USER 'root'@'192.168.10.200' IDENTIFIED BY 'MX1_MySQL_PASSWORD'; GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.10.200' IDENTIFIED BY 'MX1_MySQL_PASSWORD' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; EXIT;
ok, now this is confusing.. you say you installed ispconfig on mx2... if so, it should already have mariadb installed and configured. i'm not sure why you've created mysql root users for mx2 on mx1... both mx1 and mx2 root mysql users should be logging in to the master ispconfig mariadb instance, not each others
I am sorry @nhybgtvfr for confusing, at the moment I can't install 3 servers, so I have to go with 2 servers route; I have only 2 servers right now MX1 and MX2. I am trying to see if I can run 2 ISPConfig servers that is MX1 and MX2 and both of them are masters without using a 3rd server such as Panel to be between the 2 mail server?
@nhybgtvfr I realized so fast that my setup of 2 servers won't work, I moved to 3 servers setup and everything is working, expect that i have some mail replication issues between MX1 and MX2; I did the mirror tho from ispconfig web as well; Credentials wise that is DB replication, all working good among the 2 MX servers, whether for IMAP or SMTP authentications; if you can help me with why dovecot replication why is failing, that would be highly appreciated, thank you! Code: PRD [root@mx1 ~]# doveadm replicator status '*' username priority fast sync full sync success sync failed logwatch@example.com none 00:01:23 01:33:58 - y user1@example.com none 00:02:48 01:32:58 - y user2@example.com none 00:04:19 01:32:58 - y user3@example.com none 00:04:19 01:33:58 - y
i can't help with that.. i've never actually tried any dovecot replication myself. as long as you followed the instructions in the guide Till linked to in post #4 then it should work.
You should check what is wrong with your replication setup. If all users fail, that most likely means that your configuration is wrong. Check the Dovecot journal and see if you can find any replication related logs with "journalctl -u dovecot". Make sure that the replication configuration is correct on both servers.