Наприкінці вересня 2021 року припинив свою дію кореневий сертифікат IdenTrust DST Root CA X3 від Let's Encrypt, тож алгоритм отримання (оновлення) сертифіката letsencrypt на поштовому сервері змінився:
1. Встановлюємо Snap `sudo apt install snapd`
2. Встановлюємо Certbot `sudo snap install certbot --classic`
3. Отримуємо сертифікат на домен `/snap/bin/certbot certonly --force-renewal --preferred-chain "ISRG Root X1" --standalone -d mail.***` Якщо ви оновлюєте сертифікат - починаєте з цього кроку.
4. Виконуємо наступні команди:
```
cp /etc/letsencrypt/live/mail.***/privkey.pem /opt/zimbra/ssl/zimbra/commercial/commercial.key
chown zimbra:zimbra /opt/zimbra/ssl/zimbra/commercial/commercial.key
wget -O /tmp/ISRG-X1.pem https://letsencrypt.org/certs/isrgrootx1.pem.txt
cat /tmp/ISRG-X1.pem >> /etc/letsencrypt/live/mail.***/chain.pem
mkdir /opt/zimbra/ssl/letsencrypt/
cp /etc/letsencrypt/live/mail.DOMAIN.com/* /opt/zimbra/ssl/letsencrypt/
su zimbra
zmlocalconfig -e ldap_starttls_supported=0
cd /opt/zimbra/ssl/letsencrypt/
/opt/zimbra/bin/zmcertmgr deploycrt comm cert.pem chain.pem
zmcontrol restart
```
#### Додаткова інформація
Щоб вимкнути "Disk Space Monitoring" для loop девайсів, які створюються після встановлення snap і вас починає засипати інформативними листами о закінчені місця на дисках, виконуємо наступні дії (працює для нових версій 8.7+):
```
su - zimbra
zmlocalconfig -e zmstat_df_excludes='/dev/loop0:/dev/loop1:/dev/loop2:/dev/loop3:/dev/loop4:/dev/loop5:/dev/loop6'
zmstatctl restart
```
Ефект настає не одразу, оскільки все, що є у вас у черзі, буде приходити ще на пошту деякий час.
Щоб додати автоматичне оновлення - виконайте наступне:
```
cat >> /usr/local/sbin/letsencrypt-zimbra << EOF
#!/bin/bash
/usr/local/sbin/certbot certonly -d $(hostname --fqdn) --standalone --manual-public-ip-logging-ok -n --preferred-chain "ISRG Root X1" --agree-tos --register-unsafely-without-email --key-type rsa
cp "/etc/letsencrypt/live/$(hostname --fqdn)/privkey.pem" /opt/zimbra/ssl/zimbra/commercial/commercial.key
chown zimbra:zimbra /opt/zimbra/ssl/zimbra/commercial/commercial.key
wget -O /tmp/ISRG-X1.pem https://letsencrypt.org/certs/isrgrootx1.pem.txt
rm -f "/etc/letsencrypt/live/$(hostname --fqdn)/chainZimbra.pem"
cp "/etc/letsencrypt/live/$(hostname --fqdn)/chain.pem" "/etc/letsencrypt/live/$(hostname --fqdn)/chainZimbra.pem"
cat /tmp/ISRG-X1.pem >> "/etc/letsencrypt/live/$(hostname --fqdn)/chainZimbra.pem"
chown zimbra:zimbra /etc/letsencrypt -R
cd /tmp
su zimbra -c '/opt/zimbra/bin/zmcertmgr deploycrt comm "/etc/letsencrypt/live/$(hostname --fqdn)/cert.pem" "/etc/letsencrypt/live/$(hostname --fqdn)/chainZimbra.pem"'
rm -f "/etc/letsencrypt/live/$(hostname --fqdn)/chainZimbra.pem"
EOF
```
```
chmod +rx /usr/local/sbin/letsencrypt-zimbra
ln -s /usr/local/sbin/letsencrypt-zimbra /etc/cron.daily/letsencrypt-zimbra
/etc/cron.daily/letsencrypt-zimbra
```
Якщо ви отримуєте таку помилку при оновлені: `digital envelope routines:EVP_PKEY_get0_RSA:expecting an rsa key:crypto`, виконайте наступний скрипт:
```
#!/bin/sh
#
# BUG: zmcertmgr doesn't work with ellipitical curve certs
# Ref: https://forums.zimbra.org/viewtopic.php?f=15&t=69645
#
zmcertmgr=/opt/zimbra/bin/zmcertmgr
cp $zmcertmgr $zmcertmgr.bak
sed -i -e 's/$self->run("$ssl rsa -noout -modulus -in '$keyf'/$self->run("$ssl pkey -pubout -in '$keyf'/g' \
-e 's/$self->run("$ssl x509 -noout -modulus -in '$crtf'/$self->run("$ssl x509 -noout -pubkey -in '$crtf'/g' $zmcertmgr
```