패스워드 변경
passwd

시스템종료
shutdown -옵션 [타임]

ifconfig

----------------------------------------------------------------------------------------------
ext3 윈도우즈로 치면 NTFS같은...

ext3 /boot 대략 100M Force 체크
ext3 / 또는 /home Fill 남은공간 전부

swap  2기가 이하일경우 물리 메모리 2배  이상일경우 그냥 물리 메모리로 사용해도 무방

----------------------------------------------------------------------------------------------

pkgadm 은 아래와 같이 구성이 되어 있습니다.

  pkgsysupdate    시스템 패키지 자동 관리 도구
  pkgdistupdate   배포본 버전 migration 도구
  pkgkernel       커널 관리 도구
  pkgdb           Packages System 데이터 베이스 관리 도구
  pkginfo         Packages System 의 정보를 확인하는 도구
  pkgadd          Packages System 의 패키지 설치/업데이트 도구
  pkgdel          Packages System 의 패키지 삭제 도구
  pkgchk          Packages System 의 패키지 무결성 검사 도구
  pkgdeveltrans   base 모드 설치시에 devel mode 로 전환을 해 주는 도구


pkgadd
pkgadd 는 Packages System 에서 제공하는 패키지를 설치/업데이트 관리하는 도구 입니다.
또한, pkgadd 는 원하시는 다른 rpm 패키지를 Packages System 에서 관리할 수 있게 해 줍
니다. 이 말은 다른 배포본의 패키지를 그냥 가져와서 설치할 수 있다는 것은 아니며 안녕
에서 사용 가능 하지만 안녕에서 제공하지 않은 별개의 패키지를 안녕의 Packages System
의 데이터베이스에서 같이 관리를 해 준다는 의미입니다.

다음은 pkgadd 의 사용 예제입니다.

    1. 기본 사용법
    2. 패키지 설치
    3. 버전을 지정하여 패키지 설치
    4. 패키지 업데이트
    5. 설치되어 있는 패키지만 업데이트
    6. 로컬 파일 패키지를 설치 및 업데이트
    7. 원격 파일 패키지를 설치 및 업데이트



 
1. 기본 사용법 

 Hanterm - pkgadd --help
 [oops@main dir]$ pkgadd --help
  PKGADM v.2.0.0 : 패키지 관리 툴

  사용법: /usr/sbin/pkgadd [옵션] [패키지이믈]
  Options:
      -v|--verbose        상세 출력
      -i|--install        설치 모드. 기본 값이다.
      -u|--upgrade        업그레이드 모드. 이 옵션은 rpm 의 -U 와 같다.
      -F|--freshen        설치되어 있는 패키지만 업데이트 한다. 이 옵션은 rpm 의 -F 와 같다
      -f|--force          강제 설치 옵션으로 -u 또는 -F 옵션과 같이 사용한다.
                          이 옵션은 rpm 의 --force 옵션과 같다
      -n|--noansi         안시 출력 사용 안함
      -h|--help           도움말 (현재 메세지).
 [oops@main dir]$ 

  pkgadd 를 사용할 경우 2.0.1 버전 부터는 pkgadd php* 과 같이 astrik (*) 를 사용할 수
  있습니다. 이 표현을 사용 할 경우 주의할 점은, php* 표현은 php 로 시작하는 모든 패키
  지를 의미할 수도 있지만, 만약 명령을 실행하는 current directory 에 php* 으로 시작하
  는 rpm 파일이 존재할 경우, 쉘 확장에 의하여 php 로 시작하는 모든 패키지의 의미가 아
  닌 현재 디렉토리의 php 로 시작하는 모든 패키지가 되는 것을 주의해야 합니다.

 
2. 패키지 설치 

  pkgadd 는 pkgsysupdate 가 관리하지 않는 third party 패키지 즉, Packages System 에서
  제공하는 패키지를 설치하는 명령입니다.

  아래의 예제는 nfs-utils 에 의존성이 걸린 portmap 을 같이 설치해 주는 과정입니다. 주
  의할 것은 pkgadd가 버전 의존성을 체크하지 않기 때문에, 간혹 문제가 발생할 소지가 있
  습니다. 이는 oops.org 의 QnA 게시판으로 문의를 주십시오.

  -v 옵션을 주면 좀 더 자세한 사항을 보실 수 있습니다.

 Hanterm - pkgadd
 [oops@main dir]$ pkgadd nfs-utils
  nfs-utils       : 
    ==> 의존성 패키지 portmap 성공
    ==> nfs-utils Install 성공

 [oops@main dir]$ 

 
3. 버전을 지정하여 패키지 설치 
  pkginfo -l 패키지 명령을 수행하면 해당 패키지의 Packages System에서 제공 가능한 버
  전 형식을 보여줍니다. 자세한 것은

  http://annyung.oops.org/?m=pkgadm&p=pkginfo#4

  을 참조 하십시오. 버전 정보가 없이 설치를 하면, 현재의 current (안정) 버전이 설치
  가 됩니다. current 버전에 대한 정보는 위의 pkginfo 링크에서 확인하실 수 있습니다.

  -v 옵션을 주면 상세한 내용을 확인할 수 있습니다.

 Hanterm - pkgadd php-5:4.3.8-1-i686
 [oops@main dir]$ pkginfo -l php
  PKGADM v2.0.0 : 패키지 시스템 데이터베이스 뷰어
  php             : PHP HTML - Apache와 함꼐 사용하는 embedded script 언어 [ 설치안됨 ]
  버전정보        : 5:4.3.8-1-i686
                    6:4.3.9-1-i686 *
 [oops@main dir]$ 
 [oops@main dir]$ pkgadd php-5:4.3.8-1-i686
  php             : Install 성공
 [oops@main dir]$ 
 [oops@main dir]$  pkginfo php
  php             : PHP HTML - Apache와 함꼐 사용하는 embedded script 언어 [업데이트]
 [oops@main dir]$ 

 
4. 패키지 업데이트 

  패키지 업데이트는 패키지 설치에 -u 옵션만 더해 주는 방식과 같습니다. 실제로 업데이
  트가 아닌 인스톨에도 -u 를 사용해도 무방하므로, 왠만하면 설치시에도 -u 옵션을 주는
  것을 권장합니다. 만약 반드시 업데이트만 하고 싶다면 다음 섹션을 참고합니다.

  만약 설치 되어 있는 버전을 재설치 하거나, 또는 하위 버전으로 다운그레이드를 하고싶
  다면, 버전 정보를 명기하고 -f 옵션을 주면 됩니다.

 Hanterm - pkgadd -u php
 [oops@main dir]$ pkginfo -l php
  PKGADM v2.0.0 : 패키지 시스템 데이터베이스 뷰어
  php             : PHP HTML - Apache와 함꼐 사용하는 embedded script 언어 [ 설치안됨 ]
  버전정보        : 5:4.3.8-1-i686
                    6:4.3.9-1-i686 *
 [oops@main dir]$ 
 [oops@main dir]$ pkgadd php-5:4.3.8-1-i686
  php             : Install 성공
 [oops@main dir]$ 
 [oops@main dir]$  pkginfo php
  php             : PHP HTML - Apache와 함꼐 사용하는 embedded script 언어 [업데이트]
 [oops@main dir]$ 
 [oops@main dir]$  pkgadd -u php
  php             : Update 성공
 [oops@main dir]$ 
 [oops@main dir]$  pkginfo php
  php             : PHP HTML - Apache와 함꼐 사용하는 embedded script 언어
 [oops@main dir]$ 
 [oops@main dir]$  pkgdel php
  php             : 삭제 성공
 [oops@main dir]$ 
 [oops@main dir]$  pkgadd -F php
  php             : 설치 안됨
 [oops@main dir]$ 

  pkgadd -u 를 사용해야 하는 가장 큰 이유는, pkgadd -u 명령은 업데이트가 실행 될때에
  이 전의 설정파일을 /var/lib/pkgadm/conf 디렉토리에 백업을 하게 됩니다.  필자가 rpm
  을 사용하면서 가장 열받는 경우가 spec 파일에 noreplace 라고 지정을 했음에도 불구하
  고 그냥 덮어쓰는 경우가 있었는데, 이를 해결할 수 있기 때문입니다. 만약 설정 파일이
  초기화 되었다고 판단이 들면 /var/lib/pkgadm/conf 에서 찾으시면 됩니다.

 
5. 설치되어 있는 패키지만 업데이트 

  현재 시스템에 설치가 되어 있는 패키지만 업데이트를 하고 싶다면, -u 옵션 대신 -F 옵
  션을 사용하면 됩니다.  -F 옵션을 사용하면 아래의 예와 같이 시스템에 설치가 되지 않
  은 패키지는 업데이트 하지 않습니다.

 Hanterm - pkgadd -F php
 [oops@main dir]$ pkginfo -l php
  PKGADM v2.0.0 : 패키지 시스템 데이터베이스 뷰어
  php             : PHP HTML - Apache와 함꼐 사용하는 embedded script 언어 [ 설치안됨 ]
  버전정보        : 5:4.3.8-1-i686
                    6:4.3.9-1-i686 *
 [oops@main dir]$ 
 [oops@main dir]$ pkgadd -F php
  php             : 설치 안됨

 [oops@main dir]$ 

 
6. 로컬 파일 패키지를 설치 및 업데이트 

  pkgadd 는 Packages System 의 패키지 뿐 아니라 로컬 파일을 설치할 수도 있습니다. 이
  경우에는 pkginfo 에서 개별 설치 데이터 베이스로 따로 관리 및 출력을 합니다. 단, 설
  치 가 완료되면 원본 파일은 삭제가 되니 주의 하십시오.

  업데이트는 기본 업데이트와 같이 -u 나 -F 옵션을 사용하면 됩니다.

  참고할 것은, 일단 개별 설치로 설치된 패키지를 나중에 official 용으로 설치를 하더라
  도 이는 계속 개별 패키지로 관리가 됩니다.  이를 official 목록으로 넣고 싶다면 삭제
  를 한 후에, 재 설치를 해야 합니다.

 Hanterm - pkgadd -u
 [oops@main dir]$ pkgadd ./w3m-0.4.1-8,1.i686.rpm
  w3m             : Install 성

 [oops@main dir]$ pkginfo w3m
  w3m             : A pager with Web browsing abilities. [ 유저 ]
 [oops@main dir]$ 
 [oops@main dir]$ pkginfo

  -- [ 개별 설치 패키지 목록 ] -----------------------------

  w3m             : A pager with Web browsing abilities.[ USER ]

  -- [ 설치된 패키지 목록 ] -----------------------------

  sqlite-devel    : sqlite 를 이용한 개발시 필요한 헤더파일과 라이브러리들
  sqlite          : 향상된 내장 SQL 데이터베이스 엔진 C 라이브러리
  dejagnu         : 다른 프로그램을 테스트 하기 위한 프론트엔드
  pkgconfig       : A tool for determining compilation options.
  dietlibc        : A small libc implementation
 [oops@main dir]$ 

 
7. 원격 파일 패키지를 설치 및 업데이트

  원격 파일 패키지는 로컬 파일 패키지와 동일합니다. 다만 파일 경로를 ftp 또는 http URL
  을 사용한다는 점만 차이입니다.

  또한, 이는 개별 설치 목록에서 다루어 집니다.


----------------------------------------------------------------------------------------------
이 문서는 안녕 1.1 사용자를 위한 문서이다. 1.0 사용자들은 1.1 로 migration 을 한후
에 참고 하도록 한다. 우측 white paper 메뉴의 migration 문서를 참고하라.

  1. firewall tuning

  AnNyung 은 기본적으로, 방화벽에 의해서 localhost 에 대한 네트워크와 22 번 포트가
  anywhere 로 열려 있으므로, 설치 후 꼭 방화벽 설정을 해 줘야 한다.

  /etc/oops-firewall/filter.conf 에서 ALLOWALL 지시자 값에 외부에서 접속할 수 있는
  관리자의 IP 를 적어 주도록 한다.  이 지시자는 모든 포트를 제어하는 지시자이기 때
  문에 믿을 수 있는 사용자에게만 열어줘야 한다.

  나머지 설정은 http://www.oops.org/?&t=lecture&sb=firewall&n=2 를 참고하여 설정을
  하든지 또는 설정 파일들의 주석(한글^^)을 참고 하도록 한다.



  2. kernel tuning

  AnNyung 의 커널은 기본으로 Pentium ll 이상의 CPU 와 1G 이하의 RAM 에 맞추어 빌드
  되어 있으며, 기본으로 SMP 를 지원한다. 일단 CPU 와 RAM 에 의해서 다음의 최적화된
  커널을 사용할 수가 있다.

  kernel-BOOT-2.4.20-13,3.i386.rpm
  => BOOT disk 에서 사용하는 커널. 일반적으로는 사용할 일이 없다.

  kernel-2.4.20-13,3.i686.rpm
  => 설치 시, 기본으로 올라가는 커널.
     CPU : i686 계열
     RAM : 4G 미만

  kernel-bigmem-2.4.20-13,3.i686.rpm
  => CPU : i686 계열
     RAM : 4G 이상 64G 미만

  kernel-PIII-2.4.20-13,3.i686.rpm
  => CPU : Pentium III
     RAM : 1G 이상 4G 미만

  kernel-PIV-2.4.20-13,3.i686.rpm
  => CPU : Pentium lV
     RAM : 1G 이상 4G 미만

  커널은 Packages  System 의 pkgkernel 명령으로 자신의 시스템에 맞는 커널을 사용하
  도록 한다.

  http://annyung.oops.org/?m=pkgadm&p=pkgkernel

  을 참고 하도록 한다.



  3. kernel parameter config

  안녕 1.1 은 자동으로 시스템 리소스를 파악하여 커널 파라미터 값을 조정을 한다. 만
  약 특별한 값을 지정하고 싶다면 /etc/sysctl.conf에 적용을 하면 된다. 이 파일의 주
  석을 잘 읽어보고 안녕이 자동으로 변경하는 파라미터에 대해서는 다른 대책을 강구해
  야 한다. :-)

  sysctl.conf 에 대해서는 http://www.oops.org/?t=lecture&sb=kernel&n=3 문서를 참고
  하도록 한다. 만약 이에 대해서 제대로 모르는 사람은 안녕이 셋팅하는 기본값을 사용
  해도 상당한 퍼포먼스를 가질 수 있을 것이다.


  4. fstab tuning

  이 섹션은 안녕 1.0 에서 1.1 로 업데이트를 한 유저의 경우에만 해당한다. 1.1 을 직
  접 설치한 유저들은 인스톨러에서 이 부분이 픽스 되어 있다.

  fstab 에서는 access 가 많은 파티션에 대해서 access time 을 기록 하지 않도록 하여
  HDD 의 퍼포먼스를 향상 시키도록 한다. 주의할 것은 / 가 포함된 파티션은 만지지 않
  는 것이 좋다.

  보통 /home 이나 /var 의 경우에는 access 가 많으므로 access time 을 기록하지 않도
  록 한다.

  예제)
  변경전:
  /dev/sda4               /home             ext3    defaults                1 2
  변경후:
  /dev/sda4               /home             ext3    defaults,noatime        1 2


  또한, AnNyung 의 경우에는 devfs 의 도입으로 mount 나 df 를 했을 경우 파티션의 정
  보가 다음과 같이 나오게 된다.

  [root@work RPMS]# mount
  scsi/host0/bus0/target0/lun0/part2 on / type ext3 (rw)
  none on /proc type proc (rw)
  devfs on /dev type devfs (rw)
  none on /dev/pts type devpts (rw,gid=5,mode=620)
  scsi/host0/bus0/target0/lun0/part4 on /home type ext3 (rw)
  none on /dev/shm type tmpfs (rw)
  scsi/host0/bus0/target0/lun0/part3 on /var type ext3 (rw)

  lun0 은 첫번째 HDD 즉, sda 나 had 를 의미하며, part2 는 sad2 나 hda2 를 의미한다.
  이를 우리가 보던 형식으로 보기 위해서는, fatab 에서 위의 부분을 우리가 보기 좋은
  식으로 수정을 해 준 후에, 리부팅을 하면 된다. (fstab 이 LABEL 로 되어있을 경우는
  /etc/mtab 을 참고하여 LABEL 을 '변경 후' 와 같이 수정을 한다.

  변경전:

  [root@work RPMS]# cat /etc/fstab
  scsi/host0/bus0/target0/lun0/part2   /         ext3    defaults         1 1
  none                                 /dev/pts  devpts  gid=5,mode=620   0 0
  scsi/host0/bus0/target0/lun0/part4  /home      ext3    defaults,noatime 1 2
  none                                /proc      proc    defaults         0 0
  none                                /dev/shm   tmpfs   defaults         0 0
  scsi/host0/bus0/target0/lun0/part3  /var       ext3    defaults,noatime 1 2
  /dev/sda1                           swap       swap    defaults         0 0
  /dev/cdrom                          /mnt/cdrom  iso9660 noauto,owner,kudzu,ro 0 0
  /dev/fd0                            /mnt/floppy auto    noauto,owner,kudzu 0 0

  변경후:

  [root@work RPMS]# cat /etc/fstab
  /dev/sda2               /               ext3    defaults         1 1
  none                    /dev/pts        devpts  gid=5,mode=620   0 0
  /dev/sda4               /home           ext3    defaults,noatime 1 2
  none                    /proc           proc    defaults         0 0
  none                    /dev/shm        tmpfs   defaults         0 0
  /dev/sda3               /var            ext3    defaults,noatime 1 2
  /dev/sda1               swap            swap    defaults         0 0
  /dev/cdrom              /mnt/cdrom      iso9660 noauto,owner,kudzu,ro 0 0
  /dev/fd0                /mnt/floppy     auto    noauto,owner,kudzu 0 0
----------------------------------------------------------------------------------------------
 안녕에서 Daemon 들은 기본으로 설치 되지 않습니다. 안녕은 기본적인 시스템 유지관리
  와 사용하지 않는 데몬이 떠 있어 보안에 취약한 것을 방지하기 위해, Package System
  으로 제공을 합니다.

  Packages System 에 대해서는 우측 메뉴의 Packages System 문서를 참고 하십시오.

  먼저 A.P.M (apache, php, mysql) 을 Packages System 으로 설치를 합니다.


 Hanterm - pkginfo -v -l php
 [oops@main dir]$ pkgadd -u mysql mysql-client php-mysql
  mysql           : Update 성공
  mysql-client    : Update 성공
  php-mysql       :
    ==> 의존성 패키지 apache 성공
    ==> 의존성 패키지 php 성공
    ==> php-mysql Update 성공

 [oops@main dir]$ chmod 775 /var/run
 [oops@main dir]$ 

  만약 다른 php extensoin 에 대해서 궁금하면, pkginfo -l -x php 명령으로 확인할 수 
  있으며, 필요한 extension 은 역시 pkgadd -u 명령으로 설치하면 됩니다.

  1. mysql root password 변경하기

    mysql daemon 이 떠 있는지 부터 확인을 한다. 떠 있지 않으면 다음의 명령으로 재
    시작을 하도록 하나.

    [root@home /public_html]# service mysql restart
    [root@home /public_html]# mysql mysql

    Reading table information for completion of table and column names You can
    turn off this feature to get a quicker startup with -A

    Welcome to the MySQL monitor. Commands end with; or \g.
    Your MySQL connection id is 1961 to server version: 3.22.32-log

    Type 'help' for help.
    mysql> use mysql;
    mysql> update user set password = password('루트패스워드')
         > where user = 'root';
    Query OK, 1 row affected (0.00 sec)

    mysql> delete from user where user = '';
    Query OK, 1 row affected (0.00 sec)

    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)
    mysql> quit

    다음의 작업을 마쳤다면, 이제 변경된 패스워드로 로그인을 해 봅니다.

    [root@home /public_html]# mysql -u root -p mysql
    Password: 루트패스워드
    mysql>

    과 같이 진행이 된다면 변경이 잘 된 것입니다.  이제 mysql log 관리를 위하여 변경
    한 root 패스워드를 /etc/mysql/my.cnf 의 가장 상단에 주석처리되어 있는

    #password        = ROOTPASSWORD

    부분을

    password        = 루트패스워드

    로 변경을 하고 저장을 합니다. 그리고, my.conf 는 mysql 의 root 암호를 가지고 있
    기 때문에 꼭, 파일 퍼미션을 600 으로 맞추어 놓아야 합니다.

  2. php 설정

    php 를 사용 가능하게 하기 위해서는 /etc/httpd/conf/module.d/php.conf 에서

    #LoadModule php5_module        modules/libphp5.so

    위의 라인을 찾아서 주석을 제거하고,

    service httpd restart

    명령으로 apache 를 재 구동하는 것으로 해결이 됩니다.

    만약 .html 이나 .htm 에서 php 를 사용할 수 있기를 원하신 다면 php.conf 에서

    AddType application/x-httpd-php .php .php3 .phtml .ph .ins

    라인을 찾아서 .html 과 .htm 등 원하시는 확장자를 등록하면 됩니다. 단, 왠만하면
    .html 이나 .htm 의 경우에는 쓸데없이 php 를 해석하지 않도록 그냥 정적인 서비스
    만 하도록 하시는 것이 서버 관리상 좋습니다.

  3. php extension 사용하기

    안녕에서 제공하는 php extension 은 shared 형태로 패키징이 됩니다. pkgadd 를 이
    용해서 설치를 하면, extension 들은 /usr/lib/php/extensions 에 등록이 되며 관련
    설정 파일들은 /etc/php.d/apache 에 설치가 됩니다. php 4.4.2 와 5.1.2 이전 버전
    의 경우에는 php.ini 에서 등록을 해서 사용을 하게 되어 있으나 4.4.2 와 5.1.2 버
    전부터는 자동으로 설정이 되게 되어 있습니다. (즉, 따로 할 것이 없어졌다는 얘기
    입니다.)

    제공하는 php extension 은 pkginfo -l -x php 명령으로 확인할 수 있으며 pkgadd 명
    령으로 설치를 하시면 됩니다.

  4. Zend Optimizer 설정

    안녕 리눅스에서는 getZendOptimizer 라는 유틸리티를 제공합니다. getZendOptimizer
    는 php-binary 패키지에 포함이 되어 있습니다. php-binary 패키지는 default 패키지
    이므로 pkgsysupdate 에서 관리되며, 이 php-binary 버전에 따라 맞는 ZendOptimizer
    를 설치하게 됩니다. 아래처럼 -l 옵션을 주면


 Hanterm - getZendOptimizer -l
 [oops@main dir]$ getZendOptimizer -l
ZendOptimizer v2.0.1
------------------------------------------------------------
Copyright ⓒ AnNyung LInux 

ZendOptimizer51-2.6.2

 [oops@main dir]$ 

    설치 가능한 ZendOptimizer 의 리스트가 나오며 -l 옵션을 빼고 버전을 적어 주면 자
    동으로 설치를 하게 됩니다.


 Hanterm - getZendOptimizer -l
 [oops@main dir]$ getZendOptimizer 2.6.2
ZendOptimizer v2.0.1
------------------------------------------------------------
Copyright ⓒ AnNyung LInux 


SERVER      : mirror.oops.org
REMOTE PATH : /pub/Linux/PHP/zo
LOCAL PATH  : /var/lib/php/tmp/ZendOptimizer51-20060223212126
CONNECT     : Success
LOGIN       : anonymous/zendO@zend.com 

2.6.2    Completed 
 [oops@main dir]$ 

    위와 같이 설치를 하시고, apache 를 재시작 하면 반영이 됩니다.

----------------------------------------------------------------------------------------------
DNS For Multibyte Charset
  이 문서는 안녕에서 다국어 도메인을 사용하기 위한 문서 이다. 이 문서대로 사용
  을 하기 위해서는 안녕에서 제공하는 bind 9.2.3-4,8 버전 부터이니, 버전을 확인
  하고 버전이 낮으면, 업데이트를 하기 바란다.

  간단하게 autoupdates 로 할 수가 있으며, 직접 rpm 명령으로 업데이트를 하기 위
  해서는 --nodeps 옵션을 주고하기 바란다. 이는 9.2.2 까지는 bind-utils 에 라이
  브러리들이 포함이 되어 있었으나,  9.2.3 부터는 bind-utils 에 있는 유틸리티들
  을 정적으로 컴파일 하였기 때문에 bind 패키지에 포함이 되었기 때문이다.

  작성: 김정균 


  안녕의 bind 9.2.3-4,8 부터는 multibyte 도메인을 지원하도록 패치가 되어 있다.
  기존의 패치들이 domain 관련 utility 들만 패치를 하는 것과는 달리, 안녕에서는
  named.conf 와 zone 파일에서도 다국어 도메인을 지원하도록 패치가 되어 있다.

  이 패치가 적용이 되므로서, nslookup, dig, host 등에서 punycode 로의 변환 없
  이 바로 질의를 할 수가 있다. 또한, 설정파일 역시, punycode 로 변환하는 과정
  이 필요없이 named.conf 와 zone file 에 다국어를 직접 입력을 할 수 있다.

  이 패치는 현재 한국어와 일본어를 제공하며, 기본값은 EUC-KR 이다.

  또한, (char) str & 0x80 으로 체크되는 언어는 모두 지원이 되며, 로컬 도메인의
  경우 server.c 패치의 set_idn_charset 함수에 적절히 등록을 해 주면 된다.

  일본어의 경우 EUC-JP 는 지원이 되나, SJIS 는 지원되지 않는다. 이는 체크 방식
  이 EUC-JP 와는 틀리고 (EUC-JP 는 str & 0x80 로 체크가 가능하나, SJIS 는 안된
  다.) 본인이 테스트를 할 만한 환경이 되지를 못해서 이다.


  * named.conf 설정

    named.conf 에서 도메인 설정 시에,  origin 은 변환이 되며, 파일 이름은 변환
    이 되지 않는다.

    zone "한글.com" IN {
            type master;
            file "한글.com.zone";
            allow-update { none; };
    };

    의 예에서, origin 한글.com 은 변환이 되며, file 에 지정된 한글.com.zone 은
    변환이 되지 않는다.

    기본 charset 을 사용하지 않고 다른 charset 을 사용하고 싶다면, 다음과 같이
    설정한다.

    zone "CH+EUC-KR.한글.com" IN {
            type master;
            file "한글.com.zone";
            allow-update { none; };
    };

    CH+EUC-KR 은 실제 도메인에 반영이 되지 않으며, 단순히 강제로 문자셋을 지정
    하기 위함이다. 일본어의 경우

    zone "CH+EUC-JP.일본어.com" IN {
            type master;
            file "일본어.com.zone";
            allow-update { none; };
    };

    와 같이 할 수 있다. 만약, DEFAULT_IDN_CHARSET 을 EUC-JP 로 맞추어 놓는다면
    문자셋 설정 없이 사용할 수 있게 되는 것이다.


  * zone file 설정

    zone file 설정은 조금 주의 해야 한다.  일단 zone file 설정은 LHS 와 RHS 의
    표현식으로 이루어진다. 예를 들어

    ns         IN     A    1.1.1.1

    의 경우 LHS 는 ns, RHS 는 1.1.1.1 로 생각을 하기바란다.

    LHS 의 경우에는 기본적으로 DEFAULT_IDN_CHARSET 에 의하여 변환이 된다. 만약
    이를 변경하고 싶을 경우에는 파일 최상단에

    $CHARSET EUC-JP

    와 같이 설정을 할 수 있다.

    RHS 의 경우에는 CNAME 에 $CHARSET 과 다른 idn 을 사용해야 하는 경우도 있기
    때문에 zone file 에서 처럼 CH+CHARSTE.이름 의 형식으로 지정을 한다.


  * client program 에서의 사용
  
    이 부분은 dig/nslookup/host 등의 사용에 주의할 점이다.
  
    idn patch 는 시스템의 iconv 를 이용하기 때문에 시스템의 언어관련 환경 변수
    에 의하여 변환이 이루어진다. 그러므로 한글 도메인을 검색하기 위해서는 환경
    변수 들이 한글 환경에 있어야 한다.
  
    만약 환경 변수에 상관없이 강제로 변환을 하고 싶다면
  
    $ CHARSET=EUC-JP nslookup 일본어.com
  
    과 같이 하면 될지도 모르겠다 ^^;


  * 아쉬움 ..

    일본어는 지원을 하려 했으나, 아마도 일본어는 SHIFT-JIS 를 주로 사용하는 듯
    싶다. 하지만 SHIFT-JIS 의 경우 본인이 테스트할 환경이 안되고, 또한, EUC-JP
    와는 다른 체크를 해야 하는 관계로, 마무리를 하지 못했다는 점이 아쉽기는 하
    다. 어느 정도 어느 부분을 하면 되는지 정도는 이 패치를 통하여 알 수 있을테
    니, 수정을 할 수 있는 환경에 있는 사람이 해 주면 될 것 같다. ^^;

----------------------------------------------------------------------------------------------
Sendmail with STARTTLS Document
  이 문서는 안녕에서 제공되는 sendmail 에서 STARTTLS 기능을 사용하기 위한 문서이다.
  STARTTLS 기능을 사용하기 위해서는 8.13.1 이상 버전이 설치되어 있어야 하니, 설치되
  어 있는 버전을 확인하여 이 버전 보다 낮으면, update 를 하도록 한다.

  STARTTLS 기능을 이용하면, 메일을 발송할 때 암호화를 하여 발송이 가능하다.  안녕에
  설치되어 있는 sendmail 은 기본으로 TLS 설정이 되어 있지 않으며 STARTTLS 를 사용하
  기 위해서는 다음의 과정을 거치도록 한다.

  이 과정을 수행하기 위해서는 sendmail-cf 패키지가 설치되어 있어야 한다.


  1. sendmail.mc 파일 편집

    [root@home mail]# cat /etc/mail/sendmail.mc

    ... 상략 ...

    dnl #
    dnl # sendmail 의 TLS 기능에 필요한 certificate 에 대한 정보:
    dnl #     make -c /usr/share/ssl/certs usage
    dnl # 도는 포함이 되어 있는 makecert.sh 스크립트를 이용해서 생성한다.
    dnl #
    dnl define(`CERT_DIR',`/usr/share/ssl/certs/sendmail')
    dnl define(`confCACERT_PATH',`CERT_DIR')
    dnl define(`confCACERT',`CERT_DIR/cacert.pem')
    dnl define(`confSERVER_CERT',`CERT_DIR/cert.pem')
    dnl define(`confSERVER_KEY',`CERT_DIR/key.pem')
    dnl define(`confCLIENT_CERT',`CERT_DIR/cert.pem')
    dnl define(`confCLIENT_KEY',`CERT_DIR/key.pem')
    dnl #

    ... 중략 ...

    dnl #
    dnl # TLS 설정 :
    dnl # 아래의 설정은 TLS 기반의 SSL 암호화로 서버를 운영하기 위한 옵션이다.
    dnl # 아래의 라인의 주석을 풀어 주면 465번 포트로 암호화 하여 메일 전송을
    dnl # 할 수 있다.
    dnl #
    dnl # STARTTLS 를 사용하기 위해서는 상단의 TLS key 설정의 주석을 같이 풀어 줘야
    dnl # 하며, make_sendmail_cert 명령을 실행하여 cert 파일을 생성해 줘야 한다.
    dnl #
    dnl DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s')dnl
    dnl #

    ... 하략 ...


    위의 내용은 sendmail.mc 의 내용중 일부이며 붉은색의 글씨체가 TLS 관련 설정이다.
    위의 붉은색의 내용 중 앞쪽의 dnl 을 모두 삭제하여 주석상태를 해제를 하고 저장을
    한다.

    다음, sendmail.cf 를 재작성 하기 전에, 인증서를 먼저 만들도록 한다. 인증서는 안
    녕의 sendmail 에서 제공하는 make_sendmail_cert 명령을 이용하도록 한다.


  2. 인증서 만들기

    [root@home mail]# make_sendmail_cert


  3. sendmail.cf 재생성

    인증서를 생성하였으면, TLS 를 구동할 수 있도록 새로운 sendmail.cf 를 생성한다.

    [root@home mail]# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

    새로운 sendmail.cf 를 생성한 후, 서버 인증서를 만들 때 주었던 FQDN 을 sendmail.cf
    의

    #Dj$w.Foo.COM

    라인을

    DjFQDN

    으로 설정한다. Dj 뒤의 FQDN 은 인증서 발급시에 넣었던 FQDN (도메인) 을 적어 주
    도록 한다.



  4. sendmail 재시작

    [root@home mail]# /etc/init.d/sendmail restart


  5. 확인

    netstat -anpt 명령을 실행하여 0.0.0.0:465 포트가 열려 있는지 확인을 한다.


  6. 클라이언트 설정

    기본 설정은 거의 동일하면 보내는 서버의 포트 설정만 해 주면 된다.

    Outlook Express :

      도구 > 계정 설정 > 속성 > 고급 에서 보내는 메일의 포트를 465 로 지정하며, 그
      아래에 있는 보안 연결(SSL) 필요 에 체크를 해 주면 된다.

    Mozilla Or Thunderbird :

      도구 > 계정 설정 > 보내는 서버(SMTP) 에서 보안통신 사용(SSL) 을 SSL로 선택을
      한다.


  7. 사설 인증서 문제

      공인 인증서가 아닌 사설 인증서를 사용함으로서, 접속 시 마다, 인증서 관련된 메
      세지가 뜨게 된다. 모질라나 썬더버드에서는 인증서를 저장하면 그 이후 부터는 나
      오지 않으며, Outlook 에서는 필자가 사용하지 않으므로, 잘 모르겠다.


  8. 기타

      위의 설정을 하지 않고, 그냥 25번 포트로도 메일을 전송하는데 문제가 없다.

----------------------------------------------------------------------------------------------

+ Recent posts