Cara Install
qmail di FreeBSD 11.1
Tutorial Linux Indonesia
| qmail salah satu Internet
Mail Transfer Agent ( MTA )
yang open source, handal, aman dan
fleksibel.
Pada panduan ini,
kami akan menjelaskan bagaimana cara menginstall
qmail di system
operasi FreeBSD 11.1.
Apa itu qmail ?
qmail merupakan Internet mail
transfer agent ( MTA ) untuk
system operasi yang
mirip dengan UNIX. Dapat mengantikan
sendmail yang sudah lawas. Qmail
menggunakan Simple transfer Protocol ( SMTP ) untuk bertukar
pesan dengan MTA di sistem
lainya.
Sebelum melakukan
install qmail, kita
membutuhkan gcc untuk
melakukan compile qmail. Karena qmail membutuhkan gcc untuk
melakukan compile.
Sekarang kita install
terlebih dahulu gcc menggunakan
perintah di bawah ini.
[root@smtp100:~ # cd /usr/ports/lang/gcc49/
[root@smtp100:/usr/ports/lang/gcc49 # make install clean;
Setelah berhasil
melakukan instalasi gcc,
sekarang kita buat symlink terlebih dahulu
untuk gcc, karena freebsd
secara default menggunakan cc
bukan gcc.
root@smtp100:/usr/ports/lang/gcc49 #cd /usr/local/bin
root@smtp100:/usr/local/bin # ln -s gcc49 gcc
root@smtp100:/usr/local/bin # ln -s g++49 g++
pertama yang
kita lakukan adalah
donwload source code
untuk qmail dan tambahan
lainya. Kita memerlukan qmail tentunya,
tentu saja tambahan seperti
ucspi dan daemon toolsnya.
root@smtp100:/usr/local/share # wget http://www.qmail.org/netqmail-1.06.tar.gz
root@smtp100:/usr/local/share # wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
root@smtp100:/usr/local/share # wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
Buat direktory
untuk qmail dan daemontools. Direktory /usr/loca/src adalah
pilihan yang terbaik
untuk qmail dan ucspi, sedangkan daemontools
di tempatkan di
directory /package.
root@smtp100:/usr/local/share # mkdir -p /usr/loca/src
root@smtp100:/usr/local/share # mkdir -p /package
root@smtp100:/usr/local/share # chmod 1755 /package
Sekarang, kita
pindahkan netqmail, ucspi dan
daemontools yang sudah berhasil
di donwload, ke folder yang sudah
ditentukan.
root@smtp100:~ # umask 022
root@smtp100:~ # cd /usr/local/share
root@smtp100:/usr/local/share # mv netqmail-1.06.tar.gz ucspi-tcp-0.88.tar.gz /usr/local/src
root@smtp100:/usr/local/share #mv daemontools-0.76.tar.gz /package
Lakukan extract
qmail yang sudah berhasil di donwload, menggunakan perintah
di bawah ini.
root@smtp100:/usr/local/share # cd /usr/local/src
root@smtp100:/usr/local/src # gunzip netqmail-1.06.tar.gz
root@smtp100:/usr/local/src # tar xpf netqmail-1.06.tar
Sekarang, kita
lakukan extract ucspi
yang sudah berhasil
di donwload, menggunakan perintah
di bawah ini.
root@smtp100:/usr/local/src # gunzip ucspi-tcp-0.88.tar.gz
root@smtp100:/usr/local/src # tar xpf ucspi-tcp-0.88.tar
Sekarang, kita pergi
ke folder /package untuk
melakukan extract folder daemontools.
root@smtp100:/usr/local/src # cd /package
root@smtp100:/package # gunzip daemontools-0.76.tar.gz
root@smtp100:/package # tar xpf daemontools-0.76.tar
Buat folder
untuk qmail.
root@smtp100:/package # mkdir /var/qmail
root@smtp100:/package # mkdir /etc/qmail
Buat symlink untuk
qmail.
root@smtp100:/package # ln -s /etc/qmail /var/qmail/control
Sekarang, kita
buat user dan
group untuk qmail.
root@smtp100:/package # cd /usr/local/src/netqmail-1.06
root@smtp100:/usr/local/src/netqmail-1.06 # cp INSTALL.ids IDS
Buka file
IDS untuk membuat user
dan group, menggunakan script
yang sudah disediakan.
root@smtp100:/usr/local/src/netqmail-1.06 # nano IDS
Semua script
yang ada di file
IDS di hilangkan, kecuali
srcipt ini untuk
FreeBSD.
pw groupadd nofiles
pw useradd qmaild -g nofiles -d /var/qmail -s /nonexistent
pw useradd alias -g nofiles -d /var/qmail/alias -s /nonexistent
pw useradd qmaill -g nofiles -d /var/qmail -s /nonexistent
pw useradd qmailp -g nofiles -d /var/qmail -s /nonexistent
pw groupadd qmail
pw useradd qmailq -g qmail -d /var/qmail -s /nonexistent
pw useradd qmailr -g qmail -d /var/qmail -s /nonexistent
pw useradd qmails -g qmail -d /var/qmail -s /nonexistent
Lakukan permission
akses untuk script
IDS dan jalankan script IDS
untuk buat user dan group qmail.
root@smtp100:/usr/local/src/netqmail-1.06 # chmod 700 IDS
root@smtp100:/usr/local/src/netqmail-1.06 # ./IDS
Sekarang, kita
dapat membangun qmail, pergi
ke folder /usr/local/src/netqmail-1.06, mari
kita mulai.
root@smtp100:/usr/local/src/netqmail-1.06 # cd /usr/local/src/netqmail-1.06
Secara default,
qmail menggunakan cc untuk melakukan compile. Sedangkan di FreeBSD
tidak menggunakan cc tapi menggunakan
gcc, oleh karena itu kita
edit file conf-cc dan
conf-ld untuk menganti compile
dari cc ke gcc.
Sekarang edit
file conf-cc dan
conf-ld mengunakan editor favorit
kalian.
root@smtp100:/usr/local/src/netqmail-1.06 # nano conf-cc
gcc -O2
root@smtp100:/usr/local/src/netqmail-1.06 # nano conf-ld
gcc -s
Sekarang, kita
bangun qmail. Mari
kita mulai.
root@smtp100:/usr/local/src/netqmail-1.06 # cd /usr/local/src/netqmail-1.06
root@smtp100:/usr/local/src/netqmail-1.06 # wget --no-check certificate https://schmonz.com/qmail/qbiffutmpx/netqmail-1.06-qbiffutmpx-20170820.patch
root@smtp100:/usr/local/src/ucspi-tcp-0.88 # patch < /usr/local/src/netqmail-1.06/netqmail-1.06-qbiffutmpx-20170820.patch
root@smtp100:/usr/local/src/netqmail-1.06 # make setup check
root@smtp100:/usr/local/src/netqmail-1.06 # ./config
Sekarang, kita
install tools yang
mendukung qmail seperti
ucspi. Sekarang kita mulai
install ucspi, menggunakan
perintah di bawah
ini.
root@smtp100:~ # cd /usr/local/src/ucspi-tcp-0.88
root@smtp100:/usr/local/src/ucspi-tcp-0.88 # patch < /usr/local/src/netqmail-1.06/other-patches/ucspi-tcp-0.88.errno.patch
root@smtp100:/usr/local/src/ucspi-tcp-0.88 # make
root@smtp100:/usr/local/src/ucspi-tcp-0.88 # make setup check
Setelah selesai
install ucspi, sekarang kita
install daemontools untuk mendukung qmail
berjalan dengan baik.
root@smtp100:/usr/local/src/ucspi-tcp-0.88 # cd /package
root@smtp100:/package # cd admin/daemontools-0.76/
root@smtp100:/package/admin/daemontools-0.76 # cd src/
root@smtp100:/package/admin/daemontools-0.76/src # patch < /usr/local/src/netqmail-1.06/other-patches/daemontools-0.76.errno.patch
root@smtp100:/package/admin/daemontools-0.76 # package/install
root@smtp100:/package/admin/daemontools-0.76 # reboot
Sangat disarankan
untuk melakukan reboot server, setelah melakukan instalasi
daemontools, untuk memulai
svscan, daemon kontrol layanan
master.
root@smtp100:~ # ps waux | grep svscan
root 509 0.0 0.0 13180 2476 v0- I 21:08 0:00.04 /bin/sh /command/svscanboot
root 537 0.0 0.0 8368 1944 v0- S 21:08 0:01.01 svscan /service
root 92540 0.0 0.0 14828 2388 2 S+ 11:56 0:00.00 grep svscan
root@smtp100:~ #
Sekarang, buat
file untuk menjalankan
qmail secara otomatis.
root@smtp100:~ # nano /var/qmail/rc
Kami
menggunakan script ini.
#!/bin/sh
# Using stdout for logging
# Using control/defaultdelivery from qmail-local to deliver messages by default
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start "`cat /var/qmail/control/defaultdelivery`"
Lakukan permission akses untuk
script yang di buat
dan buat folder
log qmail.
root@smtp100:~ # chmod 755 /var/qmail/rc
root@smtp100:~ # mkdir /var/log/qmail
Pada titik
ini, kita perlu memutuskan mode
pengiriman default untuk
pesan yang tidak
terkirim oleh file qmail.
Disni saya menggunakan mode
pengiriman ./Mailbox.
root@smtp100:~ # echo ./Mailbox >/var/qmail/control/defaultdelivery
Sekarang kita
buat script restart
qmail.
root@smtp100:~ # nano /var/qmail/bin/qmailctl
Kami menggunakan
script ini.
#!/bin/sh
# description: the qmail MTA
PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin
export PATH
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
case "$1" in
start)
echo "Starting qmail"
if svok /service/qmail-send ; then
svc -u /service/qmail-send /service/qmail-send/log
else
echo "qmail-send supervise not running"
fi
if svok /service/qmail-smtpd ; then
svc -u /service/qmail-smtpd /service/qmail-smtpd/log
else
echo "qmail-smtpd supervise not running"
fi
if [ -d /var/lock/subsys ]; then
touch /var/lock/subsys/qmail
fi
;;
stop)
echo "Stopping qmail..."
echo " qmail-smtpd"
svc -d /service/qmail-smtpd /service/qmail-smtpd/log
echo " qmail-send"
svc -d /service/qmail-send /service/qmail-send/log
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 /service/qmail-smtpd/log
echo "* Sending qmail-send SIGTERM and restarting."
svc -t /service/qmail-send /service/qmail-send/log
echo "* Restarting qmail-smtpd."
svc -u /service/qmail-smtpd /service/qmail-smtpd/log
;;
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 <
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