Virtual domain di postfix dengan tpop3d, courier-imap dan squirrelmail

Asfihani (asfik@cakraweb.com)

10 April 2003
Mengkonfigurasi virtual domain (dengan format Maildir) pada postfix memang tidak semudah mengkonfigurasi virtual domain pada qmail+vpopmail ataupun qmail+vmailmgr. Saya yakin, dokumentasi ini sangat minim, sehingga tool untuk mengadministrasi user melalui web pun tidak dibahas (karena saya belum tahu tool tersebut hehe). Anda mungkin bertanya mengapa tidak menggunakan mysql atau semacamnya sebagai backend dari virtual domainnya, dan jawabannya cuman satu : karena saya tidak ingin menggunakannya. Seperti biasa, tidak ada copyright apapun dalam dukumen ini, anda bebas menyalin, mencetak, maupun memodifikasi (dengan menyertakan nama penulis asli). Jika ada pertanyaan silakan join #indolinux di EFnet IRC Network, disana banyak rekan-rekan yang akan membantu anda. Oh iya tidak lupa saya ucapkan terima kasih kepada pak PY Adi Prasaja yang selalu jadi acuan jika ada error :). Saran, koreksi, kritik, kesalahan ketik, maupun ucapan silakan dikirimkan ke email tersebut diatas. Terima Kasih. CATATAN: Tutorial ini tidak cocok bagi yang baru mendalami Postfix dan hanya sesuai dengan Postfix versi 2.0.6 :-)

Untuk ahli matematika dan algoritma : Abu Ja'far Muhammad ibnu Musa Al-Khwarizmi (Baghdad 780 - ? 850) dan komposer musik klasik sejati : Wolfgang Amadeus Mozart (Salzburg 1756 - Vienna 1791)

1. Instal Postfix

Sebelum memulai, silakan anda uninstall software mailserver (MTA) lain yang berada dalam server anda misalnya untuk Redhat biasanya terdapat sendmail dan postfix standar, dan silakan anda membuat sebuah direktori temporari untuk memudahkan penyimpanan source yang akan didownload. Anda boleh membuat direktori dengan nama sembarang, seperti biasa disini saya membuat direktori dengan nama src :

[root@wolfgang asfik]# service sendmail stop
[root@wolfgang asfik]# for a in $(rpm -qa | grep sendmail); do rpm -e --nodeps $a; done
[root@wolfgang asfik]# for a in $(rpm -qa | grep postfix); do rpm -e --nodeps $a; done
[root@wolfgang asfik]# mkdir src
[root@wolfgang asfik]# cd src

Buat username dan group yang akan mengurusi postfix :

[root@wolfgang src]# adduser -M -d /no/home -s /no/shell postfix 
[root@wolfgang src]# groupadd postdrop

Download source postfix (yang paling baru), anda bisa mendapatkannya dari mirror terdekat di Indonesia yaitu ISP CBN (untuk mirror yang lain silakan anda berkunjung ke http://www.postfix.org), serta download patch (yang paling baru dan sesuai dengan postfi-nya) untuk digunakan pada virtual delivery agent :

[root@wolfgang src]# wget \
ftp://ftp.cbn.net.id/mirror/postfix-release/official/postfix-2.0.6.tar.gz 
[root@wolfgang src]# wget \
http://ftp.oav.net/others/postfix/VDA/postfix-2.0.6.patch.gz 

Ekstrak :

[root@wolfgang src]# gunzip postfix-2.0.6.patch.gz 
[root@wolfgang src]# tar -xzvf postfix-2.0.6.tar.gz

Ganti ke direktori source postfix, patch kemudian install. Pada waktu melaksanakan make install nantinya anda akan ditanya-tanya, tekan enter saja :) :

[root@wolfgang src]# cd postfix-2.0.6 
[root@wolfgang postfix-2.0.6]# patch -p1 < ../postfix-2.0.6.patch 
[root@wolfgang postfix-2.0.6]# make 
[root@wolfgang postfix-2.0.6]# make install

Edit file /etc/postfix/main.cf pada bagian :

myhostname = wolfgang.cs.perbanas.edu
mydestination = $myhostname, localhost.$mydomain 
mynetworks = 127.0.0.0/8 
alias_maps = hash:/etc/aliases 
alias_database = hash:/etc/aliases 
home_mailbox = Maildir/ 

Silakan anda ganti myhostname dengan hostname yang FQDN, biasanya adalah host dimana postfix tersebut dijalankan. Pada mydestination silakan anda tambahkan domain yang dianggap sebagai domain lokal bukan domain virtual. Jika anda merencanakan postfix agar bisa digunakan sebagai smtp dari network anda (misalnya network 10.126.10.0/24) maka anda tambahkan pada mynetworks = 10.126.10.0/24 . Dan jika anda ingin menggunakan RBL untuk melawan email spam maka tambahkan :

maps_rbl_domains = relays.ordb.org 
smtpd_helo_restrictions = reject_maps_rbl, permit_mynetworks

Untuk menolak pengirim dari domain yang tidak mempunya record A atau MX :

smtpd_sender_restrictions = reject_unknown_sender_domain

Kemudian bikin email alias yang akan mengurusi hal-hal yang berkaitan dengan urusan teknis (ganti email asfik@cs.perbanas.edu sesuai dengan konfigurasi yang anda inginkan) :

[root@wolfgang src]# echo "postfix: root" > /etc/aliases 
[root@wolfgang src]# echo "root : asfik@cs.perbanas.edu" >> /etc/aliases 
[root@wolfgang src]# echo "mailer-daemon : asfik@cs.perbanas.edu" >> /etc/aliases
[root@wolfgang src]# echo "postmaster : asfik@cs.perbanas.edu" >> /etc/aliases

Bikin database dari file aliases :

[root@wolfgang src]# newaliases 

Start daemon postfix :

[root@wolfgang src]# postfix start

Jika anda perhatikan file log (tail -f /var/log/maillog)akan anda dapatkan :

Mar 26 15:21:49 wolfgang postfix/postfix-script: starting the Postfix mail system 
Mar 26 15:21:49 wolfgang postfix/master[4043]: daemon started -- version 2.0.6

Untuk menjalankan daemon postfix secara otomatis setiap kali server direstart :

[root@wolfgang src]# echo "/usr/sbin/postfix start" >> /etc/rc.local

Kemudian anda bisa mencoba mengetest mengirimkan suatu email ke domain lokal yang sesuai dengan definisi pada mydestination. Jika suskses, maka akan masuk ke dalam direktori Maildir/ di home direktori user yang anda kirimin email. Langkah selanjutnya adalah mengkonfigurasi user sistem yang akan bertugas mengurusi semua virtual domain di postfix, disini kita misalkan user tersebut adalah virtual :

[root@wolfgang src]# adduser virtual 

Cek UID dan GID dari informasi user tersebut karena akan kita gunakan untuk pada konfigurasi postfix :

[root@wolfgang src]# id virtual 
uid=521(virtual) gid=522(virtual) groups=522(virtual) 

Edit kembali file /etc/postfix/main.cf, tambahkan beberapa baris berikut ini (ganti angka 521/522 dengan UID/GID dari user yang akan kita jadikan sebagai basecamp domain-domain virtual, misalnya user virtual) :

mailbox_transport = virtual 
virtual_mailbox_base = /home/virtual 
virtual_mailbox_maps = hash:/etc/postfix/virtual 
virtual_uid_maps = static:521 
virtual_gid_maps = static:522 
virtual_create_maildirsize = yes 

Pada virtual_mailbox_base tersebut nantinya email semua virtual domain akan disimpan pada direktori tersebut. Oleh karena itu pada waktu adduser user virtual tersebut anda bisa menentukan dimana kira-kira sisa harddisk anda yang paling banyak, tentunya anda bisa menggunakan argument -d pada waktu adduser untuk mengarahkannya. Sebagai contoh misalnya kita akan membuat sebuah virtual domain yang bernama cs.perbanas.edu, maka nantinya semua email pada domain tersebut akan disimpan pada direktori /home/virtual/cs.perbanas.edu .

Langkah selanjutnya adalah edit file /etc/postfix/virtual, pada bagian paling bawah tambahkan :

cs.perbanas.edu         Computer Science Department STIMIK Perbanas

Kemudian juga kita bikin sebuah account test misalnya asfik@cs.perbanas.edu, maka anda tambahkan juga pada file yang sama (tanda / pada akhir baris menujukkan penggunaan format Maildir sebagai penyimpanan email) :

asfik@cs.perbanas.edu   cs.perbanas.edu/asfik/ 

Jangan lupa email postmaster@cs.perbanas.edu juga akan diforward ke asfik@cs.perbanas.edu, maka kita tambahkan :

postmaster@cs.perbanas.edu      cs.perbanas.edu/asfik/

Bikin database dari file tersebut :

[root@wolfgang src]# postmap /etc/postfix/virtual

Test untuk mengirim ke email tersebut (jangan khawatir, karena postfix akan membuatkan direktori new,cur,tmp secara otomatis), maka jika sukses konfigurasi anda, pada file /var/log/maillog bisa anda dapatkan :

Mar 29 14:14:56 wolfgang postfix/virtual[9689]: E81EABB3A: to=<asfik@cs.perbanas.edu>,
relay=virtual, delay=0, status=sent (maildir)

Untuk memastikan anda bisa memeriksa file email tersebut pada direktori /home/virtual/cs.perbanas.edu/asfik/new :

[root@wolfgang src]# ls /home/virtual/cs.perbanas.edu/asfik/new/
1049073505.V307I14f59f.wolfgang.cs.perbanas.edu

Jika anda ingin membatasi quota setiap user virtual, edit file /etc/postfix/main.cf, kemudian tambahkan baris berikut ini :

virtual_mailbox_limit_maps = hash:/etc/postfix/vquota 
virtual_mailbox_limit_override = yes

Reload daemon postfix :

[root@wolfgang src]# postfix reload 

Kemudian buat file /etc/postfix/vquota, misalnya untuk user virtual asfik@cs.perbanas.edu akan kita quota sebesar 1 Mb, maka pada file tersebut tambahkan sebagai berikut :

asfik@cs.perbanas.edu   1024000

Generate database dari file tersebut supaya dibaca oleh postfix :

[root@wolfgang src]# postmap /etc/postfix/vquota 

Bila anda melakukan penambahan virtual domain yang lain (lagi), anda tinggal mengedit file /etc/postfix/virtual, misalnya sebagai contoh untuk menambahkan domain alkhwarizmi.net dengan user asfik@alkhwarizmi.net:

alkhwarizmi.net                Al-Khwarizmi Foundation 
asfik@alkhwarizmi.net          alkhwarizmi.net/asfik/ 

Jika sukses semua email untuk user di domain alkhwarizmi.netnanti akan disimpan pada direktori /home/virtual/alkhwarizmi.net dan seperti biasa, jangan lupa untuk melakukan postmap ke pada file /etc/postfix/main.cf agar database yang baru dibaca oleh postfix.

2. Install tpop3d

Sebagai POP3 servernya kita gunakan tpop3d yang mendukung format Maildir dengan menggunakan metode autentikasi file text biasa (flat-text/flat file), donwload tpop3d (yang paling baru) dan patch untuk auth-flatfile:

[root@wolfgang src]# wget \
http://www.ex-parrot.com/~chris/tpop3d/tpop3d-1.4.2.tar.gz 
[root@wolfgang src]# wget \
http://www.ex-parrot.com/~chris/tpop3d/tpop3d-1.4.2-auth-flatfile-broken.patch 

Ekstrak, kemudian ganti direktori ke source tpop3d :

[root@wolfgang src]# tar -xzvf tpop3d-1.4.2.tar.gz 
[root@wolfgang src]# cd tpop3d-1.4.2 

Patch, kemudian compile,dan install :

[root@wolfgang tpop3d-1.4.2]# patch -p0 < ../tpop3d-1.4.2-auth-flatfile-broken.patch
[root@wolfgang tpop3d-1.4.2]# ./configure --enable-auth-flatfile --enable-mbox-maildir
[root@wolfgang tpop3d-1.4.2]# make 
[root@wolfgang tpop3d-1.4.2]# make install 

Buat file /etc/tpop3d.conf isinya :

listen-address: 0.0.0.0 
log-facility: local6 
mailbox: maildir:/home/virtual/$(domain)/$(local_part)/ 
auth-flatfile-enable: yes 
auth-flatfile-passwd-file: /etc/virtual/$(domain)/passwd 
auth-flatfile-mail-user: virtual 
auth-flatfile-mail-group: virtual 

Jika user yang menghandel domain virtual adalah bukan user virtual, maka silakan anda sesuaikan pada auth-flatfile-mail-user dan auth-flatfile-mail-group . Kemudian karena kita tidak ingin membanjiri file /var/log/maillogdengan pesan dari daemon tpop3d maka kita putuskan untuk menyimpan log tersebut pada file yang lain, misalnya /var/log/tpop3d.log, maka pada file /etc/syslog.conf tambahkan :

local6.*                                                /var/log/tpop3d.log

Bikin file /var/log/tpop3d.log :

[root@wolfgang src]# touch /var/log/tpop3d.log 

Restart syslogd anda (killall -HUP syslogd atau service syslog restart), kemudian jalankan daemon tpop3d :

[root@wolfgang src]# /usr/local/sbin/tpop3d

Untuk menjalankan daemon tersebut secara otomatis setiap kali server direstart :

[root@wolfgang src]# echo "/usr/local/sbin/tpop3d" >> /etc/rc.local

Buat direktori untuk menyimpan database password untuk user virtual, nantinya setiap password dari virtual domain akan disimpan dengan format berikut /etc/virtual/DOMAIN/passwd misanyalnya untuk domain cs.perbanas.edu akan disimpan dalam file /etc/virtual/cs.perbanas.edu/passwd:

[root@wolfgang src]# mkdir /etc/virtual

Sebenarnya anda bisa membuat sendiri data password tersebut dengan menggunakan utilitas htpasswd yang bisa anda dapatkan dari paket software apache. Format password yang digunakan adalah sama dengan format password pada file /etc/passwd . Namun, saya juga membuat shell script yang sangat sederhana dan juga menggunakan (membutuhkan binari) dari htpasswd tersebut, anda bisa mendapatkannya di http://people.cakraweb.com/~asfik/vtadduser dan http://people.cakraweb.com/~asfik/vtdeluser (tentu anda harus mencocokkan variabel-variabel yang dibutuhkan jika berbeda dengan contoh disini) :

[root@wolfgang src]# wget http://people.cakraweb.com/~asfik/vtadduser
[root@wolfgang src]# wget http://people.cakraweb.com/~asfik/vtdeluser
[root@wolfgang src]# mv {vtadduser,vtdeluser} /usr/bin 
[root@wolfgang src]# chmod 755 /usr/bin/{vtadduser,vtdeluser}

Misalkan untuk membuat password user asfik@cs.perbanas.edu dengan password rahasiadeh :

[root@wolfgang src]# vtadduser asfik@cs.perbanas.edu rahasiadeh 

Test dengan telnet ke localhost port 110 (tentunya anda juga bisa mencobanya dengan Eudora atau MUA kesayangan anda yang lain) :

[root@wolfgang src]# telnet localhost 110 
Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]'. 
+OK <c5e60956fa012a8f01224c673a0f162f@wolfgang.cs.perbanas.edu> 
user asfik@cs.perbanas.edu 
+OK Tell me your password. 
pass rahasiadeh 
+OK Welcome aboard! You have 2 messages. 
list
+OK Scan list follows: 
1 794 
. 
quit 
+OK Done 
Connection closed by foreign host.

Untuk menghapus user dan password (tidak termasuk data email), anda bisa menggunakan perintah vtdeluser, misalnya :

[root@wolfgang src]# vtdeluser asfik@cs.perbanas.edu

Jika anda menginginkan data email user tersebut dihapus juga, anda bisa menghapus secara manual direktori /home/virtual/cs.perbanas.edu/asfik, jika anda tidak menginginkan akses email dengan menggunakan webmail maka anda sudah selesai mengkonfigurasi postfix dengan virtual domain dan pop3 servernya :)

3. Instal Courier-IMAP

Courier Imap, sesuai dengan namanya adalah sebuah IMAP server yang mendukung format penyimpanan email dengan menggunakan format Maildir. Dalam hal ini kita menggunakan Courier Imap untuk backend dari webmail squirrelmail.

Donwload courier-imap (yang paling baru), ekstrak sourcenya, dan kita kompilasi :

[root@wolfgang src]# wget \
http://www.courier-mta.org/beta/imap/courier-imap-1.7.1.20030319.tar.bz2 
[root@wolfgang src]# tar -jxvf courier-imap-1.7.1.20030319.tar.bz2 
[root@wolfgang src]# cd courier-imap-1.7.1.20030319 
[root@wolfgang courier-imap-1.7.1.20030319]# ./configure \
--enable-workarounds-for-imap-client-bugs \
--disable-root-check 
[root@wolfgang courier-imap-1.7.1.20030319]# make 
[root@wolfgang courier-imap-1.7.1.20030319]# make install 

Kita tidak membutuhkan module autentikasi yang lain (jika ada), jadi module dari courier-imap kita dihapus saja :) :

[root@wolfgang courier-imap-1.7.1.20030319]# rm -rf /usr/lib/courier-imap/libexec/authlib/*

Salin modul authuserdb dari source courier-imap yang telah kita kompilasi diatas ke direktori modul authentikasi untuk imap servernya :

[root@wolfgang courier-imap-1.7.1.20030319]# cp authlib/authuserdb \
/usr/lib/courier-imap/libexec/authlib/ 

Salin file konfigurasi standar dari courier-imap :

[root@wolfgang courier-imap-1.7.1.20030319]# cp /usr/lib/courier-imap/etc/imapd.dist \
/usr/lib/courier-imap/etc/imapd 
[root@wolfgang courier-imap-1.7.1.20030319]# cp /usr/lib/courier-imap/etc/imapd-ssl.dist \
/usr/lib/courier-imap/etc/imapd-ssl 

Edit file /usr/lib/courier-imap/etc/imapd , karena courier imap ini hanya digunakan untuk webmail ganti pada baris ADDRESS=0 menjadi ADDRESS=127.0.0.1 . Jika webmail anda adalah webmail yang sibuk, anda bisa menaikkan variabel MAXDAEMONS dan MAXPERIP, yang terpenting adalah ganti pada AUTHMODULES="authdaemon" menjadi AUTHMODULES="authuserdb":

Start daemon courier-imap :

[root@wolfgang courier-imap-1.7.1.20030319]# /usr/lib/courier-imap/libexec/imapd.rc start

Anda bisa memeriksa apakah servise courier-imap anda sudah berjalan semestinya, kita gunakan perintah ps :

[root@wolfgang courier-imap-1.7.1.20030319]#  ps ax | grep imap 
32461 ?        S      0:00 /usr/lib/courier-imap/libexec/courierlogger imapd 
32458 ?        S      0:00 /usr/lib/courier-imap/libexec/couriertcpd -address=0 

Agar setiap reboot daemon courier-imap dijalankan secara otomatis :

[root@wolfgang courier-imap-1.7.1.20030319]# echo \
"/usr/lib/courier-imap/libexec/imapd.rc start" >> /etc/rc.local

Langkah selanjutnya adalah membuat user dan password IMAP yang akan digunakan sebagai autentikasi pada webmail squirrelmail dengan menggunakan skema autentikasi userdb . Buat direktori /etc/userdb, kemudian ubah modenya menjadi 700 :

[root@wolfgang src]# mkdir /etc/userdb 
[root@wolfgang src]# chmod 700 /etc/userdb 

Anda bisa menggunakan script sederhana yang saya buat untuk menambah atau menghapus user virtual di IMAP atau anda bisa juga melakukannya secara manual, anda bisa memilih sesuai mood anda :)

Jika menggunakan script, anda bisa mendownload script tersebut di http://people.cakraweb.com/~asfik/vtadduserimap dan http://people.cakraweb.com/~asfik/vtdeluserimap (tentu anda harus mencocokkan variabel-variabel yang dibutuhkan jika berbeda dengan contoh disini) :

[root@wolfgang src]# wget http://people.cakraweb.com/~asfik/vtadduserimap
[root@wolfgang src]# wget http://people.cakraweb.com/~asfik/vtdeluserimap
[root@wolfgang src]# mv {vtadduserimap,vtdeluserimap} /usr/bin 
[root@wolfgang src]# chmod 755 /usr/bin/{vtadduserimap,vtdeluserimap}

Untuk menambah user virtual di IMAP misalnya asfik@cs.perbanas.edu lakukan :

[root@wolfgang src]# vtadduserimap asfik@cs.perbanas.edu

Untuk menghapusnya :

[root@wolfgang src]# vtdeluserimap asfik@cs.perbanas.edu

Jika secara manual, yang pertama-tama anda lakukan adalah memasukkan PATH dari /usr/lib/courier-imap/sbin kedalam environment PATH anda :

[root@wolfgang src]# PATH=$PATH:/usr/lib/courier-imap/sbin 
[root@wolfgang src]# export PATH 

Buat entry misalnya untuk username asfik@cs.perbanas.edu (sesuaikan 521 /522 dengan UID/GID user virtual) :

[root@wolfgang root]# userdb -f /etc/userdb/cs.perbanas.edu \
asfik@cs.perbanas.edu set home=/home/virtual/cs.perbanas.edu/asfik \
mail=/home/virtual/cs.perbanas.edu/asfik uid=521 gid=522

Kemudian set password IMAP nya :

[root@wolfgang root]# userdbpw -md5 | userdb -f /etc/userdb/cs.perbanas.edu \
asfik@cs.perbanas.edu set imappw 

Langkah terakhir, buat databasenya :

[root@wolfgang root]# makeuserdb 

Selanjutnya untuk mengetest IMAP, kita install squirrelmail :)

4. Instal Squirrelmail

Menurut file INSTALL dari distribusi Squirrelmail, software ini membutuhkan php versi 4 yang minimal dikompilasi dengan opsi --enable-track-vars --enable-force-cgi-redirect --with-gettext serta membutuhkan register_global=On dan file_uploads = On di php.ini (jika php anda menggunakan default RPM Redhat file php.ini terletak didirektori /etc).

Download dan ekstrak paket squirrelmail (yang paling baru) :

[root@wolfgang src]# wget \
http://umn.dl.sf.net/sourceforge/squirrelmail/squirrelmail-1.2.11.tar.gz 
[root@wolfgang src]# tar -xzvf squirrelmail-1.2.11.tar.gz 

Diasumsikan diserver anda telah terinstall apache, maka tentukan letak direktori squirrelmail pada direktif DocumentRoot di httpd.confanda, misalnya disini saya letakkan didirektori /usr/local/httpd/htdocs/mail karena document root dari apachenya adalah /usr/local/httpd/htdocs:

[root@wolfgang src]# mv squirrelmail-1.2.11 /usr/local/httpd/htdocs/mail 

Tentukan user dan group yang menjalankan proses apache :

[root@wolfgang src]# egrep '^(User|Group)' /usr/local/httpd/conf/httpd.conf 
User www 
Group www 

Dari perintah diatas kita peroleh user www dan group www, kemudian ganti kepemilikan direktori /usr/local/httpd/htdocs/mail/data menjadi user www dan group www :

[root@wolfgang src]# chown -R www.www /usr/local/httpd/htdocs/mail/data/ 

Salin file konfigurasi standar ke file konfigurasi squirrelmail :

[root@wolfgang src]# cp /usr/local/httpd/htdocs/mail/config/config_default.php \
/usr/local/httpd/htdocs/mail/config/config.php 

Edit file tersebut dari $imap_server_type = 'cyrus'; menjadi$imap_server_type = 'courier'; :

[root@wolfgang src]# vi /usr/local/httpd/htdocs/mail/config/config.php 

Atau jika anda mengalami kesulitan anda bisa menggunakan script perl yang disertakan oleh squirrelmail, pada direktori config :

[root@wolfgang src]# cd /usr/local/httpd/htdocs/mail/config 
[root@wolfgang config]# ./conf.pl 

Kemudian silakan dicoba dengan browser anda, masukkan user yang telah anda buat misalnya asfik@cs.perbanas.edu

Enjoy :)

5. Lain-lain (Opsional)

5.1 SASL

Jika anda berencana menggunakan autentikasi ketika menggunakan smtp di postfix anda bisa menggunakan cyrus-sasl . SASL (Simple Authentication and Security Layer) adalah suatu metode untuk penambahan dukungan autentikasi terhadap suatu protokol, atau gampangnya jika hal ini berkaitan dengan postfix maka SASL bisa diartikan sebagai proses autentikasi suatu user terhadap smtp di postfix dengan password yang ter-enkrispi. Jadi setiap kali user tersebut mengirim email, maka akan selalu diminta memasukkan password terlebih dahulu.

Untuk menggunakan fitur ini anda harus mengkompilasi (ulang) postfix anda agar support sasl, pertama-tama jika ada cyrus-saslbawaan dari distro kita hapus dulu :

[root@wolfgang src]# for a in $(rpm -qa | grep sasl); do rpm -e --nodeps $a; done

Download cyrus-sasl (yang paling baru), ekstrak kemudian kompile, dan install :

[root@wolfgang src]# wget ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-1.5.28.tar.gz
[root@wolfgang src]# tar -xzvf cyrus-sasl-1.5.28.tar.gz 
[root@wolfgang src]# cd cyrus-sasl-1.5.28 
[root@wolfgang cyrus-sasl-1.5.28]# ./configure --enable-krb4=no 
[root@wolfgang cyrus-sasl-1.5.28]# make 
[root@wolfgang cyrus-sasl-1.5.28]# make install 

Buat symlink direktori /usr/local/lib/ssl ke direktori /usr/lib/sasl:

[root@wolfgang cyrus-sasl-1.5.28]# ln -s /usr/local/lib/sasl /usr/lib/sasl 

Buat file /usr/local/lib/sasl/smtpd.conf isinya :

pwcheck_method: sasldb

Jika perlu pada file /etc/ld.so.conf anda tambahkan /usr/local/lib kemudian lakukan ldconfig :

[root@wolfgang cyrus-sasl-1.5.28]# ldconfig

Stop daemon postfix anda (postfix stop), untuk kemudian dikompilasi ulang supaya postfixnya mendukung SASL

[root@wolfgang src]# tar -xzvf postfix-2.0.6.tar.gz 
[root@wolfgang src]# cd postfix-2.0.6 
[root@wolfgang postfix-2.0.6]# patch -p1 < ../postfix-2.0.6.patch 
[root@wolfgang postfix-2.0.6]# make makefiles \
CCARGS="-DUSE_SASL_AUTH -I/usr/local/include" \
AUXLIBS="-L/usr/local/lib -lsasl" 
[root@wolfgang postfix-2.0.6]# make 
[root@wolfgang postfix-2.0.6]# make install 

Edit file /etc/postfix/main.cf anda, tambahkan baris berikut ini :

smtpd_sasl_auth_enable = yes 
smtpd_sasl_local_domain = $myhostname 
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_relay_domains 
smtpd_sasl_security_options = noanonymous, noplaintext 

Start daemon postfix :

[root@wolfgang postfix-2.0.6]# postfix start 

Test apakah postfix anda sudah mendukung autentikasi (AUTH) :

[root@wolfgang postfix-2.0.6]# telnet localhost 25 
Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]'. 
220 wolfgang.cs.perbanas.edu ESMTP Postfix 
EHLO wolfgang.cs.perbanas.edu 
250-wolfgang.cs.perbanas.edu 
250-PIPELINING 
250-SIZE 10240000 
250-VRFY 250-ETRN 
250-AUTH ANONYMOUS DIGEST-MD5 CRAM-MD5 
250-XVERP 
250 8BITMIME 
quit 
221 Bye Connection closed by foreign host. 

Kemudian kita buat satu buah username untuk percobaan, misalnya :

[root@wolfgang src]# saslpasswd -a smtpd -c asfik@cs.perbanas.edu 

Jika anda menemui saslpasswd: generic failure pada waktu pertama kali bikin database ini adalah wajar, karena file /etc/sasldb tidak ada, untuk mengatasinya lakukan sekali lagi :

[root@wolfgang src]# saslpasswd -a smtpd -c asfik@cs.perbanas.edu 

Periksa dengan perintah sasldblistusers untuk memeriksa apakah sudah ok :

[root@wolfgang src]# sasldblistusers 
user: asfik@cs.perbanas.edu realm: wolfgang.cs.perbanas.edu mech: DIGEST-MD5 
user: asfik@cs.perbanas.edu realm: wolfgang.cs.perbanas.edu mech: CRAM-MD5 
user: asfik@cs.perbanas.edu realm: wolfgang.cs.perbanas.edu mech: PLAIN

Ganti kepemilikan file /etc/sasldb dengan groupnya user postfix :

[root@wolfgang src]# chgrp postfix /etc/sasldb

Kemudian, testing dengan mengirim email dengan MUA kesayangan anda, disini saya menggunakan KMail 1.4.1. Dari menu Setting -> Configure KMail -> Network -> Sending, kemudian anda bisa memodifikasi atau menambah baru, misalnya klik Add -> SMTP. Kemudian pada tab General -> Name, Host, dan Port isikan sesuai dengan konfigurasi anda. Kemudian beri tanda cek pada "Server requires authentication". Isikan Login dan Password yang sesuai (misalnya asfik@cs.perbanas.edu dan password yang sesuai dengan yang dimasukkan), jika ingin menyimpannya berikan tanda cek pada "Store SMTP password in configuration file". Kemudian yang terakhir dan paling penting pada tab Security , pilih None pada Encryption dan pilih DIGEST-MD5 pada Authentication Method, jika suskses, pada file /var/log/maillog anda akan terpadapat seperti ini :

Apr 8 11:21:34 wolfgang postfix/smtpd[10037]: 5DBEABB3A:
client=alkhwarizmi.cs.perbanas.edu[10.126.10.13],sasl_method=DIGEST-MD5,
sasl_username=asfik@cs.perbanas.edu 

Untuk konfigurasi dengan menggunakan MUA mutt, Ximian Evolutions, ataupun Netscape anda bisa melihat tulisan saya tentang "Menggunakan SMTP Auth (qmail-smtpd-auth) di vpopmail dan vmailmgr" di http://people.cakraweb.com/~asfik/writings/qmail-smtpd-auth.html, untuk MUA yang lain silakan baca dokumentasi dari MUA anda tersebut, semoga berhasil.

6. ChangeLog

10 April 2003

04 April 2003

25 Maret 2003

7. Referensi

  1. http://www.postfix.org/
  2. http://www.oav.net/~kiwi/postfix/
  3. http://www.ex-parrot.com/~chris/tpop3d/
  4. http://www.courier-mta.org/
  5. http://asg.web.cmu.edu/sasl/
  6. http://www.mandrakesecure.net/en/docs/postfix-sasl.php
  7. File INSTALL, README dan direktori docs pada setiap distribusi paket