참고로 보기 위한 좋은 글 -- q메일 및 스팸서버 구축에 관한 글 [펌]

by 햇빛소년 posted Jun 19, 2012 Views 39913 Likes 0 Replies 0
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄 수정 삭제

국산 통나무 수공예 남원제기, 남원목기

자료가 도움이 되셨다면
혼수용품제수용품 필요시
남원제기 공식 홈페이지 http://남원제기.kr
남원목기 공식 홈페이지 http://otchil.kr
에서 구매 해 주세요
정성껏 모시겠습니다.
 

스팸처리룰적용

편지함 2단계 적용여부


메일검색
안읽은편지만보기 / 모든편지보기
수신확인

스팸처리 룰셋 표시
주소록 만들기
관리자 공지사항


화이트리스트 작성 기능
> procmail 에서 해당 메일 수신시 해당 받은편지함으로 이동시키기

부재중 자동응답기능
동일메일에 대하여 몇일 동안 몇번 부재중안내가 아니라
동일메일에는 한번만 시행하는것이 바람직 할것 같다.

 

ucspi-tcp 설치

vi errno.h
수정
extern int errno; -> #include <errno.h>
make
make setup check

daemontools 설치


src/error.h 수정
extern int errno; -> #include <errno.h>


# wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
# mkdir /package
# chmod 1755 /package
# tar xfz daemontools-0.76.tar.gz -C /package
# cd /package/admin/daemontools-0.76

wget http://qmail.kldp.org/src/patches/glibc-2.3.1/?id=1668
patch -p1 < daemontools-0.76.errno.patch

src/error.h 수정
extern int errno; -> #include <errno.h>

# package/install

vi /etc/inittab 수정
* 마지막라인의 다음내용을 삭제후 저장
SV:123456:respawn:/command/svscanboot

cd command
mv * /usr/local/bin
rm -rf /service
rm -rf /command
ps -ef | grep svscan
kill -9 "관련프로세스종료"

checkpassword 설치

cd checkpassword-0.90_mysql0.66
make
make setup check
chmod 4710 /bin/checkpassword
chown root.nofiles /bin/checkpassword

 

imap
src/c-client/Makefile 수정
openssl include 하는 부분 뒤에 추가 -I /usr/kerberos/include
libmysqlclient.a 참조하는 경로 수정
make slx
질문 y 엔터

cp imapd/imapd /usr/sbin/in.imapd

vi /etc/xinetd.d/imap
service imap
{
disable = no
flags = REUSE
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/sbin/in.imapd
log_on_failure += USERID
}
/etc/rc.d/init.d/xinetd restart


hcode 설치

libiconv 설치
./configure
make
make install

 

 

qmail 설치

사용자 등록
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 패치 등..

qmail-1.03# patch -p1 < ../cocktail14+mysql+chkuser+quota.patch_20041116
qmail-1.03# vi conf-cc

아래 내용을 변경 추가
#cc -O2 -DTLS=20021228 -I/usr/local/ssl/include
cc -O2 -DTLS=20021228 -I/usr/include/openssl -I/usr/kerberos/include


로컬타임으로 수정
 
qmail-local.c
 
include <time.h> 추가
 
utc 에서 ctime 으로 소스 수정
/* UTC Time */
/* if (!stralloc_cats(&ufline,myctime(starttime))) temp_nomem(); */
 
/* Local TIme */
 if (!stralloc_cats(&ufline,ctime(&starttime))) temp_nomem();

qmail 설정

qmail-1.03# make
qmail-1.03# make setup check
./config

 * ./config 시 DNS때문에 에러 많이 납니다. 우선 /etc/hosts 에 서버IP localhost 입력.
   /etc/sysconfig/network 에 HOSTNAME=localhost  입력.
   /etc/resolv에 nameserver 만 입력 (search 도메인 지우세요.)
   위의 형태로 localhost로 잡아서 ./config 하신 후 가상 도메인 입력해주시기 바랍니다.

mkdir -p /var/qmail/supervise/qmail-send/log
mkdir -p /var/qmail/supervise/qmail-smtp/log
mkdir -p /var/qmail/supervise/qmail-pop3/log
chmod +t /var/qmail/supervise/qmail-send
chmod +t /var/qmail/supervise/qmail-smtp
chmod +t /var/qmail/supervise/qmail-pop3


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

vi /var/qmail/supervise/qmail-smtp/run
#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
exec /usr/local/bin/softlimit -m 10000000 \
/usr/local/bin/tcpserver -vRHl0 -x /etc/tcp.smtp.cdb \
-u "$QMAILDUID" -g "$NOFILESGID" 0 smtp \
/usr/local/bin/rblsmtpd \
-r relays.ordb.org \
-r bl.spamcop.net \
-r blackhole.securitysage.com \
/var/qmail/bin/qmail-smtpd webhosting1.co.kr \
/bin/checkpassword /bin/true 2>&1

*위에서  webhosting1.co.kr = 가상도메인(설정한 도메인으로 바꿔주세요.)

 

vi /var/qmail/supervise/qmail-smtp/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtp

vi /var/qmail/supervise/qmail-pop3/run
#!/bin/sh
exec /usr/local/bin/softlimit -m 5000000 \
/usr/local/bin/tcpserver -v -R -H -l 0 0 pop3 /var/qmail/bin/qmail-popup \
webhosting1.co.kr /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir 2>&1

*위에서  webhosting1.co.kr = 가상도메인(설정한 도메인으로 바꿔주세요.)


vi /var/qmail/supervise/qmail-pop3/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/pop3

chmod 755 /var/qmail/supervise/qmail-send/run
chmod 755 /var/qmail/supervise/qmail-send/log/run
chmod 755 /var/qmail/supervise/qmail-smtp/run
chmod 755 /var/qmail/supervise/qmail-smtp/log/run
chmod 755 /var/qmail/supervise/qmail-pop3/run
chmod 755 /var/qmail/supervise/qmail-pop3/log/run
cd ~alias
아래 3개는 필수
echo "test123@webhosting1.co.kr" > .qmail-mailer-daemon
echo "test123@webhosting1.co.kr" > .qmail-postmaster
echo "test123@webhosting1.co.kr" > .qmail-root
echo "test123@webhosting1.co.kr" > .qmail-anonymous
echo "test123@webhosting1.co.kr" > .qmail-default
echo "test123@webhosting1.co.kr" > .qmail-doublebounce
echo "test123@webhosting1.co.kr" > .qmail-virusadmin

 

test123@webhosting1.co.kr 테스트 계정 및 가상 도메인으로 변경.
Ex) test123@test.com

 


cp /var/qmail/boot/proc /var/qmail/rc
vi /var/qmail/rc
수정 qmail-start '|preline procmail ./Maildir/' splogger qmail

mkdir -p /var/log/qmail/send
mkdir -p /var/log/qmail/smtp
mkdir -p /var/log/qmail/pop3
chown qmaill /var/log/qmail /var/log/qmail/send /var/log/qmail/smtp /var/log/qmail/pop3

vi /etc/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-smtp"
svc -p /var/qmail/supervise/qmail-smtp
echo "Pausing qmail-pop3"
svc -p /var/qmail/supervise/qmail-pop3
;;
cont)
echo "Continuing qmail-send"
svc -c /var/qmail/supervise/qmail-send
echo "Continuing qmail-smtp"
svc -c /var/qmail/supervise/qmail-smtp
echo "Continuing qmail-pop3"
svc -c /var/qmail/supervise/qmail-pop3
;;
restart)
echo "Restarting qmail:"
echo "* Stopping qmail-smtp."
svc -d /var/qmail/supervise/qmail-smtp
echo "* Sending qmail-send SIGTERM and restarting."
svc -t /var/qmail/supervise/qmail-send
echo "* Restarting qmail-smtp"
svc -u /var/qmail/supervise/qmail-smtp
;;
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
-----------------------------------------------------

chmod 755 /etc/init.d/qmail

기본상태일때
vi /etc/tcp.smtp
# No Qmail-Scanner at all for mail from 127.0.0.1
127.0.0.1:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/qmail-queue"
#127.0.0.1:allow,RELAYCLIENT="",RBLSMTPD="",QMAILQUEUE="/var/qmail/bin/qmail-queue",QS_SPAMASSASSIN=""
127.0.011:allow,RELAYCLIENT="",RBLSMTPD="",QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl",QS_SPAMASSASSIN="on"
:allow,QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl",QS_SPAMASSASSIN="on"

qmail-scanner 사용시
vi /etc/tcp.smtp
# No Qmail-Scanner at all for mail from 127.0.0.1
127.0.0.1:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/qmail-queue"
#127.0.0.1:allow,RELAYCLIENT="",RBLSMTPD="",QMAILQUEUE="/var/qmail/bin/qmail-queue",QS_SPAMASSASSIN=""
127.0.011:allow,RELAYCLIENT="",RBLSMTPD="",QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl",QS_SPAMASSASSIN="on"
:allow,QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl",QS_SPAMASSASSIN="on"


/etc/init.d/qmail cdb

ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

vi /var/qmail/control/sqlserver
mysql_use yes   
server localhost
login DB네임    
password DBPass 
db DBUser        
table QmailTable
port 3306        
check_host yes   
quota yes
ignore_validity yes
swap_check_order yes

 

 

---------DB연동 테스트 입니다.----------------

테스트 할 DB와 DB사용자 및 패스워드 생성 하신 후 위에 입력 해주시구요.

check_host yes > no로 변경 하고 테스트 하시기 바랍니다.


CREATE TABLE mailuser (
  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 '48' NOT NULL,
  gid int(10) unsigned DEFAULT '48' NOT NULL,
  mbox_host char(64) ,
  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,
  PRIMARY KEY id (id(10)),
  KEY shell (shell(10)),
  KEY home (home(20)),
  KEY start_date (start_date),
  KEY expire_date (expire_date),
  KEY active (active)
);

위의 형태로 테이블 만신 후 ID입력 해주시구요 crypt <이것은 encrypt로 지정해서 패스워드 입력 해주시면 됩니다.
passwd는 null값으로 놔두시면 됩니다.
home 은 메일의 저장위치 입니다. shell 은 /bin/false 로 지정 하시면 됩니다.

uid와gid는 시스템 계정 아이디와 그룹아이디 입니다.(apache로 지정되어있음.)


db생성 완료후 $ perl -e 'printf "%s\0%s\0Y123456\0","ID","패스워드"' | /bin/checkpassword id 3<&0
입력 하시면

uid=65534(smtpauth) gid=65534(smtpauth) groups=65534(smtpauth)

위와 같은 결과를 보실 수 있습니다.


결과값이 없으면 연동 실패 입니다.

 


엔코딩  (저는 안했습니다.. mmencode가 없어서요.)
printf 'test123@webhosting1.co.kr' | mmencode

 

 


다음으로 $ telnet localhost pop-3

user (위에서 테스트 한 ID입력)
pass (ID의 패스워드 입력) 하셔서
+OK Sayonara가 나오거나 -ERR this user has no $HOME/Maildir 나오셔야 합니다.

두번째 메시지는 로그인 하였지만 home 디렉토리가 제대로 지정 안되어서 그렇습니다.
지정 해주시면 될 것입니다.


그럼 테스트 마침.

 

릴레이 테스트
telnet relay-test.mail-abuse.org

 

스팸관련 설치
dcc 설치
./configure


pyzor 설치
bunzip2 pyzor-0.4.0.tar.bz2
tar xvf pyzor-0.4.0.tar
python setup.py build
python setup.py install
chmod -R a+rX /usr/share/doc/pyzor /usr/lib/python2.2/site-packages/pyzor /usr/bin/pyzor /usr/bin/pyzord

razor 설치
perl -MCPAN -e shell
install LWP MD5
install Net::Ping Net::DNS Time::HiRes Digest::SHA1 Getopt::Long File::Copy Digest::Nilsimsa URI::Escape
perl Makefile.PL
make
make test
make install

 

Spamassassin 설치


perl
lynx
ncurses
make
gnupg
설치 해야함.


perl -MCPAN -e shell
install HTML::Parser DB_File Net::DNS BerkeleyDB Net::SMTP Mail::SPF::Query IP::Country::Fast


(3.3버전설치 할때는 Mail::DKIM Encode::Detect IO::Socket::SSL IO::Socket::INET6 Net::Ident Mail::SPF Digest::SHA IO::Zlib Archive::Tar NetAddr::IP도 추가)

perl을 이용하여 설치 시에는 cpan) install Mail::SpamAssassin
해준 후
sa-update --no-gpg 로 업데이트 완료 후 /var/lib/spamassassin/밑에 update_* 파일 두개를 /usr/share/spamassassin/폴더로 옮겨주고 /var/lib/spamassassin은 삭제 하거나 이름을 바꿔준다.)
해준다.
(혹시 설치가 안되서 소스로 설치 할때에는 http://search.cpan.org/ 에서 다운로드)


소스 설치시에는
perl Makefile.PL
make install


소스 든 perl이든 설치 후 아래 계속 진행.
groupadd spamd
useradd -g spamd spamd

cp spamd/redhat-rc-script.sh /etc/rc.d/init.d/spamd
chmod 700 /etc/rc.d/init.d/spamd
cd ..
chkconfig --add spamd

설정
vi /etc/sysconfig/spamassassin
#SPAMDOPTIONS="-x -u spamd -H /home/spamd -d"
SPAMDOPTIONS="-L -x -u qmailq -H /var/qmail -d"


mv /root/.spamassassin /var/qmail/.spamassassin
chown -R qmailq.qmail /var/qmail/.spamassassin

/etc/rc.d/init.d/spamd start

시험
spamassassin -t < sample-nonspam.txt
spamassassin -t < sample-spam.txt


vi /etc/mail/spamassassin/local.cf
add_header all Flag _YESNOCAPS_
add_header all Status _YESNO_, hits=_HITS_ required=_REQD_ tests=_TESTS_ autolearn=_AUTOLEARN_ version=_VERSION_
add_header all Level _STARS(+)_
add_header all Checker-Version SpamAssassin _VERSION_ (_SUBVERSION_) on _HOSTNAME_
required_hits 7
#rewrite_subject 0
#subject_tag [SPAM]
report_header 1
report_safe 0
#use_terse_report 1
use_pyzor 1
pyzor_path /usr/bin/pyzor
use_razor2 1
use_dcc 1
dcc_path /usr/local/bin/dccproc
dcc_home /var/dcc
skip_rbl_checks 0
rbl_timeout 3
trusted_networks 127.0.0
use_bayes 1
bayes_auto_learn 1
bayes_auto_learn_threshold_spam     3.0
bayes_auto_learn_threshold_nonspam -3.0
bayes_path /var/qmail/.spamassassin/bayes
ok_languages all
ok_locales all
blacklist_from @test.com

 

 

 

tnef-1.2.3.1 설치
./configure
make
make install

maildrop설치
bunzip2 maildrop-1.7.0.tar.bz2
tar xf maildrop-1.7.0.tar
chown -R root.root maildrop-1.7.0.tar
cd maildrop-1.7.0
./configure
make
make install-strip
make install-man

 

 


qmail-scanner 설치
whereis suidperl
없으면 perl-suidperl 설치

groupadd qscand
useradd -c "Qmail-Scanner Account" -g qscand -s /bin/false qscand
./configure \
  --admin virusadmin --domain webmail.unisellers.co.kr \
  --local-domains webmail.unisellers.co.kr \ 
  --scanners clamdscan,verbose_spamassassin \
  --fix-mime 1 \
  --debug no \
  --install

ClamAV 설치
clamav-0.80-2.i386.rpm
clamav-devel-0.80-2.i386.rpm
clamav-milter-0.80-2.i386.rpm 이것은 필요 없을듯.
vi /etc/clamd.conf
User qscand 로 수정 및 기타 설정 수정
vi /etc/freshclam.conf
User qscand 로 수정 및 기타 설정 수정

touch /var/log/clamav/clam-update.log
chown qscand.qmail /var/log/clamav/ -R
chmod 600 /var/log/clamav/clam-update.log


패턴업데이터 /usr/bin/freshclam -v

vi /etc/crontab
0 * * * *  /usr/local/bin/freshclam --quiet -l /var/log/clamd/clam-update.log

 

qmail-scanner 시험방법
# contrib/test_installation.sh -doit

qmail temporay 에러 나면.
/etc/profile 맨 마지막 줄에 아래 내용추가
export QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"

추가후 source /etc/profile 으로 적용


퍼미션
-rwsr-xr-x 1 qscand qscand 83455 Feb 1 16:45 /var/qmail/bin/qmail-scanner-queue.pl
# ls -l /var/qmail/bin/qmail-scanner-queue.pl
-rwsr-xr-x 1 qscand qscand 83455 Feb 1 16:45 /var/qmail/bin/qmail-scanner-queue.pl
-rwsr-xr-x    1 qscand   qscand      97464 12월  3 02:37 /var/qmail/bin/qmail-scanner-queue.pl
drwxrwx---    2 qscand   qmail        4096 12월  3 03:39 /var/spool/qmailscan/tmp

qmail-scanner 실행하는 qscand 계정에 /bin/bash 로 변경

qmail temp 초기화
/var/qmail/bin/qmail-scanner-queue.pl -z
qmail 룰셋 파일 DB화
setuidgid qmaild /var/qmail/bin/qmail-scanner-queue.pl -g

/etc/sysconfig/spamassassin 파일에서 실행자 변경
스팸어세신 적용
/etc/tcp.smtp 수정
127.:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl",QS_SPAMASSASSIN="on"

spamassassin의 기동 스크립트에서 spamd의 옵션: -d -L -x -u qmailq
-F0 <-- 최신 버전에선 불필요 옵션
-d : 데몬모드
-L : Local 유저에 적용
-x : 사용자별 환경설정 무시
-u qmailq : spamd을 qmailq 유저 권한으로 실행

qmail-scanner에 등록된 spamassassin 동작 모드가 2가지 있습니다.
-c 옵션이 있으면 Subject를 수정하지 않더군요. 대신 동작은 빠르답니다.


파일용량제한 - 로컬이나 웹메일로 보내는것은 제어 안됨
echo "20000000" > /var/qmail/control/databytes

 

 


시험
procmail
hcode test
echo "=?ks_c_5601-1987?B?saSw7Q==?=" | hcode -dk
echo "=?EUC-KR?B?saSw7Q==?=" | hcode -dk


procmail log 를 mysql 연동해서 남기기
perl -MCPAN -e shell
cpan> install DBI
cpan> install DBD::mysql

 

관련문서
spamassassin  설정
http://xoomer.virgilio.it/j.toribio/qmail-scanner/
bayes를 사용하려면
# spamassassin -D --lint

rblsmtpd
http://ladro.com/docs/dns/rblsmtpd.html

 

 


기타
MailDROP
http://www.courier-mta.org/maildrop
# rpmbuild -ta --target=i686 maildrop-1.7.0.20041129.tar.bz2


qmail-smtpd     SMTP 를 통해 다른 호스트로 부터 메시지 받음:
                  
     |             MAIL FROM:<bill@irs.gov>
     |             RCPT TO:<joe@heaven.af.mil>
     |         
     |          $RELAYCLIENT 가 설정되었는가? 아니요.
     |          heaven.af.mil 가 rcpthosts에 있는가? 그렇다.
     |          RCPT를 허용한다.
     V            
                  
qmail-queue     메세지를 안전하게 디스크에 저장.
                qmail-send 부름.
     |            
     V            
                  
qmail-send      envelope 수신자 joe@heaven.af.mil를 찾음.
     |          heaven.af.mil 가 locals 에 있는가? 그렇다.
     |          joe@heaven.af.mil에게 로컬 배달.
     V         
                  
qmail-lspawn ./Mailbox
                  
     |          mailbox 이름을 찾음, joe.
     |          qmail-users 목록에 joe 가 있는가? 아니요.
     |          joe 계정이 있는가? 그렇다.
     |          joe의 uid가 0이 아닌가? 아니다.
     |          ~joe가 qmailp 권한으로 보이는가? 그렇다.
     |          ~joe의 소유자가 joe인가? 그렇다.
     |          메세지 제어권을 joe에게 넘긴다.
     |          qmail-local 실행
     V         
                  
qmail-local joe ~joe joe '' '' heaven.af.mil bill@irs.gov ./Mailbox
                  
                ~joe/.qmail 가 존재하는가? 아니요.
                ./Mailbox 에 mbox 형식으로 메세지를 저장한다.

   

Articles

1 2 3 4 5 6 7 8 9 10