OpenSMTPD、Dovecot、Rspamd、およびRainLoopを使用するOpenBSD電子メールサーバー

前書き

このチュートリアルでは、OpenSMTPD、Dovecot、Rspamd、およびRainLoopを使用してOpenBSDで実行されるフル機能の電子メールサーバーを示します。OpenSMTPDは、OpenBSDのデフォルトのメールサーバーです。予想されるユーザー数に対して十分なストレージがあるVultr Compute Cloudインスタンスを選択してください。

予備ステップ

rootとしてタスクを実行するようにユーザーアカウントを設定します。

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はlocalhostでのみ待機します。外部インターフェイスでリッスンするように明示的に構成する必要があります。セキュリティのために、システムユーザーではなく仮想ユーザーを使用するように構成する必要があります。

デフォルト/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用に2つの追加フィールドがあります。2つの特別なフィールドは、仮想ホームディレクトリとメールの場所を定義します。パスワードはフグの形式です。このチュートリアルでは、3つのサンプルユーザーを作成します。

パスワードを生成し、それらを/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ます。
  • rootユーザーとして、この場所を参照し、次のような名前のファイルがあることを確認します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
    ...
    

Dovecot IMAPを構成する

ログインクラスを設定する

Dovecotでは、デフォルトのクラスで許可されているよりも多くのファイルを読み取りおよび書き込み用に開く機能が必要です。これを怠ると、トラブルシューティングが困難なエラーが発生します。

Dovecotデーモンのログインクラスを定義します。の下部に/etc/login.conf次の行を追加します。

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

Dovecot構成ファイルを作成する

を作成します/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のバグ修正

Dovecotにはバグがあり、ファイルssl_certとのssl_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 

次の2つのシェルスクリプトを作成します。 /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.key後に貼り付けp=ます。この例では、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 Webメールを構成する

必須パッケージのインストール

プロンプトが表示されたら、PHPの最新バージョンを選択してください。

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

RainLoopウェブメールのtarballを取得してに抽出し/var/www/htdocs/ます。

自動アップデーターを含むスタンダードエディションを使用してください。

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

Let's Encrypt 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"
    }
}

最大25メガバイトの添付ファイルを許可するように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です。

各構成セクションを参照し、必要な変更を加えます。設定が完了したら、次のWebメールにログインしますhttps://webmail.example.com



ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。

macOS Catalina 10.15.4サプリメントの更新により、解決するよりも多くの問題が発生しています

macOS Catalina 10.15.4サプリメントの更新により、解決するよりも多くの問題が発生しています

最近、Appleは問題を修正するための補足アップデートであるmacOS Catalina 10.15.4をリリースしましたが、このアップデートにより、Macマシンのブリックにつながる問題がさらに発生しているようです。詳細については、この記事をお読みください

原子力が必ずしも悪ではないことを証明する5つの例

原子力が必ずしも悪ではないことを証明する5つの例

原子力は、過去の出来事のために私たちが決して尊重しないことを常に軽蔑していますが、それは必ずしも悪ではありません。詳細については、投稿をお読みください。

AIはどのようにしてプロセス自動化を次のレベルに引き上げることができますか?

AIはどのようにしてプロセス自動化を次のレベルに引き上げることができますか?

これを読んで、人工知能が小規模企業の間でどのように人気を博しているか、そして人工知能がどのように成長し、競合他社に優位に立つ可能性を高めているかを理解してください。

ジャーナリングファイルシステムとは何ですか、そしてそれはどのように機能しますか?

ジャーナリングファイルシステムとは何ですか、そしてそれはどのように機能しますか?

私たちのコンピューターは、ジャーナリングファイルシステムと呼ばれる組織化された方法ですべてのデータを保存します。これは、検索を押すとすぐにコンピューターがファイルを検索して表示できるようにする効率的な方法です。https://wethegeek.com/?p = 94116&preview = true

ビッグデータは人工知能をどのように変えていますか?

ビッグデータは人工知能をどのように変えていますか?

ビッグデータと人工知能は流行語ですが、それらがどのように相互に関連しているか知っていますか?さて、この記事を最後まで読んで、同じことを知ってください。

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartは、PHP、jQuery、およびHTML 5で記述された無料のオープンソースのショッピングカートプラットフォームです。シンプルで軽量、使いやすいeコマースソフトウォー

DebianでNFS共有をセットアップする

DebianでNFS共有をセットアップする

NFSはネットワークベースのファイルシステムであり、コンピューターはコンピューターネットワークを介してファイルにアクセスできます。このガイドでは、NFを介してフォルダーを公開する方法について説明します

Fedora 28にMatomo Analyticsをインストールする方法

Fedora 28にMatomo Analyticsをインストールする方法

別のシステムを使用していますか?Matomo(旧Piwik)は、Google Analyticsのオープンな代替手段であるオープンソースの分析プラットフォームです。Matomoのソースはoでホストされています

UbuntuでNginxをセットアップしてライブHLSビデオをストリーミングする

UbuntuでNginxをセットアップしてライブHLSビデオをストリーミングする

HTTPライブストリーミング(HLS)は、Apple Inc.によって実装された非常に堅牢なストリーミングビデオプロトコルです。HLSは、ファイアウォール、プロキシ、