페도라 코어에 qmail 설치기

incarnate의 이미지

안녕하세요?

윤영원입니다.

요 몇일간 페도라에 qmail을 설치하느랴 삽질을 많이 했었습니다.

이번에 성공한 기념으로 설치기를 한번 올려 볼까 합니다.

qmail.kldp.org에도 설치기가 많이 있지만 페도라 기반에 설치기는 없기에 한번 올려봅니다.

패도라 버전은 코어3 입니다.

먼저 패치 파일들과 필요한 소스를 다운 받습니다.

필요한 소스(제가 설치한 소스)는
daemontools-0.76.tar.gz / qmail-1.03.tar.gz / ucspi-tcp-0.88.tar.gz / ucspi-tcp-0.88.tar.gz 입니다.

다음으로 필요한 패치는 daemontools-0.76.errno.patch / ucspi-tcp-0.88.errno.patch / qmail-ej-cocktail-14.tar.gz 입니다.

해당 소스와 패치 파일들은 검색하시면 나오기에 굳이 링크를 걸지 않겠습니다.

1. ucspi-tcp 설치하기
tar -xvzf ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88
patch -p1 < /패치파일경로/ucspi-tcp-0.88.errno.patch
make
make setup check

2. daemontools 설치하기
mkdir -p /package
chmod 1755 /package
cp daemontools-0.76.tar.gz /package
cd /package
tar -xvzf daemontools-0.76.tar.gz
cd admin/daemontools-0.76
patch -p1 < /패치파일경로/daemontools-0.76.errno.patch
package/install
※ daemontools 설치후 설치 원본 소스는 지우면 안됩니다.
이유는 잘 모르겠으나 해당 원본 소스를 지우니 문제가 발생했습니다.

3. qmail 설치하기
mkdir /var/qmail
tar -xvzf qmail-1.03.tar.gz
vi qmailuser.txt

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

chmod 755 qmailuser.txt
./qmailuser.txt
tar -xvzf qmail-ej-cocktail-14.tar.gz
cp qmail-ej-cocktail-14/cocktail.patch ./qmail-1.03
cd qmail-1.03
patch -p1 < cocktail.patch

vi conf-spawn (1000을 509로)
※ 위 파일에 내용을 수정하지 않고 컴파일시 에러가 났습니다.

make
make setup check
./config-fast 도메인이름

스크립트 만들기

vi /var/qmail/rc

---------------------------------------------
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start ./Maildir/
---------------------------------------------

chmod 755 /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
Q_UID=`id -u vpopmail`
Q_GID=`id -g vpopmail`
exec /usr/local/bin/softlimit -m 7000000 \
/usr/local/bin/tcpserver -vRHl 0 \
-x /home/vpopmail/etc/tcp.smtp.cdb \
-u $Q_UID -g $Q_GID 0 25 /var/qmail/bin/qmail-smtpd 2>&1
----------------------------------------------------------
※ 여기서 주의점은
exec /usr/local/bin/softlimit -m 7000000 \
위 숫자를 대부분의 설치 문서에서는 보통 4000000 / 2000000
으로 합니다. 그렇게 하면 25번 포트로 smtp가 열리지 않는 문제가 발생했습니다.

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=""
서버아이피:allow,RELAYCLIENT=""
------------------------------------

tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

echo yyw > /var/qmail/alias/.qmail-root
echo yyw > /var/qmail/alias/.qmail-postmaster
echo yyw > /var/qmail/alias/.qmail-mailer-daemon
cd /var/qmail/alias/
chmod 644 .qmail-root .qmail-postmaster .qmail-mailer-daemon

※ 여기서 yyw는 루트로 오는 메일을 받아볼 해당 계정을 정해 주는 겁니다. 전 그냥 yyw로 해놨습니다.

vi /etc/rc.d/init.d/qmail

----------------------------------------------------------------------------------
#!/bin/sh

# For Red Hat chkconfig
# chkconfig: - 80 30
# description: the qmail MTA

PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin
export PATH

case "$1" in
start)
echo "Starting qmail"
if [ -e /service/qmail-send ] ; then
if svok /service/qmail-send ; then
svc -u /service/qmail-send
else
echo qmail-send supervise not running
fi
else
ln -s /var/qmail/supervise/qmail-send /service/
fi

if [ -e /service/qmail-smtpd ] ; then
if svok /service/qmail-smtpd ; then
svc -u /service/qmail-smtpd
else
echo qmail-smtpd supervise not running
fi
else
ln -s /var/qmail/supervise/qmail-smtpd /service/
fi

if [ -d /var/lock/subsys ]; then
touch /var/lock/subsys/qmail
fi
;;
stop)
echo "Stopping qmail..."
echo " qmail-smtpd"
svc -dx /service/qmail-smtpd /service/qmail-smtpd/log
rm -f /service/qmail-smtpd
echo " qmail-send"
svc -dx /service/qmail-send /service/qmail-send/log
rm -f /service/qmail-send
if [ -f /var/lock/subsys/qmail ]; then
rm /var/lock/subsys/qmail
fi
;;
stat)
svstat /service/qmail-send
svstat /service/qmail-send/log
svstat /service/qmail-smtpd
svstat /service/qmail-smtpd/log
qmail-qstat
;;
doqueue|alrm|flush)
echo "Flushing timeout table and sending ALRM signal to qmail-send."
/var/qmail/bin/qmail-tcpok
svc -a /service/qmail-send
;;
queue)
qmail-qstat
qmail-qread
;;
reload|hup)
echo "Sending HUP signal to qmail-send."
svc -h /service/qmail-send
;;
pause)
echo "Pausing qmail-send"
svc -p /service/qmail-send
echo "Pausing qmail-smtpd"
svc -p /service/qmail-smtpd
;;
cont)
echo "Continuing qmail-send"
svc -c /service/qmail-send
echo "Continuing qmail-smtpd"
svc -c /service/qmail-smtpd
;;
restart)
echo "Restarting qmail:"
echo "* Stopping qmail-smtpd."
svc -d /service/qmail-smtpd
echo "* Sending qmail-send SIGTERM and restarting."
svc -t /service/qmail-send
echo "* Restarting qmail-smtpd."
svc -u /service/qmail-smtpd
;;
cdb)
tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
chmod 644 /etc/tcp.smtp.cdb
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 -- schedules queued messages for immediate delivery
reload -- sends qmail-send HUP, rereading locals and virtualdomains
queue -- shows status of queue
alrm -- same as doqueue
flush -- same as doqueue
hup -- same as reload
HELP
;;
*)
echo "Usage: $0 {start|stop|restart|doqueue|flush|reload|stat|pause|cont|cdb|queue|help}"
exit 1
;;
esac

exit 0
------------------------------------------------------------------------------------------------------

chmod 755 /etc/rc.d/init.d/qmail

groupadd vchkpw
useradd -g vchkpw vpopmail
tar xzf vpopmail-5.2.2.tar.gz
cd vpopmail-5.2.2
./configure --enable-default-domain=서버도메인 --enable-roaming-users=y --enable-tcprules-prog=/usr/local/bin/tcprules --enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp --enable-logging=y --enable-relay-clear-minutes=15
make
make install-strip
echo "127.0.0.:allow,RELAYCLIENT=\"\"" > ~vpopmail/etc/tcp.smtp
~vpopmail/bin/clearopensmtp

※ 전 mysql을 사용하지 않는것으로 설정했습니다.

mkdir /var/qmail/supervise/vpop

vi /var/qmail/supervise/vpop/run

--------------------------------------------------------------------
#!/bin/sh
PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin
export PATH
exec tcpserver -H -R -v -c100 0 110 qmail-popup 서버주소 \
/home/vpopmail/bin/vchkpw qmail-pop3d Maildir 2>&1
--------------------------------------------------------------------

chmod 755 /var/qmail/supervise/vpop/run
ln -s /var/qmail/supervise/vpop /service

vi /etc/xinetd.d/ipop3
-----------------------------------------------------------------------------------------
service pop3
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
server = /var/qmail/bin/qmail-popup
server_args = babo.org /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir
log_type = FILE /var/log/xinetd.log
log_on_success = HOST
log_on_failure = HOST RECORD
}
------------------------------------------------------------------------------------------

ln -s /var/qmail/supervise/qmail-send /service
ln -s /var/qmail/supervise/qmail-smtpd /service

이렇게 하면 qmail 데몬이 올라왔을 겁니다.

다음은 도메인을 추가합니다.
/home/vpopmail/bin/vadddomain xxx.xxx.co.kr 입력후 암호를 적어 줍니다.
다음은 사용자를 추가합니다.
/home/vpopmail/bin/vadduser 사용자id@xxx.xxx.co.kr
※ 주의 점은 사용자를 추가할때 사용자 id와 도메인을 다 적어줘야 합니다.

telnet localhost 25

telnet localhost 110
user 사용자id
pass 사용자암호
했을때 각각 ok가 나와야 합니다.

File attachments: 
첨부파일 크기
Plain text icon qmail설치하기.txt8.14 KB
Forums: 
incarnate의 이미지

방금 웹으로 올린 스크립트를 가지고 test해봤는데 문제가 있네용...

이상하게도 같은 내용이지만 제가 메모장으로 만든 파일을 스크립트로 만들면 이상이 없지만 웹으로 되어 있는 스크립트를 옮기면 문제가 있습니다.

해서 메모장 버전으로 만들어 놓은 파일을 올립니다.

댓글 첨부 파일: 
첨부파일 크기
Plain text icon 0바이트

먹고 죽자~

망치의 이미지

서버 갈아엎으면서 CentOS 4 설치후 다시 Qmail 로 셋팅할 계획인데.. 설치해본지 워낙에 오래돼나서 걱정입니다. ㅡ.,ㅡ;

혹시 CentOS 4 에 설치해보신분 계신가요~~~~~~~~~~~~~

---------------------------------------
http://www.waitfor.com/
http://www.textmud.com/

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.