Selasa, 25 Januari 2011

Instalasi Qmail di centos

I. Pendahuluan

qmail merupakan sebuah mail server yang dikembangkan oleh Dr. Dan Bernstein yang mulai ditulis pada Desember 1995. Qmail sangat terkenal dan dapat diandalkan dengan jaminan keamanan yang sangat tinggi, efisien, dan dengan MTA (Mail Transfer Agent) yang sederhana. Qmail dirancang untuk koneksi internet khususnya *NIX. Alasan mengapa menggunakan qmail adalah:
– Secure (aman)
Pengiriman email merupakan suatu hal yang berbahaya untuk pemakai apabila layanan yang diberikan masih bisa di lubangi seseorang. Saat ini, kebutuhan akan keamanan sudah tidak bisa di tawar-tawar lagi dan qmail menjadi salah satu jawban dari persoalan tersebut
– Dapat diandalkan
Qmail menjamin pesan yang masuk dalam mail server tidak akan hilang termasuk saat lampu mati karena qmial menggunakan format maildir. Format ini tidak akan hancur atau rusak apabila system mengalami crash saat pengiriman. Tidak hanya itu saja, user lain dapat mengirimkan email ke user tersebut.
– Efisien
Di komputer Pentium, qmail dapat dengan mudah memproses pesan ratusan ribu tiap harinya, baik mengirim atau pun menerima.

Dalam tutorial ini, penulis akan menjelaskan tentang bagaimana cara menginstal qmail di Centos 5.4 dengan menggunakan domain latihanlinux.co.cc dan IP 192.168.0.248. Penulis menggunakan system qmailrocks karena penulis merasa system ini sangat cocok jika diterapkan pada user linux yang ingin menginstal qmail namun juga ingin mengetahui langkah-langkahnya.

II. Langkah-Langkah Penginstalan

A. Instalasi paket Qmailrocks

1. Download Paket qmailrocks
# mkdir /downloads
# cd /downloads
# wget http://www.qmailrocks.org/downloads/qmailrocks.tar.gz
# tar -zxvf qmailrocks.tar.gz

2. Instal qmail
Qmail merupakan inti dari mail serveritu sendiri dan merupakan aplikasi untuk pengiriman email (MTA). Berikut adalah langkah-langkahnya:

# cd /downloads/qmailrocks/scripts/install/
# ./ qmr_install_linux-s1.script
# cd /downloads/qmailrocks/scripts/util/
# ./ qmail_big_patches.script
# cd /usr/src/qmail/qmail-1.03
# make man && make setup check
# ./config-fast latihanlinux.co.cc
# make cert
# chown -R vpopmail:qmail /var/qmail/control/clientcert.pem /var/qmail/control/servercert.pem

3. Install Ucspi-tcp
Ucspi-tcp merupakan aplikasi untuk tcpserver yaitu paket yang digunakan sebagai utility koneksi client server yang menggunakan protocol TCP. Berikut adalah langkah-langkahnya:

# cd /usr/src/qmail/ucspi-tcp-0.88/
# patch < /downloads/qmailrocks/patches/ucspi-tcp-0.88.errno.patch # make && make setup check

4. Install Daemon-tool
Daemon tool merupakan daemon untuk menelola aplikasi-aplikasi pendukung utility yang digunakan oleh system operasi untuk mengatur segala proses yang berjalan seperti qmail dan segala tambahan paket lainnya. Daemontools akan melakukan starting service dan merestart apabila ada service yang mati. Berikut adalah langkah-langkahnya:

# cd /package/admin/daemontools-0.76/src
# patch < /downloads/qmailrocks/patches/daemontools-0.76.errno.patch # cd /package/admin/daemontools-0.76 # package/install

Untuk melihat apakah daemontools berjalan atau tidak, Ceklah dengan perintah:

 # ps aux | grep svscanboot

Jika ada, berarti daemontools sudah berjalan dalam system kita.

B. Instalsi Ezmlm

Ezmlm merupakan program untuk membuat mailing list di qmail. Berikut adalah langkah-langkahnya:
# cd /downloads/qmailrocks/
# tar zxvf ezmlm-0.53-idx-0.41.tar.gz
# cd ezmlm-0.53-idx-0.41
# make && make setup

C. Instalasi AutoResponder

Autoresponder digunakan untuk merespon email yang masuk secara otomatis. Berikut adalah langkah-langkahnya:
# cd /downloads/qmailrocks
# tar zxvf autorespond-2.0.5.tar.gz
# cd autorespond-2.0.5
# make && make install

D. Instalasi VPOPMAIL

Vpopmail merupakan pop3 server, yaitu paket tambahan dari qmail untuk menangani virtual email domain dalam satu mail server. Hal ini untuk memudahkan kita dalam penanganan atau administrasi system yang baik. Vpopmail bisa menggunakan database (dalam hal ini mysql) dan juga bisa tidak.

1. Tidak Menggunakan Database
Opsi dipilih jika kita hanya mempunyai beberapa domain saja (tidak lebih dari 50 domain) dan kita masih termasuk pemula dalam linux. Ini adalah langkah-langkahnya:

# cd /downloads/qmailrocks
# tar zxvf vpopmail-5.4.13.tar.gz
# cd vpopmail-5.4.13
# ./configure --enable-logging=p
# make && make install-strip

2. Menggunakan Database Mysql
Opsi ini dipilih jika kita menghandle lebih dari 50 domain dan kita paham dengan konfigurasi linux dan qmail itu sendiri. Berikut adalah langkah-langkahnya:

# mkdir ~vpopmail/etc
# chown vpopmail:vchkpw ~vpopmail/etc
# echo "localhost|0|vpopmailuser|password|vpopmail" > ~vpopmail/etc/vpopmail.mysql
catatan: Untuk vpopmailuser bisa diganti dengan apa saja dan password diserahkan
kepada masing-masing dari kita
# chown vpopmail:vchkpw ~vpopmail/etc/vpopmail.mysql
# chmod 640 ~vpopmail/etc/vpopmail.mysql
# mysql -u root –p
> CREATE DATABASE vpopmail;
> grant select,insert,update,delete,create,drop ON vpopmail.*
TO vpopmailuser@localhost IDENTIFIED BY 'password';
> quit;

Sekarang, kita akan instalasi program vpopmail dengan cara:

# cd /downloads/qmailrocks
# tar zxvf vpopmail-5.4.13.tar.gz
# cd vpopmail-5.4.13
Langkah selanjutnya adalah:
# ./configure --enable-logging=p --enable-auth-module=mysql --disable-passwd
--enable-clear-passwd --disable-many-domains --enable-auth-logging --enable-sql-logging
--enable-valias --disable-mysql-limits
# make && make install-strip

E. Instalasi vqadmin

Vqadmin merupakan domain manager berbasis web yang digunakan untuk mengelola email, baik penambahan, penghapusan alamat email, penambahan maupun penghapusan mailinglist dan juga penambahan domain. Berikut adalah langkah-langkahnya:
# cd /downloads/qmailrocks
# tar zxvf vqadmin-2.3.6.tar.gz
# cd vqadmin-2.3.6
# ./configure --enable-cgibindir=/var/www/cgi-bin --enable-htmldir=/var/www/html
# make && make install-strip

Rubah di file httpd.conf menjadi seperti berikut:

# vi /etc/httpd/conf/httpd.conf

deny from all
Options ExecCGI
AllowOverride AuthConfig
Order deny,allow

# cd / var/www/cgi-bin /vqadmin
# vi .htaccess
AuthType Basic
AuthUserFile /etc/httpd/conf/.htpasswd
AuthName vQadmin
require valid-user
satisfy any

Disini penulis memberitahukan bahwa file .htpasswd ada di /etc/httpd/conf

# chown apache .htaccess
# chmod 644 .htaccess
# htpasswd –bc /etc/httpd/conf/.htpasswd admin password

Disini, penulis memberikan usernamenya admin dan passwordnya adalah password.

# chmod 644 /etc/httpd/conf/.htpasswd
# service httpd restart

Buka browser lalu ketikkan:

 http://alamat_ip/cgi-bin/vqadmin/vqadmin.cgi
Dan jika tidak ada masalah, akan terlihat gambar:
Masukkan username dan password yang sudah kita buat sebelumnya. Dalam hal ini admin dan password. Tekan tombol OK, dan akan muncul gambar berikut:
Buatlah domain dengan menekan link Add Domain, akan muncul gambar sebagai berikut:
Buatlah nama domain dan passwordnya. Dalam hal ini penulis membuat domain latihanlinux.co.cc.

F. Maildrop

Digunakan untuk memfilter email yang masuk. Program ini digunakan secara bersamaan pada qmailscanner. Berikut adalah langkah-langkahnya:
# cd /downloads/qmailrocks
# tar zxvf maildrop-1.6.3.tar.gz
# cd maildrop-1.6.3
# ./configure --prefix=/usr/local --exec-prefix=/usr/local --enable-maildrop-uid=root --enable-maildrop-gid=vchkpw --enable-maildirquota
# make && make install-strip && make install-man

g. qmailadmin

Qmailadmin merupakan aplikasi berbasis web yang digunakan untuk mengelola user pada tiap domain. Berikut adalah langkah-langkahnya:
# cd /downloads/qmailrocks
# tar zxvf qmailadmin-1.2.9.tar.gz
# cd qmailadmin-1.2.9
# ./configure --enable-cgibindir=/var/www/cgi-bin --enable-htmldir=/var/www/html
# make && make install-strip

Buka browser, lalu ketikkan:

 http://192.168.0.248/cgi-bin/qmailadmin
Akan muncul gambar sebagai berikut:
Masukkan nama domain yang sudah kita buat sebelumnya beserta passwordnya, lalu tekan tombol Login. Maka akan muncul gambar sebagai berikut:
Buatlah user email dengan menekan link New Email Account. Disini, penulis membuat user //
// ]]-->budi@latihanlinux.co.cc // This e-mail address is being protected from spambots, you need JavaScript enabled to view it // .

H. Tahap Akhir qmail

# cd /downloads/qmailrocks/scripts/finalize/linux/
# ./finalize_linux.script
# vi /var/qmail/supervise/qmail-pop3d/run
rubah example.com menjadi latihanlinux.co.cc
# vi /var/qmail/supervise/qmail-smtpd/run
rubah example.com menjadi latihanlinux.co.cc
# qmailctl stop
# echo '127.:allow,RELAYCLIENT=""' >> /etc/tcp.smtp
# qmailctl cdb
# echo
postmaster@latihanlinux.co.cc This e-mail address is being protected from spambots,
you need JavaScript enabled to view it
> /var/qmail/alias/.qmail-root
# echo
postmaster@latihanlinux.co.cc This e-mail address is being protected from spambots,
you need JavaScript enabled to view it
> /var/qmail/alias/.qmail-postmaster
# echo
postmaster@latihanlinux.co.cc This e-mail address is being protected from spambots,
you need JavaScript enabled to view it
> /var/qmail/alias/.qmail-mailer-daemon
# ln -s /var/qmail/alias/.qmail-root /var/qmail/alias/.qmail-anonymous
# chmod 644 /var/qmail/alias/.qmail*

i. Uninstal MTA Lain

Qmail tidak akan bisa berjalan dengan baik jika di dalam system kita mempunyai lebih dari 1 MTA.
a. Uninstall sendmail
# rpm -qa | grep sendmail
sendmail-x.x.x.x
sendmail-doc-x.x.x.x
sendmail-devel-x.x.x.x
sendmail-cf-x.x.x.x
# rpm -e --nodeps sendmail-x.x.x.x
# rpm -e --nodeps sendmail-doc-x.x.x.x
# rpm -e --nodeps sendmail-devel-x.x.x.x
# rpm -e --nodeps sendmail-cf-x.x.x.x

b. Uninstall postfix

# rpm -qa | grep postfix
postfix-x.x-x
# rpm -e --nodeps postfix-x.x-x

Setelah itu, kita membuat link dengan cara:

# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

j. Memulai qmail

# cd /downloads/qmailrocks/scripts/util/
# ./qmr_inst_check

Kalau mendapat tulisan Congratulations, your Qmailrocks.org Qmail installation looks good!, berarti sistem kita sudah terinstal qmail dengan baik. Lalu lanjutkan langkah-lanngkah berikut ini:

# qmailctl stop
# qmailctl start
# qmailctl stat
/service/qmail-send: up (pid 29956) 2 seconds
/service/qmail-send/log: up (pid 29960) 2 seconds
/service/qmail-smtpd: up (pid 29963) 2 seconds
/service/qmail-smtpd/log: up (pid 29968) 2 seconds
/service/qmail-pop3d: up (pid 29971) 2 seconds
/service/qmail-pop3d/log: up (pid 29972) 2 seconds
messages in queue: 0
messages in queue but not yet preprocessed: 0

Selanjutnya kita akan mengetes POP3. Tuliskan perintah berikut

 # telnet localhost 110
dan masukkan user yang akan dites dengan menuliskan kata user terlebih dahulu dan masukkan passwordnya dengan menuliskan kata pass terlebih dahulu. Untuk lebih jelasnya perhatikan gambar berikut:
Kemudian kita akan menguji smtp kita dengan menuliskan perintah:
 # telnet localhost 25
tuliskan ehlo localhost kemudian tulis starttls. Jika semua berjalan dengan baik, maka smtp kita sudah berjalan dengan baik dan mempunyai TLS di dalamnya. Untuk lebih jelasnya perhatikan gambar berikut:

k. Instalasi Courier imap

Courier IMAP merupakan program yang membantu pengaksesan IMAP ke Maildir. Maildir merupakan format mail yang dimilki oleh qmail. Namun, sebelum menginstal courier imap, kita harus menginstal courier-authlib. Berikut adalah langkah-langkahnya:
# cd /downloads/qmailrocks/
# tar jxvf courier-authlib-0.55.tar.bz2
# cd courier-authlib-0.55

Kita konfigurasi courier-authlib dengan cara:

# ./configure --prefix=/usr/local --exec-prefix=/usr/local --with-authvchkpw
--without-authldap --without-authmysql --disable-root-check --with-ssl
--with-authchangepwdir=/usr/local/libexec/authlib --with-redhat

Kita compile dengan cara:

# make && make check
# make install-strip && make install-configure

Konfigurasi file rc.local dengan cara:

# vi /etc/rc.local
Tambahkan ke dalam file tersebut:
 /usr/local/sbin/authdaemond start
Setelah selesai, kita bisa menginstal courier imap. Berikut adalah langkah-langkahnya:
# useradd budi
# cd /downloads/qmailrocks/
# tar jxvf courier-imap-4.0.2.tar.bz2
# chown -R budi:wheel courier-imap-4.0.2
# cd /downloads/qmailrocks/courier-imap-4.0.2

Masuk ke user budi:

# su budi
# ./configure --prefix=/usr/local --exec-prefix=/usr/local --with-authvchkpw --without-authldap
--without-authldap --without-authmysql --disable-root-check --with-ssl
--with-authchangepwdir=/usr/local/libexec/authlib --with-redhat
# make && make check
# exit
# make install-strip && make install-configure
# /usr/local/sbin/mkimapdcert
# vi /usr/local/etc/imapd.cnf
rubah example.com menjadi latihanlinux.co.cc
# vi /usr/local/etc/imapd
rubah menjadi IMAPDSTART=YES
# vi /usr/local/etc/imapd-ssl
rubah menjadi IMAPDSSLSTART=YES TLS_CERTFILE=/usr/local/share/imapd.pem
# vi /usr/local/etc/authlib/authdaemonrc
rubah menjadi: authmodulelist="authvchkpw"
# cp /usr/local/libexec/imapd.rc /etc/rc.d/init.d/imap
# cp /usr/local/libexec/imapd-ssl.rc /etc/rc.d/init.d/imaps
# /usr/local/sbin/authdaemond stop
# /usr/local/sbin/authdaemond start
# /etc/rc.d/init.d/imap stop
# /etc/rc.d/init.d/imaps stop
# /etc/rc.d/init.d/imap start
# /etc/rc.d/init.d/imaps start
Kemudian kita uji IMAP kita dengan mengetikkan perintah:
 # telnet localhost 143
tuliskan a login alamat_email password dan untuk keluar tulis a logout. Untuk lebih jelasnya perhatikan gambar berikut:
Langkah selanjutnya adalah menginstal courierpassd. Courierpassd merupakan utility yang digunakan untuk merubah password user email. Berikut adalah langkah-langkahnya:
# cd /downloads/qmailrocks
# tar zxvf courierpassd-1.1.0-RC1.tar.gz
# cd courierpassd-1.1.0-RC1
# ./configure
# make && make install
# cd /etc/xinetd.d
# vi courierpassd
service courierpassd
{
port = 106
socket_type = stream
protocol = tcp
user = root
server = /usr/local/sbin/courierpassd
server_args = -s imap
wait = no
only_from = 127.0.0.1
instances = 4
disable = no
}
# vi /etc/services
Tambahkan skrip berikut di dalam file services
courierpassd 106/tcp #for /etc/xinetd.d/courierpassd
# /etc/rc.d/init.d/xinetd restart

Kita uji apakah courierpassd bisa berjalan dengan baik atau tidak dengan menuliskan perintah:

# telnet localhost 106
lalu masukkan alamat email dengan terlebih dahulu menulis kata user. Setelah itu ketik passwordnya dengan terlebih dahulu mengetik kata pass. Dan terakhir masukkan password yang baru dengan terlebih dahulu mengetikkan kata newpass. Untuk lebih jelasnya, perhatikan gambar berikut:

L. Squirrelmail

Squirrelmail merupakan webmail client yang digunakan untuk mengakses mail server. Pada saat tulisan ini dibuat, versi squirrelmail adalah versi 1.19. Berikut adalah langkah-langkahnya:
# wget squirrelmail
# tar zxvf squirrelmail-1.4.19.tar.gz
# mv squirrelmail-1.4.19 webmail
# cp -r webmail /var/www/html/
# cd webmail
# chown -R apache:apache data
# ./configure
Pilih nomor 2
Nomor 7
Jawab pertanyaan dengan N, login, dan N
Tekan tombol S
Tekan tombol Q

# mkdir -p /var/local/squirrelmail/data/
# mkdir -p /var/local/squirrelmail/attach/
# chown apache:apache /var/local/squirrelmail/data/
# chown apache:apache /var/local/squirrelmail/attach/
# service httpd restart


Buka browser, lalu ketikan:

 http://alamat_ip/webmail
Setelah menuliskan username dan passwordnya, maka seharusnya akan terlihat tampilan sebagai berikut:
Setelah itu cobalah saling mengirim email antar user dan seharusnya email sudah dapat terkirim dengan baik.

III. Instalasi Antivirus Clamav

Clamav merupakan aplikasi untuk mendeteksi email yang masuk apakah mengandung virus atau pun tidak. Disini penulis menginstal clamav dengan menginstalnya melalui yum. Namun sebelum menginstal clamav dengan yum, ikuti langkah-langkah berikut:
# yum -y install yum-priorities
# wget http://apt.sw.be/redhat/el5/en/i386/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
# rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
# rpm -K rpmforge-release-0.3.6-1.el5.rf.*.rpm
# rpm -i rpmforge-release-0.3.6-1.el5.rf.*.rpm
Kemudian baru kita install clamav dengan cara:
# yum install clamav*
Sesudah selesai clamav diinstal, terlihat sendmail ikut serta diinstal dalam system kita. Maka dari itu remove sendmail dengan cara :
# yum remove sendmail
Kemudian penulis mengkonfigurasi clamav dengan cara:
# vi /etc/clamd.conf
rubah pada file tersebut menjadi:
# Example (Bagian Example diberi tanda pagar)
LogFile /var/log/clamav/clamd.log
LogTime (Jangan diberi tanda pagar)
LogSysLog (Jangan diberi tanda pagar)
User qscand
ScanMail (Jangan diberi tanda pagar)

Kemudian penulis melakukan langkah-langkah berikut:

# useradd -c "Qmail-Scanner Account" -s /bin/false qscand
# chown -R qscand:qscand /var/log/clamav/
# chown -R qscand:qscand /var/run/clamav/
# touch /var/log/clamav/clam-update.log
# chown clamav:clamav /var/log/clamav/clam-update.log

Nyalakan service clamav dengan cara:

# /etc/init.d/clamav
dan seharusnya clamav dapat berjalan dengan baik. Agar clamav dapat mendapatkan update terbaru, gunakan perintah:
 /usr/bin/freshclam -l /var/log/clamav/clam-update.log
Kemudian jadwalkan agar setiap malam (jam 1.26), clamav dapat terupdate secara otomatis:
# crontab -e
25 1 * * * /usr/bin/freshclam --quiet -l /var/log/clamav/freshclam.log

Agar clamav dapat menyala secara otomatis, maka gunakan perintah berikut:

# chkconfig --level 345 on clamd on
Setelah itu, sepengalaman penulis biasanya selesai penginstalan clamav, ketika kita mengirim email, maka email tidak dapat terkirim dengan baik. Maka dari itu gunakan perintah:
# /usr/local/sbin/authdaemond stop
# /usr/local/sbin/authdaemond start
# /etc/rc.d/init.d/imap stop
# /etc/rc.d/init.d/imaps stop
# /etc/rc.d/init.d/imap start
# /etc/rc.d/init.d/imaps start

Maka, seharusnya email dapat terkirim dengan baik.

IV. Instalasi SpamAssassin

Spamassassin merupakan program untuk mendeteksi email yang masuk apakah mengandung spam atau tidak. Penulis menginstal spamassassin dengan cara:
# yum install spamassassin
# groupadd spamd
# useradd -g spamd -s /home/spamd spamd
Kemudian mengkonfigurasi spamassassin sebagai berikut:
# vi /etc/sysconfig/spamassassin
Hapus isi dari file tersebut dan masukkan skrip sebagai berikut:
SPAMDOPTIONS="-x -u spamd -H /home/spamd -d"
# vi /etc/mail/spamassassin/local.cf
Tambahkan skrip dibawah:
required_hits 5

Lalu nyalakan spamassassin dengan cara:

# /etc/init.d/spamassassin start
Ceklah di sistem apakah spamassassin sudah menyala atau belum dengan cara:
# ps aux | grep spamd

Agar spamassassin menyala secara otomatis, maka gunakan perintah berikut:

# chkconfig --level 345 spamassassin on

V. Instalasi QmailScanner

QmailScanner merupakan program tambahan qmail yang digunakan untuk melakukan scanning email yang menggunakan karakteristik tertentu, khususnya digunakan untuk melakukan scanning virus atau proteksi antivirus. Program ini juga digunakan untuk melakukan scanning header atau file attachments. Berikut adalah langkah-langkahnya:
# cd /downloads/qmailrocks
# tar zxvf qmail-scanner-1.25.tgz
# tar zxvf qms-analog-0.4.2.tar.gz
# cd qms-analog-0.4.2
# make all
# cp qmail-scanner-1.25-st-qms-20050219.patch /downloads/qmailrocks/qmail-scanner-1.25/
# cd /downloads/qmailrocks/qmail-scanner-1.25
# patch -p1 <>
Setelah itu kita akan mengkonfigurasi QmailScanner. Ada 2 cara untuk mengkonfigurasi QmailScanner yaitu apakah sistem kita menggunakan setuid atau tidak. Awalnya penulis mengira bahwa sistem penulis menggunakan setuid, maka penulis melakukan hal-hal berikut:
# cd /downloads/qmailrocks/qmail-scanner-1.25
# vi qms-config
Rubah tulisan yourdomain.com dan yang sejenisnya menjadi latihanlinux.co.cc
# chmod 755 qms-config
# ./qms-config
Jawab YES jika ada pertanyaan-pertanyaan. Jika tidak ada error, maka tulis perintah berikut:
# ./qms-config install
maka QmailScanner sudah terinstal dengan baik di sistem kita.
Namun ternyata sistem penulis tidak menggunakan setuid. Hal itu diketahui dengan cara adanya error pada saat menuliskan perintah ./qms-config dengan tulisan:
Can’t do setuid (cannot exec sperl)
Maka dari itu penulis melakukan langkah-langkah berikut untuk menginstal QmailScanner di sistem penulis:
# cd /downloads/qmailrocks/qmail-scanner-1.25/contrib
# make install
# cd /downloads/qmailrocks/qmail-scanner-1.25
# vi qms-config-cwrapper
Rubah tulisan yourdomain.com atau yang sejenisnya menjadi latihanlinux.co.cc
# chmod 755 qms-config-cwrapper
# ./qms-config-cwrapper
# ./qms-config-cwrapper install
# vi /var/qmail/bin/qmail-scanner-queue.pl
Hapus karakter -T pada skrip paling atas sehingga menjadi #/usr/bin/perl
Kemudian ikuti langkah-langkah berikut ini:
# chmod 0755 /var/qmail/bin/qmail-scanner-queue.pl
# /var/qmail/bin/qmail-scanner-queue -z
# /var/qmail/bin/qmail-scanner-queue -g

Maka akan ada tulisan:

# chown -R qscand:qscand /var/spool/qmailscan
# vi /var/qmail/supervise/qmail-smtpd/run
Tambahkan skrip berikut pada baris kedua:
QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue" ; export QMAILQUEUE
Lalu pada file yang sama rubah change softlimit menjadi 40000000

Kemudian langkah-langkah berikutnya adalah:

# qmailctl stop
# qmailctl start
# qmailctl stat
# cd /downloads/qmailrocks/qmail-scanner-1.25/contrib
# chmod 755 test_installation.sh
# ./test_installation.sh -doit

Akan ada tulisan seperti berikut:

dan sekarang cobalah cek di //
// ]]-->postmaster@latihanlinux.co.cc // This e-mail address is being protected from spambots, you need JavaScript enabled to view it // , dan seharusnya ada beberapa email yang masuk seperti pada gambar:

VII. Instal QmailAnalog

Qmailanalog merupakan sebuah utility untuk membantu kita menganalisa aktivitas qmail yang tercatat. Berikut adalah langkah-langkahnya:
# cd /downloads/qmailrocks/
# tar zxvf qmailanalog-0.70.tar.gz
# cd qmailanalog-0.70
# patch < /downloads/qmailrocks/patches/0.70-errno.patch # make && make setup check # cd /downloads/qmailrocks/ # tar zxvf qlogtools-3.1.tar.gz # cd qlogtools-3.1 # patch < /downloads/qmailrocks/patches/qlogtools_errno.patch # mkdir /usr/local/man # make # ./installer # cp /downloads/qmailrocks/qms-analog-0.4.2/qmailstats /var/qmail/bin # vi /var/qmail/bin/qmailstats rubah tulisan your_postmaster@yourdomain.com This e-mail address is being protected from spambots,
you need JavaScript enabled to view it
menjadi
postmaster@latihanlinux.co.cc This e-mail address is being protected from spambots, you need JavaScript enabled to view it

Setelah itu berikan perintah berikut:

# chmod 750 /var/qmail/bin/qmailstats
# /var/qmail/bin/qmailstats

Dan Ceklah di akun //
// ]]-->postmaster@latihanlinux.co.cc // This e-mail address is being protected from spambots, you need JavaScript enabled to view it // . Seharusnya email yang berjudul Qmail Nightly Qmail Report for xx/xx/xx ada di dalam mailbox postmaster seperti yang ditunjukkan pada gambar di atas.
Agar setiap malam program ini menyala secara otomatis gunakan crontab:

# crontab -e
0 3 * * * /var/qmail/bin/qmailstats 1>/dev/null 2>/dev/null

Maka setiap jam 3 pagi, qmailanalog akan bekerja secara otomatis.

VIII. Instal Qtrap

Qtrap digunakan untuk mendeteksi email-email yang masuk apakah mengandung kata-kata tertentu yang dilarang atau tidak. Jika mengandung kata-kata yang dilarang, maka program ini tidak akan mengirimkan email tersebut. Berikut adalah langkah-langkahnya:
# mkdir -p qtrap/logs
# cd qtrap
# cp /downloads/qmailrocks/scripts/qtrap/qtrap-2.0.0 ./qtrap.sh
# vi qtrap.sh
Disitu ada 2 elemen penting yang bisa dikonfigurasi. Elemen pertama adalah daftar email yang boleh masuk ke sistem jika sebelumnya email tersebut membawa kata-kata yang dilarang. Elemen kedua adalah kata-kata apa saja yang dilarang. Disitu diberikan contoh:
porn|PORN|Sex|SEX)
Maka email yang mengandung kata-kata tersebut tidak akan dikirim. Kemudian setelah mengkonfigurasi email tersebut, ikuti langkah-langkah berikut ini:
# cd /home/vpopmail
# touch /home/vpopmail/qtrap/logs/qtrap.log
# chown -R vpopmail:vchkpw /home/vpopmail/qtrap
# chmod -R 755 /home/vpopmail/qtrap
# cd /home/vpopmail/domains/latihanlinux.co.cc
# vi .qmail-default
Tambahkan di file tersebut skrip di bawah ini dan letakkan pada baris pertama pada file tersebut:
| /home/vpopmail/qtrap/qtrap.sh 
Sehingga hasilnya akan tampak seperti berikut:
|  /home/vpopmail/qtrap/qtrap.sh
| /home/vpopmail/bin/vdelivermail '' delete

Setelah itu Cobalah mengirim email dengan salah satu kata yang dilarang. Jika email tersebut berhasil dikirim, maka program qtrap kita tidak berhasil. Tetapi jika tidak berhasil dikirim, maka program qtrap kita berhasil dan ada pemberitahuan di:
# cat /home/vpopmail/domains/latihanlinux.co.cc/qtrap/logs/qtrap.log
MESSAGE DROPPED from xxx@xxx because of xxx on xx/xx/xx xx:xx:xx

X. Lain-Lain

Penulis biasanya menggunakan skrip sederhana agar qmail secara otomatis sebab pengalaman penulis, qmail akan mati setelah server direstart. Maka dari itu penulis menggunakan skrip sebagai berikut:
# vi /root/imap
Tuliskan skrip berikut:
#!/bin/bash
## Perintah untuk menjalankan IMAP secara otomatis
/usr/local/sbin/authdaemond stop
/usr/local/sbin/authdaemond start
/etc/rc.d/init.d/imap stop
/etc/rc.d/init.d/imaps stop
/etc/rc.d/init.d/imap start
/etc/rc.d/init.d/imaps start
# chmod 744 /root/imap

Lalu tambahkan di file /etc/rc.d/rc.local dan tambahkan skrip berikut:

/root/imap
Dan seharusnya qmail dapat menyala secara otomatis setelah server restart.

Jumat, 08 Oktober 2010

My SQL Linux Syntax untuk pemula

To login (from unix shell) use -h only if needed.

# [mysql dir]/bin/mysql -h hostname -u root -p
Create a database on the sql server.

mysql> create database [databasename];
List all databases on the sql server.

mysql> show databases;
Switch to a database.

mysql> use [db name];
To see all the tables in the db.

mysql> show tables;
To see database's field formats.

mysql> describe [table name];
To delete a db.

mysql> drop database [database name];
To delete a table.

mysql> drop table [table name];
Show all data in a table.

mysql> SELECT * FROM [table name];
Returns the columns and column information pertaining to the designated table.

mysql> show columns from [table name];
Show certain selected rows with the value "whatever".

mysql> SELECT * FROM [table name] WHERE [field name] = "whatever";
Show all records containing the name "Bob" AND the phone number '3444444'.

mysql> SELECT * FROM [table name] WHERE name = "Bob" AND phone_number = '3444444';
Show all records not containing the name "Bob" AND the phone number '3444444' order by the phone_number field.

mysql> SELECT * FROM [table name] WHERE name != "Bob" AND phone_number = '3444444' order by phone_number;
Show all records starting with the letters 'bob' AND the phone number '3444444'.

mysql> SELECT * FROM [table name] WHERE name like "Bob%" AND phone_number = '3444444';
Show all records starting with the letters 'bob' AND the phone number '3444444' limit to records 1 through 5.

mysql> SELECT * FROM [table name] WHERE name like "Bob%" AND phone_number = '3444444' limit 1,5;
Use a regular expression to find records. Use "REGEXP BINARY" to force case-sensitivity. This finds any record beginning with a.

mysql> SELECT * FROM [table name] WHERE rec RLIKE "^a";
Show unique records.

mysql> SELECT DISTINCT [column name] FROM [table name];
Show selected records sorted in an ascending (asc) or descending (desc).

mysql> SELECT [col1],[col2] FROM [table name] ORDER BY [col2] DESC;
Return number of rows.

mysql> SELECT COUNT(*) FROM [table name];
Sum column.

mysql> SELECT SUM(*) FROM [table name];
Join tables on common columns.

mysql> select lookup.illustrationid, lookup.personid,person.birthday from lookup left join person on lookup.personid=person.personid=statement to join birthday in person table with primary illustration id;
Creating a new user. Login as root. Switch to the MySQL db. Make the user. Update privs.

# mysql -u root -p
mysql> use mysql;
mysql> INSERT INTO user (Host,User,Password) VALUES('%','username',PASSWORD('password'));
mysql> flush privileges;
Change a users password from unix shell.

# [mysql dir]/bin/mysqladmin -u username -h hostname.blah.org -p password 'new-password'
Change a users password from MySQL prompt. Login as root. Set the password. Update privs.

# mysql -u root -p
mysql> SET PASSWORD FOR 'user'@'hostname' = PASSWORD('passwordhere');
mysql> flush privileges;
Recover a MySQL root password. Stop the MySQL server process. Start again with no grant tables. Login to MySQL as root. Set new password. Exit MySQL and restart MySQL server.

# /etc/init.d/mysql stop
# mysqld_safe --skip-grant-tables &
# mysql -u root
mysql> use mysql;
mysql> update user set password=PASSWORD("newrootpassword") where User='root';
mysql> flush privileges;
mysql> quit
# /etc/init.d/mysql stop
# /etc/init.d/mysql start
Set a root password if there is on root password.

# mysqladmin -u root password newpassword
Update a root password.

# mysqladmin -u root -p oldpassword newpassword
Allow the user "bob" to connect to the server from localhost using the password "passwd". Login as root. Switch to the MySQL db. Give privs. Update privs.

# mysql -u root -p
mysql> use mysql;
mysql> grant usage on *.* to bob@localhost identified by 'passwd';
mysql> flush privileges;
Give user privilages for a db. Login as root. Switch to the MySQL db. Grant privs. Update privs.

# mysql -u root -p
mysql> use mysql;
mysql> INSERT INTO db (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) VALUES ('%','databasename','username','Y','Y','Y','Y','Y','N');
mysql> flush privileges;

or

mysql> grant all privileges on databasename.* to username@localhost;
mysql> flush privileges;
To update info already in a table.

mysql> UPDATE [table name] SET Select_priv = 'Y',Insert_priv = 'Y',Update_priv = 'Y' where [field name] = 'user';
Delete a row(s) from a table.

mysql> DELETE from [table name] where [field name] = 'whatever';
Update database permissions/privilages.

mysql> flush privileges;
Delete a column.

mysql> alter table [table name] drop column [column name];
Add a new column to db.

mysql> alter table [table name] add column [new column name] varchar (20);
Change column name.

mysql> alter table [table name] change [old column name] [new column name] varchar (50);
Make a unique column so you get no dupes.

mysql> alter table [table name] add unique ([column name]);
Make a column bigger.

mysql> alter table [table name] modify [column name] VARCHAR(3);
Delete unique from table.

mysql> alter table [table name] drop index [colmn name];
Load a CSV file into a table.

mysql> LOAD DATA INFILE '/tmp/filename.csv' replace INTO TABLE [table name] FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (field1,field2,field3);
Dump all databases for backup. Backup file is sql commands to recreate all db's.

# [mysql dir]/bin/mysqldump -u root -ppassword --opt >/tmp/alldatabases.sql
Dump one database for backup.

# [mysql dir]/bin/mysqldump -u username -ppassword --databases databasename >/tmp/databasename.sql
Dump a table from a database.

# [mysql dir]/bin/mysqldump -c -u username -ppassword databasename tablename > /tmp/databasename.tablename.sql
Restore database (or database table) from backup.

# [mysql dir]/bin/mysql -u username -ppassword databasename < /tmp/databasename.sql
Create Table Example 1.

mysql> CREATE TABLE [table name] (firstname VARCHAR(20), middleinitial VARCHAR(3), lastname VARCHAR(35),suffix VARCHAR(3),officeid VARCHAR(10),userid VARCHAR(15),username VARCHAR(8),email VARCHAR(35),phone VARCHAR(25), groups VARCHAR(15),datestamp DATE,timestamp time,pgpemail VARCHAR(255));
Create Table Example 2.

mysql> create table [table name] (personid int(50) not null auto_increment primary key,firstname varchar(35),middlename varchar(50),lastnamevarchar(50) default 'bato');

Selasa, 20 April 2010

Instalasi Web Conference ( Open Meetings ) on Centos 5

OpenMeetings dibuat untuk melakukan rapat dalam jarak jauh, atau peserta rapat yg tidak bisa hadir ditempat, OpenMeetings sangat berguna bila peserta rapat berada di wilayah lain atau luar kota.
OpenMeetings bisa didapat di situs http://code.google.com/p/openmeetings/

fiturnya adalah video conference, audio chat dan pendukung lainnya.

Instalasi OpenMeetings

file-file yang dibutuhkan oleh Open Meetings adalah

- ffmpeg-0.5.1.tar.bz2 bisa menggunakan versi terbaru
- ImageMagick-6.3.2-9.tar.bz2 gunakan versi terbaru
- swftools-0.9.0.tar.gz gunakan versi terbaru
- flash player terbaru untuk linux
- Java terbaru untuk linux
dan tidak lupa Open-Meetings

tahap pertama instalasi Open Meetings
- instalasi terlebih dahulu paket-paket pendukungnya

- ffmpeg
- imagemagick
- swftools
- flash player plugin
- Java terbaru

setelah semua selesai cek terlebih dahulu versi javanya

# java -version
java version "1.6.0"
OpenJDK Runtime Environment (build 1.6.0-b09)
OpenJDK Server VM (build 1.6.0-b09, mixed mode)

bila sudah oke, silakan extract file openMeetingnya kedirektori /opt
buat direktori di dalam /opt

# mkdir /opt/red5

# unzip red5-openmeetings-rc5.zip -d /opt/red5
# cd red5

tahap kedua sekarang buat nama databasenya di Mysql

# mysql -u root -p create openmeetings


edit file /etc/my.cnf, tambahkan berikut ini didalam bagian [mysqld]
default-character-set=utf8


copy dan edit file openmeetings dengan nama mysql_hibernate.cfg.xml
# cd webapps/openmeetings/conf
# cp mysql_hibernate.cfg.xml hibernate.cfg.xml
# vi hibernate.cfg.xml

User / Password
property name= connection.username root property
property name= connection.password secret property
rubah yg di bold dengan user privileges mysqlnya dan passwordnya


masuk kedalam direktori /opt/red5
jalankan servicenya

# cd /opt/red5
# ./red5.sh

tunggu sampai port 4445 terlihat, maka bukalah browser anda dengan alamat http://localhost:5080/openmeetings/install



akan tampil menu Installation di browser anda, klik Continue with step 1

kemudian akan kluar tampilan seperti dibawah ini... !!



isikan kebutuhan openmeetings, pada tab dibawah ini silakan default saja atau kosongkan saja



bila telah selesai dalam mengisi konfigurasinya, maka klik INSTALL , akan terlihat sepeti dibawah ini...



klik Enter the Application, maka kluar tampilan seperti berikut dibawah ini




okeh.. sisanya silakan di utak atik yach.. buat user, create room dan lainnya silakan login menggunakan user yg pertama kali dibuat..

salam hangat

Jumat, 05 Maret 2010

membangun Chat Server menggunakan Openfire di Centos 5

Instalasi Chat Server menggunakan openfire di Centos 5

langsung aja ga pake banyak cincong nih.. soalnya saya dah kelar instalasi, sisanya lg di utak atik.. hehehe

biar langsung inget nih instalasinya...

download openfire di websitenya yg versi terbaru

file berada dalam dir /usr/local/src
extract openfire ke dalam direktori /opt

# cd /usr/local/src # tar zxvf openfire-3.4.6.tar.gz -C /opt # cd /opt/openfire/bin


saya menggunakan database Mysql, buat dulu databasenya

# mysql -u root -p mysql> create database openfire; <--- terserah mo buat nama databasenya loh

mysql> grant all privileges to *. openuser@localhost identified by 'password'


mysql> quit


masuk kedalam direktori /opt/openfire/bin/resources/database
# cd /opt/openfire/bin/resources/database

lakukan copi data mysql kedalam database mysql

# cat openfire_mysql.sql | mysql -u root -p [namadatabase]

bila sudah selesai jalankan servicesnya :

# /opt/openfire/bin/openfire start

buka web dengan alamat http://localhost:9090
akan kluar tampilan sebagai berikut :



masukan nama domain anda untuk dijadikan alamat webchatnya.





disini saya menggunakan database mysql, jgn lupa masukan username dan password user mysql yg td telah dibuat atau bisa menggunakan root.




dalam tab profile setting saya menggunakan server LDAP, bila tidak menggunakan LDAP maka pilih default saja.



masukan hostname server ldap, jangan lupa isi base DN nya dan administrator DN nya
contoh :
pilih openldap or active directory
Base DN : dc=tester,dc=com
Administrator DN : cn=Manager,dc=tester,dc=com

klik test untuk melihat sudah benarnya koneksi ke server ldap
lalu klik continue





klik continue


klik continue


pilih user administrator untuk mengolah openfire, lalu klik continue



bila semua langkah sudah selesai maka akan kluar tampilan untuk menuju ke admin console
seperti berikut :


masukan username yg telah dibuat tadi dan passwordnya, bila login berhasil maka akan kluar tampilan seperti ini :



nah openfire telah selesai diinstalasi, silakan lakukan configurasi untuk servernya dan clientnya...

disini saya menggunakan spark dan pidgin untuk client.. :D

terima kasih.. last project sudah selesai..

sisanya tinggal tunggu project helpdesk yach..

Senin, 01 Maret 2010

Instalasi Postfix Menggunakan Courier IMAP di Centos

Instalasi Postfix Menggunakan Courier IMAP di Centos

I. PENDAHULUAN

Postfix merupakan program server mail yang banyak digunakan karena kemudahan dalam mengkonfigurasinya. Program yang dibuat oleh Wietse Venema ini dirancang supaya mudah dikonfigurasi, aman, dan cepat dalam operasinya. Karena keuntungan-keuntungan yang didapatkan sangat banyak ketika menggunakan postfix, maka banyak distro linux memaketkan program ini kedalam paket distronya yang salah satunya adalah distro Centos. Mungkin banyak tutorial di internet yang telah menjelaskan tentang bagaimana cara instalasi postfix di berbagai macam distro linux namun di dalam tutorial ini, kita akan menginstal postfix di Centos 5.4 dengan virtual domain yang dilengkapi dengan SASL, SSL, Courier Authlib, dan menggunakan Courier IMAP sebagai POP3/IMAP. Kita akan menggunakan mysql sebagai database postfix dan squirrelmail sebagai webmailnya. Dan untuk memudahkan membuat user dan domain di dalam postfix, kita akan menggunakan postfixadmin. Penulis menggunakan domain latihanlinux.co.cc dengan IP 192.168.0.248.

II. INSTALASI POSTFIX

A. Mengorganisasi Paket-Paket
1. Instalasi paket-paket
# yum -y install openldap-devel openldap-servers expect-devel gamin-devel httpd* php*

mysql* rpm-build* libtool gdbm-devel pam-devel gcc-c++ redhat-rpm-config
libtool-ltdl-devel libtool-ltdl postgresql-devel pam-devel

2. Download Paket-Paket
# cd /usr/local/src

# wget ftp://ftp.reverse.net/pub/postfix/official/postfix-2.6.5.tar.gz
# wget ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-2.1.22.tar.gz
# wget http://sourceforge.net/projects/courier/files/authlib/0.62.4/courier-authlib-0.62.4.tar.bz2/download
# wget http://sourceforge.net/projects/courier/files/imap/4.5.1/courier-imap-4.5.1.tar.bz2/download
# wget squirrelmail
# wget postfixadmin
3. Cek Paket-Paket
# rpm -qa | grep sendmail;rpm -qa | grep postfix;rpm -qa | grep cyrus;rpm -qa | grep dovecot

4. Uninstal Paket-Paket
# rpm -e sendmail-8.13.8-2.el5 sendmail-cf-8.13.8-2.el5 postfix-2.3.3-2.1.el5_2

cyrus-imapd-perl-2.3.7-2.el5 cyrus-imapd-2.3.7-2.el5 cyrus-imapd-2.3.7-2.el5
cyrus-sasl-2.1.22-4 cyrus-imapd-utils-2.3.7-2.el5 dovecot-1.0.7-7.el5 --nodeps
B. Konfigurasi Hostname
1. Merubah Hostname
Penulis mengisi file network sebagai berikut:
# vi /etc/sysconfig/network

NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=mail

2. Merubah Hosts

Penulis merubah file hosts sehingga menjadi seperti berikut:
# vi /etc/hosts

127.0.0.1 localhost.localdomain localhost
192.168.0.248 mail.latihanlinux.co.cc mail

3. Restart hostname
Restart hostname dengan cara:
/bin/hostname -f /etc/hosts

C. Instalasi Cyrus-SASL
Cyrus-SASL merupakan software yang menyediakan metode dan mekanisme yang berbeda untuk autentifikasi.
1. Ekstrak Paket
# cd /usr/local/src

# tar -zxvf cyrus-sasl-2.1.22.tar.gz
# cd cyrus-sasl-2.1.22

2. Instalasi Paket
# export CPPFLAGS="-I/usr/include/mysql"

# export LDFLAGS="-L/usr/lib/mysql -lmysqlclient -lz -lm"
# ./configure --enable-anon --enable-plain --enable-login --enable-sql --disable-krb4
--disable-otp --disable-cram --disable-digest --with-mysql=/usr/lib/mysql --without-pam
--without-saslauthd --without-pwcheck --prefix=/usr --with-plugindir=/usr/lib/sasl2;
make -j2; make install
D. Instalasi Postfix
1. Menghapus user dan grup
# userdel postfix

# groupdel postdrop
2. Membuat user dan grup
# groupadd -g 500 postfix

# groupadd -g 501 postdrop
# useradd -g 500 -G postdrop postfix
# id postfix

3. Ekstrak Postfix
# cd /usr/local/src

# tar -zxvf postfix-2.6.5.tar.gz
# cd postfix-2.6.5
# make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -DUSE_TLS
-DUSE_CYRUS_SASL -I/usr/include/sasl' 'AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lz
-lm -L/usr/lib -lssl -lcrypto -lsasl2'
# make install

Setelah itu, kita akan diberikan banyak pertanyaan tentang folder-folder yang akan dijadikan sebagai folder postfix. Daripada bingung, sebaiknya tekan enter saja semua pertanyaan tersebut karena linux telah menyediakan folder-folder default untuk postfix jika kita menekan enter.


4. Konfigurasi Postfix
a. Konfigurasi main.cf
# cd /etc/postfix/

# cp main.cf main.cf.ori
Tambahkan file main.cf dengan skrip sebagai berikut:

# vi main.cf
alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
broken_sasl_auth_clients = yes
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
home_mailbox = Maildir/
html_directory = no
mail_owner = postfix
mailq_path = /usr/bin/mailq
manpage_directory = /usr/local/man
mydomain = latihanlinux.co.cc
myhostname = mail.latihanlinux.co.cc
myorigin = #myhostname
newaliases_path = /usr/bin/newaliases
queue_directory = /var/spool/postfix
readme_directory = no
sample_directory = /etc/postfix
sendmail_path = /usr/sbin/sendmail
setgid_group = postdrop
smtp_tls_note_starttls_offer = yes
smtp_use_tls = yes
smtpd_banner = #myhostname ESMTP "mail.latihanlinux.co.cc"
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_invalid_hostname, reject_non_fqdn_hostname, reject_unknown_sender_domain,reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unauth_pipelining,reject_unauth_destination,permit
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = #myhostname
smtpd_sasl_security_options = noanonymous
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
smtpd_use_tls = yes
tls_random_source = dev:/dev/urandom
unknown_local_recipient_reject_code = 550
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_gid_maps = static:500
virtual_mailbox_base = /var/vmail/
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 500
virtual_transport = virtual
virtual_uid_maps = static:500

Perlu diingat bahwa di dalam penulisan di file main.cf diusahakan bagaimana caranya agar satu skrip dalam satu baris khususnya pada bagian smtpd_recipient_restrictions.

b. Membuat file-file
Buat file tersebut di foler /etc/postfix dan tambahkan skrip sebagai berikut:
# vi mysql_virtual_alias_maps.cf

user = postfix
password = password123
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
# vi mysql_virtual_domains_maps.cf

user = postfix
password = password123
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'

# vi mysql_virtual_mailbox_maps.cf

user = postfix
password = password123
hosts = localhost
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'

E. Membuat Sertifikat SSL
SSL (Secure Sockets Layer) adalah teknologi standar keamanan yang diperlukan untuk komunikasi melalui jaringan seperti internet dan sekarang berubah menjadi TLS (Transport Layer Security). Berikut adalah langkah-langkahnya:
# mkdir /etc/postfix/ssl

# cd /etc/postfix/ssl/
# openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
# chmod 600 smtpd.key
# openssl req -new -key smtpd.key -out smtpd.csr
# openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
# openssl rsa -in smtpd.key -out smtpd.key.unencrypted
# mv -f smtpd.key.unencrypted smtpd.key
# openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650
# chmod o= /etc/postfix/ssl/smtpd.key

F. Instalasi Courier Authlib
Courier Authlib merupakan sebuah set dari program-program yang dibuat untuk menangani autentifikasi request login ke service-service paket courier IMAP.
# cd /usr/local/src

# rpmbuild -ta courier-authlib-0.62.4.tar.bz2
# cd /usr/src/redhat/RPMS/i386/
# rpm -ivh courier-authlib*

G. Instalasi Courier-IMAP
Courier-IMAP merupakan software dari courier yang digunakan untuk metode pengiriman email. Program ini mendukung format penyimpanan email dengan menggunakan format Maildir. Dalam hal ini kita menggunakan Courier-Imap untuk backend dari webmail squirrelmail. Untuk menginstalasinya, tidak bisa langsung melalui root, tetapi harus non root.
# useradd courier

$ su courier
$ mkdir $HOME/rpm
$ mkdir $HOME/rpm/SOURCES
$ mkdir $HOME/rpm/SPECS
$ mkdir $HOME/rpm/BUILD
$ mkdir $HOME/rpm/SRPMS
$ mkdir $HOME/rpm/RPMS
$ mkdir $HOME/rpm/RPMS/i386
$ echo "%_topdir $HOME/rpm" >> $HOME/.rpmmacros
$ mkdir $HOME/downloads
$ cd $HOME/downloads
$ cd /usr/local/src
$ sudo mv courier-imap* $HOME/downloads
Tekan saja Enter untuk menjawab tentang password.
$ rpmbuild -ta courier-imap*

Balik lagi menjadi root
$ su

# cd /home/courier/rpm/RPMS/i386
# rpm -ivh courier-imap*

H. Edit File-File

1. Edit file authmysqlrc
Tambahkan di file authmysqlrc dengan skrip sebagai berikut:
# cd /etc/authlib/

# mv authmysqlrc authmysqlrc.ori
# vi /etc/authlib/authmysqlrc
MYSQL_SERVER localhost
MYSQL_USERNAME postfix
MYSQL_PASSWORD password123
MYSQL_PORT 0
MYSQL_OPT 0
MYSQL_DATABASE postfix
MYSQL_USER_TABLE mailbox
MYSQL_CRYPT_PWFIELD password
MYSQL_CLEAR_PWFIELD password
MYSQL_UID_FIELD '500'
MYSQL_GID_FIELD '500'
MYSQL_LOGIN_FIELD username
MYSQL_HOME_FIELD '/var/vmail/'
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD maildir

2. File authdaemonrc
Rubah file authdaemonrc dengan cara merubah authmodulelist dan DEBUG_LOGIN:
# cp authdaemonrc authdaemonrc.ori

# vi authdaemonrc
authmodulelist="authmysql authpam"
DEBUG_LOGIN=1

3. Membuat file SMTP-AUTH
Buat file smtpd.conf dan tambahkan skrip di bawah:
# vi /usr/lib/sasl2/smtpd.conf

pwcheck_method: authdaemond
log_level: 3
mech_list: PLAIN LOGIN
authdaemond_path:/var/spool/authdaemon/socket
# chmod o+x /var/spool/authdaemon

4. Membuat file direktori vmail
File vmail digunakan untuk menyimpan data user postfix.
# mkdir /var/vmail

# chown -R postfix:postfix /var/vmail/

I. MENYALAKAN SERVICE

1. Nyalakan courier-authlib
# chkconfig --levels 235 courier-authlib on

# /etc/init.d/courier-authlib start

2. Nyalakan authdaemon
# chkconfig --levels 235 courier-imap on

# /etc/init.d/courier-imap start


3. Nyalakan Postfix
# postfix start
TROUBLESHOOTING
Jika ada error seperti ini:


Hal ini dikarenakan kita tidak menulis salah satu bagian skrip di /etc/postfix/main.cf dalam satu baris. Usahakanlah bagaimana caranya agar satu skrip di dalam file tersebut berada dalam satu baris. Jika sudah diperbaiki, tuliskan perintah postfix start dan seharusnya postfix sudah dapat menyala dengan baik seperti pada gambar:

J. Menginstal Postfixadmin

1. Ekstrak Paket
# cd /usr/local/src

# tar -zxvf postfixadmin_2.3.tar.gz

2. Konfigurasi Postfixadmin
# mv postfixadmin-2.3 postfixadmin

# cp -r postfixadmin /var/www/html/
# cd /var/www/html/postfixadmin

Merubah file config.inc.php menjadi seperti berikut:
# vi config.inc.php

$CONF['configured'] = true;
$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'password123';
$CONF['database_name'] = 'postfix';
$CONF['database_prefix'] = '';

K. Konfigurasi mysql
1. Masuk ke mysql
# mysql -u root -p
2. Membuat database postfix
> create database postfix;
3. Membuat Grant untuk database postfix
> grant all on postfix.* to postfix@localhost identified by 'password123';

> \q

L. Melihat Postfixadmin
1. Restart webserver
# service httpd restart
2. Lihat ke browser lalu ketikkan:
http://alamat_ip/postfixadmin/setup.php
Jika tidak ada error, maka akan terlihat sebagai berikut:


Masukkan password di dalam kotak yang telah disediakan Lalu tekan tombol Generate Password Hash.


Kemudian terlihat gambar seperti ini:


Masukkan password yang sudah digenerate itu (ce3157e...) ke dalam file conf.inc.php yang berada di folder /var/www/html/postfixadmin pada bagian $CONF['setup_password']. Setelah itu isi kotak Setup password yang berada di atas dengan menuliskan password yang belum digenerate. Kemudian tuliskan email admin dan password yang akan digunakan untuk mengakses postfixadmin. Jika semuanya selesai dan tidak ada error, maka Setelah kita menekan tombol Add Admin, akan terlihat gambar seperti berikut:


Masukkan nama email dan password yang sudah kita buat sebelumnya. Jika sudah tekan tombol Login dan akan terlihat gambar seperti berikut:


Kita akan membuat virtual domain dan user account email. Untuk membuat domain baru, pilih item Domain List, lalu pilih New Domain. Sedangkan untuk membuat user account yang baru pilih item Virtual List lalu pilih Add Mailbox. Di tutorial ini, penulis membuat domain latihanlinux.co.cc dengan akun email budi@latihanlinux.co.cc This e-mail address is being protected from spambots, you need JavaScript enabled to view it .

M. Instalasi Webmail
Webmail yang akan kita gunakan adalah squirrelmail. Berikut adalah langkah-langkahnya:
# cd /usr/local/src

# tar -zxvf squirrelmail-1.4.19.tar.gz
# mv squirrelmail-1.4.19 webmail
# mv webmail /var/www/html/
# mkdir -p /var/local/squirrelmail/data/
# mkdir -p /var/local/squirrelmail/attach/
# chown apache:apache /var/local/squirrelmail/data/
# chown apache:apache /var/local/squirrelmail/attach/
Kemudian kita konfigurasi webmail dengan cara:
# cd /var/www/html/webmail

# ./configure
- Pilih Nomor 2 (Server Settings)
- Pilih Huruf A (Update IMAP Settings)
- Pilih Nomor 6 (Authentification type)
Jawab Pertanyaan dengan menjawab N dan login
- Pilih Nomor 8 (Server Software)
Tulis courier
- Pilih Huruf B (Update SMTP Settings)
- Pilih Nomor 7 (SMTP Authentification)
Jawab Pertanyaan dengan N, login, dan N
- Pilih Huruf S
- Pilih Huruf Q
Jika tidak ada error, maka bisa melihat webmail ini dengan membuka browser namun sebelumnya restart webserver terlebih dahulu:
http://alamat_ip/webmail

Masukkan username dan passwordnya, dan setelah itu tekan tombol Login. Maka, akan terlihat sebagai berikut:

TROUBLESHOOTING

Jika setelah menekan tombol login, terlihat gambar seperti berikut:


Masalah ini biasanya timbul jika kita menginstal squirrelmail bawaan dari centos atau menginstalnya melalui yum. Untuk menghilangkannya, coba ke folder /etc/squirrelmail lalu buka file config_local.php kemudian hapus atau beri tanda pagar pada bagian $default_folder_prefix. Setelah itu restart webserver dan seharusnya error itu sudah hilang.

III. Testing Postfix

Jika kita sudah selesai menginstal postfix dan membuat postfixadmin, kini saatnya kita menguji postfix.
1. Pengujian Courier Authdaemon
Untuk menguji Authdaemon, ketikkan format sebagai berikut:
# authtest -s smtp alamat_email password_email
Untuk lebih jelasnya perhatikan gambar di bawah ini:
2. Pengujian POP3
Untuk menguji POP3 dalam sistem kita, ketikkan format sebagai berikut:
# telnet localhost 110
lalu masukkan alamat email dengan terlebih dahulu menulis kata user. Setelah itu masukkan password dengan terlebih dahulu menulis kata pass. Untuk lebih jelasnya perhatikan gambar berikut:
3. Pengujian IMAP
Untuk menguji IMAP, kita menggunakan format:
# telnet localhost 143
lalu tuliskan a login kemudian tuliskan alamat_email dan passwordnya. Jika mau keluar tulis a logout. Untuk lebih jelasnya perhatikan gambar berikut:

4. Pengujian smtp
Untuk menguji smtp, tuliskan perintah berikut:
# telnet localhost 25 
setelah itu tuliskan ehlo localhost maka akan tampil item-item. Tuliskan starttls untuk melihat apakah smtp kita dapat menggunakn tls atau tidak. Untuk keluar gunakan perintah quit sebanyak 2 kali. Untuk lebih jelasnya perhatikan gambar berikut:
6. Menguji email
Untuk menguji email, buatlah 2 user dengan menggunakan postfixadmin dan cobalah saling kirim dengan menggunakan webmail (squirrelmail) dan seharusnya email sudah dapat saling terkirim dengan baik. Jika email tidak terkirim, cobalah cek error lognya di /var/log/maillog.