Un server di posta elettronica OpenBSD che utilizza OpenSMTPD, Dovecot, Rspamd e RainLoop

introduzione

In questa esercitazione viene illustrato un server di posta elettronica completo in esecuzione su OpenBSD utilizzando OpenSMTPD, Dovecot, Rspamd e RainLoop. OpenSMTPD è il server di posta predefinito per OpenBSD. Scegli un'istanza di Vultr Compute Cloud con molto spazio di archiviazione per il numero previsto di utenti.

Fasi preliminari

Imposta il tuo account utente per eseguire le attività come root.

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

Imposta il repository di pacchetti per OpenBSD.

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

Aggiungi i pacchetti richiesti.

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

Configura OpenSMTPD

Per impostazione predefinita, OpenSMTPD è in ascolto solo su localhost. Deve essere esplicitamente configurato per l'ascolto su interfacce esterne. Dovrebbe essere configurato per utilizzare gli utenti virtuali anziché gli utenti di sistema per motivi di sicurezza.

Eseguire il backup del /etc/smtpd.conffile predefinito e crearne uno nuovo da zero.

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

Creane uno nuovo smtpd.confcome mostrato di seguito. Sostituisci example.comcon il tuo dominio. Questa configurazione iniziale non attiva il filtro rspamd durante il test di OpenSMTP. Il filtro antispam verrà attivato in seguito.

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"

Crea il file / etc / credentials

OpenSMTPD e Dovecot possono condividere un database di autenticazione. Questo database ricorda il file della password di sistema in formato, con due campi extra per Dovecot. I due campi speciali definiscono la home directory virtuale e la posizione della posta. Le password sono in formato Blowfish. Questo tutorial crea tre utenti di esempio.

Generare le password e concatenarle nel /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

L'output è simile al seguente:

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

Modifica /etc/mail/credentialsper aggiungere i campi richiesti. Ogni riga è mappata a un account di sistema, vmail , con UID e GID del 2000 . Sostituisci example.com con il tuo dominio. Il nome utente virtuale è l'indirizzo e-mail completo.

[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

Crea un account di posta virtuale e imposta la sicurezza

  • Impostare le /etc/mail/credentialsautorizzazioni per sola lettura per _smtpde _dovecotgli utenti del sistema.
  • Creare l' vmailutente di sistema, il gruppo e la home directory.

    • Quando si crea l'utente del sistema vmail, verrà visualizzato il seguente avviso: useradd: Warning: home directory '/var/vmail' doesn't exist, and -m was not specified. Questo è previsto. Questo evita di ingombrare la directory con file dot da /etc/skel. Non sono richiesti perché l'account vmail non consente l'accesso.

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

Creare la mappatura utente virtuale

Crea /etc/mail/virtualsper definire gli indirizzi email validi.

Crea chiavi pubbliche / private per OpenSMTPD

Questo esempio utilizza un certificato autofirmato. Usa un certificato firmato valido se ne hai uno. Quando viene richiesto il nome comune, assicurarsi che corrisponda al nome di dominio completo (FQDN) del server. Questo esempio utilizza 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

Prova il server

Utilizzare il correttore di sintassi di configurazione OpenSMTPD. Se non si riscontrano problemi, riavviare il demone smtpd.

doas smtpd -n
doas rcctl restart smtpd

Da un account di posta esterno, inviare un'e-mail di prova a uno degli utenti.

  • OpenSMTPD creerà la struttura delle cartelle maildir di seguito /var/vmaile consegnerà la posta a /var/vmail/example.com/<username>/new.
  • Come utente root, passare a questa posizione e verifiy si dispone di un file di nome simile a questo: 1576339842.4d64757b.example.com:2,.
  • Rivedi il contenuto del file, comprese tutte le intestazioni della posta, per verificare che la consegna della posta funzioni correttamente.

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

Configura Dovecot IMAP

Imposta la Classe di accesso

Dovecot richiede la possibilità di avere un numero maggiore di file aperti per la lettura e la scrittura rispetto a quanto consentito dalla classe predefinita. In caso contrario, si verificheranno errori difficili da risolvere.

Definire una classe di accesso per il demone Dovecot. Nella parte inferiore di /etc/login.confaggiungere le seguenti righe.

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

Crea il file di configurazione Dovecot

Crea /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"
}

Correzione bug Dovecot

C'è un bug in Dovecot in cui le impostazioni ssl_certe ssl_keynon vengono sovrascritte nel local.conffile, quindi dobbiamo commentarle. Se perdi questo passaggio, Dovecot non si avvierà correttamente.

Modifica /etc/dovecot/conf.d/10-ssl.confcome mostrato.

...
# 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
...

Crea gli script Sieve

Gli script Sieve addestrano Rspamd su spam e ham . Lo spostamento di e-mail all'interno e all'esterno della cartella spazzatura attiva un evento per addestrare Rspamd.

Questi file si trovano in /usr/local/lib/dovecot/sieve.

Crea il 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}" ];

Crea il 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}" ];

Compila i file.

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

Creare i seguenti due script di shell in /usr/local/lib/dovecot/sieve

Aggiungi quanto segue a sa-learn-ham.sh

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

Aggiungi quanto segue a sa-learn-spam.sh

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

Rendi i file eseguibili.

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

Abilita e avvia Dovecot.

rcctl enable dovecot
rcctl start dovecot

Verifica che Dovecot sia stato avviato correttamente.

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

Verifica che Dovecot possa leggere correttamente /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

Verifica che un utente di posta elettronica possa accedere.

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

Imposta Rspamd

Questa è una configurazione base di Rspamd, fare riferimento alla documentazione ufficiale per maggiori dettagli. Questo esempio crea una definizione per il nostro dominio per abilitare la firma DKIM.

Creare una coppia di chiavi pubblica / privata /etc/mail/dkime impostare le autorizzazioni corrette.

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

Creare un record DNS per DKIM contenente la chiave pubblica. Fare riferimento al proprio provider DNS per i dettagli su come creare un record DKIM. Copia il contenuto /etc/mail/dkim/public.keye incollalo dopo la p=parte del record DKIM come mostrato di seguito. Nota questo esempio crea anche un record 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"

Creare un record DMARC.

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

Crea il /etc/rspamd/local.d/dkim_signing.conffile di configurazione.

  • La selector="default";riga deriva dalla prima parte del record DNS DKIM ( default._domainkey....) creato sopra.

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

Abilita e avvia Rspamd.

doas rcctl enable redis rspamd
doas rcctl start redis rspamd

Cambia le righe sottostanti in /etc/mail/smtpd.confe riavvia OpenSMTPD per abilitare 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

Testare il server di posta con client di posta elettronica POP3 o IMAP. Se non hai bisogno di webmail, fermati qui.

(Facoltativo) Configura RainLoop Webmail

Installa pacchetti prerequisiti

Quando richiesto, selezionare la versione più recente di PHP.

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

Scarica il tarball di webmail RainLoop ed estrailo in /var/www/htdocs/.

Utilizzare la Standard Edition che include un aggiornamento automatico.

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

Crea Let's Encrypt SSL Certificate

  • Copia /etc/examples/acme-client.confin/etc
  • Aggiungi le seguenti righe nella parte inferiore del 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
    }
    

Configura httpd

  • Crea una voce DNS (CNAME o A record) per il sottodominio webmail.example.com
  • Modifica /etc/httpd.confseguendo l'esempio di seguito.

    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
        }
    }
    

Esegui il controllo della sintassi httpd.

httpd -n

Abilita e avvia httpd.

rcctl enable httpd
rcctl start httpd

Richiedi il certificato Let's Encrypt.

acme-client -v webmail.example.com

Aggiungere le definizioni del server per RainLoop a /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"
    }
}

Configura PHP per consentire allegati fino a 25 megabyte. Apporta le seguenti modifiche in /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

Abilita i moduli PHP necessari copiando i loro file di configurazione in /etc/php-7.3/

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

Controlla la sintassi di /etc/httpd.conf

httpd -n

Abilita e avvia httpd e php-fpm.

rcctl reload httpd
rcctl enable php73_fpm
rcctl start php73_fpm

Test finale

Sfoglia per https://webmail.example.com/?admin.

Il nome utente predefinito è: admin
La password predefinita è: 12345 .

Passare a ciascuna delle sezioni di configurazione e apportare le modifiche desiderate. Una volta terminata la configurazione, accedi a webmail all'indirizzohttps://webmail.example.com



Leave a Comment

Lintelligenza artificiale può combattere con un numero crescente di attacchi ransomware?

Lintelligenza artificiale può combattere con un numero crescente di attacchi ransomware?

Gli attacchi ransomware sono in aumento, ma l'intelligenza artificiale può aiutare ad affrontare l'ultimo virus informatico? L'intelligenza artificiale è la risposta? Leggi qui sai è AI boone o bane

ReactOS: è questo il futuro di Windows?

ReactOS: è questo il futuro di Windows?

ReactOS, un sistema operativo open source e gratuito è qui con l'ultima versione. Può essere sufficiente alle esigenze degli utenti Windows moderni e abbattere Microsoft? Scopriamo di più su questo vecchio stile, ma un'esperienza del sistema operativo più recente.

Rimani connesso tramite lapp desktop WhatsApp 24*7

Rimani connesso tramite lapp desktop WhatsApp 24*7

Whatsapp ha finalmente lanciato l'app desktop per utenti Mac e Windows. Ora puoi accedere facilmente a Whatsapp da Windows o Mac. Disponibile per Windows 8+ e Mac OS 10.9+

In che modo lintelligenza artificiale può portare lautomazione dei processi al livello successivo?

In che modo lintelligenza artificiale può portare lautomazione dei processi al livello successivo?

Leggi questo per sapere come l'intelligenza artificiale sta diventando popolare tra le aziende di piccole dimensioni e come sta aumentando le probabilità di farle crescere e dare un vantaggio ai loro concorrenti.

Laggiornamento del supplemento macOS Catalina 10.15.4 sta causando più problemi che risolverli

Laggiornamento del supplemento macOS Catalina 10.15.4 sta causando più problemi che risolverli

Recentemente Apple ha rilasciato macOS Catalina 10.15.4 un aggiornamento supplementare per risolvere i problemi, ma sembra che l'aggiornamento stia causando più problemi che portano al bricking delle macchine mac. Leggi questo articolo per saperne di più

13 strumenti commerciali per lestrazione dei dati dai Big Data

13 strumenti commerciali per lestrazione dei dati dai Big Data

13 strumenti commerciali per l'estrazione dei dati dai Big Data

Che cosè un file system di journaling e come funziona?

Che cosè un file system di journaling e come funziona?

Il nostro computer memorizza tutti i dati in un modo organizzato noto come file system di journaling. È un metodo efficiente che consente al computer di cercare e visualizzare i file non appena si preme search.https://wethegeek.com/?p=94116&preview=true

Singolarità tecnologica: un lontano futuro della civiltà umana?

Singolarità tecnologica: un lontano futuro della civiltà umana?

Man mano che la scienza si evolve a un ritmo rapido, assumendo gran parte dei nostri sforzi, aumentano anche i rischi di sottoporci a una singolarità inspiegabile. Leggi, cosa potrebbe significare per noi la singolarità.

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Limpatto dellintelligenza artificiale nella sanità 2021

Limpatto dellintelligenza artificiale nella sanità 2021

L'intelligenza artificiale nell'assistenza sanitaria ha compiuto grandi passi avanti negli ultimi decenni. Pertanto, il futuro dell'IA in sanità continua a crescere giorno dopo giorno.