서버 설정 · 4 min read · Jan 06, 2026
CentOS 5.1에서 Virtualmin을 사용한 가상 호스팅 방법 - 페이지 5
Clamav Milter 설정
- /etc/sysconfig/clamav-milter 파일을 편집합니다:
CLAMAV_FLAGS="
--config-file=/etc/clamd.conf
--force-scan
--local
--max-children=5
--sendmail-cf=
--outgoing
--quiet
"
SOCKET_ADDRESS="local:/var/clamav/clmilter.socket"- 소켓 권한을 수정하기 위해 init 파일을 패치합니다:
wget http://www.topdog-software.com/files/clamav-milter.patch
patch /etc/init.d/clamav-milter < clamav-milter.patchMySQL 설정
기본 구성
- localhost만 수신하도록 /etc/my.cnf의 mysqld 섹션을 편집합니다:
bind-address = 127.0.0.1루트 비밀번호 설정
- 루트 비밀번호를 설정합니다:
service mysqld start
mysqladmin -u root password NEWPASSWORDSpamAssassin 설정
기본 구성
required_hits 5
report_safe 0
rewrite_header Subject [SPAM]MySQL 데이터베이스 생성
- 데이터베이스를 생성합니다:
mysqladmin -p create bayes- 데이터베이스를 채웁니다:
mysql -p bayes < /usr/share/doc/spamassassin-$(rpm --qf %{VERSION} -q spamassassin)/sql/bayes_mysql.sql- 사용자를 생성합니다:
mysql -p
mysql> GRANT ALL ON bayes.* TO bayes@localhost IDENTIFIED BY 'password';DB 사용을 위한 구성
- /etc/mail/spamassassin/local.cf 파일을 편집하고 다음을 추가합니다:
bayes_store_module Mail::SpamAssassin::BayesStore::MySQL
bayes_sql_dsn DBI:mysql:bayes:localhost
bayes_sql_override_username bayes
bayes_sql_username bayes
bayes_sql_password passwordFuzzyOCR 구성
이미지 해시를 MySQL 데이터베이스에 저장하여 성능을 개선하고, 이미 스캔한 이미지는 다시 스캔하지 않도록 합니다. OCR은 리소스를 많이 소모하는 작업입니다.
MySQL 데이터베이스 생성
- SQL 스크립트는 데이터베이스와 테이블을 생성하고 사용자 fuzzyocr와 비밀번호 fuzzyocr를 추가합니다:
mysql -p < /usr/local/src/devel/FuzzyOcr.mysql- 비밀번호를 변경합니다:
mysqladmin -u fuzzyocr -p fuzzyocr password기본 설정
- /etc/mail/spamassassin/FuzzyOCR.cf 파일을 편집하고 기본 옵션을 설정합니다:
focr_path_bin /usr/bin:/usr/local/bin
focr_minimal_scanset 1
focr_autosort_scanset 1
focr_enable_image_hashing 3
focr_logfile /tmp/FuzzyOcr.logFuzzyOCR이 데이터베이스를 사용하도록 설정
- /etc/mail/spamassassin/FuzzyOcr.cf 파일을 편집하고 다음을 추가합니다:
focr_mysql_db FuzzyOcr
focr_mysql_hash Hash
focr_mysql_safe Safe
focr_mysql_user fuzzyocr
focr_mysql_pass password
focr_mysql_host localhost
focr_mysql_port 3306
focr_mysql_socket /var/lib/mysql/mysql.sockSARE 규칙 업데이트
- 규칙 서명에 사용된 GPG 키를 가져옵니다:
mkdir /etc/mail/spamassassin/sa-update-keys/
chmod 700 /etc/mail/spamassassin/sa-update-keys/
wget http://daryl.dostech.ca/sa-update/sare/GPG.KEY
sa-update --import GPG.KEY- /etc/mail/spamassassin/sare-sa-update-channels.txt 파일을 생성합니다:
updates.spamassassin.org
72_sare_redirect_post3.0.0.cf.sare.sa-update.dostech.net
70_sare_evilnum0.cf.sare.sa-update.dostech.net
70_sare_bayes_poison_nxm.cf.sare.sa-update.dostech.net
70_sare_html0.cf.sare.sa-update.dostech.net
70_sare_html_eng.cf.sare.sa-update.dostech.net
70_sare_header0.cf.sare.sa-update.dostech.net
70_sare_header_eng.cf.sare.sa-update.dostech.net
70_sare_specific.cf.sare.sa-update.dostech.net
70_sare_adult.cf.sare.sa-update.dostech.net
72_sare_bml_post25x.cf.sare.sa-update.dostech.net
99_sare_fraud_post25x.cf.sare.sa-update.dostech.net
70_sare_spoof.cf.sare.sa-update.dostech.net
70_sare_random.cf.sare.sa-update.dostech.net
70_sare_oem.cf.sare.sa-update.dostech.net
70_sare_genlsubj0.cf.sare.sa-update.dostech.net
70_sare_genlsubj_eng.cf.sare.sa-update.dostech.net
70_sare_unsub.cf.sare.sa-update.dostech.net
70_sare_uri0.cf.sare.sa-update.dostech.net
70_sare_obfu0.cf.sare.sa-update.dostech.net
70_sare_stocks.cf.sare.sa-update.dostech.net- 업데이트 스크립트 /usr/local/bin/update-sa를 생성합니다:
#!/bin/bash
#
#
sa-update -D --channelfile /etc/mail/spamassassin/sare-sa-update-channels.txt --gpgkey 856AA88A &>/var/log/sa-updates.log- 실행 가능하게 만들고 cron에 추가합니다:
chmod +x /usr/local/bin/update-sa
ln -s /usr/local/bin/update-sa /etc/cron.daily/
ln -s /usr/local/bin/update-sa /etc/cron.hourly/Spamass-milter 설정
기본 구성
- /etc/sysconfig/spamass-milter 파일을 편집합니다:
SOCKET=/var/run/spamass.sock
EXTRA_FLAGS="-m -r 8"패치
소켓의 권한을 수정하기 위해 init 파일을 패치해야 합니다. postfix가 소켓을 사용할 수 있도록 합니다.
wget http://www.topdog-software.com/files/spamass-milter.patch
patch /etc/rc.d/init.d/spamass-milter < spamass-milter.patchApache 설정
모듈 비활성화
사용하지 않는 일부 모듈을 비활성화하여 메모리를 확보하고 보안을 향상시킵니다.
- /etc/httpd/conf/httpd.conf 파일을 편집하고 아래와 같이 모듈을 주석 처리합니다.
#LoadModule ldap_module modules/mod_ldap.so
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
#LoadModule dav_module modules/mod_dav.so
#LoadModule status_module modules/mod_status.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule cache_module modules/mod_cache.so
#LoadModule disk_cache_module modules/mod_disk_cache.so
#LoadModule file_cache_module modules/mod_file_cache.so
#LoadModule mem_cache_module modules/mod_mem_cache.so- /etc/httpd/conf.d/proxy_ajp.conf 파일을 편집하고 아래와 같이 주석 처리합니다:
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.soHTTPS에 대해 하나의 IP 수신
Apache는 포트 443에 대해 하나의 주소를 수신하도록 구성해야 합니다. webmin이 동일한 포트를 사용하기 때문입니다. /etc/httpd/conf.d/ssl 파일을 편집합니다:
Listen 192,168.1.6:443Gzip 압축 활성화
mod_deflate 모듈을 통해 gzip 압축을 설정하여 웹 서버 성능을 향상시키고 클라이언트에 대한 응답을 압축하여 대역폭 사용을 줄입니다.
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary
Header append Vary User-Agent env=!dont-varydeflate 모듈에 대한 로깅을 설정합니다:
DeflateFilterNote deflate_ratio
LogFormat "%v %h %l %u %t \"%r\" %>s %b mod_deflate: %{deflate_ratio}n pct." vhost_with_deflate_info
CustomLog logs/deflate_access_log vhost_with_deflate_infoPHP 최대 메모리 증가
/etc/php.ini 파일을 편집하고 다음을 설정합니다:
memory_limit = 64M가상 호스팅 활성화
NameVirtualHost *:80기본 가상 호스트 생성
이것은 첫 번째 가상 호스트여야 하며, 서버에서 가상 호스팅이 없는 서버와 동등한 기본이 됩니다.
Servername localhost.localdomain
Serveradmin [email protected]
Roundcube 웹메일 설정
데이터베이스 생성
- 데이터베이스를 생성하고 roundcube 사용자를 추가합니다.
mysqladmin -p create roundcube
mysql -p
mysql> GRANT ALL ON roundcube.* TO roundcube@localhost IDENTIFIED BY 'password';- 데이터베이스를 초기화합니다:
mysql -u roundcube -p roundcube < /usr/share/doc/roundcube-0.1/SQL/mysql5.initial.sql기본 구성
- /var/www/roundcube/config/db.inc.php에서 데이터베이스 DSN을 구성합니다:
$rcmail_config['db_dsnw'] = 'mysql://roundcube:password@localhost/roundcube';- /var/www/roundcube/config/main.inc.php에서 roundcube를 구성합니다:
$rcmail_config['default_host'] = 'localhost';
$rcmail_config['default_port'] = 143;
$rcmail_config['virtuser_file'] = '/etc/postfix/virtual';
$rcmail_config['smtp_server'] = 'localhost';
$rcmail_config['smtp_port'] = 25;
$rcmail_config['smtp_helo_host'] = 'localhost';모든 가상 호스트 설정
시스템에서 생성된 모든 도메인에 대해 웹메일을 제공할 것이므로, 사용자가 http://webmail.domainname에 접근할 때 roundcube를 표시할 수 있는 모든 가상 호스트를 설정해야 합니다. /etc/httpd/conf/httpd.conf 파일을 편집하고 다음을 추가합니다:
ServerName webmail.example.com
ServerAlias webmail.*
DocumentRoot /var/www/roundcube
Options -Indexes IncludesNOEXEC FollowSymLinks
allow from all
방화벽 설정
소개
이것은 기본 방화벽으로, 귀하의 요구에 맞지 않을 수 있습니다. 방화벽은 예술이므로 이를 개선하기 위해 읽어보는 것을 권장합니다.
기본 구성
구성 파일 /etc/sysconfig/iptables에 다음 규칙을 추가합니다:
*raw
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
*filter
:FORWARD DROP [0:0]
:INPUT DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m multiport -j ACCEPT --dports 80,443,25,110,143,53
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -p icmp -m icmp -m limit --icmp-type 8 --limit 5/min -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -s 127.0.0.1 -j ACCEPT
-A OUTPUT -s 192.168.1.5 -j ACCEPT
-A OUTPUT -s 192.168.1.6 -j ACCEPT
COMMIT구성 활성화
service iptables restart새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.