Modoboa: Porovnání verzí

Z Poznámkový blok
Přejít na: navigace, hledání
(Krok 3)
(Let’s Encrypt)
 
(Není zobrazeno 27 mezilehlých verzí od stejného uživatele.)
Řádka 26: Řádka 26:
 
  git clone https://github.com/modoboa/modoboa-installer
 
  git clone https://github.com/modoboa/modoboa-installer
 
  cd modoboa-installer
 
  cd modoboa-installer
 +
./run.py --stop-after-configfile-check <your domain>
 +
Tímto připravíme konfigurační soubor 'installer.cfg' pro instalaci Modoby. V něm pak provedeme požadované změny aby instalace byla provedena dle naších představ.
 +
[general]
 +
hostname = modo.%(domain)s
 +
...
 +
[letsencrypt]
 +
email = admin@<your domain>
 +
 +
Po nastaveni spustíme vlastni instalaci:
 
  sudo ./run.py <your domain>
 
  sudo ./run.py <your domain>
 +
'''Pozor''': Pokud chceme provést obnovu ze zálohy, tak konfigurační soubor porovnáme ze zálohou a patřičně upravíme.
  
 
== Upgrade ==
 
== Upgrade ==
Řádka 44: Řádka 54:
 
* Změna rozložení modulů - v nastaveni Modoba - Parametry - Obecné -> Výchozí přesměrování aplokace nastavit Uživatelský profil
 
* 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.
 
* Vytvořit nový konfigurační soubor "installer.cfg", porovnat jej z původním a rozumně původní soubor editovat.
 +
 +
'''Vytvoření zálohy''':
 +
sudo ./run.py --silent-backup slapnet.cz
 +
cd modoboa_backup
 +
sudo tar -cf modoba_backup.tar backup_MM_DD_YYYY_HH_mm
 +
 +
'''Obnova ze zálohy''':
 +
sudo ./run.py --restore ./modoboa_backup/backup_MM_DD_YYYY_HH_mm
 +
sudo ./modoboa_backup/backup_MM_DD_YYYY_HH_mm/installer.cfg ./installer.cfg
  
 
== Let’s Encrypt ==
 
== Let’s Encrypt ==
Řádka 52: Řádka 71:
 
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).
 
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
+
  certbot certonly --standalone -d modo.slapnet.cz -d mail.example.com
 +
 +
sudo certbot delete --cert-path modo.slapnet.cz
 +
sudo certbot --nginx -d modo.slapnet.cz -d mail.example.com
 +
 
 
Budeme dotázáni:
 
Budeme dotázáni:
 
  How would you like to authenticate with the ACME CA?
 
  How would you like to authenticate with the ACME CA?
Řádka 116: Řádka 139:
 
=== Krok 1 ===
 
=== Krok 1 ===
 
Vzhledem k tomu, že Modoboa neběží oproti Roundcube přes PHP, je nutné jej doinstalovat:
 
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
+
  sudo 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
+
  sudo apt install -y php-auth-sasl php-intl php-masterminds-html5 php-mbstring php-net-sieve php-net-socket php-pspell
  
 
Připravíme si databázi. Prvně vytvoříme uživatele. Budeme vyzváni k zadání hesla, nezapomenout !
 
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
+
sudo -u postgres createuser -e -P roundcube
 
Následně pro uživatele vytvoříme databazi:
 
Následně pro uživatele vytvoříme databazi:
  sudo -u postgres createdb -O roundcube -E UNICODE roundcubemail
+
sudo -u postgres createdb -O roundcube -E UNICODE roundcubemail
  
 
=== Krok 2 ===
 
=== 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í:
 
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>
+
  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:
 
Následně stažený soubor rozbalíme a nakopírujeme do požadovaného adresáře:
 
  tar -xf $(ls roundcubemail*.tar.gz)
 
  tar -xf $(ls roundcubemail*.tar.gz)
  sudo mv roundcubemail-1.6.8 roundcubemail
+
  rm $(ls roundcubemail*.tar.gz)
  sudo cp -ar roundcubemail /var/www/
+
 +
  sudo mv $(ls | grep roundcubemail) /var/www/roundcubemail
 
  sudo chmod 777 /var/www/roundcubemail
 
  sudo chmod 777 /var/www/roundcubemail
 
 
  sudo chown www-data:www-data /var/www/roundcubemail/temp
 
  sudo chown www-data:www-data /var/www/roundcubemail/temp
 
  sudo chown www-data:www-data /var/www/roundcubemail/logs
 
  sudo chown www-data:www-data /var/www/roundcubemail/logs
Řádka 138: Řádka 161:
 
=== Krok 3 ===
 
=== Krok 3 ===
 
Nastavime/vutvoříme predpis pro nginx:
 
Nastavime/vutvoříme predpis pro nginx:
 +
sudo mcedit /etc/nginx/sites-available/mail.slapnet.cz.conf
  
 
  server {                          # presmerovani na https protokol
 
  server {                          # presmerovani na https protokol
Řádka 147: Řádka 171:
 
   
 
   
 
  server {
 
  server {
     listen 443 ssl;
+
     listen 443 ssl http2;
     listen [::]:443 ssl;
+
     listen [::]:443 ssl http2;
 
     server_name mail.slapnet.cz;
 
     server_name mail.slapnet.cz;
     root /var/www/roundcubemail/
+
     root /var/www/roundcubemail/;
 
   
 
   
 
     ssl_certificate /etc/ssl/certs/modo.slapnet.cz.cert;
 
     ssl_certificate /etc/ssl/certs/modo.slapnet.cz.cert;
Řádka 167: Řádka 191:
 
   
 
   
 
     location / {                  # spusteni vlastniho roundcubemail
 
     location / {                  # spusteni vlastniho roundcubemail
         alias /var/www/roundcubemail/
+
         alias /var/www/roundcubemail/;
 
         index  index.php;
 
         index  index.php;
 
         try_files $uri $uri/ /index.html = 404;
 
         try_files $uri $uri/ /index.html = 404;
Řádka 187: Řádka 211:
 
  }
 
  }
 
Vytvoříme symlik a restartujeme nginx:
 
Vytvoříme symlik a restartujeme nginx:
  ls ...
+
  sudo ln -s /etc/nginx/sites-available/mail.slapnet.cz.conf /etc/nginx/sites-enabled/mail.slapnet.cz.conf
  sudo systemctl reload nginx
+
  sudo systemctl reload nginx.service
  
 
=== Krok 4 ===
 
=== Krok 4 ===
Řádka 194: Řádka 218:
 
Spustime instalator na https://mail.slapnet.cz/installer/index.php
 
Spustime instalator na https://mail.slapnet.cz/installer/index.php
  
Následně se otevře web rozhraní která nás provede kontrolou komponent a nastavením ini souboru pro Randcube.
+
Následně se otevře web rozhraní která nás provede kontrolou komponent a nastavením ini souboru pro Randcube.  
 +
 
 +
'''General configuration'''
 +
* ip_check -> true
 +
- enable_spellcheck -> true
 +
* identities_level - Úroveň přístupu k identitám. Definuje, co mohou uživatelé dělat se svou identitou.
 +
** many identities with possibility to edit all params - mnoho identit s možností editace všech parametrů - select
 +
** many identities with possibility to edit all params but not email address - mnoho identit s možností upravit všechny parametry, ale ne e-mailovou adresu
 +
** one identity with possibility to edit all params - jedna identita s možností editace všech parametrů
 +
** one identity with possibility to edit all params but not email address - jedna identita s možností upravovat všechny parametry, ale ne e-mailovou adresu
 +
** one identity with possibility to edit only signature - jedna identita s možností editace pouze podpisu
 +
 
 +
'''Display settings & user prefs'''
 +
* language -> "cz_CZ"
 +
* ...
 +
* mime_param_folding -> Full RFC 2231 (Rouncube, Thunderbird)
 +
 
 +
'''Plugins'''
 +
* acl
 +
* additional_message_headers
 +
* archive
 +
* attachment_reminder
 +
* ''autologon''
 +
* autologout
 +
* database_attachments
 +
* ''debug_logger''
 +
* emoticons
 +
* enigma
 +
* example_addressbook
 +
* filesystem_attachments
 +
* help
 +
* ''hide_blockquote''
 +
* http_authentication
 +
* identicon
 +
* identity_select
 +
* jqueryui
 +
* ''krb_authentication''
 +
* managesieve
 +
* markasjunk
 +
* new_user_dialog
 +
* new_user_identity
 +
* newmail_notifier
 +
* password
 +
* reconnect
 +
* redundant_attachments
 +
* show_additional_headers
 +
* ''squirrelmail_usercopy''
 +
* ''subscriptions_option''
 +
* userinfo
 +
* vcard_attachments
 +
* ''virtuser_query''
 +
* zipdownload
 +
 
 +
 
 +
 
 +
 
 +
Po nastavení hesla pro SQL databazi, nezapomeňme databazi inicializovat !
 +
 
 +
Na zavěr uložíme konfiguraci do /tmp a poté přesuneme:
 +
sudo mv /tmp/config.inc.php /var/www/roundcubemail/config/config.inc.php
 +
Poté je již možné se přihlásit do Roundcube. Pokud je vše v pořádku, zablokujeme instalační skript:
 +
sudo chmod 700 /var/www/roundcubemail/installer/
 +
nebo vložte do konfigurace:
 +
sudo mcedit /var/www/roundcubemail/config/config.inc.php
 +
 +
// Zablokuj pristup kinstalacnimu skriptu
 +
$config['enable_installer'] = false;
  
 
== Migrace IMAP ==
 
== Migrace IMAP ==

Aktuální verze z 11. 8. 2024, 22:07

Ú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
./run.py --stop-after-configfile-check <your domain>

Tímto připravíme konfigurační soubor 'installer.cfg' pro instalaci Modoby. V něm pak provedeme požadované změny aby instalace byla provedena dle naších představ.

[general]
hostname = modo.%(domain)s
...
[letsencrypt]
email = admin@<your domain>

Po nastaveni spustíme vlastni instalaci:

sudo ./run.py <your domain>

Pozor: Pokud chceme provést obnovu ze zálohy, tak konfigurační soubor porovnáme ze zálohou a patřičně upravíme.

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.

Vytvoření zálohy:

sudo ./run.py --silent-backup slapnet.cz
cd modoboa_backup
sudo tar -cf modoba_backup.tar backup_MM_DD_YYYY_HH_mm

Obnova ze zálohy:

sudo ./run.py --restore ./modoboa_backup/backup_MM_DD_YYYY_HH_mm
sudo ./modoboa_backup/backup_MM_DD_YYYY_HH_mm/installer.cfg ./installer.cfg

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 modo.slapnet.cz -d mail.example.com

sudo certbot delete --cert-path modo.slapnet.cz
sudo certbot --nginx -d modo.slapnet.cz -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.

Krok 1

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

sudo 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
sudo apt install -y php-auth-sasl php-intl php-masterminds-html5 php-mbstring php-net-sieve php-net-socket php-pspell

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 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 $(ls roundcubemail*.tar.gz)
rm $(ls roundcubemail*.tar.gz)

sudo mv $(ls | grep roundcubemail) /var/www/roundcubemail
sudo chmod 777 /var/www/roundcubemail
sudo chown www-data:www-data /var/www/roundcubemail/temp
sudo chown www-data:www-data /var/www/roundcubemail/logs

Krok 3

Nastavime/vutvoříme predpis pro nginx:

sudo mcedit /etc/nginx/sites-available/mail.slapnet.cz.conf
server {                           # presmerovani na https protokol
    listen 80;
    listen [::]:80;
    server_name mail.slapnet.cz;
    rewrite ^ https://$server_name$request_uri? permanent;
}

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

    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 / {                   # spusteni vlastniho roundcubemail
        alias /var/www/roundcubemail/;
        index  index.php;
        try_files $uri $uri/ /index.html = 404;
    }

    location /.well-known/ {       # pro cerbot, potvrzeni certifikatu
        alias /srv/modoboa/instance/sitestatic/.well-known/;
    }

    location ~ \.php$ {            # spousteni php skriptu na nginxu
        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;
    }

}

Vytvoříme symlik a restartujeme nginx:

sudo ln -s /etc/nginx/sites-available/mail.slapnet.cz.conf /etc/nginx/sites-enabled/mail.slapnet.cz.conf
sudo systemctl reload nginx.service

Krok 4

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

Následně se otevře web rozhraní která nás provede kontrolou komponent a nastavením ini souboru pro Randcube.

General configuration

  • ip_check -> true

- enable_spellcheck -> true

  • identities_level - Úroveň přístupu k identitám. Definuje, co mohou uživatelé dělat se svou identitou.
    • many identities with possibility to edit all params - mnoho identit s možností editace všech parametrů - select
    • many identities with possibility to edit all params but not email address - mnoho identit s možností upravit všechny parametry, ale ne e-mailovou adresu
    • one identity with possibility to edit all params - jedna identita s možností editace všech parametrů
    • one identity with possibility to edit all params but not email address - jedna identita s možností upravovat všechny parametry, ale ne e-mailovou adresu
    • one identity with possibility to edit only signature - jedna identita s možností editace pouze podpisu

Display settings & user prefs

  • language -> "cz_CZ"
  • ...
  • mime_param_folding -> Full RFC 2231 (Rouncube, Thunderbird)

Plugins

  • acl
  • additional_message_headers
  • archive
  • attachment_reminder
  • autologon
  • autologout
  • database_attachments
  • debug_logger
  • emoticons
  • enigma
  • example_addressbook
  • filesystem_attachments
  • help
  • hide_blockquote
  • http_authentication
  • identicon
  • identity_select
  • jqueryui
  • krb_authentication
  • managesieve
  • markasjunk
  • new_user_dialog
  • new_user_identity
  • newmail_notifier
  • password
  • reconnect
  • redundant_attachments
  • show_additional_headers
  • squirrelmail_usercopy
  • subscriptions_option
  • userinfo
  • vcard_attachments
  • virtuser_query
  • zipdownload



Po nastavení hesla pro SQL databazi, nezapomeňme databazi inicializovat !

Na zavěr uložíme konfiguraci do /tmp a poté přesuneme:

sudo mv /tmp/config.inc.php /var/www/roundcubemail/config/config.inc.php

Poté je již možné se přihlásit do Roundcube. Pokud je vše v pořádku, zablokujeme instalační skript:

sudo chmod 700 /var/www/roundcubemail/installer/

nebo vložte do konfigurace:

sudo mcedit /var/www/roundcubemail/config/config.inc.php

// Zablokuj pristup kinstalacnimu skriptu
$config['enable_installer'] = false;

Migrace IMAP

Odkazy