Большая просьба помочь!
настроены два сервера, абсолютно одинаковых как в плане ОС, так и софта.
основная проблема - dovecot
настроен dovecot с авторизацией по домену + репликация изменений на сервер2.Проблема: происходит дублирование писем в случае если в почтовом клиенте настроен фильтр перемещающий письмо в другую папку.
как это выглядит глядя в два почтовых клиента на разных серверах подключенных к одной учетке:
письмо приходит на server1.Inbox -> реплицируется на server2.Inbox -> почтовый клиент2 перемещает письмо в другую_папку -> изменения реплицируются на server1.другая_папка -> реплицируется на server2.другая_папка -> удаляется из server2.Inbox.Итого получается что письмо дваджы оказывается в другая_папка на обоих серверах.
прилагаю конфиг:
разница в конфигах на двух серверах только в строке "mail_replica = tcp:192.168.3.14:4092".
# doveconf -n
# 2.2.7: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.32-431.el6.x86_64 x86_64 CentOS release 6.5 (Final)
auth_mechanisms = plain login
auth_use_winbind = yes
base_dir = /var/run/dovecot/
disable_plaintext_auth = no
doveadm_password = password
dsync_remote_cmd = doveadm dsync-server -u%u
hostname = server1.domain.local
listen = *
mail_access_groups = vmail
mail_gid = 5000
mail_location = mdbox:~/:LAYOUT=fs
mail_plugins = " quota acl notify replication"
mail_privileged_group = vmail
mail_uid = 5000
mbox_write_locks = fcntl
namespace {
hidden = no
list = children
location = mdbox:~/:INDEX=%h/shared/%%u
prefix = shared/%%u/
separator = /
subscriptions = no
type = shared
}
namespace inbox {
inbox = yes
location =
mailbox Drafts {
auto = no
special_use = \Drafts
}
mailbox Junk {
auto = create
special_use = \Junk
}
mailbox Sent {
auto = subscribe
special_use = \Sent
}
mailbox "Sent Messages" {
auto = no
special_use = \Sent
}
mailbox Trash {
auto = subscribe
special_use = \Trash
}
prefix =
}
passdb {
args = dovecot
driver = pam
}
passdb {
args = /etc/dovecot/dovecot-ldap.conf.ext
driver = ldap
}
plugin {
acl = vfile:/etc/dovecot/acls
acl_shared_dict = file:/home/vmail/shared-mailboxes.db
mail_replica = tcp:192.168.3.14:4092
quota = dirsize:User quota
quota_rule = *:storage=1G
quota_rule2 = Trash:storage=+10%%
quota_rule3 = Sent:storage=+20%%
quota_warning = storage=95%% quota-warning 95 %u
quota_warning2 = storage=80%% quota-warning 80 %u
replication_full_sync_interval = 1 hours
}
service aggregator {
fifo_listener replication-notify-fifo {
user = vmail
}
process_limit = 100
process_min_avail = 3
unix_listener replication-notify {
user = vmail
}
}
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0666
}
unix_listener auth-userdb {
mode = 0666
user = vmail
}
}
service config {
unix_listener config {
mode = 0600
user = vmail
}
}
service doveadm {
inet_listener {
port = 4092
}
process_limit = 100
process_min_avail = 3
}
service quota-warning {
executable = script /usr/local/bin/quota-warning.sh
unix_listener quota-warning {
user = vmail
}
user = dovecot
}
service replicator {
process_limit = 100
process_min_avail = 1
unix_listener replicator-doveadm {
group = vmail
mode = 0660
}
}
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem
userdb {
args = /etc/dovecot/dovecot-ldap.conf.ext
driver = ldap
}
userdb {
args = uid=5000 gid=5000
driver = static
}
valid_chroot_dirs = /home/vmail/
protocol imap {
mail_plugins = " quota acl notify replication imap_quota imap_acl"
}
> Большая просьба помочь!man doveadm-deduplicate
>> Большая просьба помочь!
> man doveadm-deduplicateСпасибо, уже что-то.
Автоматизировать это можно? или в принципе избавиться от дублирования?
если можно с примерами
> Автоматизировать это можно?Конечно. Ставить в крон раз в час дедупликацию.
> или в принципе избавиться от дублирования?
Можно ключиками заставить dsync реплицировать только в одну сторону. Но тогда будет рассинхрон между мастером и слейвом. Т.е. на слейве перетащили, а на мастере файл так и будет оставаться неперетащеным.
По хорошему, когеренцию копий лучше делать на уровне имап-протокола, чтобы команды move и delete передавались синхронно с мастера на слейв и обратно. Но такого в довекоте пока нет. Надо реквест написать.