25번 포트 외에 다른 포트로도 smtp 발송을 하기 위한 설정(본문에서는 26번 추가).
(outlook을 사용한다면 사용자 계정 설정에서 smtp 26번 포트 설정을 해야 한다)
포트 포워딩으로 처리하는 방법
qmail 설정 방법을 소개하기에 앞서, iptables를 사용한 포트 포워딩으로도 간단히 처리할 수 있다.
$ iptables -t nat -A PREROUTING -p tcp -d 서버ip --dport 26 -j REDIRECT --to-port 25
$ iptables-save
위 두줄만으로 간단하게 26번 포트와 25번 포트를 smtp로 함께 사용할 수 있다.
qmail 설정으로 처리하는 방법
이 방법은 qmail에 qmail-smtpd-auth-0.59 이상의 패치가 적용되어 있지 않으면 오류가 발생하는것 같다.
작업 순서
- run 스크립트 복사/수정
- /etc/services 파일 수정
- qmail 구동 스크립트 수정
run 스크립트 복사/수정
$ cp -Rfp qmail-smtpd qmail-smtpd-sub
$ cd qmail-smtpd-sub <- 서브 포트 디렉토리를 하나 더 만든다
$ vi run
#!/bin/sh
Q_UID=`id -u vpopmail`
Q_GID=`id -g vpopmail`
exec /usr/local/bin/softlimit -m 12000000 \
/usr/local/bin/tcpserver -vRHl 0 \
-x /home/vpopmail/etc/tcp.smtp.cdb \
-u $Q_UID -g $Q_GID 0 26 /var/qmail/bin/qmail-smtpd-sub 2>&1 # 25를 26으로 변경, 생성한 디렉토리명으로 변경
$ vi log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill \
/usr/local/bin/multilog t /var/log/qmail/smtpd-sub # 생성한 디렉토리명으로 변경
/etc/service 파일 수정
$ vi /etc/services
smtp 25/tcp mail
smtp 25/udp mail
smtp 26/tcp mail # 26번 관련 라인 두줄 추가
smtp 26/udp mail
qmail 구동 스크립트 수정
$ vi /etc/services
#!/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 "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
###587###
if [ -e /service/qmail-smtpd-sub ] ; then
if svok /service/qmail-smtpd-sub ; then
svc -u /service/qmail-smtpd-sub
else
echo qmail-submission supervise not running
fi
else
ln -s /var/qmail/supervise/qmail-smtpd-sub /service/
fi
#########
if [ -e /service/vpop ] ; then
if svok /service/vpop ; then
svc -u /service/vpop
else
echo pop3 supervise not running
fi
else
ln -s /var/qmail/supervise/vpop /service/
fi
if [ -d /var/lock/subsys ]; then
touch /var/lock/subsys/qmail
fi
### CentOS 계열등에서 readproctitle 에러 발생시 아래 주석 제거(기본제거) ###
;;
stop)
echo "Stopping qmail..."
echo " qmail-smtpd"
svc -dx /service/qmail-smtpd /service/qmail-smtpd/log
svc -dx /service/qmail-smtpd-sub /service/qmail-smtpd-sub/log
rm -f /service/qmail-smtpd
rm -f /service/qmail-smtpd-sub
echo " qmail-send"
svc -dx /service/qmail-send /service/qmail-send/log
rm -f /service/qmail-send
echo " qmail pop3"
svc -dx /service/vpop /service/vpop/log
rm -f /service/vpop
if [ -f /var/lock/subsys/qmail ]; then
rm /var/lock/subsys/qmail
fi
killall tcpserver 2>/dev/null
;;
stat)
svstat /service/qmail-send
svstat /service/qmail-send/log
svstat /service/qmail-smtpd
svstat /service/qmail-smtpd/log
svstat /service/vpop
svstat /service/vpop/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 /home/vpopmail/etc/tcp.smtp.cdb /home/vpopmail/etc/tcp.smtp.tmp < /home/vpopmail/etc/tcp.smtp
chmod 644 /home/vpopmail/etc/tcp.smtp.cdb
echo "Reloaded /home/vpopmail/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
iptables 등 26번 포트 차단을 해제해 주고, 재부팅하거나 qmail 재시작하면 끝.
'서버&시스템 > QMail' 카테고리의 다른 글
qmailadmin 설치 (0) | 2012.01.12 |
---|---|
qmail 설치 후 점검 사항 (0) | 2012.01.11 |
vpopmail 설치 (0) | 2012.01.11 |
qmail 설치 (0) | 2012.01.06 |