서버 설정 · 3 min read · Nov 19, 2025

완벽한 서버 - OpenSUSE 12.3 x86_64 (nginx, Dovecot, ISPConfig 3) - 페이지 3

8 Postfix, Dovecot, MySQL 설치

실행

zypper install postfix postfix-mysql mysql-community-server libmysqlclient-devel dovecot21 dovecot21-backend-mysql pwgen cron python

다음 메시지가 표시되면 sendmail을 제거하도록 선택하십시오:

문제: 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이 시작되지 않기 때문에 재부팅해야 했습니다:

메서드 호출 실패: Unit mysql.service를 로드하지 못했습니다: 해당 파일이나 디렉터리가 없습니다. 시스템 로그와 'systemctl status mysql.service'를 참조하십시오.
reboot

MySQL, Postfix 및 Dovecot을 시작하고 부팅 시 서비스가 시작되도록 활성화합니다.

systemctl enable mysql.service  
 systemctl start mysql.service
systemctl enable postfix.service  
 systemctl start postfix.service
systemctl enable dovecot.service  
 systemctl start dovecot.service

이제 getmail 패키지를 설치합니다:

zypper install getmail

MySQL 설치를 안전하게 하려면 다음을 실행하십시오:

mysql_secure_installation

이제 여러 질문을 하게 됩니다:

server1:~ # mysql_secure_installation

NOTE: 이 스크립트의 모든 부분을 실행하는 것이 모든 MySQL
서버에서 권장됩니다!  각 단계를 주의 깊게 읽으십시오!

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/clamd

OpenSUSE 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 오래된 pid 파일 확인 #if test -f $AMAVIS_PID ; then # checkproc -p $AMAVIS_PID amavisd # if test $? -ge 1 ; then # # pid 파일이 오래되었습니다. 제거합니다. # echo -n "(오래된 amavisd pid 파일 $AMAVIS_PID 발견, 제거합니다. amavisd가 충돌했습니까?)" # 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
Share: X/Twitter LinkedIn

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

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