Membangun Mail Server Menggunakan Postfix + Courier IMAP/POP + MySQL + Squirrelmail

Kali ini saya akan memberikan tutorial tentang membangun sebuah mail server menggunakan postfix sebagai MTA-nya, Courier IMAP dan POP sebagai MDA, MySQL sebagai database, dan Squirrelmail sebagai webmail-nya. Saya menggunakan Linux Ubuntu 8.04 Hardy Heron. Berikut adalah langkah-langkah yang harus dilakukan :

Langkah1 : Menyiapkan paket-paket yang kita butuhkan

1. postfix, postfix-tls, postfix-mysql

2. courier-base, courier-authdaemon, courier-authlib-mysql, courier-pop, courier-imap, courier-pop-ssl, courier-imap-ssl

3. mysql-server-5.0

4. squirrelmail

5. libsasl2, libsasl2-modules, libsasl2-modules-sql, openssl

Kemudian install paket-paket tersebut.

root@baladewa:~#apt-get install postfix postfix-tls postfix-mysql mysql-server-5.0 courier-authdaemon courier-authlib-mysql courier-pop courier-imap squirrelmail

Langkah2 : Mempersiapkan database dan tabel-tabel yang dibutuhkan

root@baladewa:~#mysql -u root -p <password root>

#Kita membuat user di MySQL untuk mengatur database email

mysql>CREATE DATABASE mail;
mysql>CREATE USER ‘mailadmin’@’localhost’ identified by ‘mailadmin’;
mysql>USE mail;

#membuat tabel-tabel yan dibutuhkan
mysql>CREATE TABLE domains (
domain varchar(50) NOT NULL,
PRIMARY KEY (domain) )
TYPE=MyISAM;

mysql>CREATE TABLE forwardings (
source varchar(80) NOT NULL,
destination TEXT NOT NULL,
PRIMARY KEY (source) )
TYPE=MyISAM;

mysql>CREATE TABLE users (
email varchar(80) NOT NULL,
password varchar(20) NOT NULL,
PRIMARY KEY (email) )
TYPE=MyISAM;

mysql>GRANT all ON mail.* TO ‘mailadmin’@’localhost’;

Langkah3 : Membuat file-file yan dibutuhkan

Buat file mysql_domains.cf dg kemudian isi dengan baris-baris dibawah ini:
vim /etc/postfix/mysql_domains.cf

user = mailadmin
password = mailadmin
dbname = mail
table = domains
select_field = ‘virtual’
where_field = domain
hosts = 127.0.0.1

isi file mysql_forwardings.cf dg baris-baris dibawah ini:
vim /etc/postfix/mysql_forwardings.cf

user = mailadmin
password = mailadmin
dbname = mail
table = forwardings
select_field = destination
where_field = source
hosts = 127.0.0.1

isi file mysql_mailboxes.cf dg baris-baris dibawah ini:
vim /etc/postfix/mysql-virtual_mailboxes.cf
user = mailadmin
password = mailadmin
dbname = mail
table = users
select_field = CONCAT(SUBSTRING_INDEX(email,’@’,-1),’/’,SUBSTRING_INDEX(email,’@’,1),’/’)
where_field = email
hosts = 127.0.0.1

Langkah4 : pastikan hanya user root & postfix saja yang bisa mengakses file-file tadi
root@baladewa:~#chown root:postfix /etc/postfix/mysql_*.cf
root@baladewa:~#chmod u=rw,g=r,o= /etc/postfix/mysql_*.cf

Langkah5: Buat user yang bertugas untuk membuat maildir baru setiap ada user baru yang mendaftar pada mailserver
root@baladewa:~#groupadd -g 500 mail-admin
root@baladewa:~#useradd -g mail-admin -u 500 mail-admin -d /home/mail -m
root@baladewa:~#mkdir /home/mail
root@baladewa:~#chown -R mail-admin:mail-admin /home/mail
root@baladewa:~#chmod -R u=rwx,g=,o= /home/mail

Langkah6 : Konfigurasi postfix

Edit file /etc/postfix/main.cf seperti berikut:

myhostname = baladewa.ncc.its-sby.edu
#mydomain = ncc.its-sby.edu
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = ncc.its-sby.edu
mydestination =  #kosongi saja
relayhost =  #kosongi saja
mynetworks = ncc.its-sby.edu  #domain network anda
mailbox_size_limit = 51200000 #Ukuran mailbox 50MB
recipient_delimiter = +
inet_interfaces = all

virtual_alias_domains =
virtual_alias_maps = mysql:/etc/postfix/mysql_forwardings.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual_mailboxes.cf
virtual_mailbox_base = /home/mail
virtual_uid_maps = static:500
virtual_gid_maps = static:500

smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/postfix/smtpd.cert
smtpd_tls_key_file = /etc/postfix/smtpd.key
Kemudian restart postfix

root@baladewa:~# /etc/init.d/postfix restart

Test postfix menggunakan telnet

root@baladewa:~# telnet 127.0.0.1 25
Trying 127.0.0.1…
Connected to 127.0.0.1.
Escape character is ‘^]’.
220 baladewa.ncc.its-sby.edu ESMTP Postfix (Ubuntu)

Jika muncul sebagaimana tulisan diatas, berarti postfix anda sudah berjalan lancar…….
Tekanlah tombol Ctrl+] lalu ketik quit untuk keluar dari sesi telnet.

Langkah7 : Mengaktifkan fasilitas autentikasi Auth-SMTP

buat file baru dg nama /etc/postfix/sasl/smtpd.conf
root@baladewa:~#vim /etc/postfix/sasl/smtpd.conf
Isi file /etc/postfix/sasl/smtpd.conf seperti berikut:

pwcheck_method: auxprop
auxprop_plugin: sql
mech_list: plain login cram-md5 digest-md5
sql_engine: mysql
sql_hostnames: 127.0.0.1
sql_user: mailadmin
sql_passwd: mailadmin
sql_database: mail
sql_select: select password from users where email=’%u@%r’
log_level: 7

Save file smtpd.conf.

pastikan hanya user root & postfix saja yang bisa mengakses file-file yang telah anda buat.
root@baladewa:~#chown root:postfix /etc/postfix/sasl/smtpd.conf
root@baladewa:~#chmod u=rw,g=r,o= /etc/postfix/sasl/smtpd.conf

Mengaktifkan TLS untuk meng-encrypt SMTP traffik, dg cara membuat sertifikat
root@baladewa:~#openssl req -new -outform PEM -out /etc/postfix/smtpd.cert -newkey rsa:2048 -nodes -keyout /etc/postfix/smtpd.key -keyform PEM -days 365 -x509

Demi keamanan, pastikan hanya user root & postfix saja yang bisa mengakses file-file yang telah dibuat.
root@baladewa:~#chown root:postfix /etc/postfix/smtpd.*
root@baladewa:~#chmod u=rw,g=r,o= /etc/postfix/smtpd.*

Step 7: Mengkonfigurasi courier sebagai server POP3 / IMAP

Edit file /etc/courier/authdaemonrc,

root@baladewa:~#vim /etc/courier/authdaemonrc

ubah parameter authmodulelist menjadi :
authmodulelist=”authmysql”
Lalu edit file /etc/courier/authmysqlrc,
root@baladewa:~#vim /etc/courier/authmysqlrc
Ubah beberapa parameter, shg menjadi seperti di bawah ini :
MYSQL_SERVER localhost
MYSQL_USERNAME mailadmin
MYSQL_PASSWORD mailadmin
MYSQL_PORT 0
MYSQL_DATABASE mail
MYSQL_USER_TABLE users
#MYSQL_CRYPT_PWFIELD (di comment)
MYSQL_CLEAR_PWFIELD password
MYSQL_UID_FIELD 500
MYSQL_GID_FIELD 500
MYSQL_LOGIN_FIELD email
MYSQL_HOME_FIELD “/home/mail”
MYSQL_MAILDIR_FIELD CONCAT(SUBSTRING_INDEX(email,’@’,-1),’/’,SUBSTRING_INDEX(email,’@’,1),’/’)
#MYSQL_NAME_FIELD (di comment)

10. Testing POP3 dan IMAP

Restart service courier-authdaemon, /etc/init.d/courier-authdaemon restart

kemudian telnet ke port 110 (POP3)

root@baladewa:~#telnet 127.0.0.1 110
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
+OK Hello there.

telnet ke port 143

root@baladewa:~# telnet 127.0.0.1 143
Trying 127.0.0.1…
Connected to 127.0.0.1.
Escape character is ‘^]’.
* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION] Courier-IMAP ready. Copyright 1998-2005 Double Precision, Inc.  See COPYING for distribution information.
Connection closed by foreign host.

Jika muncul seperti tampilan di atas, berarti konfigurasi POP3 dan IMAP server sudah benar.

11. Konfigurasi squirrelmail

Sekarang kita mengkonfigurasi webmail squirrelmail yang akan kita gunakan sebagai interfase dengan mail server.

root@baladewa:~#squirrelmail-configure

Lakukan konfigurasi yang anda perlukan. Yang terpenting dari konfigurasi ini adalah bagian Server Setting. Selain itu tidak terlalu penting.

Pada saat menentukan “Server Settings”, lakukan perubahan spt dibawah ini

Secure IMAP (TLS) : false
Server software : courier

kemudian save opsi tersebut dg cara menekan tombol “s”, lalu keluar dari configurasi dg menekan tombol “q”.

12. Menjadikan squirrelmail sebagai virtual host di Apache2

Buat file virtual host baru di apache2

root@baladewa:~# vim /etc/apache2/sites-available/squirrelmail

Kemudian isi seperti berikut ini:

<VirtualHost *>
ServerName mail.ncc.its-sby.edu
ServerAlias ncc.its-sby.edu
DocumentRoot /usr/share/squirrelmail
#CustomLog logs/www.example.com-access_log common
</VirtualHost>

Simpan file, kemudian aktifkan virtual host yang baru kita buat tadi.

root@baladewa:~# a2ensite squirrelmail

Restart apache

/etc/init.d/apache2 reload

Kemudian kita lakukan penambahan host pada DNS

@                       IN      MX      5 mail
mail                    IN      A       10.151.36.9

13. Testing mail server

Sekarang kita akan membuat database pada domain yang akan kita coba, domain inilah yang kita jadikan sebagai domain percobaan untuk mengirim dan menerima email. Buatlah domain baru dengan nama domain “ncc.its-sby.edu” pada tabel domains, dan buatlah juga alamat email dan password baru pada tabel users.
Untuk lebih jelasnya ikutilah syntax mysql dibawah ini.

root@bajoel:~#mysql -u mailadmin -p
password:
mysql>INSERT INTO domains(domain) VALUES (’ncc.its-sby.edu’);
mysql>INSERT INTO users(email,password) VALUES (’joep@ncc.its-sby.edu’,'joep’);
mysql>INSERT INTO users(email,password) VALUES (’fahim@ncc.its-sby.edu’,'fahim’);
mysql>INSERT INTO forwarding(source,destination) VALUES (’mailadmin@ncc.its-sby.edu’,'joep@ncc.its-sby.edu’);

Sekarang kita sudah punya sebuah virtual domain baru dg nama “ncc.its-sby.edu” dan 2 orang user, yaitu “joep@ncc.its-sby.edu” dan “fahim@ncc.its-sby.edu” yang masing-masing user ini mempunyai password “joep” dan “fahim”. Ada juga 1 forwarding, yaitu “mailadmin@ncc.its-sby.edu” yang akan di forward ke “joep@ncc.its-sby.edu”.

sekarang buka we browser. Kemudian ketik alamat http://mail.ncc.its-sby.edu

Maka akan tampil form login dari squirrelmail.

Login dengan username dan password yang sudah didaftarkan dala database tadi.Kemudian cobalah untk mengirim email ke user lain.

source from http://joep073.wordpress.com

One response to “Membangun Mail Server Menggunakan Postfix + Courier IMAP/POP + MySQL + Squirrelmail

  1. Thanks banget dah nulis artikel ini kak.
    tapi sedikit saya belum mengerti, disini saya baca
    —————————————————————————–
    | Kemudian kita lakukan penambahan host pada DNS |
    | |
    | @ IN MX 5 mail |
    | mail IN A 10.151.36.9 |
    —————————————————————————–
    Yang saya ingin tanya kan, bagaimana caranya menambahkan host pada DNS ?
    Mohon pencerahannya….

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s