Modoboa: Porovnání verzí

Z Poznámkový blok
Přejít na: navigace, hledání
(Krok 2 ?)
(Krok 3)
Řádka 141: Řádka 141:
 
Nastavime/vutvoříme predpis pro nginx:
 
Nastavime/vutvoříme predpis pro nginx:
  
 
+
server {
 
+
    listen 80;
 +
    listen [::]:80;
 +
    server_name mail.slapnet.cz;
 +
    rewrite ^ https://$server_name$request_uri? permanent;
 +
}
 +
 +
server {
 +
    listen 443 ssl;
 +
    listen [::]:443 ssl;
 +
    server_name mail.slapnet.cz;
 +
    root /var/www/roundcube/
 +
 +
    ssl_certificate /etc/ssl/certs/modo.slapnet.cz.cert;
 +
    ssl_certificate_key /etc/ssl/private/modo.slapnet.cz.key;
 +
    ssl_protocols TLSv1.2 TLSv1.3;
 +
    ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384";
 +
    ssl_prefer_server_ciphers on;
 +
    ssl_session_cache shared:SSL:10m;
 +
    ssl_verify_depth 3;
 +
    ssl_dhparam /etc/nginx/dhparam.pem;
 +
 +
    client_max_body_size 10M;
 +
 +
    access_log /var/log/nginx/mail.slapnet.cz-access.log;
 +
    error_log /var/log/nginx/mail.slapnet.cz-error.log;
 +
 +
    location / {
 +
        alias /var/www/roundcube/
 +
        index  index.php;
 +
        try_files $uri $uri/ /index.html = 404;
 +
    }
 +
 +
    location /.well-known/ {
 +
        alias /srv/modoboa/instance/sitestatic/.well-known/;
 +
    }
 +
 +
    location ~ \.php$ {
 +
        include snippets/fastcgi-php.conf;
 +
 +
        # With php-fpm (or other unix sockets):
 +
        fastcgi_pass unix:/run/php/php-fpm.sock;
 +
        # With php-cgi (or other tcp sockets):
 +
    #  fastcgi_pass 127.0.0.1:9000;
 +
    }
 +
 +
}
  
 
=== Krok 4 ===
 
=== Krok 4 ===

Verze z 10. 8. 2024, 14:43

Úvod

Jedna se o pomerně jednoduchy kompletni email server z web administrací. Domovská stránka projektu je https://modoboa.org.

Příprava instalace

Pro novou instalaci si připravíme nejnovější distribuci Debiana, provedeme aktualizace a doinstalujem potřebne balíčky

sudo apt update && sudo apt upgrade
sudo apt -y install sudo ssh mc git python3
sudo apt autoremove

Příprava DNS

Pro snadnou instalaci a funkcionalitu je dobré si předem nastavit potřebne DNS zaznamy:

        mail IN A <IP adresa email serveru>

           @ IN MX 10 mail

           @ IN TXT "v=spf1 mx ~all"
      _dmarc IN TXT "v=DMARC1; p=quarantine; pct=100;"

  autoconfig IN CNAME mail
autodiscover IN CNAME mail

V případě kdy v konfiguraci povolíme podepisovíní metodou DKIM, bude potřeba přidat ještě dalsi TXT zaznam.

Instalace

Vlastní instalaci provedeme dle oficiálního návodu - https://modoboa.readthedocs.io/en/latest/

git clone https://github.com/modoboa/modoboa-installer
cd modoboa-installer
sudo ./run.py <your domain>

Upgrade

By také melo být velice jednoduché. V návodě je sice postup, ale k instalátoru byl přidán parametr --upgrade. Tudíž by mělo stačit

git clone https://github.com/modoboa/modoboa-installer
cd modoboa-installer
sudo ./run.py --upgrade <your domain>

Vzhledem k indovidualní konfiguraci je pak potřeba opravit konfigurace:

  • /etc/nginx/sites-available/modo.slapnet.cz
  • /etc/nginx/sites-available/autoconfig.slapnet.cz


  • /etc/postfix/main.conf
  • /etc/postfix/master.cf

Backup

Pomocí instalačního skriptu je možné provádět a případně i obnovit kompletni modoba server. V praxi při přechodu mezi verzemi jsem objevil dva skryté problémy:

  • Změna rozložení modulů - v nastaveni Modoba - Parametry - Obecné -> Výchozí přesměrování aplokace nastavit Uživatelský profil
  • Vytvořit nový konfigurační soubor "installer.cfg", porovnat jej z původním a rozumně původní soubor editovat.

Let’s Encrypt

Pro automatickou aktualizaci certifikátů po běžné instalaci Modoboa doinstalujeme Cerboot, viz samostatný odstavec. Poté vypneme nginx:

systemctl stop nginx.service

Spustíme požadavek na vygenerování provizorního certifikáty pro všechny potřebné domény (musí být již funkční DNS zaznamy).

certbot certonly --standalone -d mail.example.com

Budeme dotázáni:

How would you like to authenticate with the ACME CA?
Plugins selected: Authenticator standalone, Installer None
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): admin@example.com  <- email na který bude chodit upozornen i o expiraci
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y                              <- souhlasíme z podmínkami
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N                              <- nechci dostávat reklamí emaily

V instalačním adresáři přenastavíme soubor `installer.cfg`. Email adresu nastavíme na správce, aby byl informován v případě končící platnosti certifikátu:

[certificate]
generate = true
type = letsencrypt

[letsencrypt]
email = admin@example.com

Poté aktualizujeme instalaci:

sudo ./run.py --upgrade <your domain>

V případě potřeby spustíme nginx:

systemctl start nginx.service

Nakonec nastavíme adresář a platné parametry pro generování certifikátu (opět ze všemi platnými domény):

mkdir /srv/modoboa/instance/sitestatic/.well-known
certbot certonly --webroot -w /srv/modoboa/instance/sitestatic/ -d mail.example.com

Pravděpodobně budeme opět dotázáni: What would you like to do?

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Keep the existing certificate for now
2: Renew & replace the certificate (may be subject to CA rate limits)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 <- přegenerujeme, aby se zapsali nove parametry

Certbot

V aktuální verzi instalatoru (k 5.3.2023) není cerbut zahrnut, aby byl funkční. Pokud ale chceme mít aktuální certifikáty, tak je nutné ručně doinstalovat.

Základni instalace (python3 pravděpodobně bude již nainstalovám):

apt install -y python3 certbot

Másledně si zkontrolijeme jaké rozšiřující moduli jsou k dispozici a podle potřeby doinstalujeme:

apt list python3-certbot*

V našem případe pro Modoboa nepotřebujeme žádný.

Roundcube

Součástí instalace Modoboa je i uživatelské web rozhraní správu poštovního klienta. To mi ale připadá velmi základní. Oproti tomu mám pocit, že rozhrani Roundcube je mnohem lepší. Navíc se dá k Modoboa doinstalovat, jako nezávisle rozhrani.

Vzhledem k tomu, že Modoboa neběží oproti Roundcube přes PHP, je nutné jej doinstalovat:

apt install -y php php-fpm php-cgi php-zip php-curl php-imagick php-ldap php-pgsql php-gd php-net-smtp php-mail-mime
apt install -y php-auth-sasl php-intl php-masterminds-html5 php-mbstring php-net-sieve php-net-socket php-pspell

Také potřebujeme vytvořit nového uživatele a tabulku do Postgres SQL (budeme vyzváni k novému heslu):

 sudo -u postgres createuser -e -P roundcube
 sudo -u postgres createdb -O roundcube -E UNICODE roundcubemail

Poté musíme zprovoznit PHP pro nginx. To je věc nastavení vlastního webu v "nginx/sites..." (nutné dohledat na webu). Vlastní instalaci Roundcube provedeme pak již podle dokumentace.

Krok 2 ?

Ze stránek https://roundcube.net/download/ si zkopírujeme odkaz na aktuální verzi (Complete) a ten použijme ke stažení:

wget <https://github.com/roundcube/roundcubemail/releases/download/1.6.8/roundcubemail-1.6.8-complete.tar.gz>

Následně stažený soubor rozbalíme a nakopírujeme do požadovaného adresáře:

tar -xf roundcubemail-1.6.8-complete.tar.gz
sudo sudo cp -ar roundcubemail-1.6.8 /var/www/
sudo mv /var/www/roundcubemail-1.6.8 /var/www/roundcube
sudo chmod 777 /var/www/roundcube

sudo chown www-data:www-data /var/www/roundcube/temp
sudo chown www-data:www-data /var/www/roundcube/logs

Připravíme si databázi. Prvně vytvoříme uživatele. Budeme vyzváni k zadání hesla, nezapomenout !

sudo -u postgres createuser -e -P roundcube

Následně pro uživatele vytvoříme databazi:

sudo -u postgres createdb -O roundcube -E UNICODE roundcubemail

Krok 3

Nastavime/vutvoříme predpis pro nginx:

server {
    listen 80;
    listen [::]:80;
    server_name mail.slapnet.cz;
    rewrite ^ https://$server_name$request_uri? permanent;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name mail.slapnet.cz;
    root /var/www/roundcube/

    ssl_certificate /etc/ssl/certs/modo.slapnet.cz.cert;
    ssl_certificate_key /etc/ssl/private/modo.slapnet.cz.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384";
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_verify_depth 3;
    ssl_dhparam /etc/nginx/dhparam.pem;

    client_max_body_size 10M;

    access_log /var/log/nginx/mail.slapnet.cz-access.log;
    error_log /var/log/nginx/mail.slapnet.cz-error.log;

    location / {
        alias /var/www/roundcube/
        index  index.php;
        try_files $uri $uri/ /index.html = 404;
    }

    location /.well-known/ {
        alias /srv/modoboa/instance/sitestatic/.well-known/;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;

        # With php-fpm (or other unix sockets):
        fastcgi_pass unix:/run/php/php-fpm.sock;
        # With php-cgi (or other tcp sockets):
    #   fastcgi_pass 127.0.0.1:9000;
    }

}

Krok 4

Spustime instalator na https://mail.slapnet.cz/installer/index.php

Migrace IMAP

Odkazy