OpenSMTPD, Dovecot, Rspamd 및 RainLoop을 사용하는 OpenBSD 전자 메일 서버

소개

이 튜토리얼은 OpenSMTPD, Dovecot, Rspamd 및 RainLoop을 사용하여 OpenBSD에서 실행되는 모든 기능을 갖춘 이메일 서버를 보여줍니다. OpenSMTPD는 OpenBSD의 기본 메일 서버입니다. 예상되는 사용자 수를 위해 충분한 스토리지가있는 Vultr Compute Cloud 인스턴스를 선택하십시오.

예비 단계

작업을 루트로 수행하도록 사용자 계정을 설정하십시오.

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

OpenBSD를위한 패키지 저장소를 설정하십시오.

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

필요한 패키지를 추가하십시오.

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

OpenSMTPD 구성

기본적으로 OpenSMTPD는 로컬 호스트에서만 수신합니다. 외부 인터페이스를 수신하도록 명시 적으로 구성해야합니다. 보안을 위해 시스템 사용자 대신 가상 사용자를 사용하도록 구성해야합니다.

기본 /etc/smtpd.conf파일을 백업하고 처음부터 새로 만듭니다.

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

smtpd.conf아래와 같이 새로운 것을 만듭니다 . example.com도메인으로 교체하십시오 . 이 초기 구성은 OpenSMTP를 테스트하는 동안 rspamd 필터를 활성화하지 않습니다. 스팸 필터는 나중에 활성화됩니다.

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"

/ etc / credentials 파일을 작성하십시오.

OpenSMTPD와 Dovecot는 인증 데이터베이스를 공유 할 수 있습니다. 이 데이터베이스는 Dovecot에 대한 두 개의 추가 필드가있는 형식의 시스템 비밀번호 파일과 유사합니다. 두 개의 특수 필드는 가상 홈 디렉토리와 메일 위치를 정의합니다. 비밀번호는 복어 형식입니다. 이 학습서는 세 명의 예제 사용자를 작성합니다.

비밀번호를 생성하고 /etc/mail/credentials파일에 연결 하십시오.

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

출력은 다음과 유사합니다.

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

/etc/mail/credentials필수 필드를 추가하도록 편집하십시오 . 각 줄 은 UID 및 GID가 2000 인 시스템 계정 vmail에 매핑됩니다 . example.com을 도메인으로 바꿉니다. 가상 사용자 이름은 완전한 이메일 주소입니다.

[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

가상 메일 계정 생성 및 보안 설정

  • 설정 /etc/mail/credentials권한은 읽기 전용에 대한합니다 _smtpd_dovecot시스템 사용자.
  • vmail시스템 사용자, 그룹 및 홈 디렉토리를 작성하십시오 .

    • vmail 시스템 사용자를 작성하면 다음 경고가 표시 useradd: Warning: home directory '/var/vmail' doesn't exist, and -m was not specified됩니다.. 이것은 예상됩니다. 이것은에서 점 파일로 디렉토리를 어지럽히는 것을 피합니다 /etc/skel. vmail 계정은 로그인을 허용하지 않기 때문에 필요하지 않습니다.

      doas chmod 0440 / etc / mail / credentials doas chown smtpd : dovecot / etc / mail / credentials doas useradd -c "가상 메일 계정"-d / var / vmail -s / sbin nologin -u 2000 -g = uid -L staff vmail doas mkdir / var / vmail doas chown vmail : vmail / var / vmail

가상 사용자 매핑 생성

/etc/mail/virtuals유효한 이메일 주소를 정의하도록 작성하십시오 .

OpenSMTPD를위한 공개 / 개인 키 생성

이 예에서는 자체 서명 된 인증서를 사용합니다. 서명이있는 유효한 서명 된 인증서를 사용하십시오. 공통 이름을 입력하라는 메시지가 표시되면 서버의 FQDN과 일치하는지 확인하십시오. 이 예는 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

서버 테스트

OpenSMTPD 구성 구문 검사기를 사용하십시오. 문제가 없으면 smtpd 데몬을 다시 시작하십시오.

doas smtpd -n
doas rcctl restart smtpd

외부 메일 계정에서 테스트 이메일을 사용자 중 하나에게 보냅니다.

  • OpenSMTPD는 아래에 maildir 폴더 구조를 생성하고 /var/vmail에 메일을 전달합니다 /var/vmail/example.com/<username>/new.
  • 루트 사용자로서이 위치를 찾아보고 다음과 유사한 이름의 파일이 있는지 확인하십시오 1576339842.4d64757b.example.com:2,.
  • 모든 메일 헤더를 포함하여 파일의 내용을 검토하여 이메일 전송이 제대로 작동하는지 확인하십시오.

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

도브 코트 IMAP 구성

로그인 클래스 설정

Dovecot는 기본 클래스에서 허용하는 것보다 많은 수의 파일을 읽고 쓸 수 있도록 열어야합니다. 이렇게하지 않으면 문제 해결이 어려운 오류가 발생합니다.

Dovecot 데몬의 로그인 클래스를 정의하십시오. 맨 아래에 /etc/login.conf다음 줄 을 추가하십시오.

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

비둘기장 구성 파일 작성

만듭니다 /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"
}

비둘기장 버그 수정

Dovecot에는 파일 에서 ssl_certssl_key설정이 무시되지 않는 버그가 local.conf있으므로 주석 처리해야합니다. 이 단계를 놓치면 Dovecot이 올바르게 시작되지 않습니다.

/etc/dovecot/conf.d/10-ssl.conf표시된대로 편집하십시오 .

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

시브 (Sieve) 스크립트 생성

시브 (Sieve) 스크립트는 스팸 에서 Rspamd를 교육 합니다. 정크 폴더 안팎으로 전자 메일을 이동하면 Rspamd를 훈련시키는 이벤트가 트리거됩니다.

이 파일은에 있습니다 /usr/local/lib/dovecot/sieve.

report-ham.sieve파일을 작성 하십시오.

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

report-spam.sieve파일을 작성 하십시오.

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

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

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

파일을 컴파일하십시오.

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

다음 두 셸 스크립트를 만듭니다. /usr/local/lib/dovecot/sieve

에 다음을 추가하십시오 sa-learn-ham.sh

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

에 다음을 추가하십시오 sa-learn-spam.sh

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

파일을 실행 가능하게 만드십시오.

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

Dovecot를 활성화하고 시작하십시오.

rcctl enable dovecot
rcctl start dovecot

Dovecot이 올바르게 시작되었는지 확인하십시오.

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

Dovecot이 올바르게 읽을 수 있는지 확인 /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

메일 사용자가 로그인 할 수 있는지 확인하십시오.

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

Rspamd 설정

기본 Rspamd 구성입니다. 자세한 내용은 공식 문서를 참조하십시오. 이 예에서는 DKIM 서명을 활성화하기 위해 도메인에 대한 정의를 만듭니다.

공개 / 개인 키 쌍을 /etc/mail/dkim만들고 올바른 권한을 설정하십시오.

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

공개 키를 포함하는 DKIM에 대한 DNS 레코드를 만듭니다. DKIM 레코드를 만드는 방법에 대한 자세한 내용은 DNS 공급자에게 문의하십시오. 아래 그림과 같이 DKIM 레코드 /etc/mail/dkim/public.keyp=일부 에서 내용을 복사하여 붙여 넣습니다 . 이 예제는 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"

DMARC 레코드를 작성하십시오.

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

/etc/rspamd/local.d/dkim_signing.conf구성 파일을 작성 하십시오.

  • selector="default";줄은 default._domainkey....위에서 만든 DKIM DNS 레코드 ( ) 의 첫 부분에서 파생됩니다 .

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

Rspamd를 활성화하고 시작하십시오.

doas rcctl enable redis rspamd
doas rcctl start redis rspamd

아래 줄을 변경하고 /etc/mail/smtpd.confOpenSMTPD를 다시 시작하여 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

POP3 또는 IMAP 이메일 클라이언트로 메일 서버를 테스트하십시오. 웹 메일이 필요하지 않으면 여기서 중지하십시오.

(선택 사항) RainLoop 웹 메일 구성

필수 구성 요소 패키지 설치

메시지가 표시되면 최신 버전의 PHP를 선택하십시오.

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

RainLoop 웹 메일 tarball을 가져 와서 압축을 풉니 다 /var/www/htdocs/.

자동 업데이터가 포함 된 Standard Edition을 사용하십시오.

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

SSL 인증서를 암호화하자

  • 복사 /etc/examples/acme-client.conf/etc
  • 파일 맨 아래에 다음 줄을 추가하십시오.

    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
    }
    

httpd 구성

  • 하위 도메인에 대한 DNS 항목 (CNAME 또는 A 레코드)을 만듭니다. webmail.example.com
  • /etc/httpd.conf아래 예에 따라 편집하십시오 .

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

httpd 구문 검사를 실행하십시오.

httpd -n

httpd를 활성화하고 시작하십시오.

rcctl enable httpd
rcctl start httpd

Let 's Encrypt 인증서를 요청하십시오.

acme-client -v webmail.example.com

RainLoop에 대한 서버 정의를 추가하십시오. /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"
    }
}

최대 25MB의 첨부 파일을 허용하도록 PHP를 구성하십시오. 다음을 변경하십시오 /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

구성 파일을 복사하여 필요한 PHP 모듈을 활성화하십시오. /etc/php-7.3/

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

구문 확인 /etc/httpd.conf

httpd -n

httpd 및 php-fpm을 활성화하고 시작하십시오.

rcctl reload httpd
rcctl enable php73_fpm
rcctl start php73_fpm

기말 고사

로 이동하십시오 https://webmail.example.com/?admin.

기본 사용자 이름은 다음과 같습니다. admin
기본 암호는 12345 입니다.

각 구성 섹션을 찾아보고 원하는대로 변경하십시오. 구성이 끝나면 웹 메일에 로그인하십시오.https://webmail.example.com



Leave a Comment

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

랜섬웨어 공격이 증가하고 있지만 AI가 최신 컴퓨터 바이러스를 처리하는 데 도움이 될 수 있습니까? AI가 답인가? AI boone 또는 bane인지 여기에서 읽으십시오.

ReactOS: 이것이 Windows의 미래입니까?

ReactOS: 이것이 Windows의 미래입니까?

오픈 소스이자 무료 운영 체제인 ReactOS가 최신 버전과 함께 제공됩니다. 현대 Windows 사용자의 요구 사항을 충족하고 Microsoft를 무너뜨릴 수 있습니까? 이 구식이지만 더 새로운 OS 환경에 대해 자세히 알아보겠습니다.

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

Whatsapp은 마침내 Mac 및 Windows 사용자용 데스크톱 앱을 출시했습니다. 이제 Windows 또는 Mac에서 Whatsapp에 쉽게 액세스할 수 있습니다. Windows 8 이상 및 Mac OS 10.9 이상에서 사용 가능

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

인공 지능이 소규모 회사에서 어떻게 인기를 얻고 있으며 어떻게 인공 지능이 성장할 가능성을 높이고 경쟁자가 우위를 점할 수 있는지 알아보려면 이 기사를 읽으십시오.

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

최근 Apple은 문제를 해결하기 위해 macOS Catalina 10.15.4 추가 업데이트를 출시했지만 이 업데이트로 인해 Mac 컴퓨터의 브릭킹으로 이어지는 더 많은 문제가 발생하는 것 같습니다. 자세히 알아보려면 이 기사를 읽어보세요.

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구

저널링 파일 시스템이란 무엇이며 어떻게 작동합니까?

저널링 파일 시스템이란 무엇이며 어떻게 작동합니까?

우리 컴퓨터는 모든 데이터를 저널링 파일 시스템이라고 하는 체계적인 방식으로 저장합니다. 검색을 누르는 즉시 컴퓨터에서 파일을 검색하고 표시할 수 있는 효율적인 방법입니다.https://wethegeek.com/?p=94116&preview=true

기술적 특이점: 인류 문명의 먼 미래?

기술적 특이점: 인류 문명의 먼 미래?

과학이 빠른 속도로 발전하고 우리의 많은 노력을 인수함에 따라 설명할 수 없는 특이점에 처할 위험도 높아집니다. 특이점이 우리에게 무엇을 의미할 수 있는지 읽어보십시오.

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

2021년 의료 분야에서 인공 지능의 영향

2021년 의료 분야에서 인공 지능의 영향

의료 분야의 AI는 지난 수십 년 동안 큰 도약을 했습니다. 따라서 의료 분야에서 AI의 미래는 여전히 나날이 성장하고 있습니다.