URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 95287
[ Назад ]

Исходное сообщение
"Дублируются входящие письма (dovecot)"

Отправлено openmsk , 16-Дек-13 11:48 
Большая просьба помочь!
настроены два сервера, абсолютно одинаковых как в плане ОС, так и софта.
основная проблема - 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"
}


Содержание

Сообщения в этом обсуждении
"Дублируются входящие письма (dovecot)"
Отправлено DeadLoco , 17-Дек-13 08:18 
> Большая просьба помочь!

man doveadm-deduplicate


"Дублируются входящие письма (dovecot)"
Отправлено openmsk , 17-Дек-13 10:23 
>> Большая просьба помочь!
> man doveadm-deduplicate

Спасибо, уже что-то.
Автоматизировать это можно? или в принципе избавиться от дублирования?
если можно с примерами


"Дублируются входящие письма (dovecot)"
Отправлено DeadLoco , 17-Дек-13 13:08 
> Автоматизировать это можно?

Конечно. Ставить в крон раз в час дедупликацию.

> или в принципе избавиться от дублирования?

Можно ключиками заставить dsync реплицировать только в одну сторону. Но тогда будет рассинхрон между мастером и слейвом. Т.е. на слейве перетащили, а на мастере файл так и будет оставаться неперетащеным.

По хорошему, когеренцию копий лучше делать на уровне имап-протокола, чтобы команды move и delete передавались синхронно с мастера на слейв и обратно. Но такого в довекоте пока нет. Надо реквест написать.