Lukman Prihandika Blog's

Nrimo ing pandum, urip wis ono sing ngatur

Membuat Email Server dengan Postfix

leave a comment »

Saat saya ingin menggunakan feature voicemail di asterisk ternyata saya harus membuat email server artikel saya kali ini tidak akan membahas bagaimana konfigurasi voicemail di asterisk, karena akan saya tulis di lain waktu saja.

Langkah Pertama karena saya menggunakan distro Ubuntu ME, maka untuk yang menggunakan distro selain Ubuntu silahkan disesuaikan saja apabila berbeda, install paket yang diperlukan seperti postfix dan mysql.

Paket yang diperlukan dalam tutorial ini antara lain :
Untuk Mengirim email (SMTP) : postfix (Pilih: “Local only”), postfix-tls, postfix-mysql, postfix-doc
Untuk Database user : mysql-client-5.0, mysql-server-5.0
Untuk menerima email (POP3 & IMAP) : courier-base (Pilih: “No”), courier-authdaemon, courier-authlib-mysql, courier-pop, courier-pop-ssl, courier-imap, courier-imap-ssl
Untuk Keamanan Pengiriman dan Penerimaan email : libsasl2, libsasl2-modules, libsasl2-modules-sql, openssl
Untuk Mencegah Virus dan Spam : amavisd-new, spamassassin, clamav, clamav-daemon, zoo, unzip, lha
Untuk tampilan WebMail : squirrelmail, phpmyadmin
Untuk testing tools : telnet

Untuk install:

root@brokenz:~# aptitude install postfix postfix-tls postfix-mysql postfix-doc mysql-client-5.0 mysql-server-5.0 courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2 libsasl2-modules libsasl2-modules-sql openssl amavisd-new spamassassin clamav clamav-daemon zoo unzip lha squirrelmail phpmyadmin telnet

Langkah Kedua adalah membuat user, database dan tabel di mysql

root@brokenz:~# mysql -u root -p
password:
mysql>CREATE DATABASE mail;
mysql>CREATE USER 'mailadmin'@'localhost' identified by 'anggora';
mysql>USE mail;
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';

Langkah Ketiga adalah membuat file yang berfungsi sebagai penunjuk ke database mysql

Buat file dengan nama mysql-virtual_domains.cf
root@brokenz:~# touch /etc/postfix/mysql-virtual_domains.cf
isi file mysql-virtual_domains.cf dg baris-baris dibawah ini:
root@brokenz:~# vi /etc/postfix/mysql-virtual_domains.cf
user = mailadmin
password = anggora
dbname = mail
table = domains
select_field = ‘virtual’
where_field = domain
hosts = 127.0.0.1

Buat file dengan nama mysql-virtual_forwardings.cf yg berisi :
root@brokenz:~# touch /etc/postfix/mysql-virtual_forwardings.cf
isi file mysql-virtual_forwardings.cf dg baris-baris dibawah ini:
root@brokenz:~# vi /etc/postfix/mysql-virtual_forwardings.cf
user = mailadmin
password = anggora
dbname = mail
table = forwardings
select_field = destination
where_field = source
hosts = 127.0.0.1

Buat file dengan nama user mysql-virtual_mailboxes.cf yg berisi :
root@brokenz:~# touch /etc/postfix/mysql-virtual_mailboxes.cf
isi file mysql-virtual_mailboxes.cf dg baris-baris dibawah ini:
root@brokenz:~# vi /etc/postfix/mysql-virtual_mailboxes.cf
user = mailadmin
password = anggora
dbname = mail
table = users
select_field = CONCAT(SUBSTRING_INDEX(email,’@’,-1),’/’,SUBSTRING_INDEX(email,’@’,1),’/’)
where_field = email
hosts = 127.0.0.1

Buat file mysql-virtual_email2email.cf yang berisi :
root@brokenz:~# touch /etc/postfix/mysql-virtual_email2email.cf
isi file mysql-virtual_email2email.cf dg baris-baris dibawah ini:
root@brokenz:~# vi /etc/postfix/mysql-virtual_email2email.cf
user = mailadmin
password = anggora
dbname = mail
table = users
select_field = email
where_field = email
hosts = 127.0.0.1

Pastikan hanya user root & postfix saja yang bisa mengakses file-file yang telah kita buat.
root@brokenz:~# chown root:postfix /etc/postfix/mysql-virtual_*.cf
root@brokenz:~# chmod u=rw,g=r,o= /etc/postfix/mysql-virtual_*.cf

Langkah Keempat adalah membuat user baru untuk system sebagai admin-email

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

Langkah Kelima adalah konfigurasi postfix untuk server SMTP

root@brokenz:~# vi /etc/postfix/main.cf
Editlah file tsb, sehingga menjadi seperti dibawah ini:
inet_interfaces = all
myhostname = mail.brokenz.net
mydestination = (kosongi saja)
mynetworks = brokenz.net
virtual_alias_domains =
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual_forwardings.cf mysql:/etc/postfix/mysql-virtual_email2email.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual_mailboxes.cf
virtual_mailbox_base = /home/mail
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
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

Testing…
Restart service postfix, dan cobalah untuk mengakses port 25 dengan telnet
root@brokenz:~# /etc/init.d/postfix restart
root@brokenz:~# postfix check

Jika tidak muncul suatu pesan kesalahan, berarti anda sukses…….
root@brokenz:~# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 mail.brokenz.net ESMTP Postfix (Debian/GNU)

kalo muncul tulisan diatas berarti kita sudah benar
Tekanlah tombol Ctrl+] lalu ketik quit untuk keluar dari sesi telnet,

Written by brokenz1

August 14, 2009 at 5:08 pm

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: