Инструменты пользователя

Инструменты сайта


how-to:zimbra

Zimbra

Команды запускаются от пользователя zimbra, например (перезагрузка MTA):

sudo su -l zimbra -c "zmmtactl reload"

или (при этом способе переменные пользователя работают, команды из /opt/zimbra/bin/ запускаются без указания пути)

sudo su - zimbra
zmmtactl reload

статус служб zimbra:

sudo su -l zimbra -c "zmcontrol status"

zmprov

https://wiki.zimbra.com/wiki/Zmprov

Утилита для работы с LDAP Zimbra

Admin Account

Создать учетную запись:

sudo su -l zimbra -c "zmprov ca testadmin@domain.com test123 zimbraIsAdminAccount TRUE"

Повысить права до админа:

sudo su -l zimbra -c "zmprov ma futur-admin@domain.com zimbraIsAdminAccount TRUE"

Изменить пароль:

sudo su -l zimbra -c "zmprov sp testadmin@domain.com NEW_PASSWORD"

https://wiki.zimbra.com/wiki/How_To_Create_an_Admin_Account

Переиндексация ящиков

Переиндексировать ящик admin@domain.com:

sudo su - zimbra -c "zmprov rim admin@domain.com start"

Посмотреть статус переиндексации ящика admin@domain.com:

sudo su - zimbra -c "zmprov rim admin@domain.com status"

Запустить переиндексацию каждого ящика в домене domain.com:

for i in `sudo su - zimbra -c "zmprov -l gaa domain.com"`; do sudo su - zimbra -c "echo Start $i: && zmprov rim $i start"; done

https://wiki.zimbra.com/wiki/Glenno-Notes

zmlocalconfig

https://wiki.zimbra.com/wiki/CLI_zmlocalconfig_(Local_Configuration)

Утилита для работы с конфигурацией сервера Zimbra.

Конфигурируются:

  • /opt/zimbra/conf/localconfig.xml

MySql Password

Посмотреть текущие учетные данные Mysql:

su zimbra -c "/opt/zimbra/bin/zmlocalconfig -s | grep mysql | grep password"

https://wiki.zimbra.com/wiki/MySql_Password

DKIM

Добавление DKIM данных для домена

su -l zimbra -c "/opt/zimbra/libexec/zmdkimkeyutil -a -d example.com"

Из вывода берем TXT запись для добавляения в DNS

DKIM Data added to LDAP for domain example.com with selector 58B7D326-523B-11E4-9AA8-7DBC76E3D896
Public signature to enter into DNS:
58B7D326-523B-11E4-9AA8-7DBC76E3D896._domainkey	IN	TXT	( "v=DKIM1; k=rsa; "
	  "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDa2RW/2sINyRxYhouxkcBSF75LXyEZRAJD5MdMsIH/0AQwmFPfnv8gcdX8vYRA/6i0p9yFDvbjsH7z68IlLyDpHepuIvLtmnnUaAxLx2w2QI3M2M+MCqXlCiKpuOWMCNazohOCiId8Q6qautu/C+0AdsXFmi/aerRJLsMrs25eBwIDAQAB" )  ; ----- DKIM key 58B7D326-523B-11E4-9AA8-7DBC76E3D896 for example.com

Проверка сохраненных DKIM данных для домена

sudo su -l zimbra -c "/opt/zimbra/libexec/zmdkimkeyutil -q -d example.com"

Для проверки, что служба работает.
Должна быть строчка в /opt/zimbra/common/conf/master.cf.in

[%%zimbraLocalBindAddress%%]:10030 inet n - n - - smtpd
...
-o smtpd_milters=inet:127.0.0.1:8465
...

Для проверки DNS записи:

dig -t txt 58B7D326-523B-11E4-9AA8-7DBC76E3D896._domainkey.example.com ns.example.com | grep DKIM

Проверяем, что открытый ключ соответствует закрытому:

sudo /opt/zimbra/common/sbin/opendkim-testkey -d example.com -s 58B7D326-523B-11E4-9AA8-7DBC76E3D896 -x /opt/zimbra/conf/opendkim.conf

Удаление DKIM данных для домена

su -l zimbra -c "/opt/zimbra/libexec/zmdkimkeyutil -r -d example.com"

Блокировка входящей почты

Блокируем всю входящую почту на noreply@domain.com

Создаем /opt/zimbra/conf/protected_recipients:

/^noreply\@domain\.ru$/ REJECT

В /opt/zimbra/conf/zmconfigd/smtpd_recipient_restrictions.cf добавляем в начало:

check_recipient_access regexp:/opt/zimbra/conf/protected_recipients

Перегружаем MTA:

sudo su - zimbra -c "zmmtactl restart"

Ограничение исходящей почты по доменам

Разрешаем отправку почты с доверенных сетей

Проверяем текущий список сетей:

sudo su -l zimbra -c  "zmprov gs zimbra.domain.ru zimbraMtaMyNetworks"

Изменить список:

sudo su -l zimbra -c  "zmprov ms zimbra.domain.ru zimbraMtaMyNetworks '127.0.0.0/8 192.168.9.10/32 192.168.10.160/32 192.168.10.113/32'"

https://wiki.zimbra.com/wiki/ZimbraMtaMyNetworks

DoSFilter

Управление механизмом DosFilter https://wiki.zimbra.com/wiki/DoSFilter

Параметры блокировки:

ПараметрЗначение по умолчаниюОписание
zimbraInvalidLoginFilterDelayInMinBetwnReqBeforeReinstating15Длительность блокировки IP в минутах
zimbraInvalidLoginFilterMaxFailedLogin10Количество ошибочных входов перед блокировкой IP
zimbraInvalidLoginFilterReinstateIpTaskIntervalInMin5Интервал в минутах для подсчёта ошибочных входов

Проверяем текущие значения

Проверяем текущие значения

sudo su -l zimbra -c "zmprov gcf zimbraInvalidLoginFilterDelayInMinBetwnReqBeforeReinstating"
sudo su -l zimbra -c "zmprov gcf zimbraInvalidLoginFilterMaxFailedLogin"
sudo su -l zimbra -c "zmprov gcf zimbraInvalidLoginFilterReinstateIpTaskIntervalInMin"

Пример

Пример

Меняем длительность блокировки на 25 мин и количество ошибочных входов до 5:

sudo su -l zimbra -c "zmprov mcf zimbraInvalidLoginFilterDelayInMinBetwnReqBeforeReinstating 25"
sudo su -l zimbra -c "zmprov mcf zimbraInvalidLoginFilterMaxFailedLogin 5"
sudo su -l zimbra -c "zmmailboxdctl restart"


Белый список IP адресов

Посмотреть текущий список:

sudo su -l zimbra -c "zmprov gcf zimbraHttpThrottleSafeIPs"

Создать список IP адресов:

sudo su -l zimbra -c "zmprov mcf zimbraHttpThrottleSafeIPs 10.0.0.0/16 zimbraHttpThrottleSafeIPs 10.1.0.0/16"

Добавить IP в существующий список:

sudo su -l zimbra -c "zmprov mcf +zimbraHttpThrottleSafeIPs 192.168.10.250/32"

Graylisting / cbpolicyd

http://itzx.ru/zimbra/install-policyd-with-webui - Установка плагина Policyd с web-интерфейсом в Zimbra
http://itzx.ru/zimbra/howto-greylisting-in-policyd-with-webui - Настройка серых списков (Greylisting) в Zimbra при помощи Policyd
https://wiki.zimbra.com/wiki/How-to_for_cbpolicyd

Чёрные и белые списки

Добавляем domain.com в чёрный список. В файле /opt/zimbra/conf/amavisd.conf.in после

{ # a hash-type lookup table (associative array)

вписываем в конце блока «# soft-blacklisting (positive score)»:

'domain.com' => -10.0,

и перегружаем amavis:

sudo su -l zimbra -c "zmamavisdctl stop && zmamavisdctl start"

http://hidx.wordpress.com/2010/05/14/чёрные-и-белые-списки-в-zimbra/

Антивирус

Разрешаем зашифрованные архивы во вложениях

В панели администрирования: Настройка → Глобальные настройки → AS/AV → Настройки антивируса - снимаем галочку с «Блокировать зашифрованные архивы»

или на сервере в /opt/zimbra/conf/clamd.conf.in меняем строчку:

%%uncomment VAR:zimbraVirusBlockEncryptedArchive%%ArchiveBlockEncrypted yes

на:

%%comment VAR:zimbraVirusBlockEncryptedArchive%%ArchiveBlockEncrypted yes

Резервное копирование

Для копирования писем на определенный ящик, создаём /opt/zimbra/postfix/conf/bcc_maps:

/^(?!all\@|admin\@|noreply\@|root\@).*domain.(ru|com)$/	backup@domain.ru

В файле /opt/zimbra/conf/zmconfigd.cf ищем первую строчку (должна быть в конце секции SECTION mta DEPENDS amavis):

	RESTART mta

и перед этой строкой вставляем строки:

	POSTCONF recipient_bcc_maps pcre:/opt/zimbra/postfix/conf/bcc_maps
	POSTCONF sender_bcc_maps pcre:/opt/zimbra/postfix/conf/bcc_maps

и перегружаем MTA:

sudo su -l zimbra -c "zmmtactl restart"

Для проверки, в конце файла /opt/zimbra/postfix/conf/main.cf будут строки:

sender_bcc_maps = pcre:/opt/zimbra/postfix/conf/bcc_maps
recipient_bcc_maps = pcre:/opt/zimbra/postfix/conf/bcc_maps

Настройка уведомлений мониторинга диска

Для изменений значений команду zmlocalconfig добавляем опцию -e.

Текущий лимит для уведомлений Warning и Critical (по умолчанию 85% и 90%):

sudo su -l zimbra -c "zmlocalconfig zmdisklog_warn_threshold"
sudo su -l zimbra -c "zmlocalconfig zmdisklog_critical_threshold"

От кого отправляется уведомление, поле From:

sudo su -l zimbra -c "zmlocalconfig smtp_source"

Кому отправляется, поле To:

sudo su -l zimbra -c "zmlocalconfig smtp_destination"

Интервал уведомлений (по умолчанию 600 секунд):

sudo su -l zimbra -c "zmlocalconfig zmstat_disk_interval"

Пример для изменения настроек лимита и интервала:

sudo su -l zimbra -c "zmlocalconfig -e zmdisklog_warn_threshold=90"
sudo su -l zimbra -c "zmlocalconfig -e zmdisklog_critical_threshold=98"
sudo su -l zimbra -c "zmlocalconfig -e zmstat_disk_interval=3600"

после изменения настроек перегружаем MTA:

sudo su -l zimbra -c "zmmtactl restart"

https://wiki.zimbra.com/wiki/Setting_Thresholds_for_Disk_Monitoring

Уведомления о входящей почте

Добавляем конфигурацию в rsyslog /etc/rsyslog.d/61-zimbra_jabber.conf:

$template zimbra,"%msg%"
:syslogtag,contains,"amavis" ^/zimbra/tools/sendxmpp.pl;zimbra:

Добавляем в /etc/sudoers:

syslog ALL=NOPASSWD: /opt/zimbra/bin/zmmailbox, /opt/zimbra/common/sbin/postcat

Добавляем скрипт по отправке /zimbra/tools/sendxmpp.pl должны быть установлены perl модули объявленные в скрипте.

sendxmpp.pl

sendxmpp.pl

#!/usr/bin/perl -w
 
use strict;
use utf8;
use Net::XMPP;
#use Encode qw(decode encode);
 
my %resend = (
    'spiski@domain.ru' => ['user1@domain.com','user2@domain.com','user3@domain.com'],
    'regdms@domain.ru' => ['user4@domain.com'],
);
 
my ($from,$to_src)=("","");
 
my $con=new Net::XMPP::Client();
$con->Connect(hostname=>"j.domain.com",tls=>0);
$con->AuthIQAuth(username=>"noreply",
		password=>"yjehtgkb",
		resource=>"Zimbra");
my $msg=new Net::XMPP::Message();
 
 
my $syslog = shift(@ARGV);
unless ($syslog){exit 0}
 
 
#Если письмо доставленно и это не локальная доставка (для исключения дублирования с локальных адресов)
if ($syslog =~ m/Passed CLEAN/ & $syslog !~ m/127\.0\.0\.1/) {
    #Проверяем подстановку email адресов
    my %GENERIC=();
    open FILE, '/zimbra/zimbra/common/conf/generic';
    while (defined (my $file_line = <FILE>)) {
        if ($file_line !~ /^\#|^$/) {
            $file_line =~ s/\/|\^|\$//g;
            my @file_line = split('[\s\t]+',$file_line);
            push(@{$GENERIC{$file_line[1]}},$file_line[0]);
        }
    }
    close FILE;
 
    #Парсим сообщение
    ($from, $to_src) = split (/->/,$syslog);
     $from=~s/.*<(.*\@.*)>.?/$1/;
#     if ( length($from) < 5){exit 0;}    #Если email меньше 5 символов, то выходим
     $to_src=~s/.?<(.*)>,.*Message-ID.*/$1/;
     my $queued=$syslog;
     my $subject="";
     #Получаем тему письма пока оно в очереди
     #$queued =~ s/.*queued_as:\s+(\S+),.*/$1/;
     #$subject=`sudo /opt/zimbra/common/sbin/postcat -q $queued | grep -i '^Subject:' | sed -r 's/^Subject:\\s+//i'`;
     #$subject=decode("MIME-Q", $subject);
     my @to = split (/>,</,$to_src);
     foreach my $to(@to) {
	#Получаем тему письма во входящих
	unless ($subject) {
	    $subject=`sudo /opt/zimbra/bin/zmmailbox -z -m $to s -l 1 -t message 'From: $from' | grep -P '^1\.' | sed -r 's/^[^mess]+mess\\s+//' | sed -r 's/.{20}\\s+//' | sed -r 's/\\s+.{14}\$//'`;
	    chomp $subject;
	    utf8::decode($subject);
	}
        #Заменяем получателей из %GENERIC
        #Если email учавствует в подстановке (опасайтесь зацикливания)
        if ($GENERIC{$to}) {
            push(@to,@{$GENERIC{$to}});
        }
        #Заменяем получателей из %resend
        elsif ($resend{$to}){
            push(@to,@{$resend{$to}});
        }
        elsif (($to =~/(^(?!admin\@|all\@|spam.\S+.*\@|virus-quarantine.\S+\@|ham.\S+\@))/)&($to =~/(domain.ru|domain.com)$/)) {   #Исключаем отправку
            $to=~s/ru$/loc/;
            $to=~s/domain.com$/j.domain.com/;
            #Формируем тело сообщения
            my $body;
            if ($from !~ m/\@/) {
                $from = "" ;
            }
	    $body = "Вам пришло письмо!";
	    if ($from) { $body .= " От: $from" }
	    if ($subject) { $body .= " Тема: $subject." }
	    $body .= " Проверить: http://zimbra.domain.com/zimbra/#1";
            #Отправляем сообщение
            $msg->SetMessage(to=>$to,
                            type=>"chat",
                             body=>$body);
            $con->Send($msg);
#            system "echo `date '+%F %T'` \"   \" \"$from - $to : $subject   $syslog\">> /tmp/sendxmpp.log";
        }
     }
}
$con->Disconnect();


Проблемы

Исправление прав доступа

Команда для исправления прав в расширенном режиме (исправляет все файлы):

sudo /opt/zimbra/libexec/zmfixperms -extended

https://wiki.zimbra.com/wiki/Fix_the_Zimbra_Collaboration_Permissions

Ошибка сети

У пользователей при авторизации появляется сообщение «ошибка сети».

В /opt/zimbra/log/mailbox.log регистрируется: «Access to IP XXXXXX suspended, for repeated failed login.»
При этом блокируется IP адрес пользователя.

Для снятия блокировки необходимо подождать 15 мин (по умолчанию) или выполнить:

sudo su -l zimbra -c "zmmailboxdctl restart"

Управление механизмом DosFilter

postqueue: fatal: Connect to the Postfix showq service: Permission denied

В /opt/zimbra/log/mailbox.log регистрируется: «postqueue: fatal: Connect to the Postfix showq service: Permission denied»

Исправление:

sudo adduser zimbra postdrop
sudo su -l zimbra -c "zmcontrol restart"

http://forums.zimbra.org/viewtopic.php?f=13&t=59951&start=10&sid=76fcf22b39d7fe02d68c079d45906467

Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE zimbra_home}/ at /opt/zimbra/libexec/zmupgrade.pm line 1518, <DATA> line 755.

Ошибки при обновлении (8.7.x,…):

Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE zimbra_home}/ at /opt/zimbra/libexec/zmupgrade.pm line 1518, <DATA> line 755.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE zimbra_home}/ at /opt/zimbra/libexec/zmupgrade.pm line 1561, <DATA> line 755.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE zimbra_home}/ at /opt/zimbra/libexec/zmupgrade.pm line 1690, <DATA> line 755.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE zimbra_home}/ at /opt/zimbra/libexec/zmupgrade.pm line 1731, <DATA> line 755.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE zimbra_home}/ at /opt/zimbra/libexec/zmupgrade.pm line 1740, <DATA> line 755.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE zimbra_home}/ at /opt/zimbra/libexec/zmupgrade.pm line 1749, <DATA> line 755.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE zimbra_home}/ at /opt/zimbra/libexec/zmupgrade.pm line 1758, <DATA> line 755.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE zimbra_home}/ at /opt/zimbra/libexec/zmupgrade.pm line 1767, <DATA> line 755.

Для решения пред запуском обновления (./install.sh) в файле ./util/utilfunc.sh вставляем строчку в функцию «restoreExistingConfig» после 'echo «done»':

sed '/zimbra_home.*;$/s/\${zimbra_home}/\$\\{zimbra_home\\}/g' -i /opt/zimbra/libexec/zmupgrade.pm

должно получиться:

    echo "done"
    sed '/zimbra_home.*;$/s/\${zimbra_home}/\$\\{zimbra_home\\}/g' -i /opt/zimbra/libexec/zmupgrade.pm
  fi

https://bugzilla.zimbra.com/show_bug.cgi?id=107058

Backup / Restore

Если zimbra восстанавливается на новый сервер, установить можно с ключем ./install.sh -s без конфигурирования.

Порядок горячего резервного копирования:

  1. Письма rsync
  2. Конфигурация
  3. LDAP
  4. MySQL
  5. Письма rsync

Порядок восстановления:

  1. Установка zimbra (если новый сервер)
  2. Конфигурация
  3. LDAP
  4. MySQL
  5. Письма

Конфигурация

Бэкап:

tar czf /tmp/zimbraconf.tgz /opt/zimbra/conf/ca /opt/zimbra/conf/nginx/includes /opt/zimbra/conf/nginx/resolvers.conf \
 /opt/zimbra/conf/sa /opt/zimbra/conf/localconfig.xml /opt/zimbra/conf/my.cnf /opt/zimbra/conf/*.crt /opt/zimbra/conf/*.key \
 /opt/zimbra/conf/dhparam.pem /opt/zimbra/mailboxd/etc/keystore

Восстановление:

sudo tar xzf /tmp/zimbraconf.tgz -C /

LDAP

Бэкап:

sudo su -l zimbra -c "/opt/zimbra/libexec/zmslapcat /tmp"
sudo su -l zimbra -c "/opt/zimbra/libexec/zmslapcat -c /tmp"

Восстановление:

sudo su -l zimbra -c "ldap stop"
sudo mv /opt/zimbra/data/ldap/mdb /opt/zimbra/data/ldap/mdb.bak
sudo su -l zimbra -c "mkdir -p /opt/zimbra/data/ldap/mdb/db"
sudo mv /opt/zimbra/data/ldap/config /opt/zimbra/data/ldap/config.bak
sudo su -l zimbra -c "mkdir /opt/zimbra/data/ldap/config"
sudo su -l zimbra -c "/opt/zimbra/libexec/zmslapadd -c /tmp/ldap-config.bak"
sudo su -l zimbra -c "/opt/zimbra/libexec/zmslapadd /tmp/ldap.bak"

https://wiki.zimbra.com/wiki/LDAP_data_import_export

MySQL

Если не используются бинарные логи:

Бэкап:

sudo /opt/zimbra/common/bin/mysqldump --user=root --password=`sudo /opt/zimbra/bin/zmlocalconfig -s | grep ^mysql_root_password | awk -F' = ' '{print $2}'` --socket=`sudo /opt/zimbra/bin/zmlocalconfig -s | grep ^mysql_socket | awk -F' = ' '{print $2}'` --all-databases --single-transaction --flush-logs > /tmp/dump.sql

Восстановление:

Если не проводилась первоначальная настройка zimbra и не инициализирован mysql:

/opt/zimbra/common/share/mysql/scripts/mysql_install_db --datadir=/opt/zimbra/db/data --basedir=/opt/zimbra/common --user=zimbra

Запускаем mysql и заливаем dump баз:

sudo su -l zimbra -c "/bin/sh /opt/zimbra/common/bin/mysqld_safe --defaults-file=/opt/zimbra/conf/my.cnf --external-locking --log-error=/opt/zimbra/log/mysql_error.log --malloc-lib=/opt/zimbra/common/lib/libtcmalloc_minimal.so --ledir=/opt/zimbra/common/sbin &"
sudo /opt/zimbra/common/bin/mysql -S `sudo /opt/zimbra/bin/zmlocalconfig -s | grep ^mysql_socket | awk -F' = ' '{print $2}'` < /tmp/dump.sql
sudo su -l zimbra -c "killall mysqld"

Если mysql запущени и работает с устаревшими базами:

/opt/zimbra/common/bin/mysql -S `sudo /opt/zimbra/bin/zmlocalconfig -s | grep ^mysql_socket | awk -F' = ' '{print $2}'` -p`sudo /opt/zimbra/bin/zmlocalconfig -s | grep ^mysql_root_password | awk -F' = ' '{print $2}'` < /tmp/dump.sql

https://wiki.zimbra.com/wiki/MySQL_Backup_and_Restore

Письма

rsync

Пример для сервера /etc/rsyncd.conf (клиент 192.168.9.14):

uid = nobody
gid = nogroup
max connections = 10
read only = yes
list = yes
use chroot = yes

[store]
 path = /opt/zimbra/store
 comment = Zimbra store
 uid = zimbra
 gid = zimbra
 hosts allow = 192.168.9.14
 hosts deny = *

Пример для клиента (сервер 192.168.9.10):

rsync -zavP --size-only --delete 192.168.9.10:/opt/zimbra/store/ store/ >/tmp/rsync.log

tar

Бэкап:

sudo tar czf /tmp/store.tgz /opt/zimbra/store

Восстановление:

sudo tar xzf /tmp/store.tgz -C /

Ссылки

Аналоги

how-to/zimbra.txt · Последнее изменение: 127.0.0.1