Server E-Mail OpenBSD Menggunakan OpenSMTPD, Dovecot, Rspamd, dan RainLoop

pengantar

Tutorial ini menunjukkan server email berfitur lengkap yang berjalan di OpenBSD menggunakan OpenSMTPD, Dovecot, Rspamd, dan RainLoop. OpenSMTPD adalah server email default untuk OpenBSD. Pilih instance Vultr Compute Cloud dengan banyak penyimpanan untuk jumlah pengguna yang diharapkan.

Langkah Awal

Siapkan akun pengguna Anda untuk melakukan tugas sebagai root.

su -
usermod -G wheel <username>
echo "permit nopass keepenv :wheel" > /etc/doas.conf
exit

Siapkan repositori paket untuk OpenBSD.

doas su
echo "https://cdn.openbsd.org/pub/OpenBSD" > /etc/installurl
exit

Tambahkan paket yang diperlukan.

doas pkg_add opensmtpd-extras opensmtpd-filter-rspamd dovecot dovecot-pigeonhole rspamd redis

Konfigurasikan OpenSMTPD

Secara default, OpenSMTPD hanya mendengarkan di localhost. Itu harus dikonfigurasi secara eksplisit untuk mendengarkan pada antarmuka eksternal. Ini harus dikonfigurasi untuk menggunakan pengguna virtual, bukan pengguna sistem untuk keamanan.

Cadangkan /etc/smtpd.conffile default dan buat yang baru dari awal.

cd /etc/mail
mv smtpd.conf smtpd.conf.default

Buat yang baru smtpd.confseperti yang ditunjukkan di bawah ini. Ganti example.comdengan domain Anda. Konfigurasi awal ini tidak mengaktifkan filter rspamd saat menguji OpenSMTP. Filter spam akan diaktifkan nanti.

pki "mail" cert "/etc/ssl/mail.crt"
pki "mail" key "/etc/ssl/private/mail.key"

table aliases file:/etc/mail/aliases
table credentials passwd:/etc/mail/credentials
table virtuals file:/etc/mail/virtuals

filter "rspamd" proc-exec "/usr/local/libexec/smtpd/filter-rspamd"

# To accept external mail, replace with: listen on all

# listen on all tls pki "mail" hostname "mail.example.com"
listen on egress port submission tls-require pki "mail" hostname "mail.example.com" \
  auth <credentials>

action "local_mail" mbox alias <aliases>
action "domain_mail" maildir "/var/vmail/example.com/%{dest.user}" \
  virtual <virtuals>
action "outbound" relay

# Uncomment the following to accept external mail for domain "example.org"

# match from any for domain "example.com" action "domain_mail"
match from local for local action "local_mail"

match from local for any action "outbound"
match auth from any for any action "outbound"

Buat File / etc / credentials

OpenSMTPD dan Dovecot dapat berbagi database otentikasi. Basis data ini menyerupai file kata sandi sistem dalam format, dengan dua bidang tambahan untuk Dovecot. Dua bidang khusus menentukan direktori home virtual dan lokasi email. Kata sandi dalam format blowfish. Tutorial ini menciptakan tiga contoh pengguna.

Buat kata sandi dan gabungkan ke /etc/mail/credentialsfile.

doas su
smtpctl encrypt example_password1 >> /etc/mail/credentials
smtpctl encrypt example_password2 >> /etc/mail/credentials
smtpctl encrypt example_password3 >> /etc/mail/credentials
exit

Outputnya mirip dengan ini:

$2b$10$agmNBPvFm1zqCjbbZC3JbO4Ns2jJNZQfTS45MAnKi.IPrkKITyTa6
$2b$10$LwkcKVVnwG8hDxu2W4YKD.K0kQ2oylOmQ9SBUb0hIopBsmNxYPb4e
$2b$10$bgLW/GMZyRXKbROgRQIvRu4xbeOqOJJXlgEAKuS5sIrBvfdPvEzeq

Edit /etc/mail/credentialsuntuk menambahkan bidang yang diperlukan. Setiap baris memetakan ke akun sistem, vmail , dengan UID dan GID 2000 . Ganti example.com dengan domain Anda. Nama pengguna virtual adalah alamat email lengkap.

[email protected]:$2b$10$agmNBPvFm1zqCjbbZC3JbO4Ns2jJNZQfTS45MAnKi.IPrkKITyTa6:vmail:2000:2000:/var/vmail/example.com/john::userdb_mail=maildir:/var/vmail/example.com/john
[email protected]:$2b$10$LwkcKVVnwG8hDxu2W4YKD.K0kQ2oylOmQ9SBUb0hIopBsmNxYPb4e:vmail:2000:2000:/var/vmail/example.com/adam::userdb_mail=maildir:/var/vmail/example.com/adam
[email protected]:$2b$10$bgLW/GMZyRXKbROgRQIvRu4xbeOqOJJXlgEAKuS5sIrBvfdPvEzeq:vmail:2000:2000:/var/vmail/example.com/natalie::userdb_mail=maildir:/var/vmail/example.com/natalie

Buat Akun Email Virtual dan Setel Keamanan

  • Tetapkan /etc/mail/credentialsizin untuk hanya-baca untuk _smtpddan _dovecotpengguna sistem.
  • Buat vmailpengguna sistem, grup, dan direktori home.

    • Bila Anda membuat sistem vmail pengguna, Anda akan menerima peringatan berikut: useradd: Warning: home directory '/var/vmail' doesn't exist, and -m was not specified. Ini diharapkan. Ini menghindari kekacauan direktori dengan file dot dari /etc/skel. Mereka tidak diperlukan karena akun vmail tidak mengizinkan masuk.

      doas chmod 0440 / etc / mail / kredensial doas chown smtpd: dovecot / etc / mail / kredensial doas useradd -c "Virtual Mail Account" -d / var / vmail -s / sbin nologin -u 2000 -g = uid -L staf vmail doas mkdir / var / vmail doas chown vmail: vmail / var / vmail

Buat Pemetaan Pengguna Virtual

Buat /etc/mail/virtualsuntuk menentukan alamat email yang valid.

Buat Kunci Publik / Pribadi untuk OpenSMTPD

Contoh ini menggunakan sertifikat yang ditandatangani sendiri. Gunakan sertifikat yang ditandatangani yang valid jika Anda memilikinya. Ketika diminta untuk nama umum, pastikan itu cocok dengan FQDN server. Contoh ini menggunakan mail.example.com.

doas su
cd /etc/ssl
openssl genrsa -out private/mail.key 4096
openssl req -x509 -new -nodes -key private/mail.key -out mail.crt -days 3650 -sha256
chmod 0400 /etc/ssl/private/mail.key
exit

Uji Server

Gunakan pemeriksa sintaksis konfigurasi OpenSMTPD. Jika tidak ada masalah yang ditemukan, restart daemon smtpd.

doas smtpd -n
doas rcctl restart smtpd

Dari akun email luar, kirim email percobaan ke salah satu pengguna.

  • OpenSMTPD akan membuat struktur folder maildir di bawah ini /var/vmaildan mengirimkan email ke /var/vmail/example.com/<username>/new.
  • Sebagai user root, browse ke lokasi ini dan verifiy Anda memiliki file bernama seperti ini: 1576339842.4d64757b.example.com:2,.
  • Tinjau isi file, termasuk semua header surat, untuk memverifikasi pengiriman email berfungsi dengan baik.

    Return-Path: <n0244e80da3-54b1ed125c5342fc-adam===example.org@bounce.example.org>
    Delivered-To: [email protected]
    Received: from spruce-goose-ba.twitter.com (spruce-goose-ba.twitter.com [199.59.150.96])
        by mail.example.com (OpenSMTPD) with ESMTPS id 75b514d3 (TLSv1.2:ECDHE-RSA-AES256-GCM-    SHA384:256:NO)
        for <[email protected]>;
        Sat, 14 Dec 2019 11:10:40 -0500 (EST)
    DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=twitter.com;
        s=dkim-201406; t=1576339839;
        bh=jhKB5/w9v87GaXSuizT576ntJ/72gvLRDhsqmGQQrCE=;
        h=Date:From:To:Subject:MIME-Version:Content-Type:List-Unsubscribe:
        Message-ID;
        b=TWn/QVUJ1VDlWiweWoanwHLABCL1nqmm0+TBzh3PjmYNm0quRMXB7QL2ykzHGME5A
        DTz/JFHa0cOvQsrdhxxbjOLFKimK0nF+Ou5kI+2HzTzfVNZS0qGnTVP/tZyaIsWjjl
        an5EiR6HFOHG4iClOOEOJW4oLDEZfPTefrlW+378bmHGIRUNDvVKrbXKunL9fJFAb3
        JSrhWQNwbrF/aARFzw4nKfb1I7vTRSrN1eXE5JxzGwI2XAjqDIWdR5ExwUNbJH5ZPs
        wQ85j8KLZEEgQkbH9CypgeUMJWsVK95FqOCCaqKMS10M7intGMb3aeiiFcB7yDHi9t
        u7rVESm4eGp/g==
    X-MSFBL: DM7pSZns+YDRgNEmGNre9aPjZTtc1tDlN97w5rQDBts=|eyJ1IjoibWF0dEBnb2J
        sYWNrY2F0LmNvbUBpaWQjIzU0YjFlZDEyNWM1MzQyZmNiNThiMzVmNzI0NDZlMGF
        mQHVzYiMjNkAyNDRAMTA4MjgwNTAxMDYzNzk1MDk3NkAwQDA4MjY5ZWI4OTI3YzR
        kNTFiNTZkMjY3YzY2OGRmN2IwY2Y4M2ExZGIiLCJyIjoibWF0dEBnb2JsYWNrY2F
        0LmNvbSIsImciOiJCdWxrIiwiYiI6InNtZjEtYmd4LTM0LXNyMS1CdWxrLjE4NiJ
        9
    Date: Sat, 14 Dec 2019 16:10:39 +0000
    ...
    

Konfigurasikan Dovecot IMAP

Atur Kelas Login

Dovecot membutuhkan kemampuan untuk memiliki jumlah file yang lebih besar terbuka untuk membaca dan menulis daripada kelas standar memungkinkan. Gagal melakukan ini akan menyebabkan kesalahan yang sulit dipecahkan.

Tentukan kelas login untuk daemon Dovecot. Di bagian bawah /etc/login.conftambahkan baris berikut.

    dovecot:\
        :openfiles-cur=1024:\
        :openfiles-max=2048:\
        :tc=daemon:    

Buat File Konfigurasi Dovecot

Buat /etc/dovecot/local.conf.

auth_mechanisms = plain
first_valid_uid = 2000
first_valid_gid = 2000
mail_location = maildir:/var/vmail/%d/%n
mail_plugin_dir = /usr/local/lib/dovecot
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex  imap4flags copy include variables body enotify environment mailbox date index ihave duplicate mime foreverypart extracttext imapsieve vnd.dovecot.imapsieve
mbox_write_locks = fcntl
mmap_disable = yes
namespace inbox {
  inbox = yes
  location =
  mailbox Archive {
  auto = subscribe
  special_use = \Archive
  }
  mailbox Drafts {
  auto = subscribe
  special_use = \Drafts
  }
  mailbox Junk {
  auto = subscribe
  special_use = \Junk
  }
  mailbox Sent {
  auto = subscribe
  special_use = \Sent
  }
  mailbox Trash {
  auto = subscribe
  special_use = \Trash
  }
  prefix =
}
passdb {
  args = scheme=CRYPT username_format=%u /etc/mail/credentials
  driver = passwd-file
  name =
}
plugin {
  imapsieve_mailbox1_before = file:/usr/local/lib/dovecot/sieve/report-spam.sieve
  imapsieve_mailbox1_causes = COPY
  imapsieve_mailbox1_name = Junk
  imapsieve_mailbox2_before = file:/usr/local/lib/dovecot/sieve/report-ham.sieve
  imapsieve_mailbox2_causes = COPY
  imapsieve_mailbox2_from = Junk
  imapsieve_mailbox2_name = *
  sieve = file:~/sieve;active=~/.dovecot.sieve
  sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment
  sieve_pipe_bin_dir = /usr/local/lib/dovecot/sieve
  sieve_plugins = sieve_imapsieve sieve_extprograms
}
protocols = imap sieve
service imap-login {
  inet_listener imaps {
  port = 0
  }
}
service managesieve-login {
  inet_listener sieve {
  port = 4190
  }
  inet_listener sieve_deprecated {
  port = 2000
  }
}
ssl_cert = </etc/ssl/mail.crt
ssl_key = </etc/ssl/private/mail.key
userdb {
  args = username_format=%u /etc/mail/credentials
  driver = passwd-file
  name =
}
protocol imap {
  mail_plugins = " imap_sieve"
}

Perbaikan Bug Dovecot

Ada bug di Dovecot di mana ssl_certdan ssl_keypengaturan tidak mendapatkan ditimpa dalam local.confberkas sehingga kita harus komentar mereka. Jika Anda melewatkan langkah ini, Dovecot akan gagal memulai dengan benar.

Edit /etc/dovecot/conf.d/10-ssl.confseperti yang ditunjukkan.

...
# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
# dropping root privileges, so keep the key file unreadable by anyone but
# root. Included doc/mkcert.sh can be used to easily generate self-signed
# certificate, just make sure to update the domains in dovecot-openssl.cnf
#ssl_cert = </etc/ssl/dovecotcert.pem
#ssl_key = </etc/ssl/private/dovecot.pem
...

Buat Script Saringan

Saringan skrip melatih Rspamd tentang spam dan ham . Memindahkan email masuk dan keluar dari folder sampah memicu acara untuk melatih Rspamd.

File-file ini terletak di /usr/local/lib/dovecot/sieve.

Buat report-ham.sievefile.

require ["vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables"];

if environment :matches "imap.mailbox" "*" {
  set "mailbox" "${1}";
}

if string "${mailbox}" "Trash" {
  stop;
}

if environment :matches "imap.user" "*" {
  set "username" "${1}";
}

pipe :copy "sa-learn-ham.sh" [ "${username}" ];

Buat report-spam.sievefile.

require ["vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables"];

if environment :matches "imap.user" "*" {
  set "username" "${1}";
}

pipe :copy "sa-learn-spam.sh" [ "${username}" ];

Kompilasi file.

sievec report-ham.sieve
sievec report-spam.sieve 

Buat dua skrip shell berikut di /usr/local/lib/dovecot/sieve

Tambahkan yang berikut ke sa-learn-ham.sh

#!/bin/sh
exec /usr/local/bin/rspamc -d "${1}" learn_ham

Tambahkan yang berikut ke sa-learn-spam.sh

#!/bin/sh
exec /usr/local/bin/rspamc -d "${1}" learn_spam

Jadikan file dapat dieksekusi.

chmod 0755 sa-learn-ham.sh
chmod 0755 sa-learn-spam.sh

Aktifkan dan mulai Dovecot.

rcctl enable dovecot
rcctl start dovecot

Periksa apakah Dovecot dimulai dengan benar.

ps ax | grep dovecot

88005 ??  I        0:00.11 /usr/local/sbin/dovecot
69640 ??  I        0:00.03 dovecot/anvil
91207 ??  I        0:00.03 dovecot/log
98178 ??  I        0:00.19 dovecot/config
34712 ??  I        0:00.06 dovecot/stats
96674 ??  I        0:00.03 dovecot/imap-login
 8891 ??  S        0:00.02 dovecot/imap

Verifikasi Dovecot dapat membaca dengan benar /etc/mail/credentials

doveadm user [email protected]

field    value
uid      2000
gid      2000
home /var/vmail/example.com/john
mail maildir:/var/vmail/example.com/john

Verifikasi bahwa pengguna surat dapat masuk.

doveadm auth login [email protected]

Password: ********
passdb: [email protected] auth succeeded
extra fields:
  [email protected]

userdb extra fields:
  [email protected]
  mail=maildir:/var/vmail/example.com/john
  uid=2000
  gid=2000
  home=/var/vmail/example.com/john
  auth_mech=PLAIN

Siapkan Rspamd

Ini adalah konfigurasi Rspamd dasar, lihat dokumentasi resmi untuk lebih jelasnya. Contoh ini membuat definisi untuk domain kami untuk mengaktifkan penandatanganan DKIM.

Buat keypair publik / pribadi /etc/mail/dkimdan atur izin yang benar.

doas su
mkdir /etc/mail/dkim
cd /etc/mail/dkim
openssl genrsa -out private.key 1024
openssl rsa -in private.key -pubout -out public.key
chmod 0440 private.key
chown root:_rspamd private.key

Buat data DNS untuk DKIM yang berisi kunci publik. Lihat penyedia DNS Anda untuk perincian tentang cara membuat catatan DKIM. Salin konten dari /etc/mail/dkim/public.keydan tempel setelah p=bagian catatan DKIM seperti yang ditunjukkan di bawah ini. Perhatikan contoh ini juga membuat catatan SPF.

default._domainkey.example.com. IN TXT "v=DKIM1;k=rsa;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQClcuK3FV3Ug64li8iFsuJ2ykgb7FMZsujk9uG79ppPUp57vCfjzO7F+HBfx5qIwvlGxv2IJXK86FZwhpUX+HFCDUtfB2z0ZNGerWcZfNzM1w1Bru/fdMd2tCYkiHEa5RWIkLfs/Fm+neXxRZfAG2UDWmAghNbgzYv7xViwgufDIQIDAQAB"
example.com. IN TXT "v=spf1 a ip4:192.0.2.1 mx ~all"

Buat catatan DMARC.

_dmarc.example.com. IN TXT "v=DMARC1;p=none;pct=100;rua=mailto:[email protected]"

Buat /etc/rspamd/local.d/dkim_signing.conffile konfigurasi.

  • The selector="default";garis berasal dari bagian pertama dari catatan DKIM DNS ( default._domainkey....) dibuat di atas.

    domain {
        example.com {
            path = "/etc/mail/dkim/example.com.key";
            selector = "default";
        }
    }
    

Aktifkan dan mulai Rspamd.

doas rcctl enable redis rspamd
doas rcctl start redis rspamd

Ubah baris di bawah ini /etc/mail/smtpd.confdan mulai ulang OpenSMTPD untuk mengaktifkan Rspamd.

...
listen on all tls pki "mail" hostname "mail.example.com" filter "rspamd"
listen on egress port submission tls-require pki "mail" hostname "mail.example.com" \
  auth <credentials> filter "rspamd"
...
rcctl restart smtpd

Uji server email dengan klien email POP3 atau IMAP. Jika Anda tidak memerlukan webmail, berhenti di sini.

(Opsional) Konfigurasikan RainLoop Webmail

Instal Paket Prasyarat

Saat diminta, silakan pilih versi PHP terbaru.

pkg_add php php-curl php-pdo_sqlite php-zip pecl73-mcrypt zip unzip wget curl

Ambil tarbal webmail RainLoop dan ekstrak ke /var/www/htdocs/.

Gunakan Edisi Standar yang mencakup pembaruan otomatis.

cd /tmp
wget https://www.rainloop.net/repository/webmail/rainloop-latest.zip
unzip rainloop-latest.zip -d /var/www/htdocs/rainloop
chown -R www:www /var/www/htdocs

Buat Mari Enkripsi Sertifikat SSL

  • Salin /etc/examples/acme-client.confke/etc
  • Tambahkan baris berikut di bagian bawah file:

    domain webmail.example.com {
    domain key "/etc/ssl/private/webmail.example.com.key"
    domain full chain certificate "/etc/ssl/webmail.example.com.crt"
    sign with letsencrypt
    }
    

Konfigurasikan httpd

  • Buat entri DNS (baik CNAME atau A record) untuk subdomain webmail.example.com
  • Edit /etc/httpd.confmengikuti contoh di bawah ini.

    prefork 3
    types { include "/usr/share/misc/mime.types" }
    
    server "default" {
        listen on egress port 80 
        root "/htdocs"
        directory index index.html
    
        location "/.well-known/acme-challenge/*" {
                root "/acme"
                request strip 2
        }
    }
    

Jalankan pemeriksaan sintaksis httpd.

httpd -n

Aktifkan dan mulai httpd.

rcctl enable httpd
rcctl start httpd

Minta sertifikat Let's Encrypt.

acme-client -v webmail.example.com

Tambahkan definisi server untuk RainLoop ke /etc/httpd.conf

server "webmail.example.com" {
    listen on egress port 80
    block return 302 "https://$SERVER_NAME$REQUEST_URI"
}

server "webmail.example.com" {
    listen on egress tls port 443
    root "/htdocs/rainloop"
    directory index "index.php"

    tcp { nodelay, backlog 10 }

    tls {
            certificate "/etc/ssl/webmail.example.com.crt"
            key "/etc/ssl/private/webmail.example.com.key"
    }

    hsts {
            max-age 31556952
            preload
    }

    # Value below is 25MB in bytes. 1MB = 1048576 bytes
    connection max request body 26214400

    location "/data*" {
            block return 403
    }

    location "*.php*" {
            fastcgi socket "/run/php-fpm.sock"
    }
}

Konfigurasikan PHP untuk memungkinkan lampiran hingga 25 megabita. Buat perubahan berikut di /etc/php-7.3.ini:

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 25M
...
; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
; http://php.net/post-max-size
post_max_size = 29M

Aktifkan modul PHP yang diperlukan dengan menyalin file konfigurasinya /etc/php-7.3/

cp /etc/php-7.3.sample/* /etc/php-7.3/.

Periksa sintaks /etc/httpd.conf

httpd -n

Aktifkan dan mulai httpd dan php-fpm.

rcctl reload httpd
rcctl enable php73_fpm
rcctl start php73_fpm

Ujian akhir

Telusuri ke https://webmail.example.com/?admin.

Nama pengguna default adalah: admin
Sandi default adalah: 12345 .

Telusuri ke masing-masing bagian konfigurasi dan buat perubahan yang Anda inginkan. Setelah Anda selesai dengan konfigurasi, masuk ke webmail dihttps://webmail.example.com



Leave a Comment

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

6 Hal yang Sangat Menggila dari Nintendo Switch

6 Hal yang Sangat Menggila dari Nintendo Switch

Banyak dari Anda tahu Switch keluar pada Maret 2017 dan fitur-fitur barunya. Bagi yang belum tahu, kami sudah menyiapkan daftar fitur yang membuat 'Switch' menjadi 'gadget yang wajib dimiliki'.

Janji Teknologi Yang Masih Belum Ditepati

Janji Teknologi Yang Masih Belum Ditepati

Apakah Anda menunggu raksasa teknologi untuk memenuhi janji mereka? periksa apa yang belum terkirim.

Fungsionalitas Lapisan Arsitektur Referensi Big Data

Fungsionalitas Lapisan Arsitektur Referensi Big Data

Baca blog untuk mengetahui berbagai lapisan dalam Arsitektur Big Data dan fungsinya dengan cara yang paling sederhana.

Bagaimana AI Dapat Membawa Otomatisasi Proses ke Tingkat Selanjutnya?

Bagaimana AI Dapat Membawa Otomatisasi Proses ke Tingkat Selanjutnya?

Baca ini untuk mengetahui bagaimana Kecerdasan Buatan menjadi populer di antara perusahaan skala kecil dan bagaimana hal itu meningkatkan kemungkinan untuk membuat mereka tumbuh dan memberi keunggulan pada pesaing mereka.

CAPTCHA: Berapa Lama Itu Bisa Tetap Menjadi Teknik yang Layak Untuk Perbedaan Human-AI?

CAPTCHA: Berapa Lama Itu Bisa Tetap Menjadi Teknik yang Layak Untuk Perbedaan Human-AI?

CAPTCHA telah berkembang cukup sulit bagi pengguna untuk dipecahkan dalam beberapa tahun terakhir. Apakah itu akan tetap efektif dalam deteksi spam dan bot di masa mendatang?

Singularitas Teknologi: Masa Depan Peradaban Manusia yang Jauh?

Singularitas Teknologi: Masa Depan Peradaban Manusia yang Jauh?

Saat Sains Berkembang dengan kecepatan tinggi, mengambil alih banyak upaya kita, risiko menundukkan diri kita pada Singularitas yang tidak dapat dijelaskan juga meningkat. Baca, apa arti singularitas bagi kita.

Telemedicine Dan Perawatan Kesehatan Jarak Jauh: Masa Depan Ada Di Sini

Telemedicine Dan Perawatan Kesehatan Jarak Jauh: Masa Depan Ada Di Sini

Apa itu telemedicine, perawatan kesehatan jarak jauh dan dampaknya terhadap generasi mendatang? Apakah itu tempat yang bagus atau tidak dalam situasi pandemi? Baca blog untuk menemukan tampilan!

Pernahkah Anda Bertanya-tanya Bagaimana Hacker Menghasilkan Uang?

Pernahkah Anda Bertanya-tanya Bagaimana Hacker Menghasilkan Uang?

Anda mungkin pernah mendengar bahwa peretas menghasilkan banyak uang, tetapi pernahkah Anda bertanya-tanya bagaimana cara mereka mendapatkan uang sebanyak itu? mari berdiskusi.

Pembaruan Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Masalah Daripada Menyelesaikan

Pembaruan Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Masalah Daripada Menyelesaikan

Baru-baru ini Apple merilis macOS Catalina 10.15.4 pembaruan suplemen untuk memperbaiki masalah tetapi tampaknya pembaruan menyebabkan lebih banyak masalah yang mengarah ke bricking mesin mac. Baca artikel ini untuk mempelajari lebih lanjut