20.03.2023
Instalacja i konfiguracja Dovecot oraz Roundcube na Ubuntu 20.04
Bazy danychKonfiguracjaLinux | UnixOprogramowanieProxmoxWWW
systemdoarchiwizacjipocztyemail

W dzisiejszym świecie wysyła się całą masę wiadomości e-mail. Jeśli posiadamy hosting o dużej pojemności, to archiwum możemy przechowywać tam lub powiększać rozmiar skrzynek pocztowych, jak zaczyna brakować miejsca i w takim przypadku w ogóle nie archiwizować maili (ja tak robiłem 😆). Wyzwanie pojawi się, kiedy zajdzie potrzeba migracji do innego usługodawcy, który oferuje sztywne pojemności kont dla użytkowników. Osobiście stanąłem przed takim wyzwaniem i trzeba było wypracować rozwiązanie problemu zrzucenia nadmiaru maili.

W chwili pisania tego wpisu całość rozwiązania zwirtualizowałem na systemie Proxmox VE 7.3.

Założenia rozwiązania

  • archiwum wiadomości e-mail przechowywane lokalnie
  • swobodny dostęp do danych przez przeglądarkę internetową
  • brak możliwości wysyłania i usuwania wiadomości z archiwum

Parametry VM

  • Ubuntu Server 20.04.6 LTS
  • 1 rdzień vCPU (Intel® Xeon® E5-2643 3.30 GHz)
  • 4 GB RAM (DDR3 PC3-12800R ECC)
  • 500 GB HDD (SATA III 7 200 obr./min)

Przed przystąpieniem do konfiguracji w pierwszej kolejności aktualizuję system i pakiety do najnowszych dostępnych wersji.

sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y && sudo apt-get autoremove -y

Następnie instaluję sterowniki integracyjne do Proxmox`a. Jeśli korzystasz z innego wirtualizatora to musisz zainstalować odpowiednie dla niego sterowniki. 

sudo apt-get install qemu-guest-agent -y

Kolejną rzeczą przygotowującą grunt jest rozszerzenie logicznego wolumenu LVM, aby wykorzystywał całą dostępną wolną przestrzeń - przed zmianą system wykorzystywał 98 GB, a po wykonaniu poniższych poleceń 490 GB.

sudo df -h
sudo lvm
lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
exit
sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
sudo df -h

Na koniec ustawiam SSH według swoich preferencji i otwieram odpowiednie porty na zaporze sieciowej systemu. Na routerze brzegowym na świat wystawiam tylko porty HTTP/80 oraz HTTPS/443, a dostęp do systemu po SSH będzie tylko i wyłącznie lokalnie lub po VPN`ie.

sudo nano /etc/ssh/sshd_config
sudo systemctl restart ssh
sudo ufw enable && sudo ufw allow ssh && sudo ufw status verbose

Dovecot

  1. Ustawiam klucz GPG.
    sudo touch /etc/apt/trusted.gpg.d/dovecot.gpg
    sudo curl https://repo.dovecot.org/DOVECOT-REPO-GPG | gpg --import
    sudo gpg --export ED409DA1 > /etc/apt/trusted.gpg.d/dovecot.gpg
  2. Dodaję repozytorium do systemu.
    sudo nano /etc/apt/sources.list.d/dovecot.list
    deb https://repo.dovecot.org/ce-2.3-latest/ubuntu/focal focal main
  3. Instaluję serwer Dovecot z obsługą protokołu IMAP.
    sudo apt-get update && sudo apt-get install dovecot-core dovecot-imapd -y
  4. Przygotowuję odpowiednie katalogi, dla każdej domeny, której konta będę archiwizował - w moim przypadku było to 5 domen.
    sudo mkdir -p /var/mail/vhosts/grzegorzwita.it
    sudo mkdir -p /var/mail/vhosts/grzegorzwita.pl
  5. Dodaję konto użytkownika oraz grupę dla tego konta na potrzeby Dovecot`a.
    sudo addgroup -gid 5000 vmail
    sudo adduser vmail -uid 5000 -ingroup vmail -home /var/mail/vhosts -disabled-password -disabled-login
  6. Zmieniam właściciela i grupę dla w/w katalogów.
    sudo chown -R vmail:vmail /var/mail/vhosts
  7. Edytuję plik dovecot.conf dodając poniższe wartości na samym końcu pliku, resztę zostawiam bez zmian.
    sudo nano /etc/dovecot/dovecot.conf
    [...]
    protocols = imap listen = * auth_verbose = yes auth_verbose_passwords = sha1 auth_debug = yes auth_debug_passwords = no mail_debug = yes verbose_ssl = yes log_path = /var/log/dovecot.log info_log_path = /var/log/dovecot-info.log debug_log_path = /var/log/dovecot-debug.log
  8. Edytuję plik 10-mail.conf.
    sudo nano /etc/dovecot/conf.d/10-mail.conf
    [...]
    #mail_location = mbox:~/mail:INBOX=/var/mail/%u
    mail_location = maildir:/var/mail/vhosts/%d/%n:LAYOUT=fs:INBOX=/var/mail/vhosts/%d/%n/INBOX
    
    [...]
    
  9. Edytuję plik 10-master.conf.
    sudo nano /etc/dovecot/conf.d/10-master.conf
    [...]
      inet_listener imaps {
        #port = 993
        #ssl = yes
      }
    [...]
    

    zamieniam na:

    [...]
      inet_listener imaps {
        port = 993
        ssl = yes
      }
    [...]
    
  10. Edytuję plik 10-auth.conf.
    sudo nano /etc/dovecot/conf.d/10-auth.conf
    [...]
    #disable_plaintext_auth = yes 
    [...]
    

    zamieniam na:

    [...]
    disable_plaintext_auth = yes 
    [...]
    
    [...]
    auth_mechanisms = plain
    [...]
    

    zamieniam na:

    [...]
    auth_mechanisms = plain login
    [...]
    
    [...]
    !include auth-system.conf.ext
    [...]
    

    zamieniam na:

    [...]
    #!include auth-system.conf.ext
    [...]
    
    [...]
    #!include auth-passwdfile.conf.ext
    [...]
    

    zamieniam na:

    [...]
    !include auth-passwdfile.conf.ext
    [...]
    
  11. Edytuję plik auth-passwdfile.conf.ext.
    sudo nano /etc/dovecot/conf.d/auth-passwdfile.conf.ext
    # Authentication for passwd-file users. Included from 10-auth.conf.
    #
    # passwd-like file with specified location.
    # <doc/wiki/AuthDatabase.PasswdFile.txt>
    
    passdb {
      driver = passwd-file
      args = scheme=CRYPT username_format=%u /etc/dovecot/users
    }
    
    userdb {
      driver = passwd-file
      args = username_format=%u /etc/dovecot/users
    
      # Default fields that can be overridden by passwd-file
      #default_fields = quota_rule=*:storage=1G
    
      # Override fields from passwd-file
      #override_fields = home=/home/virtual/%u
    }
    

    zamieniam na:

    # Authentication for passwd-file users. Included from 10-auth.conf.
    #
    # passwd-like file with specified location.
    # <doc/wiki/AuthDatabase.PasswdFile.txt>
    #
    #passdb {
    #  driver = passwd-file
    #  args = scheme=CRYPT username_format=%u /etc/dovecot/users
    #}
    #
    #userdb {
    #  driver = passwd-file
    #  args = username_format=%u /etc/dovecot/users
    #
      # Default fields that can be overridden by passwd-file
      #default_fields = quota_rule=*:storage=1G
    #
      # Override fields from passwd-file
      #override_fields = home=/home/virtual/%u
    #}
    
    passdb {
      driver = passwd-file
      args = scheme=SHA512-CRYPT username_format=%u /var/mail/passwd
    }
    
    userdb {
      driver = static
      args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
    }
    
  12. Edytuję plik 10-ssl.conf.
    sudo nano /etc/dovecot/conf.d/10-ssl.conf
    
    [...]
    ssl = no
    [...]
    

    zamieniam na:

    [...]
    ssl = required
    [...]
    
    [...]
    #ssl_cert = </etc/dovecot/dovecot.pem
    #ssl_key = </etc/dovecot/private/dovecot.pem 
    [...]
    

    zamieniam na:

    [...]
    ssl_cert = </etc/letsencrypt/live/archiwum.grzegorzwita.it/fullchain.pem
    ssl_key = </etc/letsencrypt/live/archiwum.grzegorzwita.it/privkey.pem
    [...]
    
  13. Przygotowuję plik z danymi dostępowymi dla archiwizowanych kont pocztowych. Wykorzystuję mechanizm Dovecot`a, aby zaszyfrować hasła.
    sudo touch /var/mail/passwd
    
    sudo chown vmail:vmail /var/mail/passwd
    
    sudo doveadm pw -s SHA512-CRYPT -u grzegorz_wita@grzegorzwita.it -p "Sup3r_T@jnE-Ha$L0" >> /var/mail/passwd
    
    sudo nano /var/mail/passwd
    

    W pliku będzie zapisane zasolone hasło.

    {SHA512-CRYPT}$6$uy/OJOtIKOBVejYn$Dii.ZDWL642sk0POP1186lZ/VKe/OvQ/LsnuSvj0KrBgLi.L3bzNe6HWGkIkv0GsSIRjabO1Jc8S7ICeKLJ9c/
    

    Dopisuję na początku adres email, którego dotyczy ten hash, z dwukropkiem.

    grzegorz_wita@grzegorzwita.it:{SHA512-CRYPT}$6$uy/OJOtIKOBVejYn$Dii.ZDWL642sk0POP1186lZ/VKe/OvQ/LsnuSvj0KrBgLi.L3bzNe6HWGkIkv0GsSIRjabO1Jc8S7ICeKLJ9c/
    

    Generuję tyle hash`y ile kont potrzebuję dodać.

  14. Otwieram port 993 na zaporze sieciowej systemu.
    sudo ufw allow 993
  15. Tworzę usługę Dovecot i ustawiam ją, aby uruchamiała się razem z systemem.
    sudo systemctl enable dovecot.service
    sudo systemctl start dovecot.service
    sudo systemctl status dovecot.service

PHP

  1. Instaluję PHP z odpowiednimi rozszerzeniami.
    sudo apt-get install php7.4 php-imagick php7.4-{gd,common,json,imap,xml,opcache,mbstring,curl,zip,bz2,intl,mysql,ldap} -y
  2. Ustawiam odpowiednią strefę w plikach php.ini na potrzeby aplikacji Roundcube.
    sudo nano /etc/php/7.4/apache2/php.ini
    [...]
    ;date.timezone = 
    [...]

    zamieniam na:

    [...]
    date.timezone = Europe/Warsaw
    [...]
    

Apache

  1. Otwieram porty 80 i 443 na zaporze sieciowej systemu.
    sudo ufw allow in "Apache Full"
  2. Tworzę wstępną konfigurację strony dla aplikacji Roundcube.
    sudo nano /etc/apache2/sites-available/roundcube.conf
    <VirtualHost *:80>
    	ServerName archiwum.grzegorzwita.it
    	ServerAdmin admin@grzegorzwita.it
    </VirtualHost>
    
    <VirtualHost *:443>
    	Protocols h2 http/1.1
    	ServerName archiwum.grzegorzwita.it
    	ServerAdmin admin@grzegorzwita.it
    
    	DocumentRoot /var/www/roundcube
    
    	<Directory />
    		Options FollowSymLinks
    		AllowOverride All
    	</Directory>
    
    	<Directory /var/www/roundcube/>
    		Options FollowSymLinks MultiViews
    		AllowOverride All
    		Order allow,deny
    		allow from all
    	</Directory>
    
    	ErrorLog ${APACHE_LOG_DIR}/error.log
    	CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
    
  3. Włączam konfigurację strony i wyłączam konfigurację domyślnej strony.
    sudo a2ensite roundcube && sudo a2dissite 000-default
  4. Włączam określone moduły Apache`a.
    sudo a2enmod rewrite headers
  5. Restartuję usługę Apache`a.
    sudo systemctl restart apache2

SSL

  1. Instaluję odpowiednie pakiety.
    sudo apt-get install certbot python3-certbot-apache -y
  2. Generuję certyfikat i postępuję zgodnie z informacjami wyświetlanymi na ekranie.
    sudo certbot --apache
  3. Certbot automatycznie ustawia odpowiedniego cron`a, który jest zarządzany przez systemctl, który będzie uruchamiał się dwa razy dziennie i odnawiał certyfikat co 30 dni. Drugie polecenie "na sucho" sprawdzi, czy mechanizm odnawiania działa poprawnie.
    sudo systemctl status certbot.timer
    sudo certbot renew --dry-run
  4. Aktualizuję konfigurację Apache`a.
    sudo nano /etc/apache2/sites-available/roundcube.conf
    <VirtualHost *:80>
    	RewriteEngine on
    	RewriteCond %{SERVER_NAME} =archiwum.grzegorzwita.it
    	RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
    </VirtualHost>
    
    <VirtualHost *:443>
    	Protocols h2 http/1.1
    	ServerName archiwum.grzegorzwita.it
    	ServerAdmin admin@grzegorzwita.it
    
    	DocumentRoot /var/www/roundcube
    
    	<Directory />
    		Options FollowSymLinks
    		AllowOverride All
    	</Directory>
    
    	<Directory /var/www/roundcube/>
    		Options FollowSymLinks MultiViews
    		AllowOverride All
    		Order allow,deny
    		allow from all
    	</Directory>
    
    	ErrorLog ${APACHE_LOG_DIR}/error.log
    	CustomLog ${APACHE_LOG_DIR}/access.log combined
    
    	SSLEngine on
    	SSLProtocol -all +TLSv1.2 +TLSv1.3
    	SSLCertificateFile /etc/letsencrypt/live/archiwum.grzegorzwita.it/fullchain.pem
    	SSLCertificateKeyFile /etc/letsencrypt/live/archiwum.grzegorzwita.it/privkey.pem
    	Include /etc/letsencrypt/options-ssl-apache.conf
    </VirtualHost>
    
  5. Ustawiam globalną nazwę serwera.
    sudo nano /etc/apache2/apache2.conf
    [...]
    
    ServerName localhost
    
  6. Restartuję usługę Apache`a.
    sudo systemctl restart apache2

MySQL

  1. Instaluję serwer MySQL.
    sudo apt-get install mysql-server -y
  2. Uruchamiam konfigurator serwera MySQL.
    sudo mysql_secure_installation

    W chwili pisania tego posta podczas przeklikiwania w/w skryptu w momencie ustawiania nowego hasła dla konta root natrafiłem na poniższy błąd, który uniemożliwił mi ustawienie hasła ani nawet wyjście ze skryptu klawiszami Ctrl+C. Poniżej zostawiam rozwiązanie na wypadek jakbyś też na niego natrafił(a).

    ... Failed! Error: SET PASSWORD has no significance for user ‘root’@’localhost’ as the authentication method used doesn’t store authentication data in the MySQL server. Please consider using ALTER USER instead if you want to change authentication parameters.

    Zrestartowałem maszynę wirtualną, a następnie wykonałem poniższe polecenia (rzecz jasna z poziomu konta root):

    1. Loguję się do serwera MySQL.
      sudo mysql
    2. Ustawiam docelowe hasło dla konta root.
      ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'DoC3l0we_H@$L0';
      
    3. Wychodzę z serwera bazy danych.
      exit
    4. Ponownie uruchamiam skrypt konfiguracyjny i loguję się hasłem wprowadzonym wyżej i go nie zmieniam.
      sudo mysql_secure_installation
    5. Ponownie loguję się do serwera MySQL.
      sudo mysql -u root -p
    6. Ustawiam metodę autoryzacji dla konta root z powrotem na auth_socket.
      ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;
  3. Loguję się do serwera MySQL (chyba, że wystąpił u ciebie problem z pkt. 2 to wtedy nie musisz wykonywać tego punktu ponieważ jesteś zalogowany(a)).
    sudo mysql -u root -p
  4. Tworzę bazę danych dla klienta pocztowego Roundcube.
    CREATE DATABASE roundcube DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
  5. Tworzę użytkownika do bazy danych dla klienta pocztowego Roundcube.
    CREATE USER 'roundcube'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Sk0mp1ikow4N3_Ha$LO';
  6. Nadaję odpowiednie uprawnienia utworzonemu użytkownikowi.
    GRANT ALL ON roundcube.* TO 'roundcube'@'localhost';
  7. Wprowadzam zmiany w życie.
    FLUSH PRIVILEGES;
  8. Wychodzę z serwera bazy danych.
    exit
  9. Loguję się danymi użytkownika utworzonymi wyżej.
    sudo mysql -u roundcube -p
  10. Sprawdzam, czy konto ma dostęp tylko do wyżej utworzonej bazy danych.
    SHOW DATABASES;
  11. Wychodzę z serwera bazy danych.
    exit

Roundcube

  1. Pobieram archiwum programu z repozytorium.
    sudo wget https://github.com/roundcube/roundcubemail/releases/download/1.5.3/roundcubemail-1.5.3-complete.tar.gz
  2. Rozpakowuję pobrany plik.
    sudo tar xvf roundcubemail-1.5.3-complete.tar.gz
  3. Tworzę katalog dla programu.
    sudo mkdir /var/www/roundcube
  4. Przenoszę pliki do powyższego katalogu.
    sudo mv roundcubemail-1.5.3/* /var/www/roundcube
  5. Ustawiam rekurencyjnie właściciela i grupę dla powyższego katalogu.
    sudo chown www-data:www-data -R /var/www/roundcube
  6. Uzbrajam bazę danych MySQL.
    mysql -u roundcube -p roundcube < /var/www/roundcube/SQL/mysql.initial.sql
  7. Z poziomu przeglądarki internetowej wchodzę na adres archiwum.grzegorzwita.it/installer (oczywiście u ciebie adres będzie inny) w celu dokończenia konfigurowania programu. W pierwszym kroku system sprawdza czy mam zainstalowane i skonfigurowane wymagane komponenty.

  8. Klikam przycisk NEXT i przechodzę do drugiego kroku, gdzie usuwam nazwę produktu z pola product_name (jeśli chcesz, to możesz wpisać swoją nazwę), wprowadzam dane dostępowe do bazy danych, w sekcji IMAP Settings zmieniam wartość pola default_host z localhost na SSL://archiwum.grzegorzwita.it oraz default_port z 143 na 993. Resztę opcji zostawiam w ich wartoścach domyślnych i na koniec klikam przycisk CREATE CONFIG.

  9. W przypadku braku problemów wyświetlony zostanie komunikat o pomyślnym wygenerowaniu pliku konfiguracyjnego. Klikam przycisk CONTINUE, aby przejść do ostatniego etapu.

  10. W ostatnim etapie program przeprowadza dodatkową weryfikację konfiguracji. Z tego poziomu mogę również przetestować swoją konfigurację.

  11. Wprowadzam końcowe ustawienia do konfiguracji Apache`a
    sudo nano /etc/apache2/sites-available/roundcube.conf
    <VirtualHost *:80>
    	RewriteEngine on
    	RewriteCond %{SERVER_NAME} =archiwum.viavac.pl
    	RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
    </VirtualHost>
    
    <VirtualHost *:443>
    	Protocols h2 http/1.1
    	ServerName archiwum.viavac.pl
    	ServerAdmin it@viavac.pl
    
    	DocumentRoot /var/www/roundcube
    
    	<Directory />
    		Options FollowSymLinks
    		AllowOverride All
    	</Directory>
    
    	<Directory /var/www/roundcube/>
    		Options FollowSymLinks MultiViews
    		AllowOverride All
    		Order allow,deny
    		allow from all
    	</Directory>
    
    	<LocationMatch "^/(INSTALL|installer|UPGRADING)$">
    		deny from all
    	</LocationMatch>
    
    	<LocationMatch "^/(config|temp|logs)/">
    		deny from all
    	</LocationMatch>
    
    	<LocationMatch "/\.">
    		deny from all
    	</LocationMatch>
    
    	ErrorLog ${APACHE_LOG_DIR}/error.log
    	CustomLog ${APACHE_LOG_DIR}/access.log combined
    
    	SSLEngine on
    	SSLProtocol -all +TLSv1.2 +TLSv1.3
    	SSLCertificateFile /etc/letsencrypt/live/archiwum.viavac.pl/fullchain.pem
    	SSLCertificateKeyFile /etc/letsencrypt/live/archiwum.viavac.pl/privkey.pem
    	Include /etc/letsencrypt/options-ssl-apache.conf
    </VirtualHost>
    
  12. Sprawdzam konfigurację Apache`a.
    sudo apache2ctl configtest
  13. Restartuję usługę Apache`a.
    sudo systemctl restart apache2
  14. Uruchamiam przeglądarkę internetową i przechodzę na zdefiniowany adres w celu zalogowania się na konto pocztowe.

  15. Po poprawnym uwierzytelnieniu system wyświetli komunikat, że na skrzynce nie ma żadnych wiadomości, co jest logiczne. 😅

isync

  1. Instaluję program mbsync (isync to wrapper na mbsync).
    sudo apt-get install isync -y
  2. Ustalam sposób nazewnictwa głównych folderów maili po stronie serwera poczty (wielkość liter ma znaczenie!).

    Poniższy plik wykonałem dla hostingu home.pl, gdyż tam były trzymane skrzynki pocztowe, które musiałem zarchiwizować. Jeśli korzystasz z innego usługodawcy to musisz pod niego przygotować ten plik. W tym celu utworzyłem nowe, testowe konto pocztowe i odpaliłem poniższą wersję konfiguracji jako vmail, która wyświetli historię swojego działania bez tworzenia plików i katalogów:
    sudo nano /var/mail/archiwizacja
    IMAPAccount home
    Host nazwa.serwera.pl
    User "grzegorz_wita@grzegorzwita.it"
    Pass "Sk0mp1ikow4N3_Ha$LO"
    AuthMechs LOGIN
    SSLType IMAPS
    
    IMAPStore home-remote
    Account home
    
    MaildirStore home-local
    Path /var/mail/vhosts/grzegorzwita.it/grzegorz_wita/
    Inbox /var/mail/vhosts/grzegorzwita.it/grzegorz_wita/INBOX/
    SubFolders Verbatim
    
    CopyArrivalDate yes
    Create Slave
    Expunge none
    Remove none
    Sync PullNew
    SyncState *
    
    Channel home-inbox
    Master :home-remote:
    Slave :home-local:
    Patterns *
    
    Group home
    Channel home-inbox
    
    sudo su – vmail –c "mbsync -a –c /var/mail/archiwizacja -V"

    W efekcie każda linia Opening master box wyświetla mi dokładną nazwę katalogu po stronie usługodawcy. 

  3. Przygotowuję docelowy plik konfiguracyjny z odpowiedniem mapowaniem folderów, a następnie uruchamiam jako użytkownik vmail archiwizację skrzynki pocztowej.
    sudo nano /var/mail/archiwizacja
    IMAPAccount home
    Host nazwa.serwera.pl
    User "grzegorz_wita@grzegorzwita.it"
    Pass "Sk0mp1ikow4N3_Ha$LO"
    AuthMechs LOGIN
    SSLType IMAPS
    
    IMAPStore home-remote
    Account home
    
    MaildirStore home-local
    Path /var/mail/vhosts/grzegorzwita.it/grzegorz_wita/
    Inbox /var/mail/vhosts/grzegorzwita.it/grzegorz_wita/INBOX/
    SubFolders Verbatim
    
    CopyArrivalDate yes
    Create Slave
    Expunge none
    Remove none
    Sync Pull
    SyncState *
    
    Channel home-inbox
    Master :home-remote:INBOX
    Slave :home-local:INBOX
    Patterns *
    
    Channel home-sent
    Master :home-remote:SENT
    Slave :home-local:Sent
    Patterns *
    
    Channel home-drafts
    Master :home-remote:DRAFTS
    Slave :home-local:Drafts
    Patterns *
    
    Channel home-spam
    Master :home-remote:SPAM
    Slave :home-local:Junk
    Patterns *
    
    Channel home-trash
    Master :home-remote:TRASH
    Slave :home-local:Trash
    Patterns *
    
    Group home
    Channel home-inbox
    Channel home-sent
    Channel home-drafts
    Channel home-spam
    Channel home-trash
    
    sudo su - vmail -c "mbsync -a -c /var/mail/archiwizacja -V"

    Jeśli w/w plik uruchomię na pustej skrzynce pocztowej o otrzymam w efekcie taki sam wynik jak w przypadku konfiguracji z pkt. 2. Natomiast jeśli będzie na odwrót, to mbsync utworzy odpowiednie foldery i pobierze do nich wiadomości.

  4. W/w czynności powtarzam tyle razy ile skrzynek pocztowych muszę zarchiwizować. Robiłem to przez modyfikację pliku archiwizacja. Mógłbym przygotować dla każdej skrzynki osobny plik i ustawić crona, aby automatycznie raz na 6 - 12 miesięcy wykonywana była archiwizacja, jednak w moim przypadku nie było to potrzebne.

  5. Po zakończeniu synchronizacji przechodzę do przeglądarki internetowej i loguję się na skrzynkę, którą synchronizowałem. Domyślnie Roundcube będzie wyświetlał tylko folder Odebrane więc w lewym górym rogu ekranu klikam w i z menu, które pojawi się na ekranie wybieram Zarządzaj folderami.

    Następnie "włączam" poszczególne foldery.

    Z menu po lewej stronie klikam w Poczta, aby wrócić do głównego widoku i na liście folderów widzę wszystkie aktywowane foldery.

  6. Ostatnią rzeczą, którą wykonuję to ustawienie sortowania ponieważ w tym momencie wszystkie wiadomości są pomieszane. W górnym menu klikam w Opcje, na ekranie pojawi się okno Opcje listy, w którym przechodzę do Porządek sortowania i z listy wybieram Data odbioru.

    Po zatwierdzeniu zmian, wiadomości zostaną posortowane od najnowszych do najstarszych.

  7. Po zakończonym pobieraniu wiadomości ustawiam foldery wszystkich skrzynek tylko do odczytu (domyślna wartość wynosi 2700).
    sudo find /var/mail/vhosts -type d -name "cur" -printf "%P\n" -exec chmod 2500 {} \;
0 komentarzy

Szybki kontakt

Masz pytania? Napisz