Pelayan E-Mel OpenBSD Menggunakan OpenSMTPD, Dovecot, Rspamd, dan RainLoop

Pengenalan

Tutorial ini menunjukkan pelayan e-mel yang lengkap dengan OpenBSD menggunakan OpenSMTPD, Dovecot, Rspamd, dan RainLoop. OpenSMTPD adalah pelayan mel default untuk OpenBSD. Pilih contoh Cloud Vultr Compute dengan banyak storan untuk bilangan pengguna yang dijangkakan.

Langkah awal

Sediakan akaun pengguna anda untuk melaksanakan tugas sebagai root.

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

Sediakan repositori pakej untuk OpenBSD.

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

Tambah pakej yang diperlukan.

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

Konfigurasi OpenSMTPD

Secara lalai, OpenSMTPD hanya mendengar loceng. Ia mesti dikonfigurasikan secara jelas untuk mendengar pada antara muka luaran. Ia harus dikonfigurasikan untuk menggunakan pengguna maya dan bukan pengguna sistem untuk keselamatan.

Sandarkan /etc/smtpd.conffail lalai dan buat yang baru dari awal.

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

Buat yang baru smtpd.confseperti yang ditunjukkan di bawah. Ganti example.comdengan domain anda. Konfigurasi awal ini tidak mengaktifkan penapis rspamd semasa menguji OpenSMTP. Penapis spam akan diaktifkan kemudian.

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 Fail / etc / kelayakan

OpenSMTPD dan Dovecot dapat berkongsi pangkalan data pengesahan. Pangkalan data ini menyerupai fail kata laluan sistem dalam format, dengan dua bidang tambahan untuk Dovecot. Dua bidang khas menentukan direktori rumah maya dan lokasi mel. Kata laluan dalam format blowfish. Tutorial ini mewujudkan tiga contoh pengguna.

Hasilkan kata laluan dan gabungkannya ke /etc/mail/credentialsfail.

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

Keluaran kelihatan seperti ini:

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

Edit /etc/mail/credentialsuntuk menambah medan yang diperlukan. Setiap baris peta ke akaun sistem, vmail , dengan UID dan GID tahun 2000 . Ganti example.com dengan domain anda. Nama pengguna maya ialah alamat e-mel yang 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 Akaun Mel Maya dan Tetapkan Keselamatan

  • Tetapkan /etc/mail/credentialskebenaran untuk baca sahaja _smtpddan _dovecotpengguna sistem.
  • Buat direktori vmailpengguna, kumpulan, dan rumah.

    • Apabila anda membuat pengguna sistem vmail, anda akan menerima amaran berikut: useradd: Warning: home directory '/var/vmail' doesn't exist, and -m was not specified. Ini diharapkan. Ini mengelakkan cluttering direktori dengan fail dot dari /etc/skel. Mereka tidak diperlukan kerana akaun vmail tidak membenarkan masuk.

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

Buat Pemetaan Pengguna Maya

Buat /etc/mail/virtualsuntuk menentukan alamat e-mel yang sah.

Buat Kunci Awam / Swasta untuk OpenSMTPD

Contoh ini menggunakan sijil yang ditandatangani sendiri. Gunakan sijil yang sah jika anda mempunyai satu. Apabila diminta untuk nama umum, pastikan ia sepadan dengan FQDN pelayan. 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 Pelayan

Gunakan pemeriksa sintaks konfigurasi OpenSMTPD. Sekiranya tiada masalah, mulakan semula daemon smtpd.

doas smtpd -n
doas rcctl restart smtpd

Dari akaun mel luar, hantarkan e-mel ujian kepada salah satu pengguna.

  • OpenSMTPD akan membuat struktur folder maildir di bawah /var/vmaildan menghantar surat ke /var/vmail/example.com/<username>/new.
  • Sebagai pengguna akar, browse ke lokasi ini dan mengesahkan sama anda mempunyai fail bernama serupa dengan ini: 1576339842.4d64757b.example.com:2,.
  • Kaji kandungan fail, termasuk semua tajuk surat, untuk memastikan penghantaran e-mel 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
    ...
    

Konfigurasi Dovecot IMAP

Tetapkan Kelas Log Masuk

Dovecot memerlukan kemampuan untuk membuka lebih banyak fail untuk membaca dan menulis daripada yang dibenarkan oleh kelas lalai. Kegagalan melakukan ini akan menyebabkan kesilapan yang sukar diselesaikan.

Tentukan kelas log masuk untuk Dovecot daemon. Di bahagian bawah /etc/login.conftambahkan baris berikut.

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

Buat Fail 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"
}

Betulkan Bug Dovecot

Terdapat bug di Dovecot yang mana ssl_certdan ssl_keytetapannya tidak dapat diterbangkan dalam local.conffail itu supaya kami perlu memberi komen kepada mereka. Sekiranya anda terlepas langkah ini, Dovecot akan gagal bermula dengan betul.

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 Skrip Saringan

Skrip tol melatih Rspamd pada spam dan ham . Melancarkan e-mel ke dalam dan keluar dari folder sampah mencetuskan satu peristiwa untuk melatih Rspamd.

Fail-fail ini terletak pada /usr/local/lib/dovecot/sieve.

Buat report-ham.sievefail itu.

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.sievefail itu.

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

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

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

Menyusun fail.

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

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

Tambah yang berikut sa-learn-ham.sh

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

Tambah yang berikut sa-learn-spam.sh

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

Buat fail boleh laku.

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

Dayakan dan mulakan Dovecot.

rcctl enable dovecot
rcctl start dovecot

Semak bahawa Dovecot bermula dengan betul.

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

Sahkan Dovecot boleh membaca dengan betul /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

Sahkan pengguna mel boleh log 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

Sediakan Rspamd

Ini adalah konfigurasi Rspamd asas, merujuk kepada dokumentasi rasmi untuk maklumat lanjut. Contoh ini mewujudkan definisi untuk domain kami untuk mendayakan penandatanganan DKIM.

Buat keypair awam / swasta /etc/mail/dkimdan tetapkan kebenaran yang betul.

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 rekod DNS untuk DKIM yang mengandungi kunci awam. Rujuk kepada pembekal DNS anda untuk mendapatkan butiran tentang cara membuat rekod DKIM. Salin kandungan dari /etc/mail/dkim/public.keydan tampalkannya selepas p=bahagian rekod DKIM seperti ditunjukkan di bawah. Perhatikan contoh ini juga mencipta rekod 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"

Cipta rekod DMARC.

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

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

  • The selector="default";garis berasal dari bahagian pertama daripada rekod DKIM DNS ( default._domainkey....) dicipta di atas.

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

Dayakan dan mulakan Rspamd.

doas rcctl enable redis rspamd
doas rcctl start redis rspamd

Tukar garisan di bawah /etc/mail/smtpd.confdan mulakan semula OpenSMTPD untuk membolehkan 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 pelayan mel dengan pelanggan e-mel POP3 atau IMAP. Jika anda tidak memerlukan mel web, berhenti di sini.

(Pilihan) Konfigurasi Webmail RainLoop

Pasang Pakej Prasyarat

Apabila digesa, sila pilih versi terkini PHP.

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

Ambil tarball webmail RainLoop dan ekstraknya /var/www/htdocs/.

Gunakan Edisi Piawaian yang termasuk pengemas kini automatik.

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 Sahkan Sijil SSL

  • Salin /etc/examples/acme-client.confke/etc
  • Tambahkan garisan berikut di bahagian bawah fail:

    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 (sama ada CNAME atau rekod A) untuk subdomain webmail.example.com
  • Edit /etc/httpd.confmengikut contoh di bawah.

    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 sintaks httpd.

httpd -n

Dayakan dan mulakan httpd.

rcctl enable httpd
rcctl start httpd

Minta Letakkan enkripsi sijil.

acme-client -v webmail.example.com

Tambahkan definisi pelayan 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"
    }
}

Konfigurasi PHP untuk membolehkan lampiran sehingga 25 megabait. Buat perubahan berikut dalam /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 fail konfigurasi mereka ke /etc/php-7.3/

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

Periksa sintaks /etc/httpd.conf

httpd -n

Aktifkan dan mulakan httpd dan php-fpm.

rcctl reload httpd
rcctl enable php73_fpm
rcctl start php73_fpm

Ujian terakhir

Semak imbas ke https://webmail.example.com/?admin.

Nama pengguna lalai adalah: admin
Kata laluan lalai adalah: 12345 .

Semak imbas kepada setiap bahagian konfigurasi dan buat perubahan yang anda inginkan. Setelah selesai dengan konfigurasi, log masuk ke mel web dihttps://webmail.example.com



Leave a Comment

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

Ramai daripada anda tahu Switch akan keluar pada Mac 2017 dan ciri baharunya. Bagi yang tidak tahu, kami telah menyediakan senarai ciri yang menjadikan 'Tukar' sebagai 'gajet yang mesti ada'.

Janji Teknologi Yang Masih Tidak Ditepati

Janji Teknologi Yang Masih Tidak Ditepati

Adakah anda menunggu gergasi teknologi memenuhi janji mereka? semak apa yang masih belum dihantar.

Fungsi Lapisan Seni Bina Rujukan Data Besar

Fungsi Lapisan Seni Bina Rujukan Data Besar

Baca blog untuk mengetahui lapisan berbeza dalam Seni Bina Data Besar dan fungsinya dengan cara yang paling mudah.

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Baca ini untuk mengetahui cara Kecerdasan Buatan semakin popular di kalangan syarikat berskala kecil dan cara ia meningkatkan kebarangkalian untuk menjadikan mereka berkembang dan memberikan pesaing mereka kelebihan.

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA telah menjadi agak sukar untuk diselesaikan oleh pengguna dalam beberapa tahun kebelakangan ini. Adakah ia dapat kekal berkesan dalam pengesanan spam dan bot pada masa hadapan?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Apabila Sains Berkembang pada kadar yang pantas, mengambil alih banyak usaha kita, risiko untuk menundukkan diri kita kepada Ketunggalan yang tidak dapat dijelaskan juga meningkat. Baca, apakah makna ketunggalan bagi kita.

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Apakah teleperubatan, penjagaan kesihatan jauh dan impaknya kepada generasi akan datang? Adakah ia tempat yang baik atau tidak dalam situasi pandemik? Baca blog untuk mencari paparan!

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Anda mungkin pernah mendengar bahawa penggodam memperoleh banyak wang, tetapi pernahkah anda terfikir bagaimana mereka memperoleh wang seperti itu? Mari berbincang.

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Baru-baru ini Apple mengeluarkan macOS Catalina 10.15.4 kemas kini tambahan untuk menyelesaikan masalah tetapi nampaknya kemas kini itu menyebabkan lebih banyak masalah yang membawa kepada pemusnahan mesin mac. Baca artikel ini untuk mengetahui lebih lanjut