Zimbra
URL: | https://mail.nntc.nnov.ru |
---|---|
Платформа: | Zimbra |
Сервер: | apve3/vestacp |
IP-адрес: | 192.168.10.151 |
Открытые порты: | 443TCP (Web-интерфейс) |
Содержание
Настройка доступа к контактам через Thunderbird
Данная инструкция проверялась на Ubuntu 20.04.
- Скачать и установить дополнение CardBook в Thunderbird. Можно найти через менеджер дополнений и установить оттуда же.
- Открыть окно CardBook (кнопка находится в правом верхнем углу окна Thunderbird.)
- Правой кнопкой мыши кликнуть на список адресных книг в левой части экрана и выбрать из меню "Новая адресная книга" ("New Address Book".)
- В открывшемся окне выбрат тип адресной книги "Remote".
- Выбрать тип адресной книги "CardDAV". В настройках подключения указать URL следующего вида:
https://mail.nntc.nnov.ru/dav/<user-name>@nntc.nnov.ru/Contacts/
- Ввести имя пользователя почты и пароль.
bind
cat << 'EOF' > /etc/bind/named.conf.options options { directory "/var/cache/bind"; // forward only; // If there is a firewall between you and nameservers you want // to talk to, you may need to fix the firewall to allow multiple // ports to talk. See http://www.kb.cert.org/vuls/id/800113 // If your ISP provided one or more IP addresses for stable // nameservers, you probably want to use them as forwarders. // Uncomment the following block, and insert the addresses replacing // the all-0's placeholder. forwarders { 8.8.8.8; }; //======================================================================== // If BIND logs error messages about the root key being expired, // you will need to update your keys. See https://www.isc.org/bind-keys //======================================================================== dnssec-validation no; listen-on-v6 { any; }; }; EOF
echo 'include "/etc/bind/qwe.rty.ru_zones.conf";' >> /etc/bind/named.conf
cat << 'EOF' > /etc/bind/qwe.rty.ru_zones.conf zone "qwe.rty.ru" { type master; file "/etc/bind/zone_qwe.rty.ru"; }; EOF
cat << 'EOF' > /etc/bind/zone_qwe.rty.ru $ORIGIN qwe.rty.ru. $TTL 86400 @ IN SOA ns1.qwe.rty.ru. root.qwe.rty.ru. ( 2023013110; Serial 3600 ; Refresh 900 ; Retry 604800 ; Expire 86400 ; Minimum ) ; IN NS ns1.qwe.rty.ru. @ IN A 192.168.10.51 ns1 IN A 192.168.10.51 ns2 IN A 192.168.10.51 www IN CNAME @ ;mail IN CNAME @ mail IN A 192.168.10.51 @ IN MX 10 mail mail IN MX 10 mail @ IN TXT "v=spf1 a mx ip4:89.109.54.20 ~all" _dmarc IN TXT "v=DMARC1; p=quarantine" 2B2943B4-A15F-11ED-BFE7-22BC155843E7._domainkey 300 IN TXT ( "v=DKIM1; k=rsa;" "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoGbExU/BhOyVqPnwz80o1NKVTkH9zPvo4x6Qs5+MuZsWH+fk5lpKxtrhiD+3+sjzpMZBSXmJ5JEefqW+0dByQrATJY91ynYzY3hOFdhLvkptNisNiycdFT5u3lT4PxfXG/GB8CVvX88OXXjXuD3zAL2cbs+u+AsY2a+85D/5L1/SPxqvUOi1B1o0Lsk9e4shZTLlIH/0NKF9yE" "3ECAsAJiHhV3GJZbytTBR8lAHb7UCBgqI1/2tOB2gaCfXKOoJ4shcCEjrlzGT6C6c7I7J0i4UMRgv446EMK7/Ddynmu7SisiOXnl06J38GKtLp36PHtOZYhOJWc0ke0ap9+7YQMQIDAQAB" ) EOF
systemctl stop systemd-resolved systemctl disable systemd-resolved
Настройка dkim, spf, dmark
Источник: https://habr.com/ru/company/Zextras/blog/339296/
dkim
Добавляем dkim к домену
/opt/zimbra/libexec/zmdkimkeyutil -a -d nntc.nnov.ru
В ответ получаем текст типа такого
DKIM Data added to LDAP for domain nntc.nnov.ru with selector 1774E6C4-60E2-11ED-9312-806B2F1CB351 Public signature to enter into DNS: 1774E6C4-60E2-11ED-9312-806B2F1CB351._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvoJiPVvchkOXgMRcxHTMTlkmFIk5BLkHqbY7htxDCRD7Pnwchktcdg7HAWd7SMgdJeSylo221GKKrx/f1nOYp0naBcRzPXi9R3a/a3fsY94indUuI1JnwrL3RCoCl4TkTSAP4VGP9hcTcf1ms6u2mbKuiKgdaKeXieXInIhg+KasYm9hnFTMX8I+mZOjvwbOQETpmxrXUW8Uo9" "I87BJDBMF5Wb2u6Mr0KaoCjpie9Y89YwXGID6Ofor1Rg2qra507oNIPnFFhKI6KacBMS1kQTESgJ0AJxvyjuc+fKGcmA+sh2rzYLlRulvGu4mBsZkKJuLP0iuZgymPS1oB0PA5WQIDAQAB" ) ; ----- DKIM key 1774E6C4-60E2-11ED-9312-806B2F1CB351 for nntc.nnov.ru
Далее идём в настройки DNS записей для домена nntc.nnov.ru и добавляем такую TXT запись в настройках домена.
В случае с настройками днс сервера типа bind9 запись будет выглядеть примерно так. Если интерфейс настройки другой, то бездумно копировать этот текст не надо. Надо копировать - подумав! :-)
1774E6C4-60E2-11ED-9312-806B2F1CB351._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvoJiPVvchkOXgMRcxHTMTlkmFIk5BLkHqbY7htxDCRD7Pnwchktcdg7HAWd7SMgdJeSylo221GKKrx/f1nOYp0naBcRzPXi9R3a/a3fsY94indUuI1JnwrL3RCoCl4TkTSAP4VGP9hcTcf1ms6u2mbKuiKgdaKeXieXInIhg+KasYm9hnFTMX8I+mZOjvwbOQETpmxrXUW8Uo9" "I87BJDBMF5Wb2u6Mr0KaoCjpie9Y89YwXGID6Ofor1Rg2qra507oNIPnFFhKI6KacBMS1kQTESgJ0AJxvyjuc+fKGcmA+sh2rzYLlRulvGu4mBsZkKJuLP0iuZgymPS1oB0PA5WQIDAQAB" ) ; ----- DKIM key 1774E6C4-60E2-11ED-9312-806B2F1CB351 for nntc.nnov.ru
Проверяем
host -t txt 1774E6C4-60E2-11ED-9312-806B2F1CB351._domainkey.nntc.nnov.ru
В ответ должен прийти тот текст, который является значением для TXT зоны 1774E6C4-60E2-11ED-9312-806B2F1CB351._domainkey.nntc.nnov.ru, добавленной выше где-то там на сервере, который обслуживает днс зону
Формируем команду для проверки ключа в зимбре.
/opt/zimbra/common/sbin/opendkim-testkey -d nntc.nnov.ru -s 1774E6C4-60E2-11ED-9312-806B2F1CB351 -x /opt/zimbra/conf/opendkim.conf
Если в ответ не прилетает текста с ошибками, значит всё настроено верно, скорее всего. Но нужно убедиться, выполнив проверку на стороннем сервисе. Например здесь: https://www.mail-tester.com
Ещё важный момент: Если на самой зимбре настроен внутренний днс сервер на bind9, то в зону nntc.nnov.ru необходимо также добавить выше описанную TXT запись.
spf
В нашем случае для spf нужно сделать такую TXT запись для домена nntc.nnov.ru
v=spf1 a mx ip4:89.109.54.20 ~all
dmark
В нашем случае для dmark нужно сделать такую TXT запись для домена _dmarc.nntc.nnov.ru
v=DMARC1; p=quarantine
Итог
В итоге зона DNS сервера должна иметь такие настройки, которые представлены ниже в формате конфига для сервера bind9
$ORIGIN nntc.nnov.ru. $TTL 86400 @ IN SOA ns1.nntc.nnov.ru. root.nntc.nnov.ru. ( 2022111004 ; Serial 3600 ; Refresh 900 ; Retry 604800 ; Expire 86400 ; Minimum ) ; IN NS ns1.nntc.nnov.ru. @ IN A 192.168.10.51 ns1 IN A 192.168.10.51 ns2 IN A 192.168.10.51 www IN CNAME @ ;mail IN CNAME @ mail IN A 192.168.10.51 @ IN MX 10 mail mail IN MX 10 mail @ IN TXT "v=spf1 a mx ip4:89.109.54.20 ~all" _dmarc IN TXT "v=DMARC1; p=quarantine" 1774E6C4-60E2-11ED-9312-806B2F1CB351._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvoJiPVvchkOXgMRcxHTMTlkmFIk5BLkHqbY7htxDCRD7Pnwchktcdg7HAWd7SMgdJeSylo221GKKrx/f1nOYp0naBcRzPXi9R3a/a3fsY94indUuI1JnwrL3RCoCl4TkTSAP4VGP9hcTcf1ms6u2mbKuiKgdaKeXieXInIhg+KasYm9hnFTMX8I+mZOjvwbOQETpmxrXUW8Uo9" "I87BJDBMF5Wb2u6Mr0KaoCjpie9Y89YwXGID6Ofor1Rg2qra507oNIPnFFhKI6KacBMS1kQTESgJ0AJxvyjuc+fKGcmA+sh2rzYLlRulvGu4mBsZkKJuLP0iuZgymPS1oB0PA5WQIDAQAB" ) ; ----- DKIM key 1774E6C4-60E2-11ED-9312-806B2F1CB351 for nntc.nnov.ru
Фиксы
Переименовать
su - zimbra /opt/zimbra/libexec/zmsetservername -n nntc.nnov.ru
Скрипты
Получить список ящиков в файл
su zimbra - zmaccts | grep "@" | awk '{print $1}' > accounts.txt
Резервное копирование
cat << 'EOF' > /opt/export-boxes.sh #!/bin/bash dest="/mnt/backup" for i in $(cat accounts.txt); do mailbox="$i" stamp="$(date +%Y_%m_%d__%H_%M_%S)" destfile="${dest}/${mailbox}_${stamp}".tar echo "now backup mbox $mailbox to $destfile" /opt/zimbra/bin/zmmailbox -z -t 0 -m "${mailbox}" getRestURL -u "https://mail.nntc.nnov.ru" "//?fmt=tar" > ${destfile} echo "done. Next..." echo "" done EOF
Восстановление из резервных копий
cat << 'EOF' > /opt/import-boxes.sh #!/bin/bash dest="/mnt/backup" for i in $(cat accounts.txt); do mailbox="$i" stamp="$(date +%Y_%m_%d__%H_%M_%S)" destfile="${dest}/${mailbox}_${stamp}".tar echo "now backup mbox $mailbox to $destfile" /opt/zimbra/bin/zmmailbox -z -t 0 -m "${mailbox}" getRestURL -u "https://mail.nntc.nnov.ru" "//?fmt=tar" > ${destfile} echo "done. Next..." echo "" done EOF
Сменить всем пароли
cat << 'EOF' > /opt/passwd-boxes.sh #!/bin/bash out="accounts.pwd" rm ${out} for ACCOUNT in `cat accounts.txt`; do PASS=`pwgen -s 12 1` echo $ACCOUNT #su - zimbra -c "zmprov sp $ACCOUNT NewGenerated42Password"; #su - zimbra -c "zmprov ma $ACCOUNT zimbraPasswordMustChange TRUE"; echo "${ACCOUNT} ${PASS}" >> ${out} done exit 0 EOF