Sunday 1 May 2011

Instalasi Postfix Dengan Courier IMAP di Centos 5.4

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. Penulis menyarankan agar pembaca dapat mempraktekannya dengan memiliki domain dan IP Publik. Nama domain gratis bisa di dapat di co.cc dan settingan mailnya (MX) diarahkan ke IP Publik.

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://repository.wowtutorial.org/courier-authlib-0.62.4.tar.bz2
# wget http://repository.wowtutorial.org/courier-imap-4.5.1.tar.bz2
# 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.ccThis 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 4 lalu ketikkan alamat IP anda
- 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.
Tulisan selanjutnya akan dijelaskan tentang bagaimana cara menginstal anti virus dan spamassassin di postfix.

Referensi:

http://catatanlepas.com/
Berbagai forum diskusi

No comments:

Post a Comment