MySQL  ťϰ ̽

â winchild@kldp.org


1. 

MySQL  ť ̽  񽺸  ϴ 񽺸 Ͽ  ʿ
 κԴϴ.   ť  н迭 ڿ α׷ н
 ǥ  /etc/passwd Ͽ ϵǾ ִ ̿ڸ  
񽺸 ϵ Ǿ ֽϴ.  ׷ /etc/passwd  ϵȴٴ  SHELL 
 شٴ ̾߱ SHELL   ʴ´ٰ ϴ  /etc/passwd   Ϲ
н Ͻý̹Ƿ ϱⰡ  ڸ  , õ /etc/passwd
Ͽ Ͽ ϵ Ǿ  ʽϴ. (ȵǴ  ƴ ...)

 ̷   /etc/passwd    ϼ񽺸
ް ҰͰ  ý MySQL ̿ؼ ڴ° ⺻  Դϴ.

 ť ˱ Ͽ ̷ κ ־ϴ.   ҽ
ļ ؾϴ û ۾ (Sendmail ҽ Ⱓ  Ǿ ҽ 
 ƴմϴ. ҽ  ΰ  ʾƼ  ̾  BSD db ̿
ٹ ذ߾ϴ. 

   .

ť ˰Ե ķ ﰢ  ߾  ý DB  ٲپϴ
۾  Խϴ. ̹ ť ̽  Ŷ  
ͳ   Ϻ  п ġ Ҵ.
 ġ ġϰ ̽ Ѻ  Ѱ Դϴ.


2. ť

  ϱ ť  ϰ 񱳵 ʴ ý̴
.  Ư ťƼ  Ͽ  α׷ Ȯ ġ Ȯ 
 Ǿ   ׳ ź Դϴ. Ȯε ʾ DNS ϵ  
ɻƮ  °͵ źϴ° .   ťƼ Ȧ ġ
    ٲپ   ͽϴ.

Ư ť ϰ 񱳰   ŭ  Ʈ Ʈ ֽϴ.
ѱ ̷Ʈ (http://qmail.manic.co.kr/top.html)  Ȯ ʽÿ
 MySQL ص  Ʈ Ʈ ϳ Դϴ.

ť Ϻ ġ ϸ  ߽ϴ. ( Ȯϰ ġϿ
,       ٽ ؾ   ý̴.)
 /etc/sendmail.cf   ̸  ϽǼ  ϴ.


3. MySQL  ̽

켱  ٿ ޽ϴ.    qmail-1.03  ϴ ġ 
ֽϴ. qmail ġ  ؾ ϴµ װ KLDP  οø HOW-TO  
Ͻñ ٶϴ.  ġ  Ŀ ť ϴ° Ȯ Ŀ Ʒ 
ġ  Ͻø ɰ Դϴ. mysql ̽  MySQL Ʈ (http:/
/www.tcx.se, http://www.mysql.com)  Ҽ ֽϴ.


  # tar zxvf qmail-1.03.tar.gz
  # gzip -d qmail-1.03-mysql-0.4.0.pathc.gz
  # cd qmail-1.03
  # patch -p1 < ../qmail-mysql-patch

ťϰ mysql  qmail-1.03-mysql-0.4.0.patch.gz  qmail ޾Ƽ Ǭ
丮 ġ Ͽ mysql  򸮵 մϴ. ̶ patch  ޴ 
 Windows  gz  gzip  Ǯ ִ  ɼ̹Ƿ ġ  Ǯ
  ֿ Ÿ ˴ϴ. ׷ ̰ ׳ ϰ Ǵµ ̶ 
 Ͻý · ˴ϴ. (CR+LF) ̰ н Ǵ  ÷ 
ϴµ   ftp  ⺻ ̳ʸ Դϴ.  CR+LF  
 . ̰ vi   ׳ ߺԴϴ. 
(Ʒ DOS ̶ ׸ Ÿ  Ű澲ô?)
׷ ߿ö ϰ ġ ϸ ̰  ϴ.    
 ݳ Ƚϴ. , ׿ ޾Ҵٸ  ASCII  ϰų CR+LF
 LF  н ؽƮ   ȯ ּž մϴ.
(, dos 带 ־ ȴٴ . ^M  ڸ...)

ġ  Ǿ makeϰ mysql  ϴ ϵ ġ ˴ϴ.
README.mysql.en  ϳ Ǿ Դϴ. ̰  mysql Ű 
 ̴ Ͻñ ٶϴ. ġ ǰ   ġ մϴ.

ġô root ̾ մϴ.

   # make
   # make setup check

qmail ġܿ POP-3 񽺸  checkpassword  ġ ʿմϴ.

   # tar zxvf checkpassword-0.81.tar.gz
   # gzip -d checkpassword-0.81-mysql-0.5.0.patch.gz
   # cd checkpassword-0.81
   # patch -p1 < ../checkpassword-0.81-mysql-0.5.0.patch
   # make
   # make setup check

 README.nysql.en  Ǿ Ƿ ġ Ͻð
ϰ ġ մϴ.  ġÿ root ...

/var/qmail/control/sqlserver     մϴ.

  mysql_use     yes
  server        localhost
  login         qmail
  password      qmail1234
  db            qmail
  table         users
  check_host    no

ϰ ϸ...

  mysql_use     yes          ... mysql  Ѵ.
  server        localhost    ...   mysql  Ѵ.
  login         qmail        ... mysql DB ϴ ڸ
  password      qmail1234    ... mysql DB ٽÿ ʿ йȣ
  db            qmail        ...    ִ DB
  table         users        ...   ִ ̺
  check_host    no           ... ̰ yes ̸ mysql DB ִ ̿ڸ
                                  (ȣƮ) ͸  Ѵ.
                                 (Ҹ  𸣰...)

α MySQL  ϴ°  Ȯ  ؾ մϴ.
 mysql -u <id> qmail    йȣ ְ  qmail DB  
 ִ Ȯ϶ Դϴ. 
, ̶ login  DB ٱ(?)  id ̿϶ Դϴ. 
mysql access  password   ʿ  Դϴ.. 
ʿ ½ö mysql DBٱ   test db   
̽ Ϸ Ŀ ׽Ʈ ļ ϰ  ϴ°   
 Դϴ.   쿡 password ׸  ʿ䰡 ϴ. 
(ܺηε  ̹Ƿ ۳ ̾   ʾ ȿ ɰ 
  翬մϴ.)

ġǾ ǰ ִ mysql DB    db  ̺ ش ̿
 մϴ.

̿ ̺ մϴ.  ̰ ʿ信   ̹Ƿ  
 ʿ ׸ ߰ؼ ̺  ˴ϴ.   ش ׸  ȴ
 ̾߱ Դϴ.

CREATE TABLE users (
  id char(32) DEFAULT '' NOT NULL,
  crypt char(32) binary DEFAULT '' NOT NULL,
  passwd char(32) binary DEFAULT '' NOT NULL,
  uid int(10) unsigned DEFAULT '65534' NOT NULL,
  gid int(10) unsigned DEFAULT '65534' NOT NULL,
  shell char(100) binary DEFAULT '' NOT NULL,
  home char(100) binary DEFAULT '' NOT NULL,
  start_date date DEFAULT '0000-00-00' NOT NULL,
  expire_date date DEFAULT '2030-01-01' NOT NULL,
  active enum('Y','N') DEFAULT 'Y' NOT NULL,
  KEY id (id(10)),
  KEY start_date (start_date),
  KEY expire_date (expire_date),
  KEY active (active)
);

 ʵ  ...

  id field:         ̿ id
  uid field:        ̿ ȣ
  gid field:        ̿ ׷ȣ
  home field:       ̿ Ϲڽ 丮 н (Ǯ н̾ )
  shell field:      ̿ SHELL (  /bin/false )
  mbox_host field:  ߸. Ͽư NULL ̾ Ѵٰ ...
           : Recieve a mail when one's address ("To: xxx@xxx") is
                 'id'@'mbox_host'. must be accepted NULL.
           : To  ⺻ E-mail ּ  ִ°Ŷ° . 
                 Not Null  Ͱ  NULL   DB  
                   Ѱ .

  active:            ̿  ִ  ÷
  start_date:        ̿Ⱓ . 
  expire_date:       ̿ Ⱓ . 

̺ Ŀ ̿  DB  մϴ.
passwd Ͻÿ encryption  ϱ mysql ũ Ÿǵ password ()  
մϴ.  ̿ڰ ϵǾ DB  home 丮  մϴ.

:
 MySQL table
+----------+-------+------+---------------------+------------
+   id     |  uid  | gid  |  home               | shell      
+----------+-------+------+---------------------+------------
+ username |  1234 | 6789 | /somewhere/username | /bin/false 


  DB ϵǾ ...

  # mkdir /somewhere/username
  # maildirmake  /somewhere/username/Maildir
  # chown -R 1234 /somewhere/username/
  # chgrp -R 6789 /somewhere/username/


 Ͽ Maildir  Ϲڽ մϴ.  ش ID   ǵ
 Ͽ մϴ.  (ƴϸ ŵ )  ̶ Maildir  񽺰 ǰ Ϸ 
ش̿ Ȩ丮 .qmail Ͽ  ./Maildir/  ־ ų qmail 
ÿ ⺻ 񽺰 ./Maildir/ 񽺰 ǵ մϴ.
qmail-start ./Maildir/  ϴµ /var/qmail/rc  ũƮ   մ
. ƴϸ ׳ Mailbox  ϼŵ ˴ϴ.


Ǿ ׽Ʈ غϴ.

   # /var/qmail/bin/qmail-getpw username localhost
   username12346789/home1/qmail-box/g/gumdong

  id, uid, gid, home  ٰԴϴ.   DB  ϸ DB
  ٸ alias ⺻ Ÿ ˴ϴ.  ̶ mysql log 
⵵  Ѽ   SQL   ȮϽʽÿ.  mysqld 
׸ ⵵ ϴ   ϴ.   μ Ǵ ̹
  񽺿  ʽÿ.

   # /usr/local/libexec/mysqld --log=/tmp/mysql.log


׷ ׽Ʈ   ϴ.

   # echo to:username | /var/qmail/bin/qmail-inject

   ~username/Maildir/new 丮  Ͻʽ
. ࿡    /var/mail/maillog  ȮϿ  ã
 Ͽ մϴ.

   ̷ µ  POP-3  ϴ checkpassword  
 ϴ    Ȯմϴ.

   # telnet localhost pop-3
   Trying 127.0.0.1...
   Connected to localhost.
   Escape character is '^]'.
   +OK <6195.936784767@calypso.mydomain.or.kr>
   user username
   +OK
   pass 1234
   +OK
   quit
   +OK
   Connection closed by foreign host.

̷ pass  DB ־  ġϿ +OK   Ȯ ȰԴϴ.
    DB   crypt ׸ ִ йȣ ġϴ Ȯؾ 
մϴ.

crypt ׸ йȣ   encrypt()  mysql ũθ ̿մϴ.

   > update users set crypt=encrypt('1234') where id='gumdong'\g

  ÿ տ  ť α׿  mysql α׸ 
Ͻʽÿ.
