Różnice pomiędzy wersjami 2 i 18 (Spinanie 16 wersji)
⇤ ← Wersja 2 z 2014-03-05 23:51:43 →
Rozmiar: 2479
Edytor: wtps0n
Komentarz: +zfs
← Wersja 18 z 2017-10-09 00:33:35 → ⇥
Rozmiar: 10316
Edytor: wtps0n
Komentarz: + migracja 2.4 -> 3.0
Usunięcia zostały oznaczone w ten sposób. Dodatki zostały oznaczone w ten sposób.
Linia 4: Linia 4:
<<Action(print, Wydrukuj tę dokumentację)>>` `<<Action(SlideShow, Pokaż jako slajdy)>><<BR>>
<<Navigation(children)>>
<<TableOfContents()>><<BR>>
Linia 6: Linia 10:
=== Dopiski do /etc/services === == Dopiski do /etc/services ==
Sam service '''sieve''' doczekał się oficjalnego wpisu w /etc/services jako '''4190/tcp'''. Tak więc tylko te dwa wpisy (o ile będziemy korzystać z FUD lub LMTP).
Linia 10: Linia 15:
sieve 4203/tcp # dla LMTP należy wybrać jedno z dwóch
#
lmtp 4192/tcp
Linia 15: Linia 22:
=== Konfiguracja cyrus.conf ===
Należy odkomentować poniższą linię:
A następnie wykonać przebudowę bazy serwisów:
{{{#!highlight bash numbers=off
/usr/sbin/services_mkdb -q -o /var/db/services.db /etc/services
}}}

== Konfiguracja cyrus.conf ==
Należy zapewnić, aby poniższe linie były aktywne oraz zawierały wartości:
{{{#!highlight ini numbers=off
idled cmd="idled

lmtp cmd="lmtpd" listen="localhost:lmtp" prefork=0

notify cmd="notifyd" listen="/var/imap/socket/notify" proto="udp" prefork=1
}}}

== Konfiguracja imapd.conf ==
[[attachment:imapd.conf|Patrz załącznik]]

(!) Dotyczy konfiguracji związanej z obsługą urządzeń Apple (iPhone). Apple nie respektuje ustawień ''login+hasło'', tylko buduje dane do logowania na podstawie:
Linia 18: Linia 42:
notify cmd="notifyd" listen="/var/imap/socket/notify" proto="udp" prefork=1
}}}

=== Konfiguracja imapd.conf ===
[[attachment:imapd.conf|Patrz załącznik]]

=== Tworzenie drzewa katalogów ===
Jeżeli jest to partycja UFS, to po prostu tworzenie drzewa katalogów. Ale jeżeli korzystamy z ZFS, to warto stworzyć oddzielne partycje. Dzięki temu można będzie łątwo robić backupy (snapshoty), czy zrobić inne ustawienia (np. kompresja).

{{{#!shell numbers=off
login@_serwer_poczty_przychodzacej_ hasło
}}}

Można to poprawić poprzez następujące kroki:
 1. Poprawki w [[SaslAuthd|konfiguracji saslauthd]]
 1. Poprawki w konfiguracji `imapd.conf`
{{{#!highlight json numbers=off
allowplaintext: 1
allowapop: 0
}}}

Powyższe ustawienie wyłącza mechanizm ''APOP'' (''authentication pop''), które zawsze korzysta z bazy '''sasldb2''' zamiast z mechanizmu wskazanego w parametrach samego `saslauthd`. Wyłączenie mechanizmu ''APOP'' powoduje, że urządzenie Apple zaczyna korzystać `saslauthd` (czyli bazy [[http://www.OpenLDAP.org|OpenLDAP|target="_blank"]]).

== Tworzenie drzewa katalogów ==
Jeżeli jest to partycja UFS, to po prostu tworzenie drzewa katalogów. Ale jeżeli korzystamy z ZFS, to warto stworzyć oddzielne partycje. Dzięki temu można będzie łatwo robić backupy (snapshoty), czy zrobić inne ustawienia (np. kompresja).

=== Utworzenie partycji ZFS ===
{{{#!highlight bash numbers=off
# partycja imap zawiera "konfigurację" skrzynek, czy skryptów sieve. Zatem można kompresję włączyć, bo nie wiele to kosztuje
#
zfs create -o compress=gzip -o mountpoint=/var/imap tank/v/imap

# partycja spool zawiera już pocztę. Kompresja? Hmm, może być zbyt wielkim obciążeniem.
# Ale zawsze zablokowanie setuid, czy exec może być pomocne (jako dziedziczone):
#
zfs create -o mountpoint=/var/spool tank/v/spool
zfs create tank/v/spool/imap
}}}

==== Utworzenie partycji ZFS dla beadm ====
{{{#!highlight bash numbers=off
zfs create -o mountpoint=/var/imap sys/data/v/imap
zfs create sys/data/v/spool/imap
}}}

=== Utworzenie potrzebnych katalogów ===
(Poniższe również dla partycji UFS).

{{{#!highlight bash numbers=off
Linia 29: Linia 82:
chown cyrus:cyrus /var/imap/ /var/spool/imap/ /var/imap/user chown cyrus:cyrus /var/imap/ /var/spool/imap/ /var/imap/user /var/imap/sieve
Linia 33: Linia 86:
{{{#!shell numbers=off
# wersja dla ZFS

# partycja imap zawiera "konfigurację" skrzynek, czy skryptów sieve. Zatem można kompresję włączyć, bo nie wiele to kosztuje
#
zfs create -o compress=gzip -o mountpoint=/var/imap tank/v/imap

# partycja spool zawiera już pocztę. Kompresja? Hmm, może być zbyt wielkim obciążeniem.
# Ale zawsze zablokowanie setuid, czy exec może być pomocne (jako dziedziczone):
#
zfs create -o mountpoint=/var/spool tank/v/spool
zfs create tank/v/spool/imap
}}}

=== Dodanie podstawowych kont do bazy cyrus-sasl ===
== Dodanie podstawowych kont do bazy cyrus-sasl ==
Linia 54: Linia 93:
=== Utworzenie konta w OpenLDAP === == Utworzenie konta w OpenLDAP ==
Linia 57: Linia 96:
=== Przenoszenie konta (backup) === == Przenoszenie konta (backup) ==
Linia 59: Linia 98:
{{{ {{{#!highlight bash numbers=off
Linia 62: Linia 101:
tar -czf _skrzynka_seen.tgz -C /var/imap/user/w/ wtp*
Linia 65: Linia 103:
{{{ {{{#!highlight bash numbers=off
Linia 69: Linia 107:
mkdir -p -C /var/imap/user/w/
tar -xzf skrzynka_seen.tgz -C /var/imap/user/w/
}}}
}}}

= Tips and tricks =
Różne sztuczki i kruczki, które wyszły przy przenoszeniu poczty pomiędzy serwerami

== Backup sasldb2 ==
Przy migracji serwera jest możliwe przeniesienie zawartości bazy `/usr/local/etc/sasldb2`:
{{{#!highlight bash numbers=off
# na bieżącym serwerze:
#
db_dump-5 -p /usr/local/etc/sasldb2 > /tmp/sasldb2.backup

# na nowym serwerze:
#
cat /tmp/sasldb2.backup | db_load-5 /usr/local/etc/sasldb2
}}}

== Sprawdzenie rozbieżności pomiędzy bazą danych, a katalogami na dysku ==
{{{#!highlight bash numbers=off
# zgodnie z dokumentacją może być "ciężkie" dla dysku
#
/usr/local/cyrus/bin/ctl_mboxlist -v
}}}

== Naprawa brakujących katalogów, plików na dysku, które są w bazie ==
{{{#!highlight bash numbers=off
su - cyrus -c "/usr/local/cyrus/bin/reconstruct -x user.tcmagda"
su - cyrus -c "/usr/local/cyrus/bin/reconstruct -r user.tcmagda"
}}}

== Kopiowanie kilku skrzynek z całego podrzewa OpenLDAP (tworzenie archiwum) ==
{{{#!highlight bash numbers=off
for m in `ldapsearch -xLLL -b 'ou=__domena__,ou=smtpd,dc=bsdserwis,dc=com' objectClass=person uid | awk '/^uid/ {print $2}'`
do
       p=`echo $m | cut -c1`
       echo -n "Archiving $m ..."
       tar -cf /opt/backups/mx/_${m}.tar -C /var/spool/imap/$p/user/$m .
       echo "Done."
done
}}}

== Kopiowanie kilku skrzynek z całego podrzewa OpenLDAP (rozpakowanie archiwum) ==
{{{#!highlight bash numbers=off
for m in `ldapsearch -xLLL -b 'ou=__domena__,ou=smtpd,dc=bsdserwis,dc=com' objectClass=person uid | awk '/^uid/ {print $2}'`
do
       p=`echo $m | cut -c1`
       echo -n "Extracting $m ..."
       tar -xf /opt/backups/mx/_${m}.tar -C /var/spool/imap/$p/user/$m
       echo "Done."
done
}}}

== Utworzenie skrzynek na podstawie poddrzewa OpenLDAP ==
Głównie dotyczy serwera typu archiwum skrzynek. Tylko oczywiście wcześniej musi działać serwer IMAP :-)
{{{#!highlight bash numbers=off
ldapsearch -xLL -b 'ou=__domena__,ou=smtpd,dc=bsdserwis,dc=com' objectClass=person uid | awk '/^uid/ {print $2}' | xargs -n1 -t /usr/local/admin/vusers/mail_useradd --mbox
}}}

== Sprawdzenie duplikatów dla bazy delivery ==
{{{#!highlight bash numbers=off
/usr/local/cyrus/bin/ctl_deliver -d | grep __Message_ID__
}}}

== Usunięcie duplikatów z bazy delivery (aby móc ponownie wykonać program delivery) ==
{{{#!highlight bash numbers=off
/usr/local/cyrus/bin/cyr_expire -v -E __okres_czasu__ -p user.userid
}}}
gdzie __okres_czasu__ jest domyślnie liczony w dniach. Szczegóły można znaleźć w manualu:
{{{#!highlight bash numbers=off
man -m /usr/local/cyrus/man cyr_expire
}}}

== Wesłanie maili z pliku mbox do właściwej skrzynki ==
{{{#!highlight bash numbers=off
formail -ds sh -c 'cat > msg.$FILENO' < plik_mbox

for f in `ls msg.*`
do
      cat $f | egrep -v '^From ' | /usr/local/cyrus/bin/deliver -a cyrus -m folder userid
done
}}}

= Migracja poczty w ramach serwera Cyrus-IMAPd =
Chodzi o przeniesienie maili z jednej skrzynki (dowolny użytkownik) do drugiej skrzynki (lub folderu). Teoretycznie powinno zadziałać:
{{{#!highlight bash numbers=off
cat _plik_z_mailem | /usr/local/cyrus/bin/deliver -m folder userid
}}}

Ale to domyślnie nie zadziała, a po drugie ponowne próby nie dają pozytywnego rezultatu. A wszystko z powodu ochrony przed duplikatami.

== Ustawienie poprawnie uprawnień do danego folderu ==
Domyślnie program `deliver` jest uruchamiany z uprawnieniami anonymous. Tak więc poprzez `cyradm` należy dać użytkownikowi ''anonymous'' uprawnienia '''p''' (raczej cała ''ścieżka'' w dla danego ''userid'').

== Migracja wiadomości jako użytkownik cyrus ==
Albo uruchomić program `deliver` z odpowiednimi opcjami:
{{{#!highlight bash numbers=off
cat _plik_z_mailem | /usr/local/cyrus/bin/deliver -a cyrus -m folder userid
}}}

= Cyrus IMAP v 3.0.x =

== Zmiany w konfiguracji w stosunku do starszych wersji ==
{{{#!highlight json numbers=off
autocreate_quota: 100000
autocreate_post: 1
autocreate_inbox_folders: Draft|Sent|Trash|Spam|Nonspam
}}}

== Sprawdzenie poprawności konfiguracji ==
{{{#!highlight bash numbers=off
su -l cyrus -c "/usr/local/cyrus/sbin/cyr_info conf-lint -C /etc/imapd.conf -M /etc/cyrus.conf"
}}}

== Migracja z 2.4 ==
Proces migracji do wersji 3.x został opisany w [[http://cyrusimap.org/imap/download/upgrade.html|dokumentacji|target+"_blank]]. Tutaj słów kilka o "''migracji''" z kopiowaniem danych pomiędzy serwerami (migracja arcjiwum).

=== Migracja danych (/var/spool/imap) ===
Migracja partycji z danymi (mailami) działa bez problemu. Po prostu należy przekopiować dane (np. z wykorzystaniem [[ZfsSendRecv|zfs send]]). Pliki ''sterujące'' samego demona zostaną poprawione za pomocą polecenia '''reconstruct'''

=== Migracja katalogu z konfiguracją (/var/imap) ===
Zgodnie z [[http://cyrusimap.org/imap/download/upgrade.html|dokumentacją|target+"_blank]] ten katalog również można po prostu przegrać. Niemniej nie działa to do końca poprawnie. Wynik polecenia `file` pokazał, że [[FreshPorts:mail/cyrus-imapd24|cyrus-imapd24]] nie korzysta z BerkeleyDB, niemniej uruchomienie polecenia '''reconstruct''' powodowało błędy, zaś próba ''wesłania'' poczty zwracało komunikaty: ''No such mailbox''. Rozwiązaniem problemu to założenie skrzynek od początku:

{{{#!highlight bash numbers=off
/usr/local/admin/vusers/mail_useradd --mbox <skrzynka>
}}}

Oczywiście polecenie można uruchomić w jakiejś pętli w celu utworzenia wszystkich skrzynek na serwerze.

=== reconstruct ===
Na koniec migracji należy uruchomić polecenie, które poprawi wszystkie pliki bazy w poszczególnych skrzynkach użytkowników.
{{{#!highlight bash numbers=off
su - cyrus -c "/usr/local/cyrus/sbin/reconstruct -V max"
}}}

/!\ '''UWAGA''' /!\ W przypadku dużych skrzynek, proces może zająć sporo czasu.

= Źródła w sieci internet =
 1. [[http://cyrusimap.org/|strona domowa Cyrus IMAP|target+"_blank]]
 1. [[http://cyrusimap.org/imap/download/upgrade.html|Upgrade do 3.0-stable|target+"_blank]]
Linia 74: Linia 248:
{*} Wszelkie uwagi proszę zgłaszać do administratora strony. {i} ` `<<GetVal(SlownikNewBsd,adm-podpis)>>

Wydrukuj tę dokumentację Pokaż jako slajdy


Konfiguracja Cyrus imapd

Dopiski do /etc/services

Sam service sieve doczekał się oficjalnego wpisu w /etc/services jako 4190/tcp. Tak więc tylko te dwa wpisy (o ile będziemy korzystać z FUD lub LMTP).

# --- added by wtp for cyrus-imapd ------------------------------------
#
# dla LMTP należy wybrać jedno z dwóch
#
lmtp            4192/tcp
lmtp            4205/tcp
fud             4201/udp

A następnie wykonać przebudowę bazy serwisów:

/usr/sbin/services_mkdb -q -o /var/db/services.db /etc/services

Konfiguracja cyrus.conf

Należy zapewnić, aby poniższe linie były aktywne oraz zawierały wartości:

idled         cmd="idled

lmtp          cmd="lmtpd" listen="localhost:lmtp" prefork=0

notify       cmd="notifyd" listen="/var/imap/socket/notify" proto="udp" prefork=1

Konfiguracja imapd.conf

Patrz załącznik

(!) Dotyczy konfiguracji związanej z obsługą urządzeń Apple (iPhone). Apple nie respektuje ustawień login+hasło, tylko buduje dane do logowania na podstawie:

login@_serwer_poczty_przychodzacej_ hasło

Można to poprawić poprzez następujące kroki:

  1. Poprawki w konfiguracji saslauthd

  2. Poprawki w konfiguracji imapd.conf

allowplaintext:         1
allowapop:              0

Powyższe ustawienie wyłącza mechanizm APOP (authentication pop), które zawsze korzysta z bazy sasldb2 zamiast z mechanizmu wskazanego w parametrach samego saslauthd. Wyłączenie mechanizmu APOP powoduje, że urządzenie Apple zaczyna korzystać saslauthd (czyli bazy OpenLDAP).

Tworzenie drzewa katalogów

Jeżeli jest to partycja UFS, to po prostu tworzenie drzewa katalogów. Ale jeżeli korzystamy z ZFS, to warto stworzyć oddzielne partycje. Dzięki temu można będzie łatwo robić backupy (snapshoty), czy zrobić inne ustawienia (np. kompresja).

Utworzenie partycji ZFS

# partycja imap zawiera "konfigurację" skrzynek, czy skryptów sieve. Zatem można kompresję włączyć, bo nie wiele to kosztuje
#
zfs create -o compress=gzip -o mountpoint=/var/imap tank/v/imap

# partycja spool zawiera już pocztę. Kompresja? Hmm, może być zbyt wielkim obciążeniem.
# Ale zawsze zablokowanie setuid, czy exec może być pomocne (jako dziedziczone):
#
zfs create -o mountpoint=/var/spool tank/v/spool
zfs create tank/v/spool/imap

Utworzenie partycji ZFS dla beadm

zfs create -o mountpoint=/var/imap sys/data/v/imap
zfs create sys/data/v/spool/imap

Utworzenie potrzebnych katalogów

(Poniższe również dla partycji UFS).

mkdir -p /var/imap/sieve /var/spool/imap/ /var/imap/user
chown cyrus:cyrus /var/imap/ /var/spool/imap/ /var/imap/user /var/imap/sieve
chmod 0750 /var/imap/ /var/spool/imap/
su - cyrus -c "mkimap"

Dodanie podstawowych kont do bazy cyrus-sasl

saslpasswd2 postmaster@localhost.<domain>
saslpasswd2 postmaster@<hostname>
sasldblistusers2

Utworzenie konta w OpenLDAP

Z analogicznym (jak powyżej) loginem oraz hasłem należyć wykreować konto (SSO) w lokalnej bazie LDAP.

Przenoszenie konta (backup)

W celu odzyskania backupu skrzynki cyrusa, należy wykonać następujące polecenia:

tar -czf _skrzynka.tgz -C /var/spool/imap/w/user/wtp .
/usr/local/cyrus/bin/ctl_mboxlist -d | grep wtp > mbox.dump

Zaś w nowym miejscu:

/usr/local/admin/vuser/useradd_mail.pl wtp
/usr/local/cyrus/bin/ctl_mboxlist -u < mbox.dump
tar -xzf _skrzynka.tgz -C /var/spool/imap/w/user/wtp

Tips and tricks

Różne sztuczki i kruczki, które wyszły przy przenoszeniu poczty pomiędzy serwerami

Backup sasldb2

Przy migracji serwera jest możliwe przeniesienie zawartości bazy /usr/local/etc/sasldb2:

# na bieżącym serwerze:
#
db_dump-5 -p /usr/local/etc/sasldb2 > /tmp/sasldb2.backup

# na nowym serwerze:
#
cat /tmp/sasldb2.backup | db_load-5 /usr/local/etc/sasldb2

Sprawdzenie rozbieżności pomiędzy bazą danych, a katalogami na dysku

# zgodnie z dokumentacją może być "ciężkie" dla dysku
#
/usr/local/cyrus/bin/ctl_mboxlist -v

Naprawa brakujących katalogów, plików na dysku, które są w bazie

su - cyrus -c "/usr/local/cyrus/bin/reconstruct -x user.tcmagda"
su - cyrus -c "/usr/local/cyrus/bin/reconstruct -r user.tcmagda"

Kopiowanie kilku skrzynek z całego podrzewa OpenLDAP (tworzenie archiwum)

for m in `ldapsearch -xLLL -b 'ou=__domena__,ou=smtpd,dc=bsdserwis,dc=com' objectClass=person uid | awk '/^uid/ {print $2}'`
do
       p=`echo $m | cut -c1`
       echo -n "Archiving $m ..."
       tar -cf /opt/backups/mx/_${m}.tar -C /var/spool/imap/$p/user/$m .
       echo "Done."
done

Kopiowanie kilku skrzynek z całego podrzewa OpenLDAP (rozpakowanie archiwum)

for m in `ldapsearch -xLLL -b 'ou=__domena__,ou=smtpd,dc=bsdserwis,dc=com' objectClass=person uid | awk '/^uid/ {print $2}'`
do
       p=`echo $m | cut -c1`
       echo -n "Extracting $m ..."
       tar -xf /opt/backups/mx/_${m}.tar -C /var/spool/imap/$p/user/$m
       echo "Done."
done

Utworzenie skrzynek na podstawie poddrzewa OpenLDAP

Głównie dotyczy serwera typu archiwum skrzynek. Tylko oczywiście wcześniej musi działać serwer IMAP :-)

ldapsearch -xLL -b 'ou=__domena__,ou=smtpd,dc=bsdserwis,dc=com' objectClass=person uid | awk '/^uid/ {print $2}' | xargs -n1 -t /usr/local/admin/vusers/mail_useradd --mbox

Sprawdzenie duplikatów dla bazy delivery

/usr/local/cyrus/bin/ctl_deliver -d | grep __Message_ID__

Usunięcie duplikatów z bazy delivery (aby móc ponownie wykonać program delivery)

/usr/local/cyrus/bin/cyr_expire -v -E __okres_czasu__ -p user.userid

gdzie okres_czasu jest domyślnie liczony w dniach. Szczegóły można znaleźć w manualu:

man -m /usr/local/cyrus/man cyr_expire

Wesłanie maili z pliku mbox do właściwej skrzynki

formail -ds sh -c 'cat > msg.$FILENO' < plik_mbox

for f in `ls msg.*`
do
      cat $f | egrep -v '^From ' | /usr/local/cyrus/bin/deliver -a cyrus -m folder userid
done

Migracja poczty w ramach serwera Cyrus-IMAPd

Chodzi o przeniesienie maili z jednej skrzynki (dowolny użytkownik) do drugiej skrzynki (lub folderu). Teoretycznie powinno zadziałać:

cat _plik_z_mailem | /usr/local/cyrus/bin/deliver -m folder userid

Ale to domyślnie nie zadziała, a po drugie ponowne próby nie dają pozytywnego rezultatu. A wszystko z powodu ochrony przed duplikatami.

Ustawienie poprawnie uprawnień do danego folderu

Domyślnie program deliver jest uruchamiany z uprawnieniami anonymous. Tak więc poprzez cyradm należy dać użytkownikowi anonymous uprawnienia p (raczej cała ścieżka w dla danego userid).

Migracja wiadomości jako użytkownik cyrus

Albo uruchomić program deliver z odpowiednimi opcjami:

cat _plik_z_mailem | /usr/local/cyrus/bin/deliver -a cyrus -m folder userid

Cyrus IMAP v 3.0.x

Zmiany w konfiguracji w stosunku do starszych wersji

autocreate_quota:       100000
autocreate_post:        1
autocreate_inbox_folders: Draft|Sent|Trash|Spam|Nonspam

Sprawdzenie poprawności konfiguracji

su -l cyrus -c "/usr/local/cyrus/sbin/cyr_info conf-lint -C /etc/imapd.conf -M /etc/cyrus.conf"

Migracja z 2.4

Proces migracji do wersji 3.x został opisany w dokumentacji. Tutaj słów kilka o "migracji" z kopiowaniem danych pomiędzy serwerami (migracja arcjiwum).

Migracja danych (/var/spool/imap)

Migracja partycji z danymi (mailami) działa bez problemu. Po prostu należy przekopiować dane (np. z wykorzystaniem zfs send). Pliki sterujące samego demona zostaną poprawione za pomocą polecenia reconstruct

Migracja katalogu z konfiguracją (/var/imap)

Zgodnie z dokumentacją ten katalog również można po prostu przegrać. Niemniej nie działa to do końca poprawnie. Wynik polecenia file pokazał, że cyrus-imapd24 nie korzysta z BerkeleyDB, niemniej uruchomienie polecenia reconstruct powodowało błędy, zaś próba wesłania poczty zwracało komunikaty: No such mailbox. Rozwiązaniem problemu to założenie skrzynek od początku:

/usr/local/admin/vusers/mail_useradd --mbox <skrzynka>

Oczywiście polecenie można uruchomić w jakiejś pętli w celu utworzenia wszystkich skrzynek na serwerze.

reconstruct

Na koniec migracji należy uruchomić polecenie, które poprawi wszystkie pliki bazy w poszczególnych skrzynkach użytkowników.

su - cyrus -c "/usr/local/cyrus/sbin/reconstruct -V max"

/!\ UWAGA /!\ W przypadku dużych skrzynek, proces może zająć sporo czasu.

Źródła w sieci internet

  1. strona domowa Cyrus IMAP

  2. Upgrade do 3.0-stable


{i}  (c) 2004 - 2026 BSD Serwis Krzysztof Stryjek. W przypadku błędów, poprawek proszę kontaktować się z administratorem wiki.

CyrusImapd (ostatnio edytowane 2025-10-27 21:01:47 przez wtps0n)