서버 설정 · 9 min read · Sep 22, 2025

ISPConfig 완벽한 멀티서버 설정 Ubuntu 20.04 및 Debian 10 - 페이지 4

5 두 번째 메일서버 설치하기

루트로 로그인하거나

su -

서버에서 루트 사용자로 전환한 후 진행하십시오. 중요: ‘su -‘를 사용해야 하며 단순히 ‘su’를 사용하면 Debian에 의해 PATH 변수가 잘못 설정됩니다.

5.1 호스트네임 구성하기

서버의 호스트네임은 “mx2.example.com”과 같은 서브도메인이어야 합니다. “example.com”과 같은 서브도메인 부분이 없는 도메인 이름을 호스트네임으로 사용하지 마십시오. 이는 나중에 메일 설정에 문제를 일으킬 수 있습니다. 먼저 /etc/hosts에서 호스트네임을 확인하고 필요할 경우 변경해야 합니다. 줄은 다음과 같아야 합니다: “IP 주소 - 공백 - 전체 호스트네임 포함 도메인 - 공백 - 서브도메인 부분”. 우리의 호스트네임 mx2.example.com의 경우 파일은 다음과 같아야 합니다:

nano /etc/hosts
127.0.0.1 localhost.localdomain   localhost  
# 이 줄은 모든 노드에서 올바른 서버 이름으로 변경되어야 합니다:  
127.0.1.1 mx2.example.com mx2  
# 이 줄들은 모든 노드에서 동일합니다:
10.0.64.12 panel.example.com panel  
10.0.64.13 web01.example.com web01  
10.0.64.14 mx1.example.com mx1  
10.0.64.15 mx2.example.com mx2  
10.0.64.16 ns1.example.com ns1  
10.0.64.17 ns2.example.com ns2  
10.0.64.18 webmail.example.com webmail

# 다음 줄들은 IPv6 지원 호스트에 바람직합니다
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

보시다시피, 우리는 다른 서버의 호스트네임도 추가하여 나중에 내부 네트워크를 통해 통신할 수 있도록 했습니다.

그런 다음 /etc/hostname 파일을 편집합니다:

nano /etc/hostname

여기에는 서브도메인 부분만 포함되어야 하며, 우리의 경우:

mx2

마지막으로 변경 사항을 적용하기 위해 서버를 재부팅합니다:

systemctl reboot

다시 로그인하고 다음 명령어로 호스트네임이 올바른지 확인합니다:

hostname  
hostname -f

출력은 다음과 같아야 합니다:

root@mx2:~$ hostname  
mx2  
root@mx2:~$ hostname -f  
mx2.example.com

5.2 ISPConfig 설치하기

이제 모든 패키지와 ISPConfig의 자동 설치 프로그램을 실행할 수 있습니다:

wget -O - https://get.ispconfig.org | sh -s -- --no-dns --no-roundcube --no-mailman --use-php=system --use-unbound --interactive

잠시 후 다음과 같은 메시지가 표시됩니다:

WARNING! 이 스크립트는 전체 서버를 재구성합니다!  
신규 설치된 서버에서 실행해야 하며, 현재 수행한 모든 구성은 대부분 잃게 됩니다!  
계속 진행하려면 'yes'를 입력하십시오:

“yes”라고 입력하고 Enter를 누릅니다. 설치 프로그램이 이제 시작됩니다.

패키지의 설치 및 구성이 완료되면 mx2의 MySQL 루트 비밀번호가 표시됩니다. 혼동을 피하기 위해 서버 이름과 함께 이 비밀번호를 적어 두십시오.

이제 대화형 모드를 사용하므로 몇 가지 질문에 답해야 합니다. 이 서버는 멀티서버 설정에 추가될 것이기 때문에 필요합니다.

[INFO] ISPConfig3 설치 중.  
[INFO] MySQL 루트 비밀번호는: kl3994aMsfkkeE  
  
  
--------------------------------------------------------------------------------  
 _____ ___________   _____              __ _          ____  
|_   _/  ___| ___ \ /  __ \            / _(_)       /__  \  
  | | \ `--.| |_/ / | /  \/ ___  _ __ | |_ _  __ _    _/ /  
  | |  `--. \  __/  | |    / _ \| '_ \|  _| |/ _` |  |_ |  
  |_| |_|\__/ / |     | \__/\ (_) | | | | | | (_| | ___\ \  
  \___/\____/\_|      \____/\___/|_| |_|_| |_|\__, | \____/  
                                                  __/ |  
                                                  |___/   
--------------------------------------------------------------------------------  
  
>> 초기 구성   
  
운영 체제: Debian 10.0 (Buster) 또는 호환 가능  
  
    다음은 기본 구성을 위한 몇 가지 질문이 있으므로 주의하십시오.  
    기본값은 [대괄호] 안에 있으며 로 수락할 수 있습니다.  
    설치 프로그램을 중단하려면 "quit"(따옴표 없이)를 입력하십시오.  
  
  
언어 선택 (en,de) [en]: <-- Enter 키를 누르십시오  
설치 모드 (standard,expert) [standard]: <-- expert  
서버의 완전한 호스트네임 (FQDN), 예: server1.domain.tld  [mx2.example.com]: <-- Enter 키를 누르십시오  
MySQL 서버 호스트네임 [localhost]: <-- Enter 키를 누르십시오  
MySQL 서버 포트 [3306]: <-- Enter 키를 누르십시오  
MySQL 루트 사용자 이름 [root]: <-- Enter 키를 누르십시오  
MySQL 루트 비밀번호 []: <-- 스크립트에서 방금 제공한 MySQL 비밀번호를 입력하십시오  
생성할 MySQL 데이터베이스 [dbispconfig]: <-- Enter 키를 누르십시오  
MySQL 문자 집합 [utf8]: <-- Enter 키를 누르십시오  
다음 두 질문은 내부 ISPConfig 데이터베이스 사용자 및 비밀번호에 관한 것입니다.  
기본값인 'ispconfig' 사용자 이름과 임의의 비밀번호를 수락하는 것이 좋습니다.  
다른 비밀번호를 사용하는 경우 비밀번호에 숫자와 문자만 사용하십시오.  
  
ISPConfig mysql 데이터베이스 사용자 이름 [ispconfig]: <-- Enter 키를 누르십시오  
ISPConfig mysql 데이터베이스 비밀번호 [aakl203920459853sak20284204]: <-- Enter 키를 누르십시오  
이 서버가 기존 ISPConfig 멀티서버 설정에 참여해야 합니까 (y,n) [n]: <-- y  
MySQL 마스터 서버 호스트네임 []: <-- panel.example.com  
MySQL 마스터 서버 포트 []: <-- Enter 키를 누르십시오  
MySQL 마스터 서버 루트 사용자 이름 [root]: <-- Enter 키를 누르십시오  
MySQL 마스터 서버 루트 비밀번호 []: <-- 마스터 서버의 외부 루트 사용자에게 제공한 비밀번호입니다.  
MySQL 마스터 서버 데이터베이스 이름 [dbispconfig]: <-- Enter 키를 누르십시오  
ISPConfig 서버 레코드를 데이터베이스에 추가 중입니다.  
메일 구성 (y,n) [y]: <-- Enter 키를 누르십시오  
Postgrey 구성 중  
Postfix 구성 중  
RSA 개인 키 생성 중  
......................................................................++++  
....................++++  
'smtpd.key'에 새 개인 키를 작성 중입니다  
-----  
인증서 요청에 포함될 정보를 입력하라는 메시지가 표시됩니다.  
입력하는 내용은 Distinguished Name 또는 DN이라고 합니다.  
여러 필드가 있지만 일부는 비워 둘 수 있습니다.  
일부 필드에는 기본값이 있을 수 있습니다.  
'.'를 입력하면 필드가 비워집니다.  
-----  
국가 이름 (2자리 코드) [AU]: <-- Enter 키를 누르십시오  
주 또는 지방 이름 (전체 이름) [Some-State]: <-- Enter 키를 누르십시오  
지역 이름 (예: 도시) []: <-- Enter 키를 누르십시오  
조직 이름 (예: 회사) [Internet Widgits Pty Ltd]: <-- Enter 키를 누르십시오  
조직 단위 이름 (예: 섹션) []: <-- Enter 키를 누르십시오  
공통 이름 (예: 서버 FQDN 또는 귀하의 이름) []: <-- Enter 키를 누르십시오  
이메일 주소 []: <-- Enter 키를 누르십시오  
[WARN] Mailman 자동 감지가 실패했습니다  
Mailman 강제 구성 (y,n) [n]: <-- Enter 키를 누르십시오  
  
Mailman 건너뛰기  
Dovecot 구성 중  
새 DHParams 파일 생성 중, 몇 분이 걸립니다. 스크립트를 중단하지 마십시오.  
Spamassassin 구성 중  
[WARN] Amavisd 자동 감지가 실패했습니다  
Amavisd 강제 구성 (y,n) [n]: <-- Enter 키를 누르십시오  
  
Amavisd 건너뛰기  
Rspamd 구성 중  
Getmail 구성 중  
Jailkit 구성 중  
Pureftpd 구성 중  
DNS 서버 구성 (y,n) [y]: <-- n  
웹 서버 옵션은 웹 서버를 실행하거나 이 노드가 ISPConfig 인터페이스를 호스팅해야 할 때 활성화되어야 합니다.  
웹 서버 구성 (y,n) [y]: <-- Enter 키를 누르십시오  
Apache 구성 중  
vlogger 구성 중  
[WARN] OpenVZ 자동 감지가 실패했습니다  
OpenVZ 강제 구성 (y,n) [n]: <-- Enter 키를 누르십시오  
  
OpenVZ 건너뛰기  
방화벽 서버 구성 (y,n) [y]: <-- Enter 키를 누르십시오  
Ubuntu 방화벽 구성 중  
[WARN] Metronome XMPP 서버 자동 감지가 실패했습니다  
Metronome XMPP 서버 강제 구성 (y,n) [n]: <-- Enter 키를 누르십시오  
  
Metronome XMPP 서버 건너뛰기  
Fail2ban 구성 중  
ISPConfig 웹 인터페이스 설치 (y,n) [n]: <-- Enter 키를 누르십시오  
서버에 대한 SSL 인증서를 생성하시겠습니까? (y,n) [y]: <-- Enter 키를 누르십시오  
mx2.example.com에 대한 인증서 확인 / 생성 중  
인증서 경로 /etc/letsencrypt/live/mx2.example.com 사용 중  
인증서 검증을 위해 apache 사용 중  
ISPConfig SSL 인증서를 Postfix에 심볼릭 링크 하시겠습니까? (y,n) [y]: <-- Enter 키를 누르십시오  
ISPConfig SSL 인증서를 Pure-FTPd에 심볼릭 링크 하시겠습니까? DHParam 파일 생성에는 시간이 걸릴 수 있습니다. (y,n) [y]: <-- Enter 키를 누르십시오  
2048 비트 길이의 안전한 소수, 생성기 2로 DH 매개변수 생성 중  
오래 걸릴 것입니다  
......................+...........................................+...............  
앱 vhost 구성 중  
DBServer 구성 중  
ISPConfig crontab 설치 중  
getmail에 대한 crontab 없음  
IP 주소 감지 중  
서비스 재시작 중 ...  
설치 완료.  
[INFO] ISPConfig에 php 버전 추가 중.  
[INFO] 모든 서비스가 실행 중인지 확인 중.  
[INFO] mysql: OK  
[INFO] clamav-daemon: OK  
[INFO] postfix: OK  
[INFO] bind9: OK  
[INFO] pureftpd: OK  
[INFO] apache2: OK  
[INFO] rspamd: OK  
[INFO] redis-server: OK  
[INFO] dovecot: OK  
[INFO] 설치 준비 완료.  
[INFO] MySQL 루트 비밀번호는: kl3994aMsfkkeE  
[INFO] 경고: 더 이상 필요하지 않은 경우 /tmp/ispconfig-ai/var/log/setup-*의 로그 파일을 삭제하십시오. 비밀번호가 포함되어 있습니다!

5.3 Dovecot 복제 설정하기

우리는 mx1과 mx2 간의 이메일을 동기화하기 위해 dsync를 사용할 것입니다. 이를 통해 중복성을 확보합니다.

Dovecot에 대한 사용자 정의 설정은 /usr/local/ispconfig/server/conf-custom/install/dovecot_custom.conf.master에 저장해야 하므로 ISPConfig 업데이트 시 손실되지 않습니다.

nano /usr/local/ispconfig/server/conf-custom/install/dovecot_custom.conf.master

다음 내용을 추가하십시오:

protocol imap {  
 mail_plugins = $mail_plugins quota imap_quota notify replication  
}  
protocol pop3 {  
 mail_plugins = $mail_plugins quota notify replication  
}  
protocol lda {  
 mail_plugins = $mail_plugins sieve quota notify replication  
}  
protocol lmtp {  
 mail_plugins = $mail_plugins sieve quota notify replication  
}  
doveadm_password = /(:&p-J:4e%?\@Q-;VSE#3Dmfm[fVK&r-mx2  
doveadm_port = 12345  
replication_max_conns = 50  
  
ssl_client_ca_dir = /etc/ssl/certs  
  
# 복제 프로세스는 시작 시 시작되어 즉시 사용자를 복제할 수 있어야 합니다:  
service replicator {  
 process_min_avail = 1  
}  
  
# 메일 프로세스는 replication-notify fifo 및 소켓에 접근할 수 있어야 합니다.  
service aggregator {  
    fifo_listener replication-notify-fifo {  
        user = vmail  
        mode = 0666  
    }  
  
    unix_listener replication-notify {  
        user = vmail  
        mode = 0666  
    }  
}  
  
# doveadm 복제기 명령을 활성화합니다.  
service replicator {  
    unix_listener replicator-doveadm {  
        mode = 0666  
    }  
}  
  
# doveadm-server에 대한 리스너 생성  
service doveadm {  
    user = vmail  
    inet_listener {  
        port = 12345  
        ssl = yes  
    }  
}  
service config {  
    unix_listener config {  
        user = vmail  
    }  
}  
  
plugin {  
    mail_replica = tcps:mx1.example.com  
}

doveadm_password를 자신의 비밀번호로 교체하십시오 - 보안상의 이유로 길고 무작위 문자열로 만드십시오. 두 서버에서 동일해야 합니다.

다음 내용을 교체하십시오:

mail_replica = tcps:mx1.example.com

자신의 mx1 호스트네임으로 교체하십시오.

이 변경 사항을 적용하려면 파일을 dovecot 폴더로 복사하고 dovecot을 재시작하십시오:

cp /usr/local/ispconfig/server/conf-custom/install/dovecot_custom.conf.master /etc/dovecot/conf.d/99-ispconfig-custom-config.conf  
systemctl restart dovecot

5.4 Rspamd 동기화 설정하기

Rspamd는 멋진 웹 UI를 가지고 있습니다. 우리는 서버를 이웃으로 설정하여 하나의 패널에서 설정, 통계 및 기타 데이터를 볼 수 있도록 할 것입니다.

nano /usr/local/ispconfig/server/conf-custom/install/rspamd_options.inc.master

다음 줄을 추가하십시오:

# ISPConfig 템플릿에서 가져온 구성 (변경 사항이 있을 경우 업데이트해야 함)  
# 이 서버에 로컬한 주소들.  
local_addrs = [  
    "127.0.0.0/8",  
    "::1",  
  ];  

# 이 목록은 ISPConfig에 의해 생성되며, 사용자 정의 주소/네트워크는 local_networks.inc에 배치합니다.  
local_networks = "/etc/rspamd/local.d/local_networks.inc";  

dns {  
    nameserver = ["127.0.0.1:53:10"];  
}  

# 사용자 정의 구성:  
neighbours {  
    mx1 {  
        host = "https://mx1.example.com:443";  
        path = "/rspamd/";  
    }  
    mx2 {   
        host = "https://mx2.example.com:443";  
        path = "/rspamd/";  
    }  
}  
# 마지막 업데이트: 19-01-2022

호스트네임을 주 메일 서버와 보조 메일 서버에 대한 올바른 호스트네임으로 교체하십시오. 이 구성은 템플릿이 변경될 경우 업데이트해야 하므로 ISPConfig 업데이트 시 확인하십시오.

이제 ISPConfig에서 이 서버에 대한 웹사이트를 추가할 것입니다. 사이트 -> 새 웹사이트 추가로 이동하여 웹사이트 “mx2.example.com”을 추가하십시오. 올바른 서버(mx2.example.com)에서 생성되었는지 확인하십시오. 자동 서브도메인을 비활성화하고 SSL + Let’s Encrypt를 활성화하십시오. 그런 다음 옵션으로 이동하여 Apache 지시문 섹션에 다음을 붙여넣으십시오:

RewriteEngine On  
RewriteRule ^/rspamd$ /rspamd/ [R,L]  
RewriteRule ^/rspamd/(.*) http://127.0.0.1:11334/$1 [P]  
Header set Access-Control-Allow-Origin https://mx1.example.com

mx1.example.com을 보조 네임서버의 호스트네임으로 교체하십시오.

마지막으로 몇 가지 Apache 모듈을 활성화하고 서비스를 재시작해야 합니다:

a2enmod proxy_balancer proxy_http  
systemctl restart rspamd  
systemctl restart apache2

이제 MX1에서 Rspamd UI에 대한 비밀번호를 설정할 것입니다. 이는 Rspamd 클러스터의 웹 UI로 사용할 것입니다.

ISPConfig에 관리자 계정으로 로그인하고 시스템 -> 서버 구성 -> mx1.example.com -> 메일 -> Rspamd 비밀번호로 이동하십시오.

새 비밀번호를 입력하고 저장을 클릭하십시오. 그런 다음 시스템 -> 서버 구성 -> mx2.example.com -> 메일 -> Rspamd 비밀번호로 이동하여 동일한 비밀번호를 입력하십시오. 변경 사항이 전파될 때까지 기다리십시오. 완료되면 브라우저에서 https://mx1.example.com/rspamd/로 로그인할 수 있습니다.

5.5 유효한 SSL 인증서로 메일서버 보안 설정하기

작동하는 DSYNC 및 Roundcube 설정을 위해서는 사용되는 호스트네임에 대해 유효한 SSL 인증서가 필요합니다. 이 인증서는 자체 서명할 수 없습니다. imap.example.com 및 smtp.example.com과 같은 추가 호스트네임을 이 서버에 사용할 경우 또는 설치 시 유효한 인증서를 생성할 수 없었던 경우, 메일서버에 대한 유효한 인증서를 설정하는 방법을 따르십시오: https://www.howtoforge.com/securing-your-ispconfig-3-managed-mailserver-with-a-valid-lets-encrypt-certificate/

5.6 방화벽 설정하기

ISPConfig UI에 로그인하고 시스템 -> 방화벽으로 이동하십시오. 그런 다음 “새 방화벽 레코드 추가“를 클릭하십시오.

올바른 서버를 선택했는지 확인하십시오. 우리의 메일서버의 경우 다음 포트를 열어야 합니다:

TCP:

22,25,80,110,143,443,465,587,993,995

UI를 통해 열어야 할 UDP 포트는 없습니다.

또한 MySQL에 사용되는 포트 3306과 dsync에 사용되는 포트 12345를 열 것이지만 보안상의 이유로 로컬 네트워크에서만 열 것입니다. 이를 위해 ISPConfig 패널의 변경 사항이 전파된 후(빨간 점이 사라질 때) CLI에서 다음 명령을 실행하십시오:

ufw allow from 10.0.64.0/24 to any port 3306 proto tcp  
ufw allow from 10.0.64.0/24 to any port 12345 proto tcp

5.7 ISPConfig에서 MX1로부터 MX2 미러링 설정하기

설정을 마치기 위해 mx1과 mx2 간의 미러링을 활성화해야 합니다. 이를 위해 ISPConfig에 로그인하고 시스템 -> mx2.example.com -> “서버의 미러입니다”로 이동하십시오. mx1.example.com을 선택하고 저장을 클릭하십시오.

우리의 보조 메일서버가 이제 설치되었습니다. 다음 단계에서는 주요 DNS 서버를 설치할 것입니다.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.