Showing posts with label qmail. Show all posts
Showing posts with label qmail. Show all posts

Cara Install qmail di FreeBSD 11.1


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.  

Cara  Install  qmail  di FreeBSD 11.1


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

Setelah  buat  script restart  qmail,  lakukan  permission  akses  dan   symlink script  qmail  tersebut.  Menggunakan  perintah  di bawah  ini.

root@smtp100:~ #  chmod 755 /var/qmail/bin/qmailctl
root@smtp100:~ #  ln -s /var/qmail/bin/qmailctl /usr/bin

Sekarang  buat  direktory  pengawasan  layanan  qmail.

root@smtp100:~ # mkdir -p /var/qmail/supervise/qmail-send/log
root@smtp100:~ # mkdir -p /var/qmail/supervise/qmail-smtpd/log

Buat  File  run  di    /var/qmail/supervise/qmail-send/run.

root@smtp100:~ # nano   /var/qmail/supervise/qmail-send/run
 
#!/bin/sh
exec /var/qmail/rc

Buat  file  run  di   /var/qmail/supervise/qmail-send/log/run

root@smtp100:~ # nano  /var/qmail/supervise/qmail-send/log/run
 
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail


root@smtp100:~ # nano  /var/qmail/supervise/qmail-smtpd/run
 
#!/bin/sh
 
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`
LOCAL=`head -1 /var/qmail/control/me`
 
if [ -z "$QMAILDUID" -o -z "$NOFILESGID" -o -z "$MAXSMTPD" -o -z "$LOCAL" ]; then
    echo QMAILDUID, NOFILESGID, MAXSMTPD, or LOCAL is unset in
    echo /var/qmail/supervise/qmail-smtpd/run
    exit 1
fi
 
if [ ! -f /var/qmail/control/rcpthosts ]; then
    echo "No /var/qmail/control/rcpthosts!"
    echo "Refusing to start SMTP listener because it'll create an open relay"
    exit 1
fi
 
exec /usr/local/bin/softlimit -m 800000000 \
    /usr/local/bin/tcpserver -v -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \
        -u "$QMAILDUID" -g "$NOFILESGID" 0 21012 /var/qmail/bin/qmail-smtpd 2>&1

Buat   file  conccurencyincoming.  Digunakan untuk mengatur   masuk  email  di  smtp  server.

root@smtp100:~ # echo 10 > /var/qmail/control/concurrencyincoming

Lakukan  permission  akses   untuk  concurrencyincoming.
root@smtp100:~ # chmod 644 /var/qmail/control/concurrencyincoming

Buat  file  conccurencyremote.  Di gunakan  untuk  mengatur  keluar  email  di  smtp server.

root@smtp100:~ # echo 2 > /var/qmail/control/concurrencyremote

Lakukan  permission  akses  untuk   concurrencyremote

root@smtp100:~ # chmod 644 /var/qmail/control/concurrencyremote

Sekarang,  kita  buat   file  smtproutes. Smtproutes  berfungsi  untuk  melemparkan  email  ke  e-mail  server  lainya.

root@smtp100:~ # cd /var/qmail/control
root@smtp100:/var/qmail/control # nano   smtproutes
 
gmail.com:69.69.69.69

Buat   file  /var/qmail/supervise/qmail-smtpd/log/run

root@smtp100:~ # nano  /var/qmail/supervise/qmail-smtpd/log/run
 
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtpd

Lakukan  permission  akses  terhadap   file  yang  sudah  dibuat  sebelumnya.
root@smtp100:~ #    chmod 755 /var/qmail/supervise/qmail-send/run
root@smtp100:~ #    chmod 755 /var/qmail/supervise/qmail-send/log/run
root@smtp100:~ #    chmod 755 /var/qmail/supervise/qmail-smtpd/run
root@smtp100:~ #    chmod 755 /var/qmail/supervise/qmail-smtpd/log/run

Buat   folder   qmail  log.
root@smtp100:~ # mkdir -p /var/log/qmail/smtpd

Berikan  akses  user   qmaill  untuk  mengakses  log  qmail.

root@smtp100:~ # chown qmaill /var/log/qmail /var/log/qmail/smtpd

Lakukan  symlink untuk  qmail  services.
root@smtp100:~ # ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service

Hentikan   layanan qmail.

root@smtp100:~ # qmailctl stop

Kemudian  buat   file   tcp.smtp.  Jika  kalian  menggunakan  smtp-relay  server,  perlu  menambahkan  ip  public  client  untuk melakukan email  relay  ke  server  email  kita.

root@smtp100:~ # nano   /etc/tcp.smtp
127.:allow,RELAYCLIENT=""
69.69.69.69:allow,RELAYCLIENT=""
:deny

Secara  default,  System  Operasi  FreeBSD  mengaktifkan   servis  sendmail  untuk melakukan pengiriman email dan nerima e-mail.  Oleh  karena  itu,  kita  non aktifkan layanan  sendmail.

root@smtp100:~ # /etc/rc.d/sendmail stop

Untuk  melihat  services  qmail sudah  berjalan  atau  belum,  bisa  mengunakan perintah  di  bawah  ini. 

root@smtp100:~ #  netstat -a | grep smtp
tcp4       0      0 smtp100.10050          26.169.iconpln.n.41350 TIME_WAIT
tcp4       0      0 smtp100.10050          26.169.iconpln.n.41112 TIME_WAIT
tcp4       0      0 smtp100.10050          26.169.iconpln.n.40964 TIME_WAIT
tcp4       0      0 smtp100.10050          26.169.iconpln.n.40768 TIME_WAIT
tcp4       0      0 smtp100.10050          26.169.iconpln.n.40746 TIME_WAIT
tcp4       0      0 smtp100.10050          26.169.iconpln.n.40478 TIME_WAIT
tcp4       0      0 smtp100.10050          26.169.iconpln.n.40370 TIME_WAIT
tcp4       0      0 localhost.12186        localhost.smtp         TIME_WAIT

Sekarang,  kita   hapus   layanan  sendmail dari   server  kita. 

root@smtp100:~ # mv /usr/sbin/sendmail /usr/sbin/sendmail.old
root@smtp100:~ # chmod 0 /usr/lib/sendmail.old /usr/sbin/sendmail.old    
root@smtp100:~ #    ln -s /var/qmail/bin/sendmail /usr/lib
root@smtp100:~ #    ln -s /var/qmail/bin/sendmail /usr/sbin

Untuk membuat alias ini, putuskan kemana kita ingin masing-masing (pengguna lokal atau alamat jarak jauh) dan buat dan isi file .qmail yang sesuai. Sebagai contoh, katakanlah pengguna lokal memiliki sistem dan administrator surat:

root@smtp100:~ #     echo dave > /var/qmail/alias/.qmail-root
root@smtp100:~ #     echo dave > /var/qmail/alias/.qmail-postmaster
root@smtp100:~ #     ln -s .qmail-postmaster /var/qmail/alias/.qmail-mailer-daemon
root@smtp100:~ #     ln -s .qmail-postmaster /var/qmail/alias/.qmail-abuse
root@smtp100:~ #     chmod 644 /var/qmail/alias/.qmail-root /var/qmail/alias/.qmail-postmaster


Sekarang,  kita  aktifkan  layanan  qmail.  Dan  mengecek   status  dari  layanan  qmail.

root@smtp100:~ #  qmailctl start 
root@smtp100:~ # qmailctl cdb
root@smtp100:~ # qmailctl stat
/service/qmail-send: up (pid 69796) 0 seconds
/service/qmail-send/log: up (pid 69797) 0 seconds
/service/qmail-smtpd: up (pid 69784) 0 seconds
/service/qmail-smtpd/log: up (pid 69785) 0 seconds
messages in queue: 0
messages in queue but not yet preprocessed: 0








Kategori

Kategori