서버 관리 · 3 min read · Dec 02, 2025
완벽한 서버 확장 - 데비안 스퀴즈 [ISPConfig 3] - 페이지 2
3. ROUNDCUBE
위의 지침에 따라 apt-get을 통해 roundcube를 설치할 수 있습니다. 그러나 다른 논리를 따르려면 (시간과 용기가 있다면) roundcube를 자체 서브 도메인에 수동으로 설치할 수 있습니다.
“완벽한 서버 ….”에서는 일반적으로 Squirrelmail을 설치합니다. 그러나 원하지 않으면 제거할 수 있습니다:
apt-get remove squirrelmail그리고 /etc/apache2/conf.d/squirrelmail.conf를 삭제합니다:
rm /etc/apache2/conf.d/squirrelmail.conf또는 원한다면 /etc/apache2/conf.d/squirrelmail.conf를 편집하고 별칭을 ‘webmail1’과 같은 것으로 변경합니다.
roundcube를 설치합니다. (진행하기 전에 mysql 관리자 비밀번호가 있어야 합니다 – dbconfig-common이 데이터베이스를 구성하도록 하십시오. 데이터베이스 관리자 비밀번호와 roundcube를 위해 생성될 새 사용자의 비밀번호에 대한 몇 가지 질문을 받게 됩니다. 질문에 답하고 계속 진행하십시오:
apt-get install roundcube roundcube-mysql예시 답변: “roundcube를 위해 dbconfig-common으로 데이터베이스를 구성하시겠습니까?” …. 예라고 대답하십시오. “roundcube에서 사용할 데이터베이스 유형: …mysql이라고 대답하십시오. “데이터베이스 관리자의 비밀번호:” … 귀하의 관리자 DB 비밀번호라고 대답하십시오. “roundcube의 MySQL 애플리케이션 비밀번호:” … roundcube 사용자에게 부여할 비밀번호라고 대답하십시오. “비밀번호 확인:”… roundcube 사용자에게 부여할 비밀번호라고 대답하십시오.
문제가 발생하면 언제든지 실행할 수 있습니다:
dpkg-reconfigure roundcube-core자세한 정보는 이 게시물을 참조하십시오.
모든 사용자가 자신의 도메인 이름 아래에서 웹메일에 접근할 수 있도록 하려면 /etc/apache2/conf.d/roundcube 파일을 생성하거나 편집하여 별칭을 ‘webmail’로 설정해야 합니다. SSL을 원하면 마지막 두 지시문 (IfModule mod_rewrite.c)을 포함하여 apache가 항상 ISPConfig의 SSL 설치로 리디렉션되도록 해야 합니다.
nano /etc/apache2/conf.d/roundcube# 이러한 별칭은 apache 서버에서 여러 호스트와 함께 제대로 작동하지 않습니다
# 사용하려면 주석을 제거하거나 구성에 맞게 조정하십시오
# Alias /roundcube/program/js/tiny_mce/ /usr/share/tinymce/www/
Alias /roundcube /var/lib/roundcube
Alias /webmail /var/lib/roundcube
# tinymce 파일에 대한 접근
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
allow from all
Options +FollowSymLinks
# 이것은 /var/lib/roundcube/.htaccess를 구문 분석하는 데 필요합니다.
# AllowOverride를 None으로 설정하기 전에 내용을 확인하십시오.
AllowOverride All
order allow,deny
allow from all
# 기본 디렉토리 보호:
Options -FollowSymLinks
AllowOverride None
Options -FollowSymLinks
AllowOverride None
Order allow,deny
Deny from all
Options -FollowSymLinks
AllowOverride None
Order allow,deny
Deny from all
RewriteEngine on
RewriteCond %{HTTPS} !^on$ [NC]
RewriteRule . https://%{HTTP_HOST}:50443%{REQUEST_URI} [L]
RewriteEngine on
RewriteCond %{HTTPS} !^on$ [NC]
RewriteRule . https://%{HTTP_HOST}:50443%{REQUEST_URI} [L]
# ISPConfig 3.0.5.1 이상에 대해서도 다음을 추가하십시오
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 .:/usr/share/php:/usr/share/pear
php_admin_value upload_tmp_dir /var/lib/roundcube/temp
php_admin_value open_basedir /usr/share/php:/usr/lib/roundcube:/etc/roundcube:/usr/share/roundcube:/var/lib/roundcube:/var/log/roundcube
php_flag register_globals off
/var/lib/roundcube/config/main.inc.php를 편집합니다:
nano /var/lib/roundcube/config/main.inc.php그리고 파일에서 몇 가지 변수를 설정합니다 (파일을 처음 편집하는 경우 60번과 66번 줄입니다):
auto_create_user = TRUE;
$rcmail_config['default_host'] = 'localhost';다음 플러그인 (fail2ban을 돕는 로거)을 설치할 경우 동일한 파일에서 플러그인 목록을 확장해야 합니다. 만약 설치할 플러그인이 바로 다음에 설치될 플러그인이라면 42번 줄을 아래와 같이 편집해야 합니다:
$rcmail_config['plugins'] = array('fail2ban'); http://mattrude.com/projects/roundcube-fail2ban-plugin/에서 roundcube 로거 플러그인을 설치합니다.
기본적으로 파일(fail2ban.php)을 다운로드하고 roundcube의 플러그인 폴더 내의 fail2ban 폴더에 붙여넣어야 합니다. 마지막으로 이 파일이 있어야 합니다: /usr/share/roundcube/plugins/fail2ban/fail2ban.php. 실행:
cd /usr/share/roundcube/plugins/
wget –no-check-certificate http://github.com/downloads/mattrude/rc-plugin-fail2ban/roundcube-fail2ban-plugin.1.0.tgz
tar -xvzf roundcube-fail2ban-plugin.1.0.tgz
touch /var/log/roundcube/userlogins
chown www-data:www-data /var/log/roundcube/userlogins
이 플러그인은 각 로그인 실패 시도에 대해 로그 파일을 업데이트합니다: /var/log/roundcube/userlogins
ISPConfig에서 웹메일 링크를 편집하는 것을 잊지 마십시오 (시스템 -> 인터페이스 구성 -> (탭) 메일) 및 /webmail로 설정하십시오. 마지막으로 apache를 재시작하십시오.
/etc/init.d/apache2 restart이제 http://www.example.com/webmail에서 웹메일에 접근할 수 있습니다.
4. FAIL2BAN
falko가 제안하는 jail.local 파일을 확장하십시오. 완벽한 서버 - 데비안 스퀴즈 (Debian 6.0) BIND & Courier [ISPConfig 3]: /etc/fail2ban/jail.local
nano /etc/fail2ban/jail.local다음 내용을 추가하거나 편집해야 합니다:
[roundcube]
enabled = true
port = http,50443
filter = roundcube
logpath = /var/log/roundcube/userlogins
maxretry = 5
[webmin-auth]
enabled = true
port = 50000
filter = webmin-auth
logpath = /var/log/auth.log
maxretry = 3
[ssh]
enabled = true
port = 50022
filter = sshd
logpath = /var/log/auth.log
maxretry = 6roundcube의 50443 포트는 https로 리디렉션을 활성화한 경우에만 필요합니다 (이 튜토리얼의 시작 부분을 참조하십시오). webmin-auth의 50000 포트는 변경된 포트입니다 (이 튜토리얼의 시작 부분을 참조하십시오). ssh의 50022 포트는 변경된 포트입니다 (이 튜토리얼의 다음 섹션을 참조하십시오).
마지막으로 (그리고 매우 중요하게) /etc/fail2ban/filter.d/roundcube.conf 파일을 생성하는 것을 잊지 마십시오.
nano /etc/fail2ban/filter.d/roundcube.conf다음 내용을 포함합니다:
[Definition]
failregex = FAILED login for .*. from
ignoreregex = 운이 좋게도 webmin-auth 및 ssh 필터는 이미 fail2ban에 의해 제공됩니다. fail2ban을 재시작하십시오:
/etc/init.d/fail2ban restart누군가가 fail2ban에 많은 감옥을 추가하면 일부는 시작되지 않을 수 있습니다 (오류는 /var/log/fail2ban.log에 있지만 출력에는 없습니다 !!!). 직접 확인하려면:
iptables -L -n 불행히도 해결책은 약간의 해킹입니다… 하지만 적어도 해결책입니다:
/usr/bin/fail2ban-client 파일의 145번째 줄에 time.sleep(0.1) 또는 time.sleep(0.05)를 삽입해야 합니다:
nano /usr/bin/fail2ban-client그래서 변경 전 파일은 다음과 같습니다:
[...]
def __processCmd(self, cmd, showRet = True):
beautifier = Beautifier()
for c in cmd:
beautifier.setInputCmd(c)
try:
[...] 그리고 변경 후 파일은 다음과 같습니다:
[...]
def __processCmd(self, cmd, showRet = True):
beautifier = Beautifier()
for c in cmd:
time.sleep(0.05)
beautifier.setInputCmd(c)
try:
[...] fail2ban을 다시 재시작하십시오:
/etc/init.d/fail2ban restart모든 감옥이 활성화되었는지 확인하려면 다음 명령을 사용하십시오:
iptables -L -n 새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.