레이블이 mysql인 게시물을 표시합니다. 모든 게시물 표시
레이블이 mysql인 게시물을 표시합니다. 모든 게시물 표시

2012-10-06

[DBMS/MYSQL]_mysql_유지보수_MYD,MYI,FRM



[[[ SQL 자료의 이전과 dump ]]]
table dump (특정 테이블을 sql 문으로 저장하기)
./mysqldump -u ID -p DBname tablename > tablename.sql
-------------------------------------------------------------------------
특 정 table 깔기
./mysql -u ID -p DBname < table.sql
--------------------------------------------------------------------------
특 정 테이블 지우기
./mysql -u DBname -p
./use DB
./drop table tablename;
---------------------------------------------------------------------------
DB 을 모두 sql Dump 백업
./mysqldump -u ID -p DBname > ***.sql
./mysql -u ID -p DB < ***.sql
***********************************************************
 [[[[[[[[[[[ 테이블의 유지 보수 ]]]]]]]]]]]]]]]]]]]]]]
전원중단,비정상종료,frm화일 삭제수정등에 의한 DB 이상
mysql 의 테이블 검사 및 오류를 수정하는 유틸리티
* myisamchk 를 사용시 mysql를 종료한다.
* 테이블은 3개 화일 : frm, MYI, MYD 파일을 검사한다.
   frm(테이블구조기록), MYI(테이블인덱스화일), MYD (데이터화일)
------------------------------------------------------------------------
myisamchk table명 (table 조회 검색)
myisamchk --recover --quick table명 (빠른복구)
myisamchk --recover table명 (복구)
myisamchk --safe-recover table명 (재오류시)
-------------------------------------------------------------------------
복 구되지 않는 경우
-테이블구조가 기록된 frm 파일이 삭제 또는 손상
-테이블 인덱스 파일은 MYI 삭제 손상된 경우
-MYD 는 데이터 파일
---------------------------------------------------------------------------
myisamchk -r table명
(테이블 파일의 빈공간등을 없에 최적화 시킨다.)
-a : 흩어진 인덱스를 모아 속도 향상
-S : 인덱스트리 소팅 검색 속도 향상
-R : 인덱스 기준 레코드 정렬 속도 향상
      myisamchk -R1 tablename
      * 1번 인덱스 기준 레코드 정렬
-----------------------------------------------------------------
[[[[[[ EXCEL 에 있는 자료 mysql로 이전하기 ]]]]]]]
1. 엑셀의 화일을 파일형식-텍스트(탭으로분리)로 선택 저장
    * sample.txt
  ex) 허정수  A  경기도
        이효진  B  구리시
2. FTP 로 전송후 LOAD DATA INFILE 명령으로 테이블 입력
    * 미리 테이블이 생성되어 있어야 한다.
    * 해당 txt 에 맞게 테이블을 만들어 주세요!
3.LOAD DATA INFILE 'sample.txt'  INTO TABLE sample
   LINES  TERMINATED BY '\r\n' ;
   * '\r\n' 줄구분차이 도스 원도우
4. select * from sample;


----
복구하는 방법은 ...
mysql data 디렉토리에 그냥 같다가 놓는겁니다 ^^

.frm 파일은 테이블 구조가 저장되어 있는 파일입니다
.MYD 파일은 실제 데이터가 들어있는 파일입니다
.MYI 파일은 Index 정보가 들어가 있는 파일입니다
위 3개의 파일을 손상되지 않은 상태에서 가지고 계신다면
그냥 갖다가 놓는것 만으로 복구하실 수 있습니다
단, 퍼미션 조절은 해주셔야겠지요퍼 미션 조절 안하시면 나중에 DB 파일을 읽어오지 못합니다

그리고 저 파일들을 .sql 형태로 변환하는 방법은 없습니다
적 어도 제가 알기론요..
다만
백업받으실때 .sql 형태로 백업받을 수는 있습니다
mysqldump -A -u root -p > mysql_bakup_all.sql
이렇게 하시면 모든 데이터베이스를 .sql 형태로 백업받게 됩니다
특 정 DB 만, 혹은 특정 Table 만 백업받는 방법은
Mysql 메뉴얼을 참조하시구요..
더 자세한 답변은 여기 계신 고수분들께서 해주실겁니다
그리고
database.sarang.net 사이트로 한번 들려보세요

2012-09-17

DBMS/MySQL] Mysql Dump 백업하기 스크립트


안녕하세요. mindline 입니다.

별건 아닌데... 제가 필요에 따라 만들어 쓰는 스크립트입니다.
혹시 도움이 될까 해서 올려 봅니다.

------------ 시작 -----------------

#!/bin/sh

backup_dir="/home/mysqlbackup"
dat=`date +%Y%m%d`

if [ ! -d "$backup_dir/$dat" ];
then
  mkdir $backup_dir/$dat
fi

cd /var/lib/mysql

for dbdir in *
do
  if [ -d $dbdir ];
  then
    mkdir $backup_dir/$dat/$dbdir
    cd $dbdir

    for table in *MYI
    do
      tname=`basename $table .MYI`
      mysqldump -p비밀번호 -uroot $dbdir $tname > $backup_dir/$dat/$dbdir/$tname.dump
    done

    cd ..
    sleep 1
  fi
done



#pastdat=`date --date '7 days ago' +%Y%m%d`
#rm -rf $backup_dir/$pastdat

---------------- 끝 ------------------------

대략 요령껏 디렉토리 경로등은 변경하세여. ^^;

매일 크론에 등록해 놓구 쓰면 되겠져...

제일 밑에 두줄은 계속 쌓이기만 하면 하드가 Full 될테니...
7일일 전의 디렉토리는 지우라는 명령어 입니다.

( rm -rf 조심하세여. 현재 주석 처리 입니다. ^^ )


대략 이렇게 됩니다.
20031127/dbname1/tablename1.dump
20031127/dbname1/tablename2.dump
20031127/dbname2/tablename1.dump
20031127/dbname2/tablename2.dump

:-)


그럼.

DBMS/MySQL]FreeBSD5.3.1R 에서 mysql4.x 설치하기


이글은 FreeBSD 5.3R 에서의 포트시스템으로의 설치를 기본으로 합니다.
1. 디렉토리 이동
  # cd /usr/ports/databases/mysql41-server

--> mysql 버전이 5.x 가 있지만 proftpd포트 설치시 mysql4.x 클라이언트

를 설치하므로 버전을 맞추기 위해 4.x 를 설치하기로 합니다.

  # make install clean WITH_CHARSET=euc_kr BUILD_OPTIMIZED=yes

(
 mysql41-server 의 경우 WITH_CHARSET옵션의 값이 euckr로 변경됨.
 mysql 4.1버전의 경우
 # make install clean WITH_CHARSET=euckr BUILD_OPTIMIZED=yes
)

  # /usr/local/bin/mysql_install_db

==> 처음으로 mysql을 사용하기 전에 시스템 DB를 만들기 위한 스크립트를
실행합니다.

위 명령은 mysql을 설치한 후 반드시 한번만 하시기 바랍니다.



2. 설치 확인 작업

  # /usr/local/bin : mysql바이너리 파일들이 있나 확인

  # /usr/local/etc/rc.d/mysql-server.sh : mysql 기동 스크립트

  # /var/db/mysql : mysql 데이터베이스 파일



3. 데몬 시작및 중지하기

3.1. 시작하기

  # /usr/local/etc/rc.d/mysql-server.sh start 혹은

  /usr/local/bin/mysqld_safe -user=mysql &



3.2 중지하기

  # /usr/local/etc/rc.d/mysql-server.sh stop 혹은

  /usr/local/bin/mysqladmin -u root shutdown



4. mysql 데이터베이스를 사용하기 전에

반드시 루트 암호를 생성하고 사용하시기 바랍니다.

  #/usr/local/bin/mysqladmin -u root password '새로운 비밀번호'

  #/usr/local/bin/mysqladmin -u root -h 호스트명 password '새로운 비밀번호'



5. 데이터베이스 사용하기

  #/usr/local/bin/mysql -u root -p

password :




** 만약 위와같이 작업시 에러발생하는 경우


4번 작업시 에러발생시에는

1. 우선 mysql서버 데몬을 죽인다.

  # kill mysql_pid 혹은

/usr/local/etc/rc.d/mysql-server.sh stop


2. /usr/local/etc/rc.d/mysql-server.sh 파일을 편집해서

========================

편집내용.

  /usr/local/bin/mysqld_safe --user=mysql --datadir=${DB_DIR}
--pid-file=${PIDFILE} --language=korean > /dev/null &

를 다음과 같이 수정합니다 .

  /usr/local/bin/mysqld_safe --user=mysql --datadir=${DB_DIR}
--pid-file=${PIDFILE} --language=korean --skip-grant > /dev/null &


========================



3. mysql서버 데몬을 다시 시작한다.

  # /usr/local/etc/rc.d/mysql-server.sh start



4. 위와같이 하면 권한 테이블을 사용하고 데몬을 띄우게 됩니다.

5. mysql에 접속하여

  # /usr/local/bin/mysql -u root -p

6. root의 암호를 변경합니다.

  mysql> use mysql;

  mysql> select * from user where user = 'root';

  mysql> update user SET password = PASSWORD('newpassword');

7. 권한 테이블을 다시 읽는다.

  mysql> flush privileges;

8. mysql을 종료

  mysql> \q



9. mysql 서버 데몬 죽입니다.

  #/usr/local/etc/rc.d/mysql-server.sh stop



10./usr/local/etc/rc.d/mysql-server.sh 파일을 편집해서

========================
편집내용.

  /usr/local/bin/mysqld_safe --user=mysql --datadir=${DB_DIR}
--pid-file=${PIDFILE} -language=korean --skip-grant > /dev/null &

를 다음과 같이 수정합니다 .

  /usr/local/bin/mysqld_safe --user=mysql --datadir=${DB_DIR}
--pid-file=${PIDFILE} -language=korean > /dev/null &

========================

다시 원상복귀 합니다.



11. mysql 서버를 다시 시작합니다.

  #/usr/local/etc/rc.d/mysql-server.sh start



12. 정상적으로 mysql을 사용가능합니다.

DBMS/MySQL]FreeBSD 5.4R 에서 mysql-server41 설치후 한글 입력 문제


FreeBSD 5.4R에서 ports 에서 mysql-server41 을 설치시

make install clean WITH_CHARSET=euckr로 설치후

한글 입력이 안되는 문제가 발생한다

그런경우 아래와 같이 해당 계정에서 작업을 한다.


///////////////////////////////////////////////////////////////////////////////

MySQL 클라이언트 프로그램(mysql)에서 한글 입력에 문제가 있을 수 있습니다.

mysql은 readline 라이브러리를 사용하므로, 사용자 디렉토리의 .inputrc에

다음 내용을 넣어주면 됩니다.


set meta-flag On

set convert-meta Off

set output-meta On


///////////////////////////////////////////////////////////////////////////////

이글은 최준호님이 답해주셨습니다

DBMS/MySQL] 원격지의 MySQL서버에 접속하기


 쉘 상태에서 원격지의 MySQL 서버에 접속을 하고자 하는 경우
         
 # ./bin/mysql -h 호스트명(혹은 ip주소) -u 계정 -p DB명

 물론 원격지 MySQL서버에 다음과 같이 등록이 되어 있어야 가능합니다.

 mysql> insert into db values ('ip주소', 'user_db', 'user_name', ...);

 mysql> insert into user values ('ip주소', 'user_name', PASSWORD('user_password'));


 위와 같이 등록이 먼저 되어 있어야 하겠지요 ^^

DBMS/MySQL] 4.1.x 에서 Default character set 변경하기...



안녕하세요. 신규로 4.1.7버전의 MySQL 를 설치했는데 character set 의 변경이 잘 되지 않아서 질문 올립니다.
아래에 버전 및 시도해본 방법을 적었습니다. 함 확인해보시고요 해결책 알려주시면 감사하겠습니다~

0. 버전
버전 : 4.1.7, source compile 해서 설치 (my.cnf 에서 수정하려고 configure 할때 character set 설정 하지 않았습니다.)

1. 현재 character 정보
mysql> show variables like 'char%';
+--------------------------+----------------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql/share/mysql/charsets/ |
+--------------------------+----------------------------------------+

2. 변경하려고 시도해본 방법
1) my.cnf 변경
[mysqld] 아래에
default-character-set=euckr
를 추가하고 mysql을 재시작하면 에러가 납니다.
/mysql/var/***.err 에서 에러를 확인하면 아래와 같습니다.
/usr/local/mysql/libexec/mysqld: Character set 'euckr' is not a compiled character set and is not specified in the '/usr/local/mysql/share/mysql/charsets/Index.xml' file

"Character set 'euckr' is not a compiled character set" 이라면 compile할때 euckr 이 빠졌다는 것인가요?
'/usr/local/mysql/share/mysql/charsets/Index.xml' file 에는 euckr 항목이 있습니다.

<charset name="euckr">
<family>Korean</family>
<description>EUC-KR Korean</description>
<alias>euc_kr</alias>
<alias>euc-kr</alias>
<collation name="euckr_korean_ci" id="19" order="Korean">
<flag>primary</flag>
<flag>compiled</flag>
</collation>
<collation name="euckr_bin" id="85">
<flag>binary</flag>
<flag>compiled</flag>
</collation>
</charset>

2) database의 character set을 직접 변경
mysql> ALTER DATABASE tv DEFAULT CHARACTER SET euckr;
ERROR 1115 (42000): Unknown character set: 'euckr'

3) 지원하는 character set 확인
설치한 mysql 서버에서 지원하는 character set을 확인해 보았습니다만 euckr 이 없네요.
mysql> SHOW CHARACTER SET;
+----------+-----------------------------+---------------------+--------+
Charset | Description | Default collation | Maxlen |
+----------+-----------------------------+---------------------+--------+
| dec8 | DEC West European | dec8_swedish_ci | 1 |
| cp850 | DOS West European | cp850_general_ci | 1 |
| hp8 | HP West European | hp8_english_ci | 1 |
| koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 |
| latin1 | ISO 8859-1 West European | latin1_swedish_ci | 1 |
| latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 |
| swe7 | 7bit Swedish | swe7_swedish_ci | 1 |
| ascii | US ASCII | ascii_general_ci | 1 |
| hebrew | ISO 8859-8 Hebrew | hebrew_general_ci | 1 |
| koi8u | KOI8-U Ukrainian | koi8u_general_ci | 1 |
| greek | ISO 8859-7 Greek | greek_general_ci | 1 |
| cp1250 | Windows Central European | cp1250_general_ci | 1 |
| latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 |
| armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 |
| utf8 | UTF-8 Unicode | utf8_general_ci | 3 |
| cp866 | DOS Russian | cp866_general_ci | 1 |
| keybcs2 | DOS Kamenicky Czech-Slovak | keybcs2_general_ci | 1 |
| macce | Mac Central European | macce_general_ci | 1 |
| macroman | Mac West European | macroman_general_ci | 1 |
| cp852 | DOS Central European | cp852_general_ci | 1 |
| latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 |
| cp1251 | Windows Cyrillic | cp1251_general_ci | 1 |
| cp1256 | Windows Arabic | cp1256_general_ci | 1 |
| cp1257 | Windows Baltic | cp1257_general_ci | 1 |
| binary | Binary pseudo charset | binary | 1 |
| geostd8 | GEOSTD8 Georgian | geostd8_general_ci | 1 |
+----------+-----------------------------+---------------------+--------+

1)의 에러메시지에서 처럼 euckr character set 이 compile 되지 않았다는 것 같은데요,
그럼 어떻게 추가할수 있을까요.

2012-09-16

Linux]suse linux qmail 설치하기


 SuSE Linux 9.2 Professional 상에서 qmail+mysql+vpopmail+qmailadmin+qmail-scanner+spamassassin+courier-imap+squirrelmail 설치하기


 목적 :

   1. 사용자 계정을 mysql 을 이용함으로써 추가나 삭제를 할수 있다.
   2. vpopmail 을 설치함으로써 가상 도메인에 대한 관리를 손쉽게 할수 있다.
   3. qmail-scanner 을 설치함으로써 바이러스에 대한 필터링을 한다.
   4. squirrelmail로 웹상에서 메일을 사용할 수 있게 한다.
   5. qmailadmin으로 웹상에서 메일계정을 쉽게 관리할 수 있게 한다.
   6. qmailMrtg로 웹상에서 메일서버의 트래픽을 쉽게 관찰할 수 있게 한다.


 아래의 파일은 2005.05.09 현재 최신 버전을 다운 받은 리스트이며, 위와 같은 조합의 메일 시스템을 구축하기 위한 모듈들입니다.



 qmail 관련

   http://qmail.kldp.org/src       : qmail-1.03,
   http://inter7.com               : vpopmail, qmailadmin, autoresponder
   http://www.ezmlm.org/           : ezmlm, ezmlm-idx
   http://qmail.org/netqmail/      : netqmail 패치
   autorespond-2.0.4.tar.gz        // 자동응답담당하는 모듈
   daemontools-0.76.tar.gz         // qmail 자동화 관리툴
   ezmlm-0.53.tar.gz               // qmail 지원하는 메일링리스트
   ezmlm-idx-0.440.tar.gz          //            
   maildrop-1.8.0.tar.bz2          // qmail-scanner에 연동되는 모듈
   netqmail-1.05.tar.gz            // qmail 패치
   qmail-1.03.tar.gz              
   qmailadmin-1.2.7.tar.gz         // 웹상에서 메일계정관리
   ucspi-tcp-0.88.tar.gz
   vpopmail-5.4.2.tar.gz           // 가상 메일지원모듈
   qmailmrtg7-4.2.tar.gz           // qmail 트래픽 모니터링
   qmail-scanner-1.25.tgz          // qmail-scanner (바이러스 필터링)
   Mail-SpamAssassin-3.0.3.tar.gz  // spamAssassin         http://spamassassin.apache.org
   Time-HiRes-1.67.tar.gz          // qmail-scanner설치시 필요
   clamav-0.84.tar.gz              // qmail-scanner 애드온
 
  mysql
   mysql-4.x.x.tar.gz              // http://www.mysql.com



  imapd
   (http://inter7.com/
        courier-imap-4.0.2.20050403.tar.bz2     // 웹메일을 지원하기 위한 모듈


  web

  httpd-2.0.54.tar.gz                     // http://www.apache.org
  php-5.0.4.tar.gz                        // http://www.php.net
  squirrelmail-1.4.4.tar.gz               // 웹메일 클라이언트    http://www.squirrelmail.org



 기타

  텍스트상에서 웹서핑하기 위한 도구
     lynx-2.8.5-26.i586.rpm          // http://www.rpmfind.net,  http://www.lynx.org

 

 패치
  qmail-1_03-mysql-0_6_6.patch
           -> 사용자 여부를 시스템 계정이 아닌 mysql 에서 하기 위한 패치.

  qmail-103.patch
           -> oversize dns 을 위한 패치

  checkpassword-0.81--mysql-0.6.6.patch
          -> pop3 사용시 사용자에 대한 패스워드 확인을  mysql 에서 하기 위한 패치. vpopmail 을 설치한다면 필요없습니다.

  qmailqueue-patch          
          -> qmail-scanner 를 위한 queue 패치입니다.

  qmail-smtp-auth.tar.gz
          -> 이것은 smtp 사용시 팝계정을 가진 사용자에 한해 smtp 를 사용하게 하자는 패치입니다. 좋더군요.

  relaymailfrom.patch
            -> 옵션으로 보내는 사람의 메일 주소로 smtp 릴레이를 막자는 패치입니다.



   패치가 많다고 해서 한번에 다 적용하려고 하지 말고. 하나씩 설치할때마다 필요한 패치를 그때 그때 적용하고 qmail 을 재 빌드하고 컴파일 하면 됩니다.
    ** 위의 netqmail을 이용해서 패치를 해도 됩니다.



 설치 순서



 * qmail 압축 풀기


 # tar -xvzf qmail-1.03.tar.gz
 # cd qmail-1.03


 * qmail 설치를 위한 디렉토리 생성

 # mkdir  /var/qmail


 * qmail 운영을 위한 유저, 그룹을 만들어 주기 위해 운영체제에 따라 INSTALL.ids를 편집한다. 리눅스상에서는 다음과 같다.
   INSTALL.ids 는 qmail-1.03 디렉토리에 존재한다.


   groupadd nofiles

   useradd -g nofiles -d /var/qmail/alias alias

   useradd -g nofiles -d /var/qmail qmaild

   useradd -g nofiles -d /var/qmail qmaill

   useradd -g nofiles -d /var/qmail qmailp

   groupadd qmail

   useradd -g qmail -d /var/qmail qmailq

   useradd -g qmail -d /var/qmail qmailr

   useradd -g qmail -d /var/qmail qmails



 * qmail과 부수적인 패키지 설치

2012-09-15

Mail]qmail+ mysql+ vpopmail+ qmailadmin 설치 기술 문서.



qmail+ mysql+ vpopmail+ qmailadmin 설치 기술 문서.

(이 글은 www.godisgreen.com/wikix/index.php 중

qmail+ mysql+ vpopmail+ qmailadmin 설치부분을 기초로 한 것입니다. )



mysql설치는 SQL란의 proftpd와 mysql의 연동 부분을 참조하세요...



(포트를 통한 설치)

1.qmail 설치 => 아래 답변을 참조하시기 바랍니다.(qmail-scanner를 설치시)

# cd /usr/ports/mail/qmail

# make install

# make disable-sendmail

# make enable-qmail


==> make disable-sendmail은 /etc/rc.conf 파일에 sendmail_enable="NO"라고 자동으로 수정해주며, make enable-qmail 은 mailwrapper 설정파일을 변경시켜줍니다. (/etc/mail/mailer.conf)


/etc/mail/mailer.conf 파일의 내용



# Configuration for mailwrapper is kept in /etc/mail/mailer.conf.
# Replace that file with this one to enable qmail under a sendmail
# disguise. Very useful.

sendmail /var/qmail/bin/sendmail
send-mail /var/qmail/bin/sendmail
mailq /var/qmail/bin/qmail-qread
newaliases /var/qmail/bin/newaliases
hoststat /var/qmail/bin/qmail-tcpto
purgestat /var/qmail/bin/qmail-tcpok




** 인용**

** 프비4.x에서는 mailwrapper가 sendmail을 대신해서 사용되고 있습니다.
사 용자가 /usr/sbin/sendmail, /usr/bin/mail, 또는 /usr/bin/newalias를 호출하면 실제로는 심볼릭 링크로 연결된 mailwrapper를 호출하게 된다.

**인용 끝**


메일레퍼는 샌드메일을 대치하기위해 설계되었고, /etc/mail/mailer.conf 에 설정된 내용에 따라 sendmail대신 적절한 MTA를 불러오게 된다. 이러한 정책은 시스템이 시작될? 어떤 MTA를 불러올것인지를 설정할 수 있게 한다.

mailwrapper 의 설정파일은 /etc/mail/mailer.conf 이다. make enable-qmail 명령을 줌으로서 위의 내용과 같이 바뀌었을 것이다.


2. alias를 설정합니다.

(
snipper@ 설치할도메인은 예를들면 : abc@abc.com이 될 수 있다
그리고 위의 계정은 시스템에서 보내는 메일을 받아서 처리할 개인 메일계정이다.
)

echo snipper@설치할도메인 > /var/qmail/alias/.qmail-root
echo snipper@설치할도메인 > /var/qmail/alias/.qmail-postmaster
echo snipper@설치할도메인 > /var/qmail/alias/.qmail-mailer-daemon



3. 기본도메인을 설정합니다.

# cd /var/qmail/configure
# ./config-fast pettree.co.kr



4. daemontools와 ucspi-tcp설치하기

4.1. daemontools설치하기

# cd /usr/ports/sysutils/daemontools/
# make install clean



4.2. ucspi-tcp 설치

# cd /usr/ports/sysutils/ucspi-tcp
# make install clean



4.3. ezmlm & ezmlm-idx(mailing list 설치)

# cd /usr/ports/mail/ezmlm-idx
# make -DWITH_MYSQL install
# cp /usr/local/etc/ezmlm/ezmlmrc.sample /usr/local/etc/ezmlmrc
# make clean



4.4. autorespond 설치

# cd /usr/ports/mail/autorespond
# make install clean



5. 설정하기

5.1. daemontools설정하기

정상적으로 설치가 된후 daemontools가 자동으로 실행되도록
설정을 해 줍니다.

# cp /usr/ports/sysutils/daemontools/files/svscan.sh.sample /usr/local/etc/rc.d/svscan.sh
# chmod a x /usr/local/etc/rc.d/svscan.sh



5.2. qmail설정하기

** 아래는 pw명령을 사용하여 작업한 내용입니다.

5.2.1. vpopmail용 계정 및 그룹 생성하기

# pw group add vchkpw
# pw user add vpopmail -g vchkpw -d /home/vpopmail -s /sbin/nologin



** pw명령으로 계정 생성시 홈디렉토리가 생성이 되지 않습니다.
(pw문제인지 명확치 않네요... 아님 ?션을 잘못 주었거나요...)

5.2.2. vpopmail 디렉토리 생성

# mkdir /home/vpopmail
# mkdir /home/vpopmail/etc

릴레이를 설정하기 위해 /home/vpopmail/etc폴더를 만들어 줍니다.



5.2.3. 릴레이 설정하기

** 아래 127.0.0.으로 시작하는 구문은 반드시 필요합니다.
# echo "127.0.0.:allow,RELAYCLIENT=""" > ~vpopmail/etc/tcp.smtp

** 아래의 구문은 추가적으로 고정IP대역(1.2.x.x)을 추가하는 경우입니다.
** 아웃룩 같은 클라이언트 프로그램 이용시 자신이 사용하는 IP대역을 넣어주세요...

# echo "1.2.:allow,RELAYCLIENT="""" >> ~vpopmail/etc/tcp.smtp



5.2.4. cdb 파일 만들기

# cd /home/vpopmail/etc
# tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp



6. vpopmail 설치하기

vpopmail은 포트 설치를 하면 지금까지 한 모든 설정들이 다 틀어져 버립니다.
그래서 소스 설치를 합니다.
vpopmail.tar.gz파일 을 다운 받습니다. (lynx를 사용합니다.)

# lynx inter7.com/vpopmail/vpopmail-5.4.0.tar.gz
(
** 만약 위 파일로 ~vpopmail/bin/vadddomain 도메인명 을 했을경우 core dump 에러가 떨어지면 아래의 파일로 작업을 해보기 바랍니다.

# lynx heanet.dl.sourceforge.net/sourceforge/vpopmail/vpopmail-5.4.8.tar.gz
)



6.1. 압축풀기 및 설정하기(참조하는 문서는 5.2.1이나 현재는 5.4.0버전이네요)
**소스가 디렉토리는 /usr/src 에 있다고 가정합니다.



# tar -xvzf vpopmail-5.4.0.tar.gz
# cd vpopmail-5.4.0
# ./configure --enable-default-domain=pettree.co.kr --enable-roaming-users=y --enable-logging=y --enable-relay-clear-minutes=60 --enable-mysql=y

==>5.4.0에서는 --enable-mysql옵션이 --enable-auth-module=mysql로 변경되었네요.(아래의 ./configure 옵션을 사용하세요)

# ./configure --enable-roaming-users=y --enable-logging=y --enable-relay-clear-minutes=60 --enable-auth-module=mysql


참고: vpopmail 5.4.x 이상 버전은 --enable-default-domain 컴파일 옵션이 없어지고 ~vpopmail/etc/defaultdomain 파일을 사용하도록 되었다. 이 파일에 직접 default domain 이름을 넣어주면 된다

정상적으로 configure가 완료되면 아래와 비슷한 메시지가 출력될 것입니다.




vpopmail 5.4.0
Current settings
---------------------------------------

vpopmail directory = /home/vpopmail
uid = 1003
gid = 1003
roaming users = ON --enable-roaming-users
tcpserver file = /home/vpopmail/etc/tcp.smtp
open_smtp file = /home/vpopmail/etc/open-smtp
rebuild tcpserver file = ON --enable-rebuild-tcpserver-file (default)
password learning = OFF --disable-learn-passwords (default)
md5 passwords = ON --enable-md5-passwords (default)
file locking = ON --enable-file-locking (default)
vdelivermail fsync = OFF --disable-file-sync (default)
make seekable = ON --enable-make-seekable (default)
clear passwd = ON --enable-clear-passwd (default)
user dir hashing = ON --enable-users-big-dir (default)
address extensions = OFF --disable-qmail-ext (default)
ip alias = OFF --disable-ip-alias-domains (default)
domain quotas = OFF --disable-domainquotas (default)
auth module = mysql --enable-auth-module=mysql
mysql replication = OFF --disable-mysql-replication (default)
mysql logging = OFF --disable-mysql-logging (default)
mysql limits = OFF --disable-mysql-limits (default)
MySQL valias = OFF --disable-valias (default)
auth inc = -I/usr/local/include/mysql
auth lib = -L/usr/local/lib/mysql -lmysqlclient -lz
system passwords = OFF --disable-passwd (default)
pop syslog = show successful and failed login attempts
--enable-logging=y
auth logging = ON --enable-auth-logging (default)
all domains in one SQL table = --enable-many-domains (default)



6.2 mysql을 사용하여 인증을 한다고 설정을 하였으므로 vmysql.h파일을 수정합니다.

# vi vmysql.h

NOTE: As of vpopmail 5.3.25, MySQL connection info is stored in
23 ~vpopmail/etc/vpopmail.mysql. The format of the file is as follows:
24
25 read server|read port|read user|read password|read database
26 update server|update port|update user|update password|update database
27
28 Comments (lines starting with '#') are allowed. The first line contains
29 connection information for READING from the database. The second (option
al)
30 line contains connection information for UPDATING the database. If the
31 second line is left out, then vpopmail will use the same settings for
32 reading and updating.
33
34 Port should be the actual port, or 0 for default.
35
36 For example:
37
38 # This is the MySQL configuration file for vpopmail.
39 localhost|0|readonly|somepass|vpopmail
40 localhost|0|root|secret|vpopmail




vmysql.h 파일에 위와 같은 문구가 있네요. 내용인즉은 5.3.25 이후 부터 mysql과 연동하기 위해 ~vpopmail/etc/vpopmail.mysql 파일에

"호스트|포트|계정|비밀번호|DB명" 을 적어 넣고 관리를 한다고 하네요...



# cd ~vpopmail/etc
#echo "localhost|0|root|비밀번호|vpopmail" > vpopmail.mysql



6.3 mysql에서 vpopmail계정 생성하기

# mysql -u root -p mysql

password :



mysql> create database vpopmail;

mysql> use mysql;

mysql> insert into user values ('localhost','vpopmail',password('패스 '),'N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','','','','','0','0','0');

mysql> insert into user values ('lnx68.thesoft.co.kr','vpopmail',password('패스 '),'N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','','','','','0','0','0');

mysql>insert into db values('%','vpopmail','vpopmail','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

mysql> flush privileges;

mysql> q



6.4 vpopmail 컴파일및 설치

# cd /usr/src/vpopmail-5.4.0
# make
# make install-strip



6.5 릴레이 서비스를 제공한다면 (--enable-roaming-users=y) 크론테이블을 수정합니다.

# crontab -e
9-59,10 * * * * /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null



6.6 가상도메인을 추가합니다.

가상도메인을 추가하기전에 dns에서 MX 레코드를 추가해야 정상적으로 작동합니다.

# cd ~vpopmail
# ./bin/vadddomain pettree.co.kr

위의 vadddomain을 하시면

/var/qmail/control/locals
/var/qmail/control/rcpthosts
/var/qmail/control/morercpthosts
/var/qmail/control/virtualdomains
/var/qmail/users/assign
/var/qmail/users/cdb



~vpopmail/domains/pettree.co.kr
~vpopmail/domains/pettree.co.kr/postmaster/Maildir ...
~vpopmail/domains/pettree.co.kr/vpasswd
~vpopmail/domains/pettree.co.kr/vpasswd.cdb

등을 변경시켜준답니다.





7. qmailadmin 설치 및 설정하기
7.0 apache, php설치는 서버게시판의 아파치 설치 부분을 참조 하세요.
7.1 qmailadmin 설치

qmailadmin 도 역시 소스를 다운받아 설치를 하겠습니다.

# cd /usr/src
# lynx http://qmail.kldp.org/src/vpopmail/qmailadmin/qmailadmin-1.2.1.tar.gz



# tar -xvzf qmailadmin-1.2.1.tar.gz
# cd qmailadmin-1.2.1
# ./configure --enable-htmldir=/usr/local/www/data --enable-cgibin-dir=/usr/local/www/cgi-bin

--enabe-htmldir 은 아파치의 웹문서 루트를 --enable-cgibin-dir은 아파치의 cgi-bin의 위치를 적어주면 됩니다.


정 상적으로 처리가 되면 아래와 같은 메시지가 보입니다.


qmailadmin 1.2.1
Current settings
---------------------------------------
cgi-bin dir = /usr/local/www/cgi-bin
html dir = /usr/local/www/data
image dir = /usr/local/www/data/images/qmailadmin
image URL = /images/qmailadmin
template dir = /usr/local/share/qmailadmin
qmail dir = /var/qmail
vpopmail dir = /home/vpopmail
autorespond dir = /usr/local/bin
ezmlm dir = /usr/local/bin
ezmlm idx = yes
mysql for ezmlm = yes
help = no
modify quota = no
domain autofill = no
modify spam check = no




# make
# make install-strip



7.2 설치 확인하기

웹브라우 저에서 http://hostname/cgi-bin/qmailadmin 을 입력하여 제대로 화면이 뜨고 동작을 하는지 확인합니다.

** qmailadmin 에서 계정 생성시 계정은 ~vpopmail/domains/도메인명/ 에 생성됨 Maildir도 자동으로 생성이 됩니다.



8. 설정 마무리 하기

이제 설정을 마무리 하겠습니다.
qmail.sh 를 설정해야 하는데 qmail을 포트로 설치한 경우에 자동으로 /usr/local/etc/rc.d/ 에 qmail.sh 라는게 따로 있으므로 설정하는게 없습니다. 그러므로 pop3와 smtp만 설정해 주면 됩니다.


(** 만약 qmail.sh 이 없는 경우 **)

8.0 qmail.sh 생성

# cp /var/qmail/boot/home /var/qmail/rc
# ln -s /var/qmail/rc /usr/local/etc/rc.d/qmail.sh



8.1 pop3설정하기

# vi /var/qmail/qmail-pop3d.sh


qmail-pop3d.sh 내용

************************************************
#!/bin/sh
UID=`id -u vpopmail`
GID=`id -g vpopmail`

env - PATH="/var/qmail/bin:/usr/local/bin"

tcpserver -u $UID -g $GID -R 0 pop3 /var/qmail/bin/qmail-popup pettree.co.kr /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir &
************************************************



# chmod x /var/qmail/qmail-pop3d.sh
# ln -s /var/qmail/qmail-pop3d.sh /usr/local/etc/rc.d/qmail-pop3d.sh



8.2 smtp 설정하기

# vi /var/qmail/qmail-smtpd.sh


qmail- smtpd.sh내용
************************************************
#!/bin/sh
UID=`id -u vpopmail`
GID=`id -g vpopmail`

exec /usr/local/bin/softlimit -m 3000000 /usr/local/bin/tcpserver -v -p -x/home/vpopmail/etc/tcp.smtp.cdb -u $UID -g $GID 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 &
************************************************

# chmod x /var/qmail/qmail-smtpd.sh
# ln -s /var/qmail/qmail-smtpd.sh /usr/local/etc/rc.d/qmail-smtpd.sh




마 지막으로 리부팅 하면 됩니다.

Mail]qmail 설치하기(qmail+mysql+vpopmail+qmailscanner)


qmail 서버를 mysql 과 vpopmail, 바이러스 검출과 필터링을 위한 qmail-scanner와 함께 설치하는 방법입니다.

설치하기 전에 :

큐메일 서버는 모듈별로 이루어져 있습니다. 또한 각각의 모듈별로 많은 패치기 존재합니다.
따라서 정확한 동작을 위해서는 이 패치또한 정확하게 이루어져야 합니다. 
만약 설치하고 나서 정상적으로 동작하지 않는다면 패치가 정확한지, 환경설정이 정확한지를 다시 한번 확인해 봐야 합니다. 
또한 큐메일 서버를 설치하기 전에 먼저 dns 설정을 해야 함을 잊어서는 안됩니다.
설치 도중에 큐메일  서버의 컴파일 전에 컴파일 환경을 잡아주는 과정이 있는데, dns 설정이 올바르지 않다면 에러를 유발하게 됩니다. 
따라서 먼저 dns 설정을 해 주어야 하며 역도메인 까지 설정을 해 주어야 문제없이 설치를 할 수 있습니다. 
지금부터 설치는 dns 설정이 되어 있다는 것을 가정합니다.

목표 :

1. 사용자 계정을 mysql 을 이용함으로써 추가나 삭제를 할수 있다.
2. vpopmail 을 설치함으로써 가상 도메인에 대한 관리를 손쉽게 할수 있다.
3. qmail-scanner 을 설치함으로써 바이러스에 대한 필터링을 한다.

필요한 파일 :

qmail-1.03.tar.gz
ucspi-tcp-0.84.tar
daemontools-0.76.tar
qmail-scanner-0.96.tgz
maildrop-1.3.4.tar.gz        // 이것도 qmail-scanner 을 설치하기 위해 필요합니다.
autorespond-1.0.0.tar.gz
qmailadmin-0.42.tar.gz        // 이것을 사용하기 위해서는 vpopmail 사용시 mysql 을 사용안함으로
하셔야 합니다.
mysql-3.22.32.tar.gz
rblssmtp.tar.gz                // ucspi-tcp 가 버젼이 0.86 이상이면 필요없습니다.
vpopmail-4.9.10.tar
Time-HiRes-01.02.tar        // qmail-scanner 을 설치할때 필요합니다. 필요에 따라 unzip 이 필요하기도 합니다. 이는 바이러스 필터시 압축파일의 경우 압축을 풀어야 하기 때문입니다.

패치
qmail-1_03-mysql-0_6_6.patch     -> 사용자 여부를 시스템 계정이 아닌 mysql 에서 하기 위한 패치.
qmail-103.patch     -> oversize dns 을 위한 패치
checkpassword-0.81--mysql-0.6.6.patch     -> pop3 사용시 사용자에 대한 패스워드 확인을  mysql 에서 하기 위한 패치. vpopmail 을 설치한다면 필요없습니다.
qmailqueue-patch            -> qmail-scanner 를 위한 queue 패치입니다.
qmail-smtp-auth.tar.gz     -> 이것은 smtp 사용시 팝계정을 가진 사용자에 한해 smtp 를 사용하게 하자는 패치입니다.
좋더군요.
relaymailfrom.patch     -> 옵션으로 보내는 사람의 메일 주소로 smtp 릴레이를 막자는 패치입니다.

패치가 많다고 해서 한번에 다 적용하려고 하지 말고. 하나씩 설치할때마다 필요한 패치를 그때 그때 적용하고 qmail 을 재 빌드하고 컴파일 하면 됩니다.

    qmail 을 패치하고 나서
        소스에서
            make
            make install-strip

설치 :

설치 디렉토리는 기본적으로 /usr/local 이며 모든 파일은  /pds 에 있다고 가정하였습니다. 그리고 /usr/local 도 편의를 위해 /local 로 심볼릭 링크를 만들어 두었습니다. 따라서 /local 은  /usr/local 을 의미합니다.

저는 먼저 dns 설정을 다음과 같이 설정하였습니다.  본 메일 서버의 이름을 mail.com 이라고 하였고 나중을 위해 두개의 도메인을 더 추가하였습니다. 어자피 내부를 위한 것이니 아무 이름이나 상관은 없습니다.

mail.com    mail1.com    mail2.com

/etc/named.conf

    options {  
            directory "/var/named";
    };

    zone "." IN {
            type hint;
            file "named.ca";
    };

    zone "localhost" IN {
            type master;
            file "localhost.zone";
            allow-update { none; };
    };

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

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

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

    zone "0.0.127.in-addr.arpa" IN {
            type master;
            file "named.local";
            allow-update { none; };
    };

    zone "1.168.192.in-addr.arpa" IN {
            type master;
            file "1.168.192.reverse";
            allow-update { none; };
    };

zone 파일 설정 : /var/named

    ** mail.com.zone **

@                       IN SOA          mail.com.    root.mail.com. (
                                        42              ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum

                        IN NS           mail.com.
                        IN MX 10        @

                        IN        A       192.168.1.55
www                 IN       A       192.168.1.55
ftp                     IN       A       192.168.1.55



    ** 1.168.192.reverse **

@       IN      SOA     mail.com. master.mail.com.  (
                                      1997022700 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum

55             IN      PTR     mail.com.

대충 이정도만 설정을 했습니다... 뭐 틀린점이 있다면.. 알아서.. 수정하세요... ^^
나머지 mail1.com.zone 과 mail2.com.zone 도 설정을 해 줘야 겠지요..
핑 테스트 결과... 정상적으로 반응하는거 확인했습니다.

1. mysql  설치.

        # tar  xvzf mysql-3.22.32.tar.gz
        # cd mysql-3.22.32
        # ./configure --prefix=/usr/local/mysql                // 기본적인 mysql 환경 설정입니다.
        # make
        # make install
        # cd /usr/local/mysql/bin
        # ./mysql_install_db
        # ./safe_mysqld &

    : mysql 은 이정도면 간단하게 설치가 됩니다. 그러나 qmail 과 함께 사용하기 위해서는 몇가지 추가해야 할게 있습니다.
    몇개의 심볼링 링크를 생성해야 합니다. 이 링크를 생성안하면 qmail 컴파일시 에러가 납니다.

        # mkdir /usr/local/include
          # ln -s /usr/local/mysql/include/mysql /usr/local/include/mysql
          # ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
          # mkdir /usr/local/lib
          # ln -s /usr/local/mysql/lib/mysql /usr/local/lib/mysql
          # ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql

    mysql 구동은 다음과 같이 할수 있습니다.

           # vi  /etc/rc.d/rc.local
                if [ -f /usr/local/mysql/bin/safe_mysqld ];
                then
                    /usr/local/mysql/bin/safe_mysqld &
                fi
  
자 이제 mysql 에 대한 설정은 끝났고.. 이제 큐메일에 대한 설치에 들어갑니다. 패치 잘 보세요..

2. qmail 설치

        # tar xvzf qmail-1.03.tar.gz
        # cd qmail-1.03
        # cp /pds/qmail-103.patch /local/qmail-1.03
        # patch -p1 < qmail-103.patch                // over size DNS 패치입니다.
            patching file dns.c      
        # patch -p1 < qmail-1_03-mysql-0_6_6.patch        // mysql 에서 큐메일 인증을 위한 패치입니다.
            patching file Makefile
            patching file README.mysql.en
            patching file TARGETS
            patching file auto_du.sh
            patching file conf-du
            patching file mysql.c
            patching file qmail-getpw.c
            patching file qmail-local.c
            patching file qmail-lspawn.c
            patching file qmail-popup.c

        자 이제부터 본격적으로 큐메일 서버 설치에 들어갑니다.

        # mkdir /var/qmail      
      
        큐메일에 필요한 사용자와 그룹을 등록합니다. 기본적으로 INSTALL.ids 를 열어보시면 운영체제에 따라 설정이 되어 있는데 해당 OS 에 따라 나머지는 지워주시면 됩니다.
            예 ) 리눅스의 경우
                        groupadd nofiles
                        useradd -g nofiles -d /var/qmail/alias alias
                        useradd -g nofiles -d /var/qmail qmaild
                        useradd -g nofiles -d /var/qmail qmaill
                        useradd -g nofiles -d /var/qmail qmailp
                        groupadd qmail
                        useradd -g qmail -d /var/qmail qmailq
                        useradd -g qmail -d /var/qmail qmailr
                        useradd -g qmail -d /var/qmail qmails          

        # sh INSTALL.ids
        # make
        # make setup check
     
    만약 make 하는 도중에 에러가 발생한다면 mysql 과 관련하여 symbolic 링크를 잘 걸어줬는지 확인해 보세요.
        자 이제 빌드와 컴파일 하는 과정이 끝났습니다. 이제는 설정에 들어갈 차례입니다.
  
        # ./config
            Your hostname is mail.com.
            Your host's fully qualified name in DNS is mail.com.
            Putting mail.com into control/me...
            Putting mail.com into control/defaultdomain...
            Putting mail.com into control/plusdomain...

            Checking local IP addresses:
            127.0.0.1: Adding localhost to control/locals...
            192.168.1.55: Adding mail.com to control/locals...

            If there are any other domain names that point to you,
            you will have to add them to /var/qmail/control/locals.
            You don't have to worry about aliases, i.e., domains with CNAME records.
           
            Copying /var/qmail/control/locals to /var/qmail/control/rcpthosts...
            Now qmail will refuse to accept SMTP messages except to those hosts.
            Make sure to change rcpthosts if you add hosts to locals or virtualdomains!

    이렇게 나와야 합니다. 이렇게 나오지 않는다면 DNS 설정에 문제가 있는 것입니다. ( 대부분의 경우
역 도메인을 설정 안했을때 발생하더군요. ) 다시한번 확인해 보시고 DNS 에 아무 이상이 없다면.. 다음과
같은 방법을 사용해도 됩니다.

                # ./config-fast mail.com(자신의 도메인명)

        자 이제 큐메일이 작동하는데 필요한 프로그램을 설치하는 과정입니다. 잘 보세요..
    설치할 프로그램은 ucspi-tcp-0.84.tar.gz,  daemontools-0.70-man.tar.gz, rblsmtpd-0.70.tar.gz 입니다. 이중에서 autorepond-1.0.0.tar.gz 는 직접 컴파일 해야 합니다.
    uscpi-tcp 는 0.86 이상부터는 rblsmtpd 를 포함하고 있으므로 rblsmtpd 를 설치 안하셔야 합니다.
  
        ucspi-tcp-0.84 를 설치합니다.

        # tar xvzf ucspi-tcp-0.84.tar.gz
        # cd ucspi-tcp-0.84
        # make
        # make setup check

        daemontools-0.76 를 설치합니다. 권장 설치 방법이 좀 다르더군요.. 그래서 그대로 설치를 했습니다.    좀 복잡하지요.. ^^
        이전 버젼은 다른거와 비슷한 방법으로 설치를 했는데.. 이번은 좀 틀리더군요..

        # mkdir -p /package
        # chmod 1755 /package
        # cd /package
        # gunzip daemontools-0.76.tar
        # tar -xpf daemontools-0.76.tar
        # rm daemontools-0.76.tar
        # cd admin/daemontools-0.76
        # package/install

        rblsmtpd-0.70 을 설치합니다. ucspi-tcp 를  0.86 이상의 버젼으로 설치했다면 설치할 필요가 없습니다.

        # tar xvzf rblsmtpd-0.70.tar.gz
        # cd rblsmtpd-0.70
        # make
        # make setup check

          
    자 이제 큐메일과 관련하여 필요한 프로그램을 모두 설치했습니다. 자 이제부터 가장 중요한 설정 파일 편집에 들어갑니다.
  
        # vi /var/qmail/rc
        ----------------------------------------------------------------
         #!/bin/sh

        # Using splogger to send the log through syslog.
        # Using procmail to deliver messages to /var/spool/mail/$USER by default.

        exec env - PATH="/var/qmail/bin:$PATH"
        qmail-start '|preline procmail ./Maildir/' splogger qmail
        ----------------------------------------------------------------
      
        # chmod a+x /var/qmail/rc

        다음은 큐메일 데몬을 위한 디렉토리와 파일들을 생성합니다.

        # mkdir -p /var/qmail/supervise/qmail-send/log
        # mkdir -p /var/qmail/supervise/qmail-smtpd/log
        # chmod +t /var/qmail/supervise/qmail-send
        # chmod +t /var/qmail/supervise/qmail-smtpd

        # vi /var/qmail/supervise/qmail-send/run
        ------------------------------------------
        #!/bin/sh
        exec /var/qmail/rc
      
        # vi /var/qmail/supervise/qmail-send/log/run
        ----------------------------------------------
        #!/bin/sh
        exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail
  
        # vi /var/qmail/supervise/qmail-smtpd/run
        -------------------------------------------
        #!/bin/sh
        ALIAS_UID=`id -u alias`
        ALIAS_GID=`id -g alias`
        exec /usr/local/bin/softlimit -m 2000000
        /usr/local/bin/tcpserver -v -p -x/etc/tcp.smtp.cdb
        -u $ALIAS_UID -g $ALIAS_GID 0 25 /var/qmail/bin/qmail-smtpd 2>&1
  
        # vi /var/qmail/supervise/qmail-smtpd/log/run
        -----------------------------------------------
        #!/bin/sh
        exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t  /var/log/qmail/smtpd

        이렇게 편집한 파일들에 실행 권한을 줍니다.

        # chmod 755 /var/qmail/supervise/qmail-send/run
        # chmod 755 /var/qmail/supervise/qmail-send/log/run
        # chmod 755 /var/qmail/supervise/qmail-smtpd/run
        # chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
  
        이렇게 설정 파일에 대한 것은 끝이 났습니다.

        이제 큐메일 서버의 로그를 위한 디렉토리를 생성합니다.

        # mkdir -p /var/log/qmail/smtpd
        # chown qmaill /var/log/qmail /var/log/qmail/smtpd

        릴레이를 허용케하는 주소를 가지는 파일을 만듭니다.  

        # vi /etc/tcp.smtp
        ---------------------------------------------------------
        127.0.0.1:allow,RELAYCLIENT=""
        192.168.1.:allow,RELAYCLIENT=""

        cf) 위 파일의 내용을 잠시 살펴보면 로컬에서 보내는 메일에 대해서는 항상 릴레이를 허용합니다. 
        그리고 192.168.1. 에서 보내는 메일에 대해서도 항상 릴레이를 허용하지만 그밖의 smtp
        접속에 대해서는 모두 거부합니다. 즉 자신과 로컬 네트웍에서만 릴레이를 허용하는 것입니다.
        만약 모든 주소에 대해 릴레이를 허용하고 싶으면
        :allow
        라고 적어줍니다.
       그러면 기본적으로 모든 접속에 대해 릴레이를 허용하며 rcphosts 파일에
       도메인이 적혀 있다면 적혀 있는 도메인에 대해서만 릴레이를 허용합니다.


      이것은 작성된 것에 대해 새로운 내용으로 갱신하게 합니다. 먼저 qmail 부트 스크립트를
      /etc/rc.d/init.d 에 qmail 이라고 생성합니다.

        # /etc/rc.d/init.d/qmail cdb

      마지막으로 Alias 를 설치합니다. 이는 webmaster 앞으로 메일을 오게 하는 것입니다.
      webmaster 는 실 계정입니다.

       # cd ~alias
       # echo webmaster > .qmail-mailer-daemon
       # echo webmaster > .qmail-postmaster
       # echo webmaster > .qmail-root

      다 끝났습니다. 이제 qmail 데몬을 위한 부트 스크립트를 만드는 일입니다.


        # vi /etc/rc.d/init.d/qmail
        ------------------------------------------------------------------------
        #!/bin/sh
        # Comments to support chkconfig on RedHat Linux
        # chkconfig: 2345 80 80
        # description: sendmail을 대체하는 빠르며, 안정적이고, 유연한 MTA
      
        # Source function library.
        . /etc/rc.d/init.d/functions
      
        # Source networking configuration.
        . /etc/sysconfig/network
      
        # Check that networking is up.
        [ ${NETWORKING} = "no" ] && exit 0
      
        PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin
        export PATH
      
        case "$1" in
          start)
            echo -n "Starting qmail: svscan"
            cd /var/qmail/supervise
            env - PATH="$PATH" svscan &
            echo $! > /var/run/svscan.pid
            echo "."
            ;;
      
          stop)
            echo -n "Stopping qmail: svscan"
            kill `cat /var/run/svscan.pid`
            echo -n " qmail"
            svc -dx /var/qmail/supervise/*
            echo -n " logging"
            svc -dx /var/qmail/supervise/*/log
            echo "."
            ;;
          stat)
            cd /var/qmail/supervise
            svstat * */log
            ;;
          doqueue|alrm)
            echo "Sending ALRM signal to qmail-send."
            svc -a /var/qmail/supervise/qmail-send
            ;;
          queue)
            qmail-qstat
            qmail-qread
            ;;
          reload|hup)
            echo "Sending HUP signal to qmail-send."
            svc -h /var/qmail/supervise/qmail-send
            ;;
          pause)
            echo "Pausing qmail-send"
            svc -p /var/qmail/supervise/qmail-send
            echo "Pausing qmail-smtpd"
            svc -p /var/qmail/supervise/qmail-smtpd
            ;;
          cont)
            echo "Continuing qmail-send"
            svc -c /var/qmail/supervise/qmail-send
            echo "Continuing qmail-smtpd"
            svc -c /var/qmail/supervise/qmail-smtpd
            ;;
        restart)
            echo "Restarting qmail:"
            echo "* Stopping qmail-smtpd."
            svc -d /var/qmail/supervise/qmail-smtpd
            echo "* Sending qmail-send SIGTERM and restarting."
            svc -t /var/qmail/supervise/qmail-send
            echo "* Restarting qmail-smtpd."
            svc -u /var/qmail/supervise/qmail-smtpd
            ;;
          cdb)
            tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
            chmod 644 /etc/tcp.smtp*
            echo "Reloaded /etc/tcp.smtp."
            ;;
          help)
            cat << HELP
           stop -- stops mail service (smtp connections refused, nothing goes out)
           start -- starts mail service (smtp connection accepted, mail can go out)
          pause -- temporarily stops mail service (connections accepted, nothing         leaves)
           cont -- continues paused mail service
           stat -- displays status of mail service
           cdb -- rebuild the tcpserver cdb file for smtp
           restart -- stops and restarts smtp, sends qmail-send a TERM & restarts it
           doqueue -- sends qmail-send ALRM, scheduling queued messages for delivery
           reload -- sends qmail-send HUP, rereading locals and virtualdomains
          queue -- shows status of queue
           alrm -- same as doqueue
            hup -- same as reload
        HELP
           ;;
          *)
            echo "Usage: $0   {start|stop|restart|doqueue|reload|stat|pause|cont|cdb|queue|help}"
            exit 1
            ;;
        esac
      
        exit 0

   이것으로 모든 qmail에 대한 설정이 끝이 났습니다.

이제 재 부팅을 해 봅니다.
재부팅후에 다음과 같은 프로세스가 있는지 확인해 보시기 바랍니다.

        # ps -aux
        USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
        root           456  0.0  0.1  1316  380 ?        S    14:25   0:00 svscan
        root           457  0.0  0.1  1272  336 ?        S    14:25   0:00 supervise qmail-send
        root           458  0.0  0.1  1272  336 ?        S    14:25   0:00 supervise log
        root           459  0.0  0.1  1272  336 ?        S    14:25   0:00 supervise qmail-smtpd
        root           460  0.0  0.1  1272  336 ?        S    14:25   0:00 supervise log
        qmails       461  0.0  0.1  1332  412 ?        S    14:25   0:00 qmail-send
        qmaill        462  0.0  0.1  1288  332 ?        S    14:25   0:00 /usr/local/bin/multilog t /var/log/qmail
        alias          463  0.0  0.1  1300  356 ?        S    14:25   0:00 /usr/local/bin/tcpserver -v -p -x/etc/tcp.
        qmaill        465  0.0  0.1  1288  336 ?        S    14:25   0:00 /usr/local/bin/multilog t /var/log/qmail/s
        qmaill        471  0.0  0.1  1296  464 ?        S    14:25   0:00 splogger qmail
        root           472  0.0  0.1  1288  352 ?        S    14:25   0:00 qmail-lspawn |preline procmail ./Maildir/
        qmailr        473  0.0  0.1  1284  348 ?        S    14:25   0:00 qmail-rspawn
        qmailq       474  0.0  0.1  1280  368 ?        S    14:25   0:00 qmail-clean

물론 PID 값은 시스템 마다 틀릴수 있습니다. 그러나 다음 13 개의 프로세스는 반드시 보여야 합니다.

또한 /var/log/maillog 에 다음과 같은 줄이 있는지 확인해 봅니다.

        Sep 19 14:25:04 mail qmail: 1000923904.747047 status: local 0/10 remote 0/20

자 이제 모든 설정을 마무리 했습니다.
vpopmail 를 설치하지 않으려면 몇가지 더 설정을 해야 합니다. vpopmail 을 설치한다면 다음 과정은
넘어가셔도 됩니다.

이는 alias 를 설치하는 것과 각 사용자의 홈디렉토리에 메일을 받을 Maildir 을 설치하는 것입니다.

이는 다음과 같은 방법으로 할수 있습니다.

alias 설치하기 - 관리자 계정으로 오는 메일을 일반계정으로 포워딩 하기 위한 것입니다.

        # cd ~alias
        # echo 계정 > .qmail-mailer-daemon
        # echo 계정 > .qmail-root
        # echo 계정 > .qmail-postmaster
  
계정은 실 계정이어야 합니다.

각 사용자의 홈 디렉토리에 Maildir 을 설치합니다.
    /etc/skell 에 설정하면 사용자가 추가될때마다 자동으로 Maildir 이 생기게 할수 있습니다.

        # cd /etc/skel
        # /var/qmail/bin/maildirmake Maildir
        # echo ./Maildir/ > .qmail

자 이제 다 되었습니다.
만약 pop3 를 사용하고자 한다면 checkpasswd 를 설치하여야 합니다.
checkpasswd 를 설치하는 방법은 다음과 같습니다. 역시 vpopmail 을 설치하려 한다면 건너뛰어도
됩니다.

    cf ) checkpassswd 설치

        # tar xvzf checkpassword-0.81.tar.gz
        # cd checkpassword-0.81
        # make
        # make setup check

이 제 checkpasswd 를 설치하였으니 pop3를 사용할수 있습니다. 여기서 발생할수 있는 또하나의 문제는
사용자 계정을 mysql 에 생성할 때입니다.
        checkpasswd 의 역활은 사용자에 대한 패스워드를 추출하는 것인데 mysql 을 사용한다면 mysql
에서 사용자의 계정을 찾고 그 계정의 패스워드를 추출해야 하므로 추가적인 checkpasswd 에 대한 패치가
필요합니다.
    그 패치가 checkpassword-0.81-mysql-0.6.6.patch 입니다.
    패치 방법은 다음과 같습니다.

        # tar xvzf checkpassword-0.81.tar.gz
        # cd checkpassword-0.81
        # patch -p1 < checkpassword-0.81-mysql-0.6.6.patch
            patching file Makefile
            patching file README.mysql.en
            patching file auto_home.c
            patching file auto_qmail.c
            patching file auto_qmail.h
            patching file checkpassword.c
            patching file env.h
            patching file envread.c
            patching file mysql.c
            patching file str_diffn.c
        # make
        # make setup check
  
다 정상적으로 동작하는걸 확인 할려면 pop3 를 사용해 봐야 합니다.
여기서 선택할수 있는 것이 두가지가 있습니다.
    먼저 inet 을 사용한 pop3 의 사용이며 또 하나는 tcpserver 를 사용한 pop3 의 사용입니다.
복잡하지요. 물론 tcpserver 를 사용한 pop3을 권장합니다.

    # xinet 사용시 - RedHat 7.0
        service pop3
        {
            socket_type     = stream
            protocol        = tcp
            wait            = no
            user            = root
            server          = /var/qmail/bin/qmail-popup
            server_args     = DOMAIN.COM /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir
            log_type        = FILE /var/log/xinetd.log
            log_on_success  = HOST
            log_on_failure  = HOST RECORD
        }
    을 /etc/xinet.d 에 만드시면 됩니다.

    # tcpserver 사용시
        # vi /etc/rc.d/rc.local
        /usr/local/bin/tcpserver 0 110 /var/qmail/bin/qmail-popup 도메인 /bin/checkpassword
/var/qmail/bin/qmail-pop3d Maildir &

    자 이제 됐습니다.

    시스템을 다시 리부팅 시켜.. 정상적으로 인증이 되는지 확인해 보시기 바랍니다.

    # ps -aux 에
    root       479  0.0  0.1  1300  348 ?        S    15:06   0:00 /usr/local/bin/tcpserver 0 110
/var/qmail/
    가 있어야 합니다.

    자 계정을 설정하고 메일을 보내고 받아 봅시다. 잘  됩니까 ? 속도가 좀 느린거 같다구요. 이전에
qmail 패치할때 mysql 를 연관해서 패치해서 그렇습니다. mysql 을 사용하지 않고 패치하지 않았다면
속도는 빠릅니다.


아직 갈길 많이 남아 있습니다. vpopmail 을 설치하기 전에 smtp에 인증 기능을 추가하는
qmail-smtp-auth 를 설치해 볼려고 합니다.

3. qmail-smtp-auth 설치
  
    먼저 간단히 설명을 드리면 사용자가 smtp 를 사용할때 인증을 필요로 합니다. 이 인증은 pop
사용자의 인증을 사용합니다. 즉 pop 사용자에 한해 smtp 서버를 이용하자는 말입니다.
    따라서 비밀번호가 필요로 하며 이 필요한 비밀번호는 checkpasswd 가 수행하게 됩니다.

    아울룩 익스프레스에서는 계정을 설정시 서버탭에서 보내는 메일 서버를 체크하고 설정을 눌러 받는
사람과 동일한 설정 사용에 체크해야 합니다.

    파일을 받아 압축을 풉니다. 압축을 풀면 나오는 파일을 모두 qmail source 디렉토리로 복사합니다.
  
        # tar xvzf qmail-smtpd-auth-0.30.tar.gz
        # cd qmail-smtpd-auth-0.30
        # cp * /usr/local/qmail-1.03
        # cd  /usr/local/qmail-1.03
        # patch -p1 < auth.patch    // 만약 패치중에 경로를 찾는 프롬프트가 나오면 qmail 소스
디 렉토리를 지정해 주면 됩니다.
        # make
             ./compile qmail-smtpd.c
            qmail-smtpd.c: In function `main':
            qmail-smtpd.c:646: warning: return type of `main' is not `int'
            ./compile base64.c
            ./load qmail-smtpd rcpthosts.o commands.o timeoutread.o
            timeoutwrite.o ip.o ipme.o ipalloc.o control.o constmap.o
            received.o date822fmt.o now.o qmail.o cdb.a fd.a wait.a
            datetime.a getln.a open.a sig.a case.a env.a stralloc.a
            alloc.a substdio.a error.a str.a fs.a auto_qmail.o base64.o  `cat
            socket.lib`
                            // make setup check 하기 전에 먼저 qmail 을 중지합니다.
        # make setup check
            nroff -man qmail-smtpd.8 > qmail-smtpd.0
            ./install
            ./instcheck
                            // 이렇게 패치와 설치 모든게 끝났습니다.

        cf) /etc/tcp.smtp 설정에서 192.168.1.:allow,RELAYCLIENT="' 가 지정되어 있으면
로컬네트웍에서의 모든 메일은 qmail-smtp-auth 를 거치지 않고 바로 발송이 됩니다. 따라서 위의 것을
지워 버려야 합니다.
    지우고 나서는

        # /etc/rc.d/init/d/qmail cdb
            Reloaded /etc/tcp.smtp.
    로 tcp.smtp 를 변경된 사항으로 재 구성하는 것을 잊지 마세요.

그리고 /var/qmail/supervise/qmail-smtpd/run 에 다음을 추가합니다.
  
        #!/bin/sh
        ALIAS_UID=`id -u alias`
        ALIAS_GID=`id -g alias`
        exec /usr/local/bin/softlimit -m 2000000
        /usr/local/bin/tcpserver -v -p -x/etc/tcp.smtp.cdb
        -u $ALIAS_UID -g $ALIAS_GID 0 25 /var/qmail/bin/qmail-smtpd /bin/checkpassword /bin/true
2>&1

    자 이제 qmail 을 재 시작하고 결과를 확인하시면 됩니다.
    외부 메일 계정으로 메일이 발송이 됩니까 ? 잘 되는지 테스트를 위해 아울룩 익스프레스의
서버탭에서 보내는 메일 서버의 체크한 것을 제거해 봅시다.

        받는 사람 중 한 사람이 서버에서 거부되었으므로 메시지를 보낼 수 없습니다. 거부된 전자 메일
주소는
         'test@netsgo.com'입니다. 제목 'fffffffffffffffffdddddddd', 계정: '192.168.1.55', 서버:
'192.168.1.55',
        프로토콜: SMTP, 서버 응답: '553 sorry, that domain isn't in my list of allowed rcpthosts
(#5.7.1)',
        포트: 25, 보안(SSL): 아니오, 서버 오류: 553, 오류 번호: 0x800CCC79

     이런식으로 에러메세지가 나오면 정상입니다. 체크한다면 물론 정상적으로 메일이 발송이 되겠지요.
     전 메일이 발송이 되는 군요..ㅋㅋㅋㅋ 전 성공했습니다.
    로컬 도메인으로는 체크여부와 관계없이 메일이 발송됩니다.


4. Vpopmail 설치

    Vpopmail 은 도메인 관리와 설정 pop 유저 관리. pop 관리등을 수행합니다. 우리는 이를 위해 사용자
추가와 도메인에 대한 모든 것을 mysql 로 관리할 것이므로 먼저 다음과 같은 설정을 해 주어야 합니다.
    주의 ) qmailadmin 은 설치할려면 mysql 을 같이 설치하면 안됩니다.

        # vi /var/qmail/control/sqlserver
            mysql_use yes
            server localhost
            login qmail
            password qmail
            db qmail
            table users
            check_host no
  
        mysql 에 사용 권한을 부여합시다. 권한 부여하는 것은 다 아시죠. 모르시는 분은 해당 문서를
참조하세요.

        전 다름과 같이 만들었습니다.

        # ./mysql -uroot
            Welcome to the MySQL monitor.  Commands end with ; or g.
            Your MySQL conection id is 1 to server version: 3.22.32

            Type 'help' for help.
            mysql> use mysql
            Reading table information for completion of table and column names
            You can turn off this feature to get a quicker startup with -A

            Database changed

            mysql> insert into user values
('localhost','qmail',password('qmail'),'n','n','n','n','n','n','n','n','n','n','n','n','n','n');
            Query OK, 1 row affected (0.00 sec)

            mysql> insert into db values
('localhost','qmail','qmail','y','y','y','y','y','y','y','y','y','y');
            Query OK, 1 row affected (0.00 sec)

            mysql> create database qmail;
            Query OK, 1 row affected (0.00 sec)

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

            이제 mysql 도 준비가 되었으니 본격적으로 Vpopmail 설치에 들어갑니다.

    vpopmail 이 사용할 유저와 그룹을 만듭니다.
  
        # groupadd vchkpw
        # useradd -g vchkpw vpopmail

        vpopmail 에서 mysql 을 건들기 위해서는 vmysql.h 를 수정해 주어야 합니다.

        # tar xvzf vpopmail-4.9.10.tar.gz
        # cd vpopmail-4.9.10
        # vi vmysql.h
            --- 중략 ---
              /* Edit to match your set up */
        #define MYSQL_SERVER        "localhost"
        #define MYSQL_USER          "qmail"
        #define MYSQL_PASSWD        "qmail"
        /* End of setup section*/

        /* defaults - no need to change */
        #define MYSQL_DEFAULT_TABLE "vpopmail"
        #define MYSQL_DATABASE "qmail"
        #define MYSQL_DOT_CHAR '_'
        #define MYSQL_LARGE_USERS_TABLE "users"
            --- 중략 ---

    자 이제 환경 설정을 합니다.

        # ./configure --enable-default-domain=mail.com --enable-mysql=y

        cf) 옵션에 대한 설명을 조금 하자면 첫번째 옵션은 기본 도메인을 설정해 주는 것입니다.
vpopmail 의 경우 가상 도메인 계정은 pop3 에 로긴시 아이디@도메인명으로 사용자 아이디를 넣게 되어
있습니다. 그러나 기본으로 지정된 도메인에 대해서는 아이디만 넣으면 됩니다. 두번째 옵션은 mysql 을
사용하겠는가에 대한 옵션 설정입니다.
        환경 설정에 있어서 다른 사용할수 있는 옵션이 몇개 있습니다. 이중 sql 에 관련된 옵션을
소개하자면 다음과 같습니다. qmailadmin 을 사용하고자 한다면 mysql 을 사용안함으로 설정하셔야
합니다.
      
        --enable-large-site=y

    이 옵션은 하나의 도메인에 하나의 테이블을 만든다는 옵션입니다.
    이는 mysql 의 속도와 최적화에 관련이 있는 옵션입니다. 따라서 많은 도메인이 있고 적은 수의
유저가 있다면 n 로 설정하는 것이 좋습니다. 그러나 적은 도메인이 있고 많은 수의 유저가 있다면 y 로
설정하는 것이 좋습니다.
     많은 도메인에 적은 유저가 있다면 사용시마다 테이블을 열고 닫기 때문에 속도에 있어서 시스템에
부하를 줍니다. 하지만 적은 수의 도메인에 많은 유저가 있다면 하나의 테이블에서 모두 관리하므로
테이블을 열고 닫는데 큰 영향을 미치지 않습니다.  
      
    정상적으로 환경 설정이 끝나게 되면 다음과 같은 마지막 줄이 있습니다.

                    Current settings
            ---------------------------------------
            vpopmail directory = /home/vpopmail
                           uid = 509
                           gid = 509
                    roaming users = OFF
                    user quota = OFF
                    tcpserver file = /etc/tcp.smtp
                    open_smtp file = /home/vpopmail/etc/open-smtp
                    auth module = mysql
                    table optimization = many domains (--enable-large-site=n default)
                    auth logging = OFF
                    pop syslog = show only failure attempts
                    default domain = mail.com

    자 이제 빌드하고 컴파일을 하면 됩니다.

        # make
        # make install-strip

    모든 것이 끝나고 ~vpopmail 에는 여러 디렉토리와 필요한 바이너리가 생성이 됩니다.

    이제 vpop 를 위한 pop3 데몬 시동 파일을 만들 차례입니다. 이는 이전의 것과 좀 다릅니다. vpopmail
을 사용안할때 하고는 좀 다르니 기존의 것을 지우고 다시 추가합니다.

    /etc/rc.d/rc.local 에 다음과 같이 추가합니다.

        #vi /etc/rc.d/rc.local

               --- 중 략 ---
            #!/bin/sh
            env - PATH="/var/qmail/bin:/usr/local/bin"
            tcpserver -u $VPOPMAIL -g $VPOPMAIL 0 pop-3 /var/qmail/bin/qmail-popup mail.com
            /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir &
  
        $VPOPMAIL 에서 앞의 것은 계정 번호. 뒤는 그룹 번호입니다.

   자 이제 시스템을 리붓을 해보고 다음으로 넘어갑니다.

   지금부터 테스트를 합니다. 이 테스트를 무사히 마쳐야 합니다.

        # cd ~vpopmail
        # cd bin

   에 보면 많은 바이너리가 있습니다. 이중 몇가지를 살펴보면..

        vadddomain 도메인명

            ex) # ./vadddomain mail.com
                  # ./vadddomain mail1.com
                  # ./vadddomain mail2.com

   이런식으로 가상 도메인을 추가하면 됩니다. 물론 실제 도메인도 추가해야 합니다.

    만약 다음과 같은 에러가 발생할수 있습니다.

            # ./vadddomain: error while loading shared libraries: libmysqlclient.so.6: cannot open
shared object file: No such file or directory

    이럴경우 다음과 같이 심볼릭 링크를 만들어 주면 됩니다.

      # ln -s /usr/lib/mysql/libmysqlclient.so.6.0 /usr/lib/libmysqlclient.so.6
  
    도메인을 입력하면 패스워드를 입력하라고 나오는데. 이 패스워드는 postmaster 의 패스워드입니다.
패스워드를 함께 지정할려면 도메인 옆에 패스워드를 같이 넣어서 한번에 추가할수도 잇습니다.

        vadduser id@도메인명

            ex) # ./vadduser master@mail.com
                  # ./vadduser master@mail1.com
                  # ./vadduser master@mail2.com

   도메인만 다르다면 같은 이름의 vpopmail 유저를 가질수 있습니다. 물론 패스워드도 같이 물어보는데..
이도 메일 주소 옆에 패스워드를 함께 명기함으로써 한번에 추가 할수도 있습니다.
  
    정확한 사용법은 다음과 같습니다.

    /var/qmail/control/locals 에 있는 도메인에 대하여 이메일의 주소는 사용자이름@도메인주소 이며
팝 인증에 필요한 사용자 이름은 아이디뿐 입니다.

     관리자 프로그램은 vadduser, vdeluser, vpasswd 입니다.

        vadduser  사용자이름   패스워드(옵션) -a(apop은 옵션)
        vdeluser   사용자이름
        vpasswd  사용자이름  패스워드(옵션) -a(apop은 옵션)

    /etc/qmail/control/virtualdomains 속의 가상 도메인에 대하여 주소의 형식은
사용자이름@가상도메인 이며 팝 인증시 사용자 이름은 사용자이름%가상도메인  또는
사용자이름@가상도메인이며  이는 이메일 클라이언트에 따라 다릅니다.

          관리자 프로그램으로는 vadddomain, vdeldomain, vpasswd 입니다.

         vadddomain 가상도메인_이름   패스워드(옵션) -a(apop은 옵션)
         vdeldomain  가상도메인
         vadduser     사용자이름@가상도메인   패스워드(옵션) -a(옵션)
         vdeluser      사용자이름@가상도메인   패스워드(옵션) -a(옵션)
         vpasswd     사용자이름@도메인이름   패스워드(옵션)

    이중 vadddomain 은 도메인을 추가하기 위한 명령으로써 이 명령은 다음과 같은 파일을 업데이트
합니다.
  
        관리 프로그램 : vadddomain 가상도메인 패스워드(옵션)

            updates /var/qmail/control/rcpthosts
            updates /var/qmail/control/virtualdomains
            updates /var/qmail/users/assign
            updates /var/qmail/users/cdb
            runs /var/qmail/bin/qmail-newu

      새로운 도메인을 받아들이기 위해서는 qmail-send 에게 HUP 신호를 보내야 합니다. 이는 다음과
같은 방법으로 행해질수 있습니다.
      
            # svc -h /service/qmail

     
   이제 마지막으로 확인을 해 보겠습니다.
      
        # vi /var/qmail/control/locals
            localhost
      
   만 있어야 합니다. 다른 것이 있으면 안됩니다.

        # vi /var/qmail/control/rcpthosts
            localhost
            mail1.com
            mail2.com
            mail.com

   추가한 도메인이 다 들어가 있는지 확인합니다.

        # vi /var/qmail/control/virtualdomains
            mail1.com:mail1.com
            mail2.com:mail2.com
            mail.com:mail.com

   virtualdomains 도 이와 같이 되어 있는지 확인합니다.

        # vi /var/qmail/users/assign
            +mail1.com-:mail1.com:509:504:/home/vpopmail/domains/mail1.com:-::
            +mail2.com-:mail2.com:509:504:/home/vpopmail/domains/mail2.com:-::
            +mail.com-:mail.com:509:504:/home/vpopmail/domains/mail.com:-::

   이제 모든것이 마무리 되었습니다. 아울룩 익스프레스를 사용하여 메일을 보내보시고 잘 받는지 확인만
하시면 됩니다.

4. qmail-scanner 설치
  
        드디어 마지막 까지 왔습니다. 이것만 설치하면 끝이 납니다. 자 그러면 설치해 볼까요..
  
    qmail-scanner 은 바이러스 스캐너입니다. 만약 바이러스가 검출되거나 혹은 첨부파일이 특정한
확장자를 갖는 파일이면 이를 배달하지 않습니다. 그리고 송신인에게 경고 메일을 보내게 됩니다.

        qmail-scanner 을 설치하기 전에 qmail-queue 를  먼저 패치하기로 하지요.
        qmail 소스 디렉토리에 가서 다음을 실행합니다.

            # patch -p0 < qmailqueue.patch
                    // 그러면 정상적으로 패치가 됩니다. 만약 경로를 묻는 프롬프트가 나오면 경로를
입력해 주시면 됩니다.

       그런다음 다시 qmail 을 빌도하고 컴파일 합시다. 전에 큐메일을 중지시키세요.
          
            # make
            # make setup check

    이것으로 큐메일의 재 인스톨은 됐습니다.

    이번에는 필요한 파일들을 인스톨할 차례입니다.
    먼저 maildrop 를 설치합니다.

        # tar xvzf mailmaildrop-1.3.4.tar.gz
        # cd maildrop-1.3.4
        # ./configure
        # make
        # make install-strip
        # make install-man

    이것으로 amildrop 은 설치를 마쳤습니다.

    이번은 Time:: HiRes 라는 펄 모듈입니다.
        자동 설치하는 방법도 있지만 해당 사이트에 접속이 잘 안되므로 수동으로 설치하면 됩니다.
      
        # tar xvzf Time-HiRes-01.20.tar.gz
        # cd Time-HiRes-01.20
        # perl Makefile.PL
        # make
        # make test
        # make install

       펄 모듈들은 이런식으로 설치를 합니다.  관련 프로그램은 모두 설치했습니다.
    이제 본격적으로 qmail-scanner 를 설치하겠습니다.

        # tar xvzf qmail-scanner-1.00.tar.gz
        # cd qmail-scanner-1.00
        # ./configure --install

    이제 모든 설치가 마무리 되었습니다.
  
    smtp 에서 메일을 걸러낼수 있게 설정을 조금 변경해 주면 됩니다.
      
        # vi /var/qmail/supervise/qmail-smtpd/run
            #!/bin/sh         
            QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
            export QMAILQUEUE

            ALIAS_UID=`id -u alias`
            ALIAS_GID=`id -g alias`
            exec /usr/local/bin/softlimit -m 6000000
            /usr/local/bin/tcpserver -v -p -x/etc/tcp.smtp.cdb
            -u $ALIAS_UID -g $ALIAS_GID 0 25 /var/qmail/bin/qmail-smtpd /home/vpopmail/bin/vchkpw
/bi
            n/true 2>&1
          
    이제 필터를 추가해 보고 테스트 해보면 됩니다.

    필터는 다음 위치에 있습니다.
        # vi /var/spool/qmailscan/quarantine-attachments.txt
            --  중략 --
            EICAR.COM               69      EICAR Test Virus
            Happy99.exe             10000   Happy99 Trojan
            zipped_files.exe        120495  W32/ExploreZip.worm.pak virus
            ILOVEYOU                Virus-Subject:  Love Letter Virus/Trojan
  
    각각의 항목은 탭으로 구분됩니다. 중요합니다 탭으로 구분됩니다.
      
        잠시 간단히 설명해 보자면 다음과 같습니다.
              형식 : 3개의 항목으로 되어 있습니다.

                     filename<TAB>size (in bytes)<TAB>Description of virus/whatever
                        파일이름        크기(bytes)                설명
        또는
                     string<TAB>Header<TAB>Description of virus/whatever
                        문자열        메일헤더        설명


        단점으로는
                1) 새로운 메일은 바로바로 체크를 못한다는 점이며 추가를 따로 해 주어야 합니다.
                2) 혼자 작동하는 바이러스는 체크하는데 반해 매크로 바이러스는 확인할수 없습니다.
                3) 와일드 카드를 사용할수 있습니다. 와일드 카드는 첨부파일을 확인하여 확장자에 따라
메일을 거부하는데 사용될수 있습니다. 그럴 경우 사이즈는 무시됩니다.
                    예)     .exe
               4) SMTP 가 허용하는 사이즈를 넘는 파일은 금지합니다. 최대 크기를 설정할수 있습니다.
               5) 헤더에 맞추어서 허용여부를 결정할수 있습니다. 이것은 스팸이나 다른 알지 못하는
주소로부터 오는 것을 막을수있습니다.
                    제목 : Subject, 송신인 : From, 등입니다. 이 문자열은 반드시 Virus- 로
시작되어야 하며 :이 나와야 합니다.

        자 이제 모든 것이 설치되었으므로 테스트를 해 보면 됩니다.

        정의 파일을 추가한 다음에는 반드시 다음 명령으로 적용시켜 주어야 합니다