서버 설정 · 6 min read · Feb 13, 2026
완벽한 서버 - OpenSUSE 12.3 x86_64 (Apache2, Dovecot, ISPConfig 3) - 페이지 2
이제 설치 중 선택한 비밀번호와 함께 사용자 이름 root로 로그인합니다.
4 네트워크 설정 구성
우리는 Yast, OpenSuSE 시스템 관리 도구를 사용하여 네트워크 카드 설정을 재구성합니다. 첫 번째 부팅 후 시스템은 DHCP로 IP 주소를 받도록 구성됩니다. 서버의 경우 정적 IP 주소로 전환합니다.
실행
yast2네트워크 장치 > 네트워크 설정을 선택합니다:

네트워크 카드를 선택한 다음 편집을 클릭합니다:

정적으로 할당된 IP 주소를 선택하고 IP 주소, 서브넷 마스크 및 호스트 이름을 입력한 후 다음을 선택하여 변경 사항을 저장합니다:

이제 호스트 이름/DNS를 선택하고 호스트 이름(예: server1.example.com) 및 네임서버(예: 192.168.1.200 및 8.8.8.8)를 입력합니다:

이제 라우팅을 선택하고 기본 게이트웨이를 입력한 후 확인을 클릭합니다:
방화벽을 구성하려면(기본 설치 중에 구성하지 않은 경우) Yast에서 보안 및 사용자 > 방화벽을 선택합니다:

이 튜토리얼의 끝에 ISPConfig를 설치하고 싶기 때문에 기본 OpenSUSE 방화벽을 지금 비활성화합니다. 물론, 방화벽을 켜두고 필요에 맞게 구성할 수 있습니다(하지만 나중에 다른 방화벽을 사용하면 OpenSUSE 방화벽과 충돌할 가능성이 높습니다).
방화벽 자동 시작 비활성화를 선택하고 방화벽 중지 지금 클릭한 후 다음을 클릭합니다:

마침을 클릭하고 Yast를 종료합니다:

그 후, 다음을 사용하여 네트워크 구성이 올바른지 확인해야 합니다:
ifconfig올바르지 않은 경우(예: eth0가 누락된 경우) 시스템을 재부팅합니다…
reboot… 그리고 나서 네트워크 구성을 다시 확인합니다 - 이제 올바르게 되어 있어야 합니다.
5 업데이트 설치
이제 openSUSE 리포지토리에서 최신 업데이트를 설치합니다. 실행
zypper update그런 다음 서버를 재부팅합니다. 아마도 커널 업데이트도 설치했을 것입니다:
reboot6 몇 가지 기본 패키지 설치
실행
zypper install findutils readline glibc-devel findutils-locate gcc flex lynx compat-readline4 db-devel wget gcc-c++ subversion make vim telnet cron iptables iputils man man-pages nano pico sudo perl-TimeDate7 저널 쿼터
쿼터를 설치하려면 실행합니다
zypper install quota/etc/fstab을 다음과 같이 편집합니다(마운트 포인트 / 및 /srv에 usrjquota=aquota.user, grpjquota=aquota.group, jqfmt=vfsv0을 추가했습니다):
vi /etc/fstab| /dev/disk/by-id/ata-VBOX_HARDDISK_VB1d06c935-e9b5de19-part1 swap swap defaults 0 0 /dev/disk/by-id/ata-VBOX_HARDDISK_VB1d06c935-e9b5de19-part2 / ext4 acl,user_xattr,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 1 1 /dev/disk/by-id/ata-VBOX_HARDDISK_VB1d06c935-e9b5de19-part3 /srv ext4 acl,user_xattr,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 1 2 proc /proc proc defaults 0 0 sysfs /sys sysfs noauto 0 0 debugfs /sys/kernel/debug debugfs noauto 0 0 usbfs /proc/bus/usb usbfs noauto 0 0 devpts /dev/pts devpts mode=0620,gid=5 0 0 |
그런 다음 실행합니다:
mount -o remount /
mount -o remount /srvquotacheck -avugm
quotaon -avug첫 번째로 quotacheck를 실행할 때 이러한 오류 메시지가 표시되더라도 걱정하지 마세요 - 이는 정상입니다:
server1:~ # quotacheck -avugm
quotacheck: Scanning /dev/sda2 [/] done
quotacheck: Cannot stat old user quota file: No such file or directory
quotacheck: Cannot stat old group quota file: No such file or directory
quotacheck: Cannot stat old user quota file: No such file or directory
quotacheck: Cannot stat old group quota file: No such file or directory
quotacheck: Checked 3872 directories and 32991 files
quotacheck: Old file not found.
quotacheck: Old file not found.
quotacheck: Scanning /dev/sda3 [/srv] done
quotacheck: Cannot stat old user quota file: No such file or directory
quotacheck: Cannot stat old group quota file: No such file or directory
quotacheck: Cannot stat old user quota file: No such file or directory
quotacheck: Cannot stat old group quota file: No such file or directory
quotacheck: Checked 6 directories and 0 files
quotacheck: Old file not found.
quotacheck: Old file not found.
server1:~ #8 Postfix, Dovecot, MySQL 설치
실행
zypper install postfix postfix-mysql mysql-community-server libmysqlclient-devel dovecot21 dovecot21-backend-mysql pwgen cron python다음 메시지가 표시되면 exim을 제거하도록 선택합니다:
문제: sendmail-8.14.5-85.1.2.x86_64가 postfix-2.9.6-1.2.1.x86_64에서 제공하는 postfix와 충돌합니다.
해결책 1: 다음 작업이 수행됩니다:
postfix-2.9.6-1.2.1.x86_64를 설치하지 않습니다.
postfix-mysql-2.9.6-1.2.1.x86_64를 설치하지 않습니다.
해결책 2: sendmail-8.14.5-85.1.2.x86_64를 제거합니다.
위의 해결책 중 번호를 선택하거나 취소합니다 [1/2/c] (c): <– 2
다음 심볼릭 링크를 생성합니다:
ln -s /usr/lib64/dovecot/modules /usr/lib/dovecot이 시점에서 MySQL이 시작되지 않기 때문에 재부팅해야 했습니다. 오류:
Failed to issue method call: Unit mysql.service failed to load: No such file or directory. See system logs and 'systemctl status mysql.service' for details.rebootMySQL, Postfix 및 Dovecot을 시작하고 부팅 시 서비스가 시작되도록 활성화합니다.
systemctl enable mysql.service
systemctl start mysql.servicesystemctl enable postfix.service
systemctl start postfix.servicesystemctl enable dovecot.service
systemctl start dovecot.service이제 getmail 패키지를 설치합니다:
zypper install getmailMySQL 설치를 보안하려면 실행합니다:
mysql_secure_installation이제 여러 질문을 받게 됩니다:
server1:~ # mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
MySQL에 로그인하여 보안을 설정하려면 현재
root 사용자 비밀번호가 필요합니다. MySQL을 방금 설치했으며,
root 비밀번호를 아직 설정하지 않았다면, 비밀번호는 비어 있으므로
여기서 그냥 Enter를 누르십시오.
현재 root 비밀번호를 입력하십시오(없으면 Enter를 누르십시오): <– ENTER
OK, 비밀번호를 성공적으로 사용했습니다. 계속 진행합니다…
root 비밀번호를 설정하면
누구도 적절한 권한 없이 MySQL root 사용자로 로그인할 수 없습니다.
root 비밀번호를 설정하시겠습니까? [Y/n] <– Y
새 비밀번호: <– yourrootsqlpassword
새 비밀번호를 다시 입력하십시오: <– yourrootsqlpassword
비밀번호가 성공적으로 업데이트되었습니다!
권한 테이블을 다시 로드하는 중..
… 성공!
기본적으로 MySQL 설치에는
익명 사용자가 있어 누구나
사용자 계정을 생성하지 않고도 MySQL에 로그인할 수 있습니다. 이는
테스트 용도로만 의도되며,
설치를 조금 더 원활하게 진행하기 위한 것입니다. 생산 환경으로 이동하기 전에
그들을 제거해야 합니다.
익명 사용자를 제거하시겠습니까? [Y/n] <– Y
… 성공!
보통 root는 ‘localhost’에서만 연결할 수 있어야 합니다. 이는
누군가 네트워크에서 root 비밀번호를 추측할 수 없도록 보장합니다.
원격으로 root 로그인을 금지하시겠습니까? [Y/n] <– Y
… 성공!
기본적으로 MySQL에는
‘test’라는 데이터베이스가 있어 누구나
접근할 수 있습니다. 이는
테스트 용도로만 의도되며,
생산 환경으로 이동하기 전에 제거해야 합니다.
테스트 데이터베이스 및 접근을 제거하시겠습니까? [Y/n] <– Y
- 테스트 데이터베이스 삭제 중…
… 성공!
- 테스트 데이터베이스에 대한 권한 제거 중…
… 성공!
권한 테이블을 다시 로드하면
지금까지 수행한 모든 변경 사항이 즉시 적용됩니다.
권한 테이블을 지금 다시 로드하시겠습니까? [Y/n] <– Y
… 성공!
정리 중…
모든 작업이 완료되었습니다! 위의 모든 단계를 완료했다면,
당신의 MySQL 설치는 이제 보안이 설정되어야 합니다.
MySQL을 사용해 주셔서 감사합니다!
server1:~ #
이제 MySQL 설정이 보안되어야 합니다.
9 Amavisd-new, Spamassassin 및 Clamav
Amavisd-new, Spamassassin 및 Clamav 바이러스 백신을 설치합니다. 실행
zypper install amavisd-new clamav clamav-db zoo unzip unrar bzip2 unarj perl-DBD-mysql/etc/amavisd.conf를 엽니다…
vi /etc/amavisd.conf… 그리고 $mydomain 줄 아래에 올바른 호스트 이름으로 $myhostname 줄을 추가합니다:
| [...] $mydomain = 'example.com'; # 다른 설정에 대한 편리한 기본값 $myhostname = "server1.$mydomain"; [...] |
그런 다음 /var/run/clamav/clamd에서 /var/lib/clamav/clamd-socket으로 심볼릭 링크를 생성합니다:
mkdir -p /var/run/clamav
ln -s /var/lib/clamav/clamd-socket /var/run/clamav/clamdOpenSUSE 12.3에는 런타임 데이터를 저장하기 위한 /run 디렉토리가 있습니다. /run은 이제 tmpfs이며, /var/run은 이제 tmpfs에서 /run에 바인드 마운트되어 재부팅 시 비워집니다.
이는 재부팅 후 우리가 방금 생성한 /var/run/clamav 디렉토리가 더 이상 존재하지 않게 되어 clamd가 시작되지 않게 됩니다. 따라서 시스템 시작 시 이 디렉토리를 생성할 /etc/tmpfiles.d/clamav.conf 파일을 지금 생성합니다(자세한 내용은 http://0pointer.de/public/systemd-man/tmpfiles.d.html 참조):
vi /etc/tmpfiles.d/clamav.conf| D /var/run/clamav 0755 root root - |
amavisd 및 clamd를 시작하기 전에 /etc/init.d/amavis 초기화 스크립트를 편집해야 합니다 - 기본 초기화 스크립트로는 amavisd를 신뢰성 있게 시작, 중지 및 재시작할 수 없었습니다:
vi /etc/init.d/amavis시작 및 중지 섹션에서 다음 줄을 주석 처리합니다:
| [...] start) # ZMI 20100428 check for stale pid file #if test -f $AMAVIS_PID ; then # checkproc -p $AMAVIS_PID amavisd # if test $? -ge 1 ; then # # pid file is stale, remove it # echo -n "(stale amavisd pid file $AMAVIS_PID found, removing. Did amavisd crash?)" # rm -f $AMAVIS_PID # fi #fi echo -n "바이러스 스캐너 시작 중 (amavisd-new): " $AMAVISD_BIN start #if ! checkproc amavisd; then # rc_failed 7 #fi rc_status -v #if [ "$AMAVIS_SENDMAIL_MILTER" == "yes" ]; then # rc_reset # echo -n "amavis-milter 시작 중:" # startproc -u vscan $AMAVIS_MILTER_BIN -p $AMAVIS_MILTER_SOCK > /dev/null 2>&1 # rc_status -v #fi ;; stop) echo -n "바이러스 스캐너 종료 중 (amavisd-new): " #if checkproc amavisd; then # rc_reset $AMAVISD_BIN stop #else # rc_reset #fi rc_status -v #if [ "$AMAVIS_SENDMAIL_MILTER" == "yes" ]; then # rc_reset # echo -n "amavis-milter 종료 중: " # killproc -TERM $AMAVIS_MILTER_BIN # rc_status -v #fi ;; [...] |
초기화 스크립트를 변경했기 때문에 이제
systemctl --system daemon-reload을 실행해야 합니다.
clamav를 시작하려면 데이터베이스를 다운로드해야 하며, 다음 명령을 진행합니다
freshclam
참고: 데이터베이스를 다운로드하는 데 시간이 많이 걸리므로 중단하지 말고 중간에 freshclam 업데이트 서비스를 중지하지 마십시오.
서비스를 활성화하려면 실행합니다:
systemctl enable amavis.service
systemctl enable clamd.service
systemctl start amavis.service
systemctl start clamd.service새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.