wilson's story

Sendmail / Qmail 에 kisarbl 추가하기.. 본문

Linux

Sendmail / Qmail 에 kisarbl 추가하기..

wilson 2007. 11. 19. 15:00
반응형

페도라 또는 CentOS 를 설치한후... 초보자들을 위한 기본적인 세팅에 대한 글이다.
세부설명은 자제했다. 이유도 없다. 시간도 없고, 일단 빨리 세팅해서 쓰고자 할때 이용한다.
내용은 버전에 따라 다를 수 있다. 일단은 페도라 6.0 기준으로 했다.
CentOS 도 경로는 거의 같다. 다르다 하더라도 금방 찾을수 있으리라 본다.
컴파일? 공부엔 도움이 되어도 많은 서버관리시에는 별로다. yum 이란 좋은 도구가 있다..
난, 꼭 필요한 경우(추가옵션이 필요하다던지..패키지로 제공하지 않는다던지..)외에는 컴파일하지 않는다.

0. 서버용으로 설치한후 네트웍을 설정한다.

     #system-config-network  을 실행하여 기본 정보를 등록한다.
     또는
     #setup 을 실행하여 네트워크 관리로 들어가도 된다. (수동세팅은 /etc/sysconfig 디렉토리내 화일을 보라.)
     
     #vi /etc/hosts
      127.0.0.1    localhost.localhodomain localhost     는 이미 등록되어 있을것이다.
          IP                도메인                   도메인Alias  이다.
      예) 201.110.78.xxx      aaaaaa.com       myhome

     #vi /etc/resolv.conf
      search  localdomain   은 이미 등록되어 있을것이며
      nameserver 168.126.63.1    을 추가하여 준다.

     #service network restart     //네트워크 재시동

1. 첫번째 해야 할일은 RPM-GPG-KEY 를 등록하는 일이다.
   yum 이나 rpm 을 사용할때 키가 등록되어 있지 않으면 에러를 낸다.
   근래의 버전은 에러를 내면서 자동으로 등록할지 물어본다. 그러나 예전버전 사용자들은 꼭해줘야 한다.

   #rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora

   위의 /etc/pki........  은 버젼에 따라 위치도 파일도 다르다.
   #find / -name RPM-GPG-KEY*  해서 검색한후 자신이 설치한 버전에 맞는 걸로 해준다.

2. 필요한 패키지를 설치하자.
   서버용으로 설치 했다면 일단 APM / FTP / SENDMAIL / BIND 등은 기본일테지만 혹시 모르니까.
   대충 필요한것을 죄다 설치해 본다.

 #yum install php php-cli php-common php-gd php-imap php-ldap php-mbstring php-mysql php-odbc php-pdo
   #yum install mysql mysql-connector-odbc mysql-server
   #yum install httpd gd mc vsftpd cyrus-sasl cyrus-sasl-lib cyrus-sasl-md5 cyrus-sasl-plain
   #yum bind bind-chroot bind-libs bind-utils ypbind caching-nameserver

   혹시나 sendmail 을 이용할거라면.
   #yum install sendmail sendmail-cf dovecot

   사용하지 않거나 qmail 을 따로 컴파일하여 설치할거라면 기존에 있는것을 제거하자.
   #yum remove sendmail sendmail-cf dovecot

3. 업데이트를 한다.
   일단 최신버전으로 변경해놓고 시작하자.
   단, 외국서버를 이용함으로 시간이 무쟈게 걸린다. 빠르게 하고 싶다면
   다음 포스트 내용대로 yum 설정을 조금 바꾼다. => yum 속도 빠르게 하기
   
    #yum -y update

 4. 관리자 계정을 만든다.
    대개 서버는 온라인으로 관리를 하게 된다.
    그러므로 root 로 바로 접속하도록 하는것은 스크립트등을 이용한 비밀번호 해킹에 노출되기 쉬우므로
    관리자 계정을 따로 두고 관리자계정에서 root 로 접근하도록 한다.

    useradd 관리자계정ID
    passwd 관리자계정ID    .. 이후 비밀번호 두번...

 5. su (슈퍼유저-root) 를 위에서 새로 만든 관리자 계정에서만 사용있도록 세팅하자.
   
    #vi /etc/pam.d/su

    auth required ...........pam_wheel.so ........
    버전마다 표현방식은 다르지만 대개 저 형식으로 되어 있는 부분의 주석을 제거해주면 된다.
    주의 : auth sufficient .........pam_wheel.so  <--- 이 부분을 해제하는게 아니라는것만 주의하자. 


    #vi /etc/group
   
      wheel:x:10:root         부분을 찾아서
      wheel:x:10:root,관리자계정ID     이렇게 변경하자.    

  6. ssh 에서도 root로 바로 접속할수 없도록 하자.
     (요즘은 보안때문에 telnet 은 거의 사용하지 않는다.)
     
     #vi /etc/ssh/sshd_config

     PermitRootLogin yes     라고 되어있는 줄을 찾아 주석을 제거하고
     PermitRootLogin no    라고 변경하자.

     #service sshd restart   //sshd 재시동

  7. 방화벽 제거
     Fedora / CentOS 에서는 처음 설치하는 사람들은 selinux 때문에 골치를 썩는다.

     #system-config-securitylevel 을 입력하거나, 동작하지 않으면

     #setup 을 입력한후
      방화벽(Firewall) 설정을 선택하면 조정할수 있다.

     필요하다면 시간을 투자해서 설정해보는것도 좋을듯하다.
     
     이 포스트에서는 일단 제거한다. (뭘 잘못했는지... 동작할때도 있고 안할때도 있었다.)

     #vi /etc/selinux/config

     SELINUX=......   부분을
     SELINUX=disabled   로 변경해 주자.

  8. 아파치 설정 (httpd)

     #vi /etc/httpd/conf/httpd.conf

      패키지가 좋은 점은 대충 다 설정되어 있다는것이다.
     조금만 고쳐주면 된다.

     특별히 바꿔줘야 할부분은
     1) ServerName XXXXXXX:80  되어 있는 부분을 주석제거하고 자신의 도메인으로 변경해주자.
         예) ServerNmae www.aaa.com:80  도메인이 없으면 IP라도 넣어주자.
    

     2) <IfModule mod_userdir.c>
                     :
                     :
          UserDir Disable 되어 있는 부분을
          UserDir 경로명      으로 바꿔주자
           예) UserDir public_html 혹은 UserDir www
         이 설정은 도메인/~사용자ID  했을때 사용자 홈디렉토리를 지정하는 부분이다.
         즉, useradd 로 aaa사용자를 생성하였을때.. /home/aaa/public_html 디렉토리에 홈페이지를 넣어놓으면
          http://www.XXXXXX.com/~aaa  하면 나오게 된다.
          이때 사용자를 생성하면 public_html 이나 www 디렉토리도 자동으로 만들어 지게 하고 싶으면
           /etc/skel/  디렉토리안에  public_html 이나 www  디렉토리를 만들어 놓으면 된다.
     
          주의할점은 Fedora/CentOS 에서 사용자 계정을 생성한후
          /home/사용자계정DIR  <- 이 디렉토리에 other의 이동권한을 줘야 한다는것이다.
          아니면 아파치의 기본사용자/그룹이 apache 이므로 group 을 apache 로 하고 그룹에 이동권한을 준다.
     
          #chmod go+x /home/사용자계정DIR

     3) AddDefaultCharset UTF-8 부분을 찾아서
         AddDefaultCharset Off  로 변경해 주자.

         기본 웹문서의 Encoding 을 지정하는 부분이다.
         서버내 모든 웹페이지가 UTF-8을 사용할 경우에는 UTF-8, EUC-KR 일 경우에는 EUC-KR 을
         입력해주면 되지만... 양쪽다 써야 할때, 어떤것을 쓸지 모를때는 Off 로 설정한다.
         그리고 웹페이지를 만들때 <head></head> 부분에

         <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  이나
         <meta http-equiv="Content-Type" content="text/html; charset=euc-kr"> 식으로
         구분하여 주면 된다.

     4) 가상호스트 부분
        NameVirtualHost *:80     되어 있는 부분을
        NameVirtualHost 서버IP:80   으로 바꿔주자.

       그리고 제일 하단에
       <VirtualHost 서버IP>
            ServerAdmin 관리자메일주소                            ---> 관리자ID@도메인
            DocumentRoot /home/aaa/public_html 또는 www  --->   사용자 디렉토리
            ServerName  www.도메인주소                             ---> 도메인주소
            ServerAlias   도메인주소                                     ---> 기타도메인주소
       </VirtualHost>

        이렇게 입력하여 준다.
        가상호스트를 설정하지 않으면 /var/www/html 디렉토리가 기본 홈디렉토리가 된다.
        위의 부분을 변경하여 써도 되지만 가상호스트를 활용하도록 하자.

        글은 길지만 사실상 별것 없다.

9. php 설정
   #vi /etc/php.ini    한 다음  아래 부분을 찾아서 적당한 값으로 변경한다.
    max_execution_time = 30
    max_input_time = 60
    memory_limit = 10M                    //php 실행시 메모리한계를 지정한다.
    post_max_size = 10M                 //post 전송시 데이터의 최대크기를 지정한다.
    upload_max_filesize = 10M         //파일 업로드시 최대크기를 지정한다.

    신경쓰기 싫으면 대충 곱하기 10배 해준다.

    register_globals = On               //Off 가 좋다. 하지만 다른사람이 만든 노가다사이트를 등록할때 난감하다.
    error_reporting = E_ALL & ~E_NOTICE      //php 오류시 에러에 해당하는 메세지만 보이게 한다.
    display_errors = On                //위의 설정대로 php 오류를 화면상에 표시해준다.
                                                  (완성된 사이트를 서비스하는 곳에서는 Off 해두자.)

   #vi /etc/httpd/conf.d/php.conf
     제일 아랫쪽에
     AddType application/x-httpd-php .php .html .htm .php3 .inc
     을 입력한다.

   #service httpd restart    // 아파치 재시동

10. bind 설정 (네임서버를 운영할 경우에만 세팅한다.)
     예전 버전은 named.conf 파일 하나에 모든 설정을 할 수 있으며
     최근 버전은 named.caching-nameserver.conf 와 named.rfc1912.zones 으로 나뉘어져 있다.

     1) 환경설정
         #vi /etc/named.conf    -> 예전 버전
         #vi /etc/named.caching-nameserver.conf   -> 5.0 이후버전
     
         ls 로 확인 해보면 모두 /var/named/chroot/var/etc 경로에 소프트링크 되어있는걸 알수 있다.

         예전 버전 은
               query-source 부분을 주석처리 해준다.

         최신 버전 은   아래에 해당하는 부분 모두 주석처리 해준다.
               listen-on port 53 { 127.0.0.1; };
               listen-on-v6 port 53 { ::1; };
               allow-transfer  { xxxx.xxx.xxx.xxx; };
               allow-query     { localhost; };

               match-clients      { localhost; };
               match-destinations { localhost; };
               recursion yes;

     2) zone 화일 지정
         #vi /etc/named.conf                ->예전버전
         #vi /etc/named.rfc1912.zones     -> 5.0 이후버전
       
         아래의 내용을 추가한다.

            zone "도메인" IN {
                  type master;
                  file "존파일명";                  // 대개의 경우 도메인.zone 이란 파일명을 지정한다.
                  allow-update { key "rndckey"; };
            };

      3) zone 화일 만들기
         2)번에서 지정한 존파일을 만든다. 예로서 aaaaa.com.zone 화일이라 하겠다.

         #vi /var/named/chroot/var/named/aaaaa.com.zone

         들어갈 내용은 다음과 같다.

         $TTL 86400
         @       IN      SOA     ns.도메인. admin.도메인. (
                           2006010101 ; serial
                           28800      ; refresh
                           7200       ; retry
                           604800     ; expire
                           86400      ; ttl
                   )

                   IN      NS      ns.도메인.
                   IN      MX      10      mail
         @       IN      A       xxx.xxx.xxx.xxx  //IP
         ns      IN      A       xxx.xxx.xxx.xxx  
         ftp      IN      A       xxx.xxx.xxx.xxx  
         mail    IN      A       xxx.xxx.xxx.xxx  
         www  IN      A       xxx.xxx.xxx.xxx  
         *        IN      A       xxx.xxx.xxx.xxx          

       입력시 주의할 점은 도메인 뒤에는 꼭 (.) 이 있어야 한다는것이다.

       #service named restart     //Bind 재시동

11. FTP 설정
     vsftpd 를 사용한다.
     
     #vi /etc/vsftpd/vsftpd.conf

     아래 부분을 찾아 똑같이 설정해 주자.

     anonymous_enable=NO  
     xferlog_file=/var/log/vsftpd.log     //주석해제

     만약 사용자가 자신의 상위디렉토리에는 접근하지 못하고 자신의 디렉토리내만 보게 만들고 싶다면..
     chroot_local_user=YES  //이 한줄을 넣어준다.

     예외의 사용자를 두고 싶다면 아래와 같이 한다.
     chroot_list_enable=YES   //주석해제
     chroot_list_file=/etc/vsftpd/chroot_list   //주석해제
     #vi /etc/vsftpd/chroot_list     //하여 해당하는 사용자의 ID를 한줄에 하나씩 넣어주면된다.

     사용자ID#1
     사용자ID#2

     #service vsftpd restart      //FTP 재시동

12. sendmail 설정 (Qmail 을 사용하고자 할때는 쳐다도 보지말자.)

     #vi /etc/mail/sendmail.mc

     아래의 두줄을 찾아 주석을 해제 하자 (앞의 dnl 제거)
     TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
     define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
     
     DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl      //Addr 부분을 0.0.0.0 으로 바꾼다.
     MASQUERADE_AS(`메일도메인')dnl                       // 주석제거하고 메일도메인부분을 수정한다.

     #m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

     혹시 m4 에서 에러나면 yum install sendmail-cf 해준다음 위 명령을 실행한다.

     #vi /etc/mail/local-host-named    //메일주소로 사용될 도메인 들을 한줄에 하나씩 써준다.

     aaaaa.com
     vvvvvv.co.kr

     #vi /usr/lib/sasl/Sendmail.conf

       위 파일 내에 pwcheck_method: xxxx 가 들어 있으면 고치지않는다.
       없다면 pwcheck_method: shadow  라고 입력하고 저장한다.
       만약 saslauthd 이라고 적혀 있다면
       saslauthd 서비스를 필히 실행시키도록 하자.
       #service saslauthd restart

     #service sendmail restart     //Sendmail 재시동

     kisarbl 설정은 아래 포스트를 참고하자.
     Sendmail/Qmail 에서 kisarbl 세팅

13. Mysql 설정

     #service mysqld restart     //처음 실행하면 기본적인 세팅을 한다.

     #vi /etc/my.cnf
       예전버전의 경우 EUC-KR 을 기본으로 하기 위해 설정을 바꿨지만... 그냥 써도 된다.
       궂이 바꾸고자 한다면..

       [mysqld]  부분에   
       default-character-set=euckr  //이렇게 두줄을 추가하면된다.
       character-set-client-handshake = FALSE

       아니면 그냥 php코딩시 DB접속후
       mysql_query("set names euckr"); 또는  mysql_query("set names utf8");  이렇게 넣어주면 된다.

       레코드당 많은 양의 데이터를 넣고자 한다면

       [mysqld] 부분에
       set-variable = max_allowed_packet= 숫자M               // 10M 50M 100M......

       이거 한줄정도만 넣어주자.

13. 서비스 등록
     #ntsysv     혹은
     #setup  한뒤 시스템서비스 선택

     필요한 서비스는 체크하고 필요하지 않은 서비스는 제외하자.

14. 쿼타 설정 (필요하지 않으면 제외한다.)

     #vi /etc/fstab

     쿼타 설정이 필요한 파티션 라인에서
     ext3  default
     되어 있는 부분을
     ext3 default,usrquota
     로 변경한다.

     재부팅 후....

     해당 파티션으로 이동하여 (home 파티션을 예로..)
     #mv /home
     #touch aquota.user
     #quotacheck -vagum   //첫번째에서는 경고메세지를 볼수 있다.
     #quotacheck -vagum

     #edquota 사용자ID   //해서 조정해준다.

      Filesystem                   blocks       soft       hard     inodes     soft     hard
      /dev/hda3                    396236   1000000   1536000          2        0        0

      blocks 는 현재 사용자가 쓰고 있는 양을 나타내며 단위는 kb 이다.
      첫번째 soft 는 한마디로 경고다... 대략 1주일 동안 그 이하로 내려가지 않으면 강제 삭제된다.
      첫번째 hard 는 절대 저 크기를 넘어서 저장할수 없다.
      즉, soft ~ hard 용량까지 저장할수 있지만, 사실상 soft 까지만 저장해야 되며, 잠시동안만 hard용량 까지
      쓸수 있다.  귀찮으면 soft, hard 크기를 동일하게 하자.

       inodes 는 현재 사용자의 소유로 된 파일의 수이다. (별로 사용할 용도가 없더라.)
      두번째 soft 는 경고용 파일수 이다. 즉, 파일수로 제한할때 사용한다.
      두번째 hard 는 절대 넘어설수 없는 파일의 숫자이다.

15. Qmail
     Sendmail 대신 Qmail 을 세팅하고자 할 경우에는 아래 포스트를 참고하자.
     Fedora/CentOS 에서 Qmail 설치

이상   - 끝 -

반응형