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

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

4 첫 번째 메일서버 설치하기

루트로 로그인하거나

su -

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

4.1 호스트네임 구성하기

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

nano /etc/hosts
127.0.0.1 localhost.localdomain   localhost  
# 이 줄은 모든 노드에서 올바른 서버 이름으로 변경되어야 합니다:  
127.0.1.1 mx1.example.com mx1  
# 이 줄들은 모든 노드에서 동일합니다:
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

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

mx1

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

systemctl reboot

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

hostname  
hostname -f

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

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

4.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를 누릅니다. 설치 프로그램이 이제 시작됩니다.

패키지의 설치 및 구성이 완료되면 mx1의 MySQL 루트 비밀번호가 표시됩니다. 이를 기록해 두세요 (서버 이름과 함께, 나중에 혼동을 방지하기 위해).

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

[INFO] ISPConfig3 설치 중.  
[INFO] MySQL 루트 비밀번호는: kl3994aMsfkkeE  
  
  
--------------------------------------------------------------------------------  
 _____ ___________   _____              __ _         ____  
|_   _/  ___| ___ \ /  __ \            / _(_)       /__  \  
  | | \ `--.| |_/ / | /  \/ ___  _ __ | |_ _  __ _    _/ /  
  | |  `--. \  __/  | |    / _ \| '_ \|  _| |/ _` |  |_ |  
 _| |_\__/ / |     | \__/\ (_) | | | | | | | (_| | ___\ \  
 \___/\____/\_|      \____/\___/|_| |_|_| |_|
\__, | \____/  
                                              __/ |  
                                             |___/   
--------------------------------------------------------------------------------  
  
  
>> 초기 구성    
운영 체제: Debian 10.0 (Buster) 또는 호환 가능  
    다음은 기본 구성을 위한 몇 가지 질문이 있을 것이니 주의하세요.  
    기본값은 [대괄호] 안에 있으며 로 수락할 수 있습니다.  
    설치기를 중지하려면 "quit"(따옴표 없이)를 입력하세요.  
  
언어 선택 (en,de) [en]: <-- Enter 키를 누르세요  
설치 모드 (standard,expert) [standard]: <-- expert  
서버의 전체 호스트네임 (FQDN), 예: server1.domain.tld  [mx1.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 키를 누르세요  

mx1.example.com에 대한 인증서 확인 / 생성 중  
인증서 경로 /etc/letsencrypt/live/mx1.example.com 사용 중  
인증서 검증을 위해 apache 사용 중  
Postfix에 ISPConfig SSL 인증서 심볼릭 링크? (y,n) [y]: <-- Enter 키를 누르세요  

Pure-FTPd에 ISPConfig SSL 인증서 심볼릭 링크? dhparam 파일 생성에는 시간이 걸릴 수 있습니다. (y,n) [y]: <-- Enter 키를 누르세요  

DH 매개변수 생성 중, 2048 비트 길이의 안전한 소수, 생성기 2  
오래 걸릴 것입니다  
......................+...........................................+...............  
앱 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-*의 로그 파일을 삭제하세요. 이 파일에는 비밀번호가 포함되어 있습니다!

4.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-mx1  
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:mx2.example.com  
}

doveadm_password를 자신의 비밀번호로 교체하세요 - 보안상의 이유로 긴 무작위 문자열로 설정하세요.

mail_replica = tcps:mx2.example.com

을 mx2의 호스트네임으로 교체하세요.

이 변경 사항을 적용하려면 파일을 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

4.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에서 이 서버에 대한 웹사이트를 추가할 것입니다. 사이트 -> 새 웹사이트 추가로 이동하여 웹사이트 “mx1.example.com”을 추가하세요. 올바른 서버 (mx1.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://mx2.example.com

mx2.example.com을 보조 네임서버의 호스트네임으로 교체하세요.

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

a2enmod proxy_balancer proxy_http  
systemctl restart rspamd  
systemctl restart apache2

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

4.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
Share: X/Twitter LinkedIn

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

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