SSD Nodes Learn
가이드 Matt Connor작성자 Matt Connor · 업데이트됨 2026-07-24

VPS에 mailcow 설치 전 필수 체크리스트

mailcow 설치 전 outbound port 25 개방 여부를 반드시 확인하십시오. 포트가 차단되면 메일이 queue에 머물며 전송되지 않습니다. 또한 Gmail의 550 5.7.25 PTR 거부를 방지하기 위한 DNS 설정법을 상세히 안내합니다.

구축 목표

자체 서버에 완전한 메일 서버를 구축합니다. 송수신을 위한 SMTP, 모바일과 노트북의 동기화를 위한 IMAP, 웹메일 클라이언트, 그리고 양방향 메시지를 검사하는 스팸 필터를 포함합니다. mailcow-dockerized는 Postfix, Dovecot, Rspamd, SOGo webmail, MariaDB, Redis, ACME client를 하나의 Docker Compose 스택으로 묶어 제공하므로 소프트웨어 설치 자체는 어렵지 않습니다. 30분 이내에 구동할 수 있습니다.

어려운 점은 서버 외부의 설정들입니다. 이메일은 인터넷상의 다른 서비스들과 달리 신규 서버를 기본적으로 신뢰하지 않습니다. "정상 작동함"과 "Gmail이 메시지를 모두 차단함"의 차이는 4개의 DNS 레코드와 직접 제어하기 어려운 IP 평판 설정에서 발생합니다. 서버를 임대하기 전에 아래의 요구 사항을 먼저 읽으십시오. 만약 평판 관리 작업이 가치가 없다고 판단된다면, 그것도 타당한 결정입니다. 2026년에 실제로 자가 호스팅할 가치가 있는 서비스 목록의 "only if you mean it" 섹션에 이러한 이유로 이메일이 포함되어 있습니다.

The prerequisites ARE the project

이 중 하나라도 누락되면 메일이 영구적으로 전송되지 않습니다. 발생 빈도가 높은 순서대로 나열하면 다음과 같습니다.

Outbound port 25가 개방되어 있어야 합니다. 서버는 TCP port 25를 통해 Gmail 및 Microsoft로 메일을 전송합니다. 많은 VPS 및 클라우드 제공업체는 스팸 방지를 위해 기본적으로 outbound 25를 차단합니다. 이 차단은 조용히 이루어집니다. 부팅 시 오류가 발생하지 않고 시스템 상태도 정상으로 표시되지만, 메일은 큐(queue)에 영원히 머물게 됩니다. 설치 전에 반드시 테스트하십시오. 차단된 경우, 제공업체에 포트 개방을 요청하는 지원 티켓을 제출해야 합니다. 오래된 계정은 허용해 주기도 하지만, 절대 허용하지 않는 곳도 있습니다.

신뢰할 수 있는 깨끗한 IP가 필요합니다. 재사용된 VPS IP는 이전 사용자의 스팸 활동으로 인해 이미 blocklist에 등록되어 있는 경우가 많습니다. 설정을 시작하기 전에 Spamhaus lookup 또는 mxtoolbox와 같은 서비스에서 IP 상태를 확인하십시오. IP가 리스트에 등록되어 있다면 코드로 해결할 수 없는 거부(rejection)가 발생합니다.

DNS 제어 권한 및 올바른 PTR 레코드가 필요합니다. 도메인 존(zone)에 레코드를 추가해야 하며, 서버 IP가 메일 호스트네임을 가리키는 역방향 DNS(PTR) 설정이 필요합니다. PTR은 DNS 패널에서 설정할 수 없는 경우가 대부분입니다. IP 소유자가 설정하므로 VPS 제공업체의 제어 패널이나 지원 티켓을 통해 설정해야 합니다.

6 GiB RAM 및 2 vCPU가 권장 최소 사양입니다. mailcow의 개인 설치 최소 사양은 6 GiB RAM과 1 GiB swap입니다. 사용자가 늘어나면 8 GiB를 권장합니다. 사양이 약 2.5 GiB 미만인 경우, generate_config.sh는 커널이 컨테이너를 강제 종료하는 것을 방지하기 위해 ClamAV 바이러스 스캐너 비활성화를 제안합니다. 시작 시 20 GB의 SSD를 할당하십시오.

IP 주소가 아닌 DNS 이름이 필요합니다. mail.example.com와 같은 호스트네임을 선택하십시오. 이 이름은 MAILCOW_HOSTNAME, TLS 인증서의 subject, PTR 대상, SMTP banner로 사용됩니다. 모든 곳에서 일관된 이름을 사용하십시오.

Step 1 — outbound port 25가 열려 있는지 확인합니다

이 작업을 가장 먼저 수행하십시오. 이 단계에서 실패하면 이후의 모든 작업은 무의미합니다. 새로 생성한 VPS에서 실제 메일 서버로 SMTP 연결을 시도하십시오:

sudo apt update && sudo apt install -y netcat-openbsd
nc -vz -w 5 gmail-smtp-in.l.google.com 25

연결에 성공하면 결과가 즉시 나타납니다:

Connection to gmail-smtp-in.l.google.com (142.250.x.x) 25 port [tcp/smtp] succeeded!

포트가 차단된 경우 5초 동안 대기한 후 실패합니다:

nc: connect to gmail-smtp-in.l.google.com port 25 (tcp) timed out: Operation now in progress

이 타임아웃이 차단 신호입니다. 이는 서버 내부의 firewall 문제가 아니라 provider 측의 network filter 문제입니다. 따라서 로컬 설정을 변경해도 해결할 수 없습니다. 고객 지원 티켓을 생성하여 다음과 같이 요청하십시오: "Please enable outbound TCP port 25 for my VPS at <IP>; I am running a legitimate mail server." 결과가 "succeeded"로 나타나기 전까지는 mailcow를 설치하지 마십시오. 참고로 inbound 25(외부 서버가 귀하의 서버로 접속하는 경로)는 별개의 경로이며 보통 열려 있습니다. provider가 제한하는 것은 outbound 측입니다.

Step 2 — DNS 레코드를 설정하십시오

DNS 변경 사항은 전파되는 데 시간이 소요됩니다. 설치를 시작하기 전에 가능한 모든 레코드를 게시하십시오. 도메인이 example.com이고, 메일 호스트가 mail.example.com이며, IP가 10.0.0.10라고 가정합니다. Zone 파일에 다음을 생성하십시오:

mail.example.com.        A      10.0.0.10
mail.example.com.        AAAA   2001:db8::10          ; only if you have IPv6
example.com.             MX  10 mail.example.com.
example.com.             TXT    "v=spf1 mx -all"
_dmarc.example.com.      TXT    "v=DMARC1; p=none; rua=mailto:postmaster@example.com"

SPF 레코드는 "이 도메인에 대해서는 MX 레코드만 메일을 보낼 수 있으며, 나머지는 거부한다"는 의미입니다. 본인의 메일이 반송되지 않도록 DMARC를 p=none으로 시작하십시오. 정렬(alignment)이 확인되면 p=quarantine을 거쳐 p=reject으로 강화하십시오. 다음 두 레코드는 의도적으로 누락되었습니다: Step 6에서 mailcow가 자동으로 생성하는 DKIM, 그리고 지금 제공업체 패널에서 설정해야 하는 PTR입니다.

10.0.0.10의 PTR(역방향 DNS)을 mail.example.com(MAILCOW_HOSTNAME의 정확한 값)으로 설정하십시오. 이는 많은 사용자가 누락하는 레코드이며, 대형 제공업체들은 이 레코드가 없으면 메일을 거부합니다. 패널에 rDNS 필드가 없다면 기술 지원 티켓을 접수하십시오.

Step 3 — Docker 설치

mailcow는 Compose v2 plugin이 포함된 Docker Engine이 필요합니다. Ubuntu의 docker.io 패키지는 Compose plugin을 포함하지 않으므로, Docker 공식 convenience script를 사용하십시오.

curl -fsSL https://get.docker.com | sudo sh
sudo docker compose version

Docker Compose version v2.x 라인이 출력되어야 합니다. 만약 docker compose version 실행 결과 docker: 'compose' is not a docker command가 출력된다면, Docker Engine은 설치되었으나 Compose plugin은 설치되지 않은 상태입니다. Docker repository에서 plugin을 설치하십시오. 위 스크립트를 다시 실행하거나, Docker의 자체 apt repository를 통해 두 항목을 모두 설정하는 Docker Compose 기초 가이드를 따르십시오.

Step 4 — mailcow 클론 및 config 생성

cd /opt
sudo git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
umask
sudo ./generate_config.sh

먼저 umask의 결과가 0022인지 확인하십시오. 파일 마스크가 일치하지 않으면 mailcow 빌드가 실패합니다. Ubuntu 24.04 root shell에서는 기본적으로 0022가 제공됩니다. 스크립트는 FQDN(fully qualified hostname)을 입력하라는 메시지를 표시합니다. mail.example.com을 입력하십시오. 입력값은 A record 및 PTR 레코드와 정확히 일치해야 합니다. 스크립트는 전체 스택이 참조하는 유일한 환경 파일인 mailcow.conf를 생성합니다. 웹 포트(HTTP_PORT, HTTPS_PORT)를 변경하거나 저사양 서버에서 ClamAV를 비활성화하려면 이 파일을 여십시오.

MAILCOW_HOSTNAME=mail.example.com
HTTP_PORT=80
HTTPS_PORT=443
SKIP_CLAMD=n          # set to y to drop the virus scanner on a <2.5 GiB box

SKIP_FTS=y은 저사양 RAM 서버를 위한 설정입니다. mailcow 문서에 따르면 전체 텍스트 검색(full-text search)은 메모리를 많이 사용하는 기능입니다. 이 기능을 건너뛰면 webmail에서 본문 검색 기능을 사용할 수 없습니다.

호스트의 다른 서비스가 해당 포트를 사용 중이지 않다면 HTTP_PORT=80HTTPS_PORT=443은 그대로 두십시오. mailcow의 내장 ACME 클라이언트가 인증서를 발급받으려면 인터넷에서 80번 포트로 접속이 가능해야 합니다. 동일한 서버에 별도의 nginx-plus-Certbot 설정을 실행하지 않는 이유가 이것입니다. mailcow는 내부적으로 자체 TLS를 발급 및 갱신하며, 다른 서비스가 80/443 포트를 점유하면 이 기능이 작동하지 않습니다.

Step 5 — Start the stack and log in

sudo docker compose pull
sudo docker compose up -d
sudo docker compose ps

이미지를 pull하는 과정에서 약 24개의 이미지를 가져옵니다. 몇 분 정도 대기하십시오. docker compose ps에서 모든 container가 running(또는 healthy) 상태가 되면, 브라우저에서 https://mail.example.com을(를) 엽니다. 기본 admin 로그인 정보는 username admin, password moohoo입니다. Access → Administrators 메뉴에서 admin UI를 통해 즉시 비밀번호를 변경하십시오. 브라우저에서 NET::ERR_CERT_AUTHORITY_INVALID 경고가 발생하면 ACME certificate가 아직 발급되지 않은 상태입니다. 시스템 오류로 판단하기 전에 아래의 ACME failure 섹션을 확인하십시오. 처음 1~2분 동안은 self-signed placeholder가 표시되는 것이 정상입니다.

Step 6 — 도메인, 메일박스 추가 및 DKIM 게시

Admin UI에서 Mail Setup 페이지(Configuration → Mail Setup)를 엽니다. Domains 탭에서 Add domain을 클릭하고 example.com을 입력합니다. 그 다음 Mailboxes 항목에서 Add mailbox를 클릭하여 비밀번호와 함께 you@example.com을 생성합니다. 생성된 메일박스는 IMAP을 통해 즉시 사용 가능합니다.

이제 DKIM 키를 설정합니다. Configuration → ARC/DKIM keys로 이동합니다. 도메인을 추가할 때 mailcow가 이미 키를 생성했을 수도 있습니다. 생성되지 않았다면 해당 메뉴에서 키를 생성하십시오. 도메인을 선택하고 selector는 dkim를 유지하며, 2048-bit를 선택한 후 Add를 클릭합니다. 화면에 표시된 긴 TXT 값을 복사하여 다음과 같이 게시합니다.

dkim._domainkey.example.com.  TXT  "v=DKIM1;k=rsa;t=s;s=email;p=MIIBIjANBgkqh...long-key...QAB"

mailcow의 Domains 페이지에는 DNS 버튼이 있습니다. 이 버튼은 필요한 모든 레코드를 나열하며, 실제 게시된 상태에 따라 녹색 체크 표시 또는 빨간색 X 표시를 보여줍니다. 이를 체크리스트로 활용하십시오. 전달 테스트를 수행하기 전에 모든 항목을 녹색으로 만드십시오. 게시 후 DKIM 항목이 빨간색으로 표시된다면, 일반적으로 키가 여러 개의 TXT 청크로 잘못 분할되었음을 의미합니다. 2048-bit 키는 단일 TXT 문자열의 255자 제한보다 길기 때문에, 하나의 논리적 값으로 붙여넣기하십시오. 그러면 DNS 호스트가 자동으로 이를 여러 청크로 분할합니다.

Step 7 — Test deliverability and chase 10/10

mail-tester.com에 접속하여 표시된 임의의 주소를 복사합니다. https://mail.example.com/SOGo의 SOGo webmail에 로그인한 뒤, 해당 주소로 메시지를 보냅니다. 그 다음 "Then check your score"를 클릭합니다.

10/10 점수를 목표로 합니다. 점수가 깎이는 일반적인 원인은 다음과 같습니다:

  • SPF not alignedMX/SPF 레코드가 누락되었거나, 발신 IP가 포함되지 않았습니다. SPF TXT 레코드를 다시 확인하십시오.
  • DKIM signature does not verifydkim._domainkey TXT 레코드가 누락되었거나, 아직 전파 중이거나, 형식이 잘못되었습니다. 가장 빈번하게 발생하는 오류입니다.
  • No PTR / PTR mismatch — reverse DNS가 mail.example.com으로 해석되지 않습니다. 서비스 제공업체에서 수정하십시오.
  • Listed on a blocklist — 해당 IP의 이전 평판 문제입니다. 차단 해제를 요청하거나 새로운 IP를 요청하십시오.

점수가 10/10이 될 때까지 Gmail이나 Outlook으로 실제 메일을 보내지 마십시오. 낮은 점수와 새로운 IP의 조합은 첫날부터 도메인이 차단되는 원인이 됩니다.

Step 8 — 실제 메일 클라이언트 연결하기

Thunderbird, Apple Mail 또는 모바일 기기에서 다음 설정을 사용하여 서버에 연결하십시오. 모든 설정의 서버 호스트는 mail.example.com입니다.

  • IMAP: port 993, SSL/TLS (또는 143, STARTTLS 사용)
  • SMTP submission: port 465, SSL/TLS (또는 587, STARTTLS 사용)
  • Username: 전체 주소, you@example.com
  • Password: 설정한 메일함 비밀번호

port 25를 통한 클라이언트 메일 전송은 금지됩니다. 해당 port는 서버 간 통신 전용입니다. mailcow는 해당 port에서 인증된 submission을 지원하지 않으므로 클라이언트의 접속이 거부됩니다. 만약 Relay access denied 오류가 발생하면, 클라이언트가 25번 port를 사용 중이거나 인증 없이 전송을 시도하는 것입니다. 메일함 자격 증명을 사용하여 465 또는 587번 port로 설정을 변경하십시오.

Step 9 — 중요한 데이터 백업하기

mailcow는 모든 stateful volume의 스냅샷을 생성하는 백업 스크립트를 제공합니다. 외부 디스크나 마운트된 원격 저장소에 실행하십시오:

sudo MAILCOW_BACKUP_LOCATION=/opt/mailcow-backups \
  ./helper-scripts/backup_and_restore.sh backup all

all은 다음 6가지 항목을 캡처하며, 이 중 하나라도 누락되면 데이터가 손실됩니다: vmail (실제 메일박스), crypt (vmail를 복호화하는 키 — 이 키가 없으면 vmail는 사용할 수 없음), mysql (도메인, 사용자, alias 및 설정을 저장하는 MariaDB), redis (queue 및 cache 상태), rspamd (학습된 spam/ham 데이터), postfix (mail queue). 이 스크립트는 helper container 내부에서 실행되어 압축된 archive를 생성하므로, stack이 실행 중인 상태에서도 백업의 일관성이 유지됩니다. 매일 밤 cron job으로 자동화하고, --delete-days 14을 추가하여 오래된 백업 세트를 정리하십시오. 복구는 restore 플래그를 사용한 동일한 스크립트로 수행하며, 이 플래그는 스냅샷 목록을 표시하고 복구할 항목을 선택할 수 있게 합니다. 테스트를 통해 복구 여부를 확인하지 않은 백업은 백업이 아니라 희망 사항일 뿐입니다. 별도의 VPS에서 테스트 복구를 반드시 수행하십시오.

Step 10 — Update on a schedule

mailcow는 자체 스크립트를 통해 업데이트를 수행합니다. 이 스크립트는 새로운 코드를 가져오고, mailcow.conf를 마이그레이션하며, 이미지를 prefetch한 뒤, 다음 순서로 container를 재시작합니다:

cd /opt/mailcow-dockerized
sudo ./update.sh --check   # reports whether an update exists, changes nothing
sudo ./update.sh           # applies it

스키마 마이그레이션은 되돌리기 어렵습니다. 따라서 먼저 백업(Step 9)을 수행하십시오. 업데이트는 빈번하게 제공되며 인터넷에 노출된 daemon을 위한 보안 패치를 포함합니다. mail server가 수개월 동안 업데이트되지 않은 상태로 방치되지 않도록 주의하십시오. 업데이트 후 container가 unhealthy 상태가 되면, sudo docker compose logs --tail=50 <service>-mailcow에 실패한 daemon의 이름이 표시됩니다.

hardening에 관한 주의 사항

mailcow는 mail 및 webmail 포트에 과도한 접속을 시도하는 IP를 차단하는 자체 netfilter 서비스(netfilter-mailcow)를 실행합니다. 따라서 mail 서비스는 기본적으로 보호됩니다. 하지만 호스트 자체의 SSH는 보호되지 않습니다. SSH는 여전히 외부에 노출되어 있으며 brute-force 공격을 받습니다. 이 빌드를 Fail2ban을 사용하여 SSH 인증 로그를 감시하는 방법 및 키 기반 로그인과 함께 사용하십시오. mailcow 관리 UI에는 강력한 비밀번호를 설정하십시오. 가급적 공용 인터넷에 노출하지 않거나 VPN 뒤에 배치하는 것이 좋습니다.

Failure modes, with the exact strings

Mail queues and never delivers. sudo docker compose exec postfix-mailcow postqueue -p를 실행하거나 admin UI의 mail queue를 확인하십시오. 다음 메시지와 함께 항목이 deferred 상태로 남아 있습니다:

status=deferred (connect to gmail-smtp-in.l.google.com[142.250.x.x]:25: Connection timed out)

이는 서비스 제공업체에서 outbound port 25를 차단했기 때문입니다 (Step 1). 설정 변경으로는 해결할 수 없으므로 기술 지원 티켓을 생성하십시오. DNS나 TLS 문제가 아닙니다. 원격 MX의 port 25에 대해 timed out라는 단어가 나타나면 이 문제입니다.

Gmail marks everything spam, or bounces it. Gmail에서 메시지를 연 후 "Show original"을 클릭하여 auth results를 확인하십시오. dkim=fail 또는 dkim=nonedkim._domainkey TXT 레코드가 누락되었거나, 형식이 잘못되었거나, 아직 전파되지 않았음을 의미합니다. ARC/DKIM 페이지에 표시된 내용을 그대로 다시 게시하고 TTL이 만료될 때까지 기다리십시오. spf=fail은 SPF/MX 레코드가 현재 IP를 포함하지 않음을 의미합니다. Alignment가 가장 중요합니다. 검사 항목 중 하나만 실패해도 스팸으로 분류될 수 있습니다.

Rejected by large providers on connect. Bounce 메시지나 Postfix 로그에 Gmail의 PTR 거부 메시지가 나타납니다:

550-5.7.25 [10.0.0.10] The IP address sending this message does not have a PTR
550-5.7.25 record setup, or the corresponding forward DNS entry does not match
550 5.7.25 the sending IP. As a policy, Gmail does not accept messages from IPs
550 5.7.25 with missing PTR records.

550 5.7.25 코드는 reverse DNS가 누락되었거나 일치하지 않음을 의미합니다. 서비스 제공업체에서 해당 IP의 PTR을 mail.example.com으로 설정하십시오 (Step 2). Forward (A) 레코드와 reverse (PTR) 레코드는 일치해야 하며, 두 레코드 모두 mailcow가 다른 서버에 보고하는 호스트 이름을 가리켜야 합니다.

Browser shows a certificate warning that never clears. acme-mailcow 컨테이너가 유효한 인증서를 가져오지 못했습니다. 다음 로그를 확인하십시오:

sudo docker compose logs acme-mailcow | tail -n 40

Cannot validate any hostnames, skipping Let's Encrypt for 1 hour.와 같은 라인이 있거나 challenge 실패가 발생하면 인터넷에서 port 80에 접속할 수 없거나, A 레코드가 이 서버를 가리키지 않는 것입니다. mail.example.com이 이 서버로 해석되는지 확인하고, 호스트 방화벽에서 80 및 443 포트를 개방하며, 다른 프로세스가 해당 포트를 사용 중이지 않은지 확인하십시오. 원인을 해결한 후에는 1시간의 대기 시간을 기다리지 말고 sudo docker compose restart acme-mailcow를 사용하여 클라이언트를 재시작하십시오.

FAQ

이메일 셀프 호스팅이 정말 가치가 있습니까?

데이터 소유권, 무제한 alias, 그리고 완전한 제어권이 필요하다면 가치가 있습니다. mailcow는 VPS 비용으로 전문적인 스택을 제공합니다. 하지만 이메일 전달률 관리는 지속적인 작업입니다. IP 평판, DNS 정렬, blocklist 모니터링은 끝이 없습니다. 단 하루라도 스팸함에 들어가면 손해가 발생하는 핵심 비즈니스 주소라면, 관리형 서비스(managed provider)를 사용하는 것이 실용적입니다. 편의성보다 제어권을 중시하고 직접 관리할 의사가 있을 때 셀프 호스팅을 선택하십시오.

outbound port 25가 차단되었는지 어떻게 확인합니까?

서버에서 nc -vz -w 5 gmail-smtp-in.l.google.com 25를 실행하십시오. "succeeded!"가 출력되면 포트가 열려 있는 것입니다. 대기 후 timed out이 발생하면 서비스 제공업체에서 해당 포트를 차단한 것입니다. 이는 셀프 호스팅 서버가 메일 수신은 가능하지만 발신이 불가능한 가장 흔한 원인입니다. 해결 방법은 서비스 제공업체에 포트 개방을 요청하는 것뿐이며, 로컬 설정으로는 해결할 수 없습니다.

왜 메일이 여전히 Gmail 스팸함으로 들어갑니까?

대부분 인증 체인(authentication chain)의 문제입니다. Gmail에서 "Show original"을 실행하여 spf=pass, dkim=pass, dmarc=pass를 확인하십시오. dkim=faildkim._domainkey TXT 레코드가 누락되었거나 손상되었음을 의미합니다. PTR 불일치나 발신 이력이 없는 새 IP 또한 원인이 됩니다. 먼저 mail-tester.com에서 10/10 점수를 획득하십시오. 그 다음, 첫날부터 대량의 메일을 보내지 말고 하루에 몇 통씩 점진적으로 발신량을 늘려 IP를 warm up 하십시오.

정확히 무엇을 백업해야 합니까?

backup_and_restore.sh backup all를 실행하고 생성된 전체 세트를 서버 외부에 보관하십시오. 이 명령은 vmail(메일박스), crypt(복호화 키), MariaDB 데이터베이스(도메인, 사용자, alias, 설정), Redis, Rspamd 학습 데이터, 그리고 Postfix queue를 포함합니다. 사람들은 crypt 볼륨을 자주 간과합니다. 이 볼륨이 없으면 vmail 백업은 읽을 수 없는 암호문이 됩니다. 최소 한 번은 별도의 테스트 환경에서 복구 테스트를 수행하십시오.

2 GB VPS에서 mailcow를 실행할 수 있습니까?

원활한 운영은 어렵습니다. generate_config.sh은 약 2.5 GiB 미만에서 ClamAV 비활성화를 제안합니다. 하지만 비활성화하더라도 Rspamd, ClamAV, Dovecot, MariaDB가 메모리를 공유하므로, 실제 부하가 발생하면 swap을 사용하거나 OOM kill이 발생합니다. 안정적인 단일 사용자 설치를 위한 최소 사양은 6 GiB 메모리와 1 GiB swap입니다. 사용자가 늘어나면 즉시 8 GiB로 업그레이드하십시오.

#mailcow#email#self-hosting#docker#dns