Si të instaloni Tiny Tiny RSS Reader në një FreeBSD 11 FAMP VPS
Përdorimi i një sistemi të ndryshëm? Tiny Tiny RSS Reader është një lexues dhe grumbullues i lajmeve të bazuara në ueb (RSS/Atom), falas dhe me burim të hapur, i krijuar për të dhënë
Drejtimi i serverit tuaj të emailit mund të jetë mjaft shpërblyes. Ju jeni përgjegjës për të dhënat tuaja. Gjithashtu ju lejon më shumë fleksibilitet me opsionet tuaja të dorëzimit. Megjithatë, ka disa sfida. Ju rrezikoni të hapni serverin tuaj deri në dobësi, si dhe ta bëni serverin tuaj një stafetë të mundshëm për t'u përdorur nga spammers.
Me këtë jashtë rrugës, le të kalojmë në drejtimin e serverit tonë të postës.
Ekzistojnë tre pjesë të nevojshme të softuerit për t'u instaluar që nuk janë të përfshira në sistemin bazë të FreeBSD:
OpenSMTPd është një agjent për transferimin e postës (MTA) dhe agjent për dërgimin e postës (MDA). Kjo do të thotë se ai mund të komunikojë me serverë të tjerë të postës përmes SMTP
protokollit, dhe gjithashtu trajton dërgimin e postës në kutitë postare të përdoruesve individualë. Ne do të konfigurojmë OpenSMTPd në mënyrë që të mund të komunikojë me serverë të jashtëm (të filtruar përmes mesazheve të padëshiruara) dhe të dërgojë postë tek përdoruesit lokalë, si dhe të dërgojë postë lokale nga përdoruesi te përdoruesi.
Dovecot është një MDA që lexon kutitë postare lokale dhe i shërben ato përdoruesve përmes IMAP ose POP3. Ai do të përdorë kutitë postare të përdoruesve lokalë për të shërbyer këtë përmbajtje.
Spamd është një shërbim filtrimi i postës. Ne mund të përcjellim postën përmes mesazheve të padëshiruara, dhe ajo do të filtrojë postën bazuar në një sërë listash të zeza, lista të bardha dhe një listë gri.
Ideja e përgjithshme për këtë server të postës kërkon disa shtigje të ndryshme:
Outside world -> Firewall -> spamd -> OpenSMTPD -> User mail boxes
Outside world -> Firewall (spamd-whitelist) -> OpenSMTPD -> User mailboxes
Outside world -> Firewall (IMAP/POP3) -> Dovecot
Outside world -> Firewall (SMTPD submission)
Për këtë tutorial, ne do të përdorim versionin FreeBSD të PF të OpenBSD për murin tonë të zjarrit. Ju gjithashtu mund të përdorni ipfw
, ku konfigurimi është shumë i ngjashëm.
Shënim: Vultr, si parazgjedhje, bllokon portin 25, i cili përdoret nga serverët SMTP kudo. Nëse dëshironi të ekzekutoni një server plotësisht funksional të postës elektronike, do t'ju duhet ta hapni atë port.
Së pari, ne duhet të instalojmë programet e kërkuara.
Duke supozuar se po ekzekutoni si përdorues me qasje sudo të konfiguruar, ne mund të ekzekutojmë komandat e mëposhtme. Ato do të ndryshojnë në varësi të faktit nëse jeni duke përdorur porte ose paketa.
Nëse nuk keni nevojë për funksione specifike të integruara në këto shërbime, rekomandohet instalimi përmes paketave. Është më e lehtë, kërkon më pak kohë dhe burime të serverit dhe ofron një ndërfaqe intuitive dhe miqësore për përdoruesit.
sudo pkg install opensmtpd dovecot spamd
make
Komandat e mëposhtme do t'ju japin shumë opsione përpilimi, parazgjedhjet do të funksionojnë mirë. Mos i ndryshoni këto nëse nuk e dini saktësisht se çfarë po bëni.
sudo portsnap fetch update # or run portsnap fetch extract if using ports for the first time
cd /usr/ports/mail/opensmtpd
make install # Installs openSMTPd
make clean
cd /usr/ports/mail/dovecot
make install # Installs dovecot
make clean
cd /usr/ports/mail/spamd
make install # Installs spamd
make clean
Do të na duhet të shtojmë rreshtat e mëposhtëm në /etc/rc.conf
:
pf_enable="YES"
pf_rules="/usr/local/etc/pf.conf"
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
obspamd_enable="YES"
obspamd_flags="-v"
obspamlogd_enable="YES"
dovecot_enable="YES"
Për të konfiguruar PF, ne mund të krijojmë /usr/local/etc/pf.conf
:
## Set public interface ##
ext_if="vtnet0"
## set and drop IP ranges on the public interface ##
martians = "{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, \
10.0.0.0/8, 169.254.0.0/16, 192.0.2.0/24, \
0.0.0.0/8, 240.0.0.0/4 }"
table <spamd> persist
table <spamd-white> persist
# Whitelisted webmail services
table <webmail> persist file "/usr/local/etc/pf.webmail.ip.conf"
## Skip loop back interface - Skip all PF processing on interface ##
set skip on lo
## Sets the interface for which PF should gather statistics such as bytes in/out and packets passed/blocked ##
set loginterface $ext_if
# Deal with attacks based on incorrect handling of packet fragments
scrub in all
# Pass spamd whitelist
pass quick log on $ext_if inet proto tcp from <spamd-white> to $ext_if port smtp \
-> 127.0.0.1 port 25
# Pass webmail servers
rdr pass quick log on $ext_if inet proto tcp from <gmail> to $ext_if port smtp \
-> 127.0.0.1 port 25
# pass submission messages.
pass quick log on $ext_if inet proto tcp from any to $ext_if port submission modulate state
# Pass unknown mail to spamd
rdr pass log on $ext_if inet proto tcp from {!<spamd-white> <spamd>} to $ext_if port smtp \
-> 127.0.0.1 port 8025
## Blocking spoofed packets
antispoof quick for $ext_if
## Set default policy ##
block return in log all
block out all
# Drop all Non-Routable Addresses
block drop in quick on $ext_if from $martians to any
block drop out quick on $ext_if from any to $martians
pass in inet proto tcp to $ext_if port ssh
# Allow Ping-Pong stuff. Be a good sysadmin
pass inet proto icmp icmp-type echoreq
# Open up imap/pop3 support
pass quick on $ext_if proto tcp from any to any port {imap, imaps, pop3, pop3s} modulate state
# Allow outgoing traffic
pass out on $ext_if proto tcp from any to any modulate state
pass out on $ext_if proto udp from any to any keep state
Ky është një konfigurim funksional PF. Është relativisht e thjeshtë, por ka edhe disa veçori për t'u shpjeguar.
Së pari, ne përcaktojmë $ext_if
variablin tonë që vtnet0
pajisja jonë ta përdorë më vonë. Ne përcaktojmë gjithashtu adresa IP të pavlefshme që duhet të hidhen në ndërfaqen e jashtme.
Ne gjithashtu përcaktojmë dy tabela, spamd
dhe spamd-white
- këto dy tabela janë krijuar nga spamd në konfigurimin e tij të paracaktuar. Gjithashtu, ne përcaktojmë një tabelë të quajtur të webmail
cilën do ta përdorim për të lejuar kalimin e disa ofruesve kryesorë të postës elektronike.
Për të parë një tabelë, mund të përdorni komandën pfctl -t tablename -T show
për të renditur elementet në një tabelë.
Ne vendosëm disa rregulla PF: kapërceni përpunimin në ndërfaqen lokale, aktivizoni statistikat në ndërfaqen e jashtme dhe pastroni paketat hyrëse.
Tjetra është një nga pjesët më të rëndësishme, ku ne menaxhojmë dërgimin e trafikut tonë në spamd ose OpenSMTPd.
Së pari është një rregull ridrejtues (vini re sintaksën këtu, FreeBSD 11 përdor sintaksën PF të stilit më të vjetër (para-OpenBSD 4.6) kështu që sintaksa mund të duket e çuditshme. Nëse marrim ndonjë gjë në smtp nga një host i listuar në spamd
tabelë ose jo i listuar në spamd-white
tabela, ne përcjellim lidhjen përmes të daemon spamd, e cila merret me këto lidhje. tre rregullat e ardhshme rregulla tejpertej te permendur në mënyrë që ne në fakt mund të merrni postë. Ne të kalojë përmes mesazheve nga IP listuara në spamd-white
dhe webmail
tavolina drejt përmes të OpenSMTPd Gjithashtu, ne pranojmë mesazhe në portën e paraqitjes ( 587
).
Pastaj ka disa rregulla të ruajtjes për të vendosur politikën tonë të paracaktuar dhe për të pranuar mesazhet SSH dhe ICMP.
Më pas kalojmë IMAP dhe POP3 në ndërfaqen tonë të jashtme për të hyrë në Dovecot.
Së fundi ne lejojmë të gjithë trafikun dalës. Nëse dëshironi të shtoni siguri shtesë, mund të kufizoni portat që kaloni, por për një server me përdorim të vetëm nuk është problem të kalosh gjithçka.
Filloni PF:
sudo service pf start
Tani që kemi konfigurimin e murit të zjarrit, mund të kalojmë te konfigurimi i serverit tonë të postës.
OpenSMTPd ka një sintaksë konfigurimi shumë të thjeshtë dhe të lehtë për t'u lexuar. Një konfigurim i tërë pune mund të përshtatet në 14 rreshta, siç mund ta shihni më poshtë:
#This is the smtpd server system-wide configuration file.
# See smtpd.conf(5) for more information.
ext_if=vtnet0
# If you edit the file, you have to run "smtpctl update table aliases"
table aliases file:/etc/mail/aliases
table domains file:/etc/mail/domains
# Keys
pki mail.example.com key "/usr/local/etc/letsencrypt/live/mail.example.com/privkey.pem"
pki mail.example.com certificate "/usr/local/etc/letsencrypt/live/mail.example.com/fullchain.pem"
# If you want to listen on multiple subdomains (e.g. mail.davidlenfesty) you have to add more lines
# of keys, and more lines of listeners
# Listen for local SMTP connections
listen on localhost hostname mail.example.com
# listen for filtered spamd connections
listen on lo0 port 10026
# Listen for submissions
listen on $ext_if port 587 tls-require auth pki mail.example.com tag SUBMITTED
# Accept mail from external sources.
accept from any for domain <domains> alias <aliases> deliver to maildir "~/mail"
accept for local alias <aliases> deliver to maildir "~/mail"
accept from local for any relay tls
accept tagged SUBMITTED for any relay tls
Së pari, ne përsëri përcaktojmë ndërfaqen tonë të jashtme, si dhe disa tabela, pseudonime dhe domene. Më pas kalojmë te çelësi SSL dhe certifikata për çdo domen ku duam të trajtojmë postën.
In the next section, we define the interfaces and ports we want to listen on. Firstly, we listen on localhost for our mail.example.com
domain, for any local connections. Then we listen for our spamd-filtered messages and submitted messages on the external interface. Lastly, we listen for submissions, these happen on port 587
and we are requiring them to authenticate, for security reasons.
Lastly are our accept
settings. We accept any message for any of our domains defined in our domains
table for aliases in our aliases
table, to deliver to their home directory in the maildir
format. Then we accept all local connections for local mailboxes and relay out our messages, so we can send email. Lastly, we accept our submitted messages to relay. If we didn't require authentication for our submissions port, this would be a big security hazard. This would let anyone use our server as a spam relay.
FreeBSD ships with a default alias file /etc/mail/aliases
in the following format:
vuser1: user1
vuser2: user1
vuser3: user1
vuser4: user2
This defines the different mail boxes, and where we want to forward messages sent to these defined mailboxes. We can either define our users as local system users or external mailboxes to forward to. The default FreeBSD file is quite descriptive so you can refer to that for reference.
FreeBSD does not supply a default domains file, but this is incredibly simple:
# Domains
example.com
mail.example.com
smtp.example.com
This is just a plain text file with each domain you want to listen to on a new line. You can make a comment using the #
symbol. This file exists simply so that you can use fewer lines of configuration.
There are two ways to be able to secure your communications with your mail server, self-signed and signed certificates. It is certainly possible to self-sign your certificates, however services like Let's Encrypt provide free and incredibly easy to use signing.
First we have to install the certbot program.
sudo pkg install py-certbot
Alternatively, it can be installed with ports:
cd /usr/ports/security/py-certbot
make install
make clean
Then, to get your certificate, you need to make sure you have opened up port 80
on your external interface. Add the following lines somewhere in your filtering rules in /usr/local/etc/pf.conf
:
pass quick on $ext_if from any to any port http
Then run pfctl -f /usr/local/etc/pf.conf
to reload the ruleset.
Then you can run the command for any domains you want to get a certificate for:
certbot certonly --standalone -d mail.example.com
It is recommended to set up a crontab entry to run certbot renew
once every 6 months to ensure your certificates don't expire.
Then for every relevant domain, you can modify the lines to point to the correct key file:
pki mail.example.com key "/usr/local/etc/letsencrypt/live/mail.example.com/privkey.pem"
pki mail.example.com certificate "/usr/local/etc/letsencrypt/live/mail.example.com/fullchain.pem"
Edit the securities:
sudo chmod 700 /usr/local/etc/letsencrypt/archive/mail.example.com/*
Note: You will have to do this for each original keyfile or else OpenSMTPd won't open them.
Now we can start the service:
sudo service smtpd start
Here we are using OpenBSD's spamd daemon to reduce the amount of spam we get from the internet. Essentially, this filters out messages from IPs that are known as bad from various spam sources, as well as (by default) "greylisting" incoming connections. Spamd also tries to waste spammer's timme by "stuttering" blacklisted and greylisted connections, which means it spreads out it's response over several seconds which forces the client to stay open for longer than usual.
Greylisting a connection is done when any new IP address connects that isn't on any blacklist or whitelist. Once the new address connects, spamd drops the message with an inocuous error message, then it adds it to a temporary list. Because spammers get paid for delivered messages, they will not retry on an error, whereas a legitimate service will retry relatively soon.
You will have to run the following to mount fdescfs
:
mount -t fdescfs null /dev/fd
Then you will have to add this line to /etc/fstab
:
fdescfs /dev/fd fdescfs rw 0 0
The default config file (found in /usr/local/etc/spamd/spamd.conf.sample
) will work fine. You can edit it to add new sources or change the sources you use:
sudo cp /usr/local/etc/spamd/spamd.conf.sample /usr/local/etc/spamd/spamd.conf
We can start the service with the following:
sudo service obspamd start
At this point spamd is set up.
One problem with the greylisting approach is that large mail services will often send mail out through one of many different spools, and you aren't guaranteed to get the same server sending the message every time. One solution to this is to whitelist the IP ranges used by various webmail services. This is what the webmail table is used for in the PF configuration. This strategy can backfire if you include an IP address a spammer uses, but as long as you are careful with what ranges you put in the table you will be fine.
To add an email range to the webmail table, you can run the following command:
pfctl -t webmail -T add 192.0.2.0/24
If you want users to access their mail without logging in via SSH, you'll need an MDA that supports IMAP and/or POP3. A very popular program is Dovecot, with a fairly simple configuration and powerful features.
Mund të kopjojmë mbi konfigurimin e paracaktuar:
cd /usr/local/etc/dovecot
cp -R example-config/* ./
Konfigurimi përbëhet nga mjaft skedarë të ndryshëm. Për të parë ndryshimet midis konfigurimit tuaj dhe parazgjedhjeve të dovecot, ekzekutoni komandën më poshtë:
sudo doveconf -n
Më poshtë është një konfigurim i thjeshtë, funksional:
# 2.3.2.1 (0719df592): /usr/local/etc/dovecot/dovecot.conf
# OS: FreeBSD 11.2-RELEASE amd64
# Hostname: mail.example.com
hostname = mail.example.com
mail_location = maildir:~/mail
namespace inbox {
inbox = yes
location =
mailbox Archive {
auto = create
special_use = \Archive
}
mailbox Archives {
auto = create
special_use = \Archive
}
mailbox Drafts {
auto = subscribe
special_use = \Drafts
}
mailbox Junk {
auto = create
autoexpunge = 60 days
special_use = \Junk
}
mailbox Sent {
auto = subscribe
special_use = \Sent
}
mailbox "Sent Mail" {
auto = no
special_use = \Sent
}
mailbox "Sent Messages" {
auto = no
special_use = \Sent
}
mailbox Spam {
auto = no
special_use = \Junk
}
mailbox Trash {
auto = no
autoexpunge = 90 days
special_use = \Trash
}
prefix =
separator = /
}
passdb {
args = imap
driver = pam
}
ssl = required
ssl_cert = </usr/local/etc/letsencrypt/live/mail.example.com/fullchain.pem
ssl_dh = </usr/local/etc/dovecot/dh.pem
ssl_key = </usr/local/etc/letsencrypt/live/mail.example.com/privkey.pem
userdb {
driver = passwd
}
Shumica e skedarëve të konfigurimit do të jenë në conf.d
Më të rëndësishmet janë 10-auth.conf
, 10-mail.conf
, dhe 10-ssl.conf
.
Ju mund të konfiguroni kuti postare të ndryshme që përdorni në 15-mailboxes.conf
. Ajo që shihni më sipër është një konfigurim i mirë për shumë sisteme, por kilometrazhi juaj mund të ndryshojë. Rekomandohet që të luani me këtë me sa më shumë klientë të ndryshëm që të mundeni.
Shumica e cilësimeve të paracaktuara do të jenë të sakta. Nëse dëshironi të përdorni përdoruesit e sistemit për të vërtetuar, do t'ju duhet të redaktoni 10-auth.conf
.
Zhkomentoni rreshtin e mëposhtëm:
!include auth-system.conf.ext
Ne duhet të gjenerojmë parametrat Diffie-Hellman:
sudo nohup openssl dhparam -out /usr/local/etc/dovecot/dh.pem
Shënim: Kjo do të marrë një kohë të gjatë për të ekzekutuar. Shumë më gjatë se sa mund të prisni.
Tani mund të fillojmë Dovecot:
sudo service dovecot start
Në këtë pikë, ne kemi një server postar funksional, të sigurt dhe relativisht pa spam.
Disa gjëra të tjera për të parë nga këtu janë përdorimi i SpamAssassin për të hequr qafe spam-in në mënyrë heuristike, si dhe gjetja e më shumë listave të zeza të mesazheve të padëshiruara të nxjerra nga burime që ju besoni.
Përdorimi i një sistemi të ndryshëm? Tiny Tiny RSS Reader është një lexues dhe grumbullues i lajmeve të bazuara në ueb (RSS/Atom), falas dhe me burim të hapur, i krijuar për të dhënë
Përdorimi i një sistemi të ndryshëm? Wiki.js është një aplikacion modern wiki falas dhe me burim të hapur i ndërtuar në Node.js, MongoDB, Git dhe Markdown. Kodi burimor i Wiki.js është publik
Përdorimi i një sistemi të ndryshëm? Pagekit 1.0 CMS është një Sistem i Menaxhimit të Përmbajtjes (CMS) i bukur, modular, i zgjatshëm dhe i lehtë, pa pagesë dhe me burim të hapur me
Përdorimi i një sistemi të ndryshëm? MODX Revolution është një Sistem i Menaxhimit të Përmbajtjes (CMS) i shpejtë, fleksibël, i shkallëzuar, me burim të hapur, i shkallës së ndërmarrjes, i shkruar në PHP. Ajo i
Ky artikull ju udhëzon në konfigurimin e OpenBSD 5.5 (64-bit) në KVM me një Vultr VPS. Hapi 1. Hyni në panelin e kontrollit Vultr. Hapi 2. Klikoni DEPLOY
Përdorimi i një sistemi të ndryshëm? osTicket është një sistem biletash për mbështetjen e klientit me burim të hapur. Kodi burimor i osTicket është i pritur publikisht në Github. Në këtë tutorial
Përdorimi i një sistemi të ndryshëm? Flarum është një softuer forumi i gjeneratës së ardhshme pa pagesë dhe me burim të hapur që e bën diskutimin në internet argëtues. Kodi burimor i Flarum është pritur o
Përdorimi i një sistemi të ndryshëm? TLS 1.3 është një version i protokollit të Sigurisë së Shtresës së Transportit (TLS) që u publikua në 2018 si një standard i propozuar në RFC 8446
Hyrje WordPress është sistemi dominues i menaxhimit të përmbajtjes në internet. Ai fuqizon gjithçka, nga blogjet tek faqet e internetit komplekse me përmbajtje dinamike
Përdorimi i një sistemi të ndryshëm? Subrion 4.1 CMS është një sistem i fuqishëm dhe fleksibël i menaxhimit të përmbajtjes me burim të hapur (CMS) që sjell një përmbajtje intuitive dhe të qartë
Ky tutorial do t'ju tregojë se si të konfiguroni një shërbim DNS që është i lehtë për t'u mirëmbajtur, i lehtë për t'u konfiguruar dhe që në përgjithësi është më i sigurt se BIN klasik.
Një grumbull FEMP, i cili është i krahasueshëm me një pirg LEMP në Linux, është një koleksion softuerësh me burim të hapur që zakonisht instalohet së bashku për të mundësuar një FreeBS
MongoDB është një bazë të dhënash NoSQL e klasit botëror që përdoret shpesh në aplikacionet më të reja në internet. Ai siguron pyetje, ndarje dhe përsëritje me performancë të lartë
Përdorimi i një sistemi të ndryshëm? Monica është një sistem i menaxhimit të marrëdhënieve personale me burim të hapur. Mendoni për atë si një CRM (një mjet popullor i përdorur nga ekipet e shitjeve në th
Hyrje Ky tutorial demonstron OpenBSD si një zgjidhje e-commerce duke përdorur PrestaShop dhe Apache. Kërkohet Apache sepse PrestaShop ka UR komplekse
Përdorimi i një sistemi të ndryshëm? Fork është një CMS me burim të hapur i shkruar në PHP. Kodi burimor i Forks është pritur në GitHub. Ky udhëzues do t'ju tregojë se si të instaloni Fork CM
Përdorimi i një sistemi të ndryshëm? Directus 6.4 CMS është një sistem i fuqishëm dhe fleksibël, pa pagesë dhe me burim të hapur Headless Content Management System (CMS) që ofron zhvillues
Serverët VPS janë shpesh në shënjestër nga ndërhyrës. Një lloj i zakonshëm sulmi shfaqet në regjistrat e sistemit si qindra përpjekje të paautorizuara për hyrje ssh. Vendosja
Hyrje OpenBSD 5.6 prezantoi një daemon të ri të quajtur httpd, i cili mbështet CGI (nëpërmjet FastCGI) dhe TLS. Nuk nevojitet punë shtesë për të instaluar http-in e ri
Ky tutorial do t'ju tregojë se si të instaloni grupin iRedMail në një instalim të ri të FreeBSD 10. Ju duhet të përdorni një server me të paktën një gigabajt o
Inteligjenca Artificiale nuk është në të ardhmen, është këtu në të tashmen Në këtë blog Lexoni se si aplikacionet e inteligjencës artificiale kanë ndikuar në sektorë të ndryshëm.
A jeni edhe ju viktimë e Sulmeve DDOS dhe jeni konfuz në lidhje me metodat e parandalimit? Lexoni këtë artikull për të zgjidhur pyetjet tuaja.
Ju mund të keni dëgjuar se hakerët fitojnë shumë para, por a keni menduar ndonjëherë se si i fitojnë ato para? Le te diskutojme.
Dëshironi të shihni shpikjet revolucionare nga Google dhe se si këto shpikje ndryshuan jetën e çdo njeriu sot? Më pas lexoni në blog për të parë shpikjet nga Google.
Koncepti i makinave vetë-drejtuese për të dalë në rrugë me ndihmën e inteligjencës artificiale është një ëndërr që e kemi prej kohësh. Por, pavarësisht nga disa premtime, ato nuk shihen askund. Lexoni këtë blog për të mësuar më shumë…
Ndërsa Shkenca evoluon me një ritëm të shpejtë, duke marrë përsipër shumë nga përpjekjet tona, rriten edhe rreziqet për t'iu nënshtruar një Singulariteti të pashpjegueshëm. Lexoni, çfarë mund të thotë singulariteti për ne.
Metodat e ruajtjes së të dhënave kanë evoluar mund të jenë që nga lindja e të dhënave. Ky blog mbulon evolucionin e ruajtjes së të dhënave në bazë të një infografike.
Lexoni blogun për të njohur shtresat e ndryshme në arkitekturën e të dhënave të mëdha dhe funksionalitetet e tyre në mënyrën më të thjeshtë.
Në këtë botë të drejtuar nga dixhitali, pajisjet inteligjente të shtëpisë janë bërë një pjesë thelbësore e jetës. Këtu janë disa përfitime të mahnitshme të pajisjeve shtëpiake inteligjente se si ato e bëjnë jetën tonë të vlefshme dhe më të thjeshtë.
Së fundmi Apple lëshoi macOS Catalina 10.15.4 një përditësim shtesë për të rregulluar problemet, por duket se përditësimi po shkakton më shumë probleme që çojnë në bricking të makinerive mac. Lexoni këtë artikull për të mësuar më shumë