LamPUNGLInux

 Komunitas Pengguna Linux Indonesia

 

Web Blog LamPUNGLInux .or.id ini merupakan White Papers bagi semua member Web Site komunitas ini, sebagai media untuk menuangkan semua hasil observasi, kegiatan, pengalaman, cerita dan informasi yang dimiliki tentang Linux & OpenSource Software, dengan tujuan dapat memberikan sebuah manfaat tersendiri bagi semua pengunjung yang membacanya.

" Let's Join with Us, To be share for everyone "

 


Wed, 06 Feb 2008 23:11:08 +0700
Mail server dengan qmail.
Posted by : elf_ On Server


E-mail merupakan suatu layanan informasi dan media komunikasi yang sangat populer di dunia internet. Berbicara mengenai e-mail tidak terlepas dari beberapa protokol dalam TCP/IP, yang bertanggung jawab dalam proses pengiriman, penerimaan, dan pengambilan e-mail, yaitu SMTP, POP3, dan IMAP. SMTP (Simple Mail Transfer Protocol) bertanggung jawab dalam proses pengiriman dan penerimaan e-mail antar antar SMTP server. Protocol POP3 (Post Office Protocol) bertanggung jawab dalam pengambilan e-mail dari server.

Protocol IMAP (Internet Mail Agent Protocol) memiliki fungsi yang hampir sama dengan POP3, hanya IMAP memiliki efisiensi yang lebih tinggi dari POP3, karena IMAP tidak melakukan pengambilan/downloading e-mail melainkan membaca e-mail langsung dari server, sehingga memiliki kecepatan akses yang lebih tinggi dan efisien ketika bekerja pada bandwith yang rendah. qmail qmail adalah MTA (Mail Transfer Agent)yang bekerja pada platform Unix like yang dirilis oleh Dj Brenstein. Untuk saling bertukar e-mail qmail menggunakan SMTP (Simple Mail Transfer Protocol), beberapa kelebihan qmail di banding MTA yang lain adalah, karena qmail bersifat modular dimana untuk melakukan suatu proses dilakukan oleh satu modul yang dijalankan oleh daemon tertentu. Sehingga jika terjadi suatu serangan terhadap satu proses, maka proses yang lain masih dapat difungsikan. untuk mendapatkan kode sumber qmail dapat di download secara gratis di alamat http://www.inter7.com/.

Instalasi qmail

requirement   
  • Mesin Unix like, eq: GNU/Linux.    
  • lib C-Compiler.   
  • Jaringan yang fungsional, Lengkap dengan DNS.

Langkah awal dari proses instalasi adalah menyiapkan paket-paket yang akan digunakan seperti qmail-x.xx.tar.gz, ucspi-tcp-x.xx.tar.gz, daemontools-x.xx.tar.gz, vpopmail-x.xx.tar.gz. paket daemontools dapat didownload dari "http://www.cr.yp.to/", vpopmail dan ucspi-tcp dari "http://www.inter7.com/". Sebaiknya download pula patch dari tiap paket sesuai versi glibc yang anda miliki. Langkah berikutnya adalah menguraikan paket-paket tersebut ke direktori yang telah anda tentukan, misalkan " /usr/local/src/ ".

 

# tar -zxvf qmail-x.xx.tar.gz -C /usr/local/src
# tar -zxvf daemontools-x.xx.tar.gz -C /usr/local/src
# tar -zxvf ucspi-tcp-x.xx.tar.gz -C /usr/local/src
# tar -zxvf vpopmail-x.xx.tar.gz -C /usr/local/src

Jika anda merasa perlu melakukan patching dari paket tersebut, copy-kan file-file patch dari paket tersebut ke direktori " /usr/local/src " .

 

# cp file_patch_name /usr/local/src

Kemudian lakukan patching dengan perintah dengan terlebih dahulu pindah direktori aktif kedirektori direktori hasul dari penguraian paket, misalkan anda akan melakukan patching dari paket ucspi-tcp yang berada dalam direktori " /usr/local/src/ucspi-tcp-x.xx/ " dengan file patch " /usr/local/src/ucspi-tcp.patch " lakukan dengan perintah :

 

# cd /usr/local/src/ucspi-tcp-x.xx/
# patch -p1 > /usr/local/src/ucspi-tcp.patch

Jika patching dari paket-paket tersebut telah dilakukan, langkah berikutnya adalah instalasi daemontools. Jika anda menguraikan paket daemontools kedalam direktori " /usr/local/src ", maka paket tersebut ada dalam direktori " /usr/local/src/admin ". Lakukan instalasi daemontools dengan perintah :

# cd /usr/local/src/admin/daemontools-x.xx/ # ./packege/install

Dalam beberapa saat svscan seharusnya sudah berjalan, anda dapat mengecek papakah svscan sudah berjalan dengan perintah ps

# ps ax |greep svscan

Jika proses svscan sudah berjalan, langkah berikutnya adalah instalasi qmail. dalam melakukan instalasi qmail kita haris terlebih dahulu menyiapkan user yang nantinya akan digunakan oleh qmail untuk menjalankan tiap proses. lakukan dengan perintah :

# groupadd nofiles # groupadd qmail # useradd -g nofiles -d /var/qmail/alias -s /nonexisten alias # useradd -g nofiles -d /var/qmail -s /nonexisten qmaild # useradd -g nofiles -d /var/qmail -s /nonexisten qmaill # useradd -g nofiles -d /var/qmail -s /nonexisten qmailp # useradd -g qmail -d /var/qmail -s /nonexisten qmailq # useradd -g qmail -d /var/qmail -s /nonexisten qmailr # useradd -g qmail -d /var/qmail -s /nonexisten qmails

Buat direktori root utuk qmail, kemudian pindah direktori aktif, ke direktori hasil penguraian paket qmail.

# uamsk 022 # mkdir /var/qmail # cd /usr/local.src/qmail-x.xx/

Lakukan pengecekan instalasi, dengan perintah :

# make setup check

Lakukan finishing dengan mengeksekusi script config dalam direktori aktif.

# ./config

atau dengan mengesekusi script config-fast dengan memberikan domain name dari sistem anda

# ./config-fast host.domain.com

langkah berikutnya adalah instalasi ucspi-tcp, segera pindah direktori aktif ke hasil penguraian paket ucspi-tcp, dan lakukan proses instalasi.

# cd /usr/local/src/ucspi-tcp-x.xx/ # make # make setup check

Konfigurasi Setelah paket qmail, uscpi-tcp, dan daemontools dilakukan langkah berikutnya adalah menyaipkan beberapa script pendukung qmail, pertama kita buat script qmail rc ketik script berikut kemuadian simpan dengan nama rc dalam direktri " /var/qmail/rc " .

#!/bin/sh # exec env - PATH="/var/qmail/cin:$PATH" \ qmail-start "'cat /var/qmail/control/defaultdelifery'"

Setelah disimpan, pastikan script tersebut memiliki permision yang dapat dieksekusi.

# chmod 755 /var/qmail/rc

Kemudian tentukan format penyimpanan e-mail yang dikirim, disini kita akan menentukan format dalam bentuk Maildir.

# echo ./Maildir/ > /var/qmail/control/defaultdelivery

Langkah berikutnya adalah membuat script start-up control dari qmail yang akan digunakan untuk menjalankan dan mengontrol proses qmail. Ketik script tersebut dan simpan dengan nama qmailctl pada direktori " /var/qmail/bin " dengan text editor.

#!/bin/sh 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 else echo qmail-send supervise not running fi if svok /service/qmail-smtpd ; then svc -u /service/qmail-smtpd else echo qmail-smtpd supervise not running fi if svok /service/qmail-pop3d ; then svc -u /service/qmail-pop3d else echo qmail-pop3d 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 echo " qmail-send" svc -d /service/qmail-send echo " qmail-pop3d" svc -d /service/qmail-pop3d 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 svstat /service/qmail-pop3d svstat /service/qmail-pop3d/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 echo "Pausing qmail-pop3d" svc -p /service/qmail-pop3d ;; cont) echo "Continuing qmail-send" svc -c /service/qmail-send echo "Continuing qmail-smtpd" svc -c /service/qmail-smtpd echo "Continuing qmail-pop3d" svc -c /service/qmail-pop3d ;; 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 echo "* Restarting qmail-pop3d." svc -t /service/qmail-pop3d ;; 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

Kemudian lakukan identifikasi direktori penempatan boot script pada sistem anda, guna proses pembuatan symbolic link bagi script qmailctl. Pada kebanyakan GNU/Linux System V biasanya direktori tersebut adalah slah satu dari list berikut :

/etc/init.d /sbin/init.d /etc/rc.d/init.d

Pastikan salah satu dari tiga direktori tersebut, kemudian buat sebuah symbolic link ke script qmailctl.

# ln -s /var/qmail/bin/qmailctl /etc/init.d/qmail

Setelah itu kita perlu membuat link lagi ke " /etc/init.d/qmail " dari direktori script run level, seperti rcN.d, rc0.d - rc6.d, rcS.d. kemudian ubah permision script qmailctl menjadi executable. Langkah berikutnya adalah membuat direktori supervise dari qmail

# mkdir -p /var/qmail/supervise/qmail-send/log # mkdir -p /var/qmail/supervise/qmail-smtpd/log # mkdir -p /var/qmail/supervise/qmail-pop3d/log

Buat script run pada direktori " /var/qmail/supervise/qmail-send/ " dan rubah permision file menjadi executable.

#!/bin/sh # exec /var/qmail/rc

Buat script run pada direktori " /var/qmail/supervise/qmail-send/log/ " dan rubah permision file menjadi executable.

#!/bin/sh # exec /usr/local/bin/setuidgid qmail \ /usr/local/bin/multilog t \ /var/log/qmail

Buat script run pada direktori " /var/qmail/supervise/qmail-smtpd/ " dan rubah permision file menjadi executable.

#!/bin/sh # QMAILDUID='id -u qmaild' NOFILESGID='id -g qmaild' MAXSMTPD='cat /var/qmail/control/cocurrencyincoming' if [ -z "$QMAILDUID" -o -z "$NOFILESGID" -o -z "$MAXSMTPD" ]; then echo QMAILDUID, NOFILESGID, or MAXSMTPD is unset in echo /var/qmail/supervise/qmail-smtpd/run exit 1 fi exec /usr/local/bin/softlimit -m 2000000 \ /usr/local/bin/tcpserver -v -R -l 0 -x \ /etc/tcp.smtp.cdb -c "$MAXSMTPD" -u "$QMAILDUID" \ 0 smtp /var/qmail/bin/qmail-smtpd 2>&1

Buat script run pada direktori " /var/qmail/supervise/qmail-smtpd/log/ " dan rubah permision file menjadi executable.

#!/bin/sh # exec /usr/local/bin/setuidgid qmail \ /usr/local/bin/multilog t \ /var/log/qmail/smtpd

Buat script run pada direktori " /var/qmail/supervise/qmail-pop3d/ " dan rubah permision file menjadi executable.

#!/bin/sh # exec /usr/local/bin/softlimit 2000000 \ /usr/local/bin/tcpserver -v -R -H -l 0 0 110 \ /var/qmailbin/qmail-pop3d \ FQDN /home/vpopmail/bin/vchkpw \ /var/qmail/bin/qmail-pop3d Maildir 2>&1

ganti FDQN dengan nama host anda misal mail.domain.org. Buat script run pada direktori " /var/qmail/supervise/qmail-pop3d/log/ " dan rubah permision file menjadi executable.

#!/bin/sh # exec /usr/local/bin/setuidgid qmail \ /usr.local/bin/multilog t \ /var/log/qmail/pop3d

Buat file control concurrencyincoming.

# echo 20 > /var/qmail/control/concurrencyincoming # chmod 644 /var/qmail/control/concurrencyincoming

Buat direktori log untuk proses qmail.

# mkdir -p /var/log/qmail/ # mkdir -p /var/log/qmail/smtpd # mkdir -p /var/log/qmail/pop3d # chown qmail /var/log/qmail # chown qmail /var/log/qmail/pop3d # chown qmail /var/log/qmail/smtpd

Jika dalam sistem diperlukan adanya user alias, maka bisa diberikan dengan memberikan perintah berikut :

# cd /var/qmail/alias # echo username > /var/qmail/alias/.qmail-root # echo username > /var/qmail/alias/.qmail-postmaster # ln -s .qmail-postmaster /var/qmail/alias/.qmail-mailer-daemon # chmod 644 ./.qmail-postmaster ./.qmail-root

dengan demikian username yang ditentukan akan menerima e-mail yang dikirimkan kepada root, postmaster, dan mailer-daemon. Langkah selanjutnya adalah instalasi vpopmail, penggunaan vpopmail ditujukan untuk pengelolaan virtual domain dalam sistem kita, dengan menggunakan vpopmail user yang memiliki acount e-mail dalam sistem tidak perlu memiliki account sistem sehingga user tidak dapat melakukan login ke server. keuntungan lain dari penggunaan vpopmail adalah mempermudah administrator dalam mengelola e-mail server dalam melakukan perawatan account karena tidak perlu langsung melakukan kontrol terhadap qmail, karena hal tersebut akan dilakukan oleh vpopmail. Untuk melakukan instalasi pindah direktori aktif ke direktori hasil dari penguraian paket vpopmail.

# cd /usr/local/vpopmail-x.xx/

kemudian siapkan group dan user yang akan menjalankan vpopmail.

# groupadd -g 89 vchkpw # useradd -g vchkpw -u 89 -d /home/vpopmail -s nonexistent vpopmail

Jika sistem anda todak secara otomatis membuat homedir untuk user yang baru maka buatlah homedir secara manual

# mkdir /home/vpopmail # chown vpopmail.vchkpw /home/vpopmail

Langkah berikutnya adalah melakukan konfigurasi paket terhadap sistem. kemudian compilasi paket dan instalasi.

# ./configure --enable-hard-quota \ --enable-clear-passwd=n \ --enable-tcp-server-file=/etc/tcp.smtp # make # make install-strip

Administrasi Langkah awal untuk administrasi qmail adalah membuat symbolic link direktori qmail supervise ke direktori " /service ".

# ln -s /var/qmail/supervice/qmail-send /service # ln -s /var/qmail/supervice/qmail-smtpd /service # ln -s /var/qmail/supervice/qmail-pop3d /service

Untuk memeriksa apakah qmail sudah berjalan gunakan script qmailctl dengan memberikan argument stat.

# /var/qmail/bin/qmailctl stat /service/qmail-send: up (pid 30303) 187 second /service/qmail-send/log: up (pid 30304) 187 second /service/qmail-smtpd: up (pid 30305) 187 second /service/qmail-smtpd/log: up (pid 30306) 187 second /service/qmail-pop3d: up (pid 30307) 187 second /service/qmail-pop3d/log: up (pid 30308) 187 second

Jika keenam proses memiliki status up berarti qmail berjalan normal. jika tidak berarti terdapat kesalahan dalam proses instalasi. setiap proses dalam qmail dijalankan oleh user yang berbeda seperti :

PROSES USER
qmail_send qmails
qmail_clean qmailq
qmail_rspawn qmailr
qmail_lspawn root

 

 

 

Categories

 

Archives

 

Posts

 

Comments

 

Linux Live