Długo się zbierałem żeby napisać kilka słów jak zabezpieczyć iRedMail wykorzystując Let’s Encrypt. Uprzedzam ,że opis jest oparty na dystrybucji debian z serwerem web nginx. Proces jak zainstalować iRedMail na systemie debian 11 znajdziesz tu o ile nie wprowadzam żadnych zmian – uaktualnień to temat jest aktywny. Przejdźmy do sedna! Zanim zaczniesz instalować Let’s Encrypt pamiętaj że rekord A w dns musi wskazywać na serwer na którym znajduje się iRedMail. W pierwszej kolejności instalujemy Let’s Encrypt SSL:
sudo apt update
sudo apt install certbot
zatrzymujemy nginx:
sudo systemctl stop nginx
następnie wykonujemy komendę jak poniżej – zamień moja domena i mój adres email na twój własciwy!
sudo certbot certonly --standalone -d mail.twojadomena.pl --preferred-challenges http --agree-tos -n -m twój@adresemail.pl --keep-until-expiring
Jak wszystko jest w porządku powinieneś otrzymać taki komunikat:
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/mail.twojadomena.pl/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/mail.twojadomena.pl/privkey.pem
Your cert will expire on 2023-05-05. To obtain a new or tweaked
version of this certificate in the future, simply run certbot-auto
again. To non-interactively renew *all* of your certificates, run
"certbot-auto renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Kolejnym krokiem będzie nauczenie serwera poczty wykorzystać nasz nowy certyfikat. W tym celu robimy archiwum naszego oryginalnego certyfikatu:
mv /etc/ssl/certs/iRedMail.crt /etc/ssl/certs/iRedMail.crt.bak
mv /etc/ssl/private/iRedMail.key /etc/ssl/private/iRedMail.key.bak
następnie utworzymy dowiązanie aby nasz serwer używał certyfikatów letsencrypt (zmień mail.mojadomena.pl na swoją):
ln -s /etc/letsencrypt/live/mail.mojadomena.pl/privkey.pem /etc/ssl/private/iRedMail.key
ln -s /etc/letsencrypt/live/mail.mojadomena.pl/fullchain.pem /etc/ssl/certs/iRedMail.crt
podmieniamy w postfix i dovecot certyfikaty na nasze nowo utworzone:
postconf smtpd_tls_cert_file smtpd_tls_key_file
# smtpd_tls_cert_file = /etc/ssl/certs/iRedMail.crt
# smtpd_tls_key_file = /etc/ssl/private/iRedMail.key
doveconf ssl_key ssl_cert
# ssl_key = </etc/ssl/private/iRedMail.key
# ssl_cert = </etc/ssl/certs/iRedMail.crt
restartujemy postfix i dovecot:
service postfix reload
service dovecot reload
i uruchamiamy nginx:
Teraz pozostaje nam dodać do cron zadanie by nasz certyfikat za trzy miesiące na 100% został odnowiony:
sudo crontab -e
# Renew Let's Encrypt certs
15 3 * * * /usr/bin/certbot renew --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx"
Jeżeli wszystko jest ok to nasz serwer poczty jest zabezpieczony nowym certyfikatem ale nalezy jeszcze zrestartować nasz serwer:
, wymuszając natomiast zadanie cron powinniśmy otrzymać taki komunikat:
Output from command /usr/bin/certbot renew --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx" ..
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/mail.twojadomena.pl.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert not yet due for renewal
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
The following certificates are not due for renewal yet:
/etc/letsencrypt/live/mail.twojadomena.pl/fullchain.pem expires on 2023-05-05 (skipped)
No renewals were attempted.
No hooks were run.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
to by było na tyle!