서버 설치 · 8 min read · Sep 30, 2025
Debian 6.0에 ISPConfig 3로 웹, 이메일 및 MySQL 데이터베이스 클러스터 설치 - 페이지 2
다음 단계는 서버 1과 서버 2에서 실행해야 합니다.
amavisd-new, SpamAssassin 및 ClamAV를 설치하려면 다음을 실행합니다:
apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perlISPConfig 3 설정은 내부적으로 SpamAssassin 필터 라이브러리를 로드하는 amavisd를 사용하므로 RAM을 확보하기 위해 SpamAssassin을 중지할 수 있습니다:
/etc/init.d/spamassassin stop
update-rc.d -f spamassassin remove
그런 다음 Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear 및 mcrypt를 다음과 같이 설치할 수 있습니다:
apt-get -y install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-curl php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libruby libapache2-mod-ruby php5-xcache libapache2-mod-perl2 sudo zip wget다음 질문이 표시됩니다:
웹 서버를 자동으로 재구성하시겠습니까: <– apache2
phpmyadmin의 데이터베이스를 dbconfig-common으로 구성하시겠습니까? <– 아니요
그런 다음 Apache 모듈 suexec, rewrite, ssl, actions 및 include를 활성화하려면 다음 명령을 실행합니다:
a2enmod suexec rewrite ssl actions include ruby dav_fs dav auth_digestPureFTPd 및 쿼타는 다음 명령으로 설치할 수 있습니다:
apt-get -y install pure-ftpd-common pure-ftpd-mysql quota quotatool파일 /etc/default/pure-ftpd-common을 편집합니다…
vi /etc/default/pure-ftpd-common… 그리고 시작 모드가 standalone으로 설정되어 있고 VIRTUALCHROOT=true로 설정되어 있는지 확인합니다:
[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...]파일 /etc/inetd.conf를 편집하여 inetd가 ftp를 시작하려고 시도하지 않도록 합니다:
vi /etc/inetd.confftp stream tcp로 시작하는 줄이 있으면 주석 처리합니다(해당 파일이 없으면 괜찮으며 /etc/inetd.conf를 수정할 필요는 없습니다):
[...]
#:STANDARD: 이러한 서비스는 표준 서비스입니다.
#ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper
[...]/etc/inetd.conf를 수정해야 했다면 지금 inetd를 재시작합니다:
/etc/init.d/openbsd-inetd restart이제 PureFTPd를 구성하여 FTP 및 TLS 세션을 허용합니다. FTP는 모든 비밀번호와 모든 데이터가 일반 텍스트로 전송되기 때문에 매우 안전하지 않은 프로토콜입니다. TLS를 사용하면 전체 통신을 암호화할 수 있으므로 FTP를 훨씬 더 안전하게 만들 수 있습니다.
FTP 및 TLS 세션을 허용하려면 다음을 실행합니다:
echo 1 > /etc/pure-ftpd/conf/TLSTLS를 사용하려면 SSL 인증서를 생성해야 합니다. 나는 /etc/ssl/private/에 생성하므로 먼저 해당 디렉토리를 생성합니다:
mkdir -p /etc/ssl/private/그런 다음 SSL 인증서를 다음과 같이 생성할 수 있습니다:
openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem국가 이름 (2자리 코드) [AU]: <– 귀하의 국가 이름 입력 (예: “DE”).
주 또는 지방 이름 (전체 이름) [Some-State]: <– 귀하의 주 또는 지방 이름 입력.
지역 이름 (예: 도시) []: <– 귀하의 도시 입력.
조직 이름 (예: 회사) [Internet Widgits Pty Ltd]: <– 귀하의 조직 이름 입력 (예: 귀하의 회사 이름).
조직 단위 이름 (예: 섹션) []: <– 귀하의 조직 단위 이름 입력 (예: “IT 부서”).
공통 이름 (예: 귀하의 이름) []: <– 시스템의 완전한 도메인 이름 입력 (예: “server1.example.com”).
이메일 주소 []: <– 귀하의 이메일 주소 입력.
SSL 인증서의 권한을 변경합니다:
chmod 600 /etc/ssl/private/pure-ftpd.pem그런 다음 PureFTPd를 재시작합니다:
/etc/init.d/pure-ftpd-mysql restart/etc/fstab을 편집합니다. 내 것은 다음과 같습니다 (나는 /의 마운트 지점이 있는 파티션에 usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0를 추가했습니다):
vi /etc/fstab# /etc/fstab: 정적 파일 시스템 정보.
#
# 'blkid'를 사용하여 장치의 보편적으로 고유한 식별자를 인쇄합니다; 이는 UUID=와 함께 사용되어 장치를 이름 짓는 보다 강력한 방법이 될 수 있습니다
# 디스크가 추가되거나 제거되더라도 작동합니다. fstab(5)을 참조하십시오.
#
# <파일 시스템> <마운트 지점> <유형> <옵션> <덤프> <패스>
proc /proc proc defaults 0 0
# /는 설치 중 /dev/sda1에 있었습니다
UUID=92bceda2-5ae4-4e3a-8748-b14da48fb297 / ext3 errors=remount-ro,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0 1
# 스왑은 설치 중 /dev/sda5에 있었습니다
UUID=e24b3e9e-095c-4b49-af27-6363a4b7d094 none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0쿼타를 활성화하려면 다음 명령을 실행합니다:
mount -o remount /quotacheck -avugm
quotaon -avug
BIND DNS 서버를 설치합니다:
apt-get -y install bind9 dnsutilsvlogger, webalizer 및 awstats를 설치합니다:
apt-get -y install vlogger webalizer awstats geoip-database그 후 /etc/cron.d/awstats를 엽니다…
vi /etc/cron.d/awstats… 그리고 해당 파일의 두 cron 작업을 주석 처리합니다:
#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh
# 정적 보고서 생성:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh Jailkit을 설치합니다: Jailkit은 SSH 사용자를 chroot하려는 경우에만 필요합니다. 다음과 같이 설치할 수 있습니다 (중요: Jailkit은 ISPConfig 이전에 설치해야 하며, 이후에는 설치할 수 없습니다!):
apt-get -y install build-essential autoconf automake1.9 libtool flex bisoncd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.14.tar.gz
tar xvfz jailkit-2.14.tar.gz
cd jailkit-2.14
./configure
make
make install
cd ..
rm -rf jailkit-2.14*
fail2ban을 설치합니다: 이것은 선택 사항이지만 권장됩니다. ISPConfig 모니터가 로그를 표시하려고 시도하기 때문입니다:
apt-get install fail2banPureFTPd 및 Dovecot을 모니터링하도록 fail2ban을 설정하려면 파일 /etc/fail2ban/jail.local을 생성합니다:
vi /etc/fail2ban/jail.local[pureftpd]
enabled = true
port = ftp
filter = pureftpd
logpath = /var/log/syslog
maxretry = 3
[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5
그런 다음 다음 두 필터 파일을 생성합니다:
vi /etc/fail2ban/filter.d/pureftpd.conf[Definition]
failregex = .*pure-ftpd: \(.*@\) \[WARNING\] Authentication failed for user.*
ignoreregex = vi /etc/fail2ban/filter.d/dovecot-pop3imap.conf[Definition]
failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed|Aborted login \(\d+ authentication attempts).*rip=(?P\S*),.*
ignoreregex = 그 후 fail2ban을 재시작합니다:
/etc/init.d/fail2ban restartSquirrelMail 웹메일 클라이언트를 설치하려면 다음을 실행합니다:
apt-get install squirrelmail그런 다음 다음 심볼릭 링크를 생성합니다…
ln -s /usr/share/squirrelmail/ /var/www/webmail… 그리고 SquirrelMail을 구성합니다:
squirrelmail-configure우리는 SquirrelMail에 Dovecot-IMAP/-POP3를 사용하고 있다고 알려야 합니다:
SquirrelMail 구성 : 읽기: config.php (1.4.0)
주 메뉴 –
1. 조직 환경설정
2. 서버 설정
3. 폴더 기본값
4. 일반 옵션
5. 테마
6. 주소 록
7. 오늘의 메시지 (MOTD)
8. 플러그인
9. 데이터베이스
10. 언어
D. 특정 IMAP 서버에 대한 미리 정의된 설정 설정
C 색상 켜기
S 데이터 저장
Q 종료
명령 >> <– D
SquirrelMail 구성 : 읽기: config.php
우리는 SquirrelMail을 구축하는 동안 일부 서버와 더 잘 작동하는 환경설정을 발견했습니다. 이 옵션을 선택하면 해당 서버에 대한 미리 정의된 설정이 설정됩니다.
올바른지 확인하기 위해 모든 것을 확인해야 합니다. 이것은 모든 것을 변경하지 않습니다. 변경되는 설정은 몇 가지뿐입니다.
귀하의 IMAP 서버를 선택하십시오:
bincimap = Binc IMAP 서버
courier = Courier IMAP 서버
cyrus = Cyrus IMAP 서버
dovecot = Dovecot Secure IMAP 서버
exchange = Microsoft Exchange IMAP 서버
hmailserver = hMailServer
macosx = Mac OS X 메일서버
mercury32 = Mercury/32
uw = 워싱턴대학교의 IMAP 서버
gmail = Google 메일 (Gmail) 계정에 대한 IMAP 액세스
quit = 아무것도 변경하지 않음
명령 >> <– dovecot
SquirrelMail 구성 : 읽기: config.php
우리는 SquirrelMail을 구축하는 동안 일부 서버와 더 잘 작동하는 환경설정을 발견했습니다. 이 옵션을 선택하면 해당 서버에 대한 미리 정의된 설정이 설정됩니다.
올바른지 확인하기 위해 모든 것을 확인해야 합니다. 이것은 모든 것을 변경하지 않습니다. 변경되는 설정은 몇 가지뿐입니다.
귀하의 IMAP 서버를 선택하십시오:
bincimap = Binc IMAP 서버
courier = Courier IMAP 서버
cyrus = Cyrus IMAP 서버
dovecot = Dovecot Secure IMAP 서버
exchange = Microsoft Exchange IMAP 서버
hmailserver = hMailServer
macosx = Mac OS X 메일서버
mercury32 = Mercury/32
uw = 워싱턴대학교의 IMAP 서버
gmail = Google 메일 (Gmail) 계정에 대한 IMAP 액세스
quit = 아무것도 변경하지 않음
명령 >> dovecot
imap_server_type = dovecot
default_folder_prefix =
trash_folder = 휴지통
sent_folder = 보낸편지
draft_folder = 임시저장
show_prefix_option = false
default_sub_of_inbox = false
show_contain_subfolders_option = false
optional_delimiter = detect
delete_folder = false
계속하려면 Enter를 누르세요… <– ENTER 누르기
SquirrelMail 구성 : 읽기: config.php (1.4.0)
주 메뉴 –
1. 조직 환경설정
2. 서버 설정
3. 폴더 기본값
4. 일반 옵션
5. 테마
6. 주소 록
7. 오늘의 메시지 (MOTD)
8. 플러그인
9. 데이터베이스
10. 언어
D. 특정 IMAP 서버에 대한 미리 정의된 설정 설정
C 색상 켜기
S 데이터 저장
Q 종료
명령 >> <– S
SquirrelMail 구성 : 읽기: config.php (1.4.0)
주 메뉴 –
1. 조직 환경설정
2. 서버 설정
3. 폴더 기본값
4. 일반 옵션
5. 테마
6. 주소 록
7. 오늘의 메시지 (MOTD)
8. 플러그인
9. 데이터베이스
10. 언어
D. 특정 IMAP 서버에 대한 미리 정의된 설정 설정
C 색상 켜기
S 데이터 저장
Q 종료
명령 >> <– Q
다음으로 Squirrelmail에 대한 전역 Alias /webmail을 활성화합니다:
cd /etc/apache2/conf.d/
ln -s ../../squirrelmail/apache.conf squirrelmail.conf
/etc/init.d/apache2 reload
이제 /etc/apache2/conf.d/squirrelmail.conf를 엽니다…
vi /etc/apache2/conf.d/squirrelmail.conf… 그리고 SquirrelMail에 접근하기 위해 mod_php가 사용되도록 보장하는
[...]
Alias /webmail /usr/share/squirrelmail
Options FollowSymLinks
AddType application/x-httpd-php .php
php_flag magic_quotes_gpc Off
php_flag track_vars On
php_admin_flag allow_url_fopen Off
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/squirrelmail/tmp
php_admin_value open_basedir /usr/share/squirrelmail:/etc/squirrelmail:/var/lib/squirrelmail:/etc/hostname:/etc/mailname
php_flag register_globals off
DirectoryIndex index.php
# configtest에 대한 접근은 정보 유출을 방지하기 위해 기본적으로 제한됩니다.
order deny,allow
deny from all
allow from 127.0.0.1
[...]디렉토리 /var/lib/squirrelmail/tmp를 생성합니다…
mkdir /var/lib/squirrelmail/tmp… 그리고 www-data 사용자에게 소유권을 부여합니다:
chown www-data /var/lib/squirrelmail/tmpApache를 다시 로드합니다:
/etc/init.d/apache2 reload이제 /etc/apache2/conf.d/squirrelmail.conf는 SquirrelMail 설치 디렉토리 /usr/share/squirrelmail을 가리키는 /squirrelmail이라는 별칭을 정의합니다.
이제 다음과 같이 웹사이트에서 SquirrelMail에 접근할 수 있습니다:
http://www.example.com/squirrelmailISPConfig 제어판 vhost에서 다음과 같이 접근할 수도 있습니다 (이것은 ISPConfig에서 구성할 필요가 없습니다):
http://server1.example.com:8080/squirrelmail다음으로 Unison을 설치합니다. Unison은 마스터와 슬레이브 간에 /var/www 및 /var/vmail 디렉토리를 동기화하는 데 사용됩니다.
apt-get install unison이제 첫 번째 서버에 unison 구성 파일을 설치합니다.
서버 1에서:
새 파일 /root/.unison/default.prf를 서버1에 생성합니다…
mkdir /root/.unison
vi /root/.unison/default.prf
… 그리고 다음 내용을 추가합니다:
# 동기화의 루트
root = /var
root = ssh://192.168.0.106//var/
# 동기화할 경로
path = www
path = vmail
# 무시할 이름 및 경로를 지정하는 일부 정규 표현식
#ignore = Path stats ## /var/www/stats 무시
#ignore = Path stats/* ## /var/www/stats/* 무시
#ignore = Path */stats ## /var/www/somedir/stats 무시, 그러나 /var/www/a/b/c/stats는 무시하지 않음
#ignore = Name *stats ## "stats"로 끝나는 모든 파일/디렉토리 무시
#ignore = Name stats* ## "stats"로 시작하는 모든 파일/디렉토리 무시
#ignore = Name *.tmp ## .tmp 확장자를 가진 모든 파일 무시
# true로 설정되면 이 플래그는 사용자 인터페이스가
# 비충돌 변경 사항에 대한 확인을 건너뛰도록 합니다. (더 정확하게는,
# 사용자 인터페이스가 한 항목에 대한 전파 방향을 설정한 후 다음으로 이동할 때
# 비충돌 항목을 건너뛰고 다음 충돌로 직접 이동합니다.)
auto=true
# true로 설정되면 사용자 인터페이스가 전혀 질문하지 않습니다.
# 비충돌 변경 사항이 전파되고; 충돌은 건너뜁니다.
batch=true
# !true로 설정되면 Unison은 전체 복제본이 삭제된 것처럼 보일 경우
# 변경 사항을 전파하기 전에 추가 확인을 요청합니다. 배치 플래그도 설정된 경우
# 동기화가 중단됩니다. 경로 기본 설정이 사용될 때
# 최상위 경로에 대해서도 동일한 확인이 요청됩니다. (현재 이 플래그는
# 텍스트 사용자 인터페이스에만 영향을 미칩니다.) 마운트 포인트 기본 설정도 참조하십시오.
confirmbigdel=true
# 이 기본 설정이 true로 설정되면 Unison은
# 업데이트를 위해 복제본을 스캔할 때 파일의 수정 시간과 길이를
# '의사 inode 번호'로 사용합니다. Windows에서는 이로 인해
# Unison이 업데이트를 전파하지 못할 수 있습니다.
# 그러나 Unison은 항상 변경 사항을 전파하기 직전에 안전한
# 업데이트 확인을 수행하므로, 업데이트를 간과할 가능성이 있는 경우
# 이 스위치를 사용하는 것이 합리적입니다. 기본값은 auto이며,
# Unison이 Unix 복제본에서 빠른 확인을 사용하고(안전한 경우)
# Windows 복제본에서 느린 확인을 사용하도록 합니다. 이전 호환성을 위해
# yes, no 및 default는 true, false 및 auto 대신 사용할 수 있습니다.
# "빠른 확인" 섹션을 참조하십시오.
fastcheck=true
# 이 플래그가 true로 설정되면 파일의 그룹 속성이
# 동기화됩니다. 그룹 이름 또는 그룹 식별자가 동기화되는지는
# preference numerids에 따라 다릅니다.
group=true
# 이 플래그가 true로 설정되면 파일의 소유자 속성이
# 동기화됩니다. 소유자 이름 또는 소유자 식별자가 동기화되는지는
# preference extttnumerids에 따라 다릅니다.
owner=true
# preference -prefer root를 포함하면 Unison은 항상
# 충돌을 root에 유리하게 해결하도록 합니다. (root의 구문은
# root 기본 설정과 동일하며, 더 특별한 값인 newer 및 older가 포함됩니다.)
# 이 기본 설정은 preferpartial 기본 설정에 의해 무시됩니다.
# 이 기본 설정은 자신이 무엇을 하고 있는지 확실한 경우에만 사용해야 합니다!
prefer=newer
# 이 기본 설정이 true로 설정되면 텍스트 사용자 인터페이스가
# 오류가 발생한 경우를 제외하고는 아무것도 인쇄하지 않습니다.
# silent를 true로 설정하면 자동으로 batch 기본 설정이 true로 설정됩니다.
silent=true
# 이 플래그가 true로 설정되면 파일 수정 시간(디렉토리 modtimes는 제외됨)이
# 전파됩니다.
times=true우리는 동기화를 자동화하고자 하므로 서버1.example.tld에서 이를 위한 cron 작업을 생성합니다:
crontab -e*/5 * * * * /usr/bin/unison &> /dev/null새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.