Welcome to My Blog's :)

Welcome To My Blog's :)

Bagaimana dengan isi blog saya ?

Kamis, 29 Maret 2012

Setting Mail Server

  Debian
Howto: Installasi mailserver dengan
postfix and courier menggunakan
authentikasi mysql
Tutorial ini menjelaskan Step by Step
tentang cara membuat mailserver dg
virtual domain (domain email tidak
harus selalu sama dg domain
komputer yang sesungguhnya)
denganberbasiskan postfix dan
courier dg memanfaatkan mysql
sebagai penyimpan data username
& password bagi tiap2 user. Berikut
ini yang harus anda lakukan.
( INTERNET )—————-| DMZ |
—————-( Local Area Networks )
Step 1: Install paket-paket yang
diperlukan
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
root@bajoel:~# apt-get 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
Step 2: Membuat user, database,
dan tabel yang diperlukan pada
mysql
Tambahkan database dan tabel-
tabel baru pada mysql anda sebagai
berikut
root@bajoel:~# mysql -u root -p
password:
mysql>CREATE DATABASE mail;
mysql>CREATE USER
‘mailadmin’@'localhost’ identified by
‘passwordanda’;
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’;
Step 3: Membuat file2 baru sebagai
penunjuk ke database mysql
Buat file baru dg nama mysql-
virtual_domains.cf :
root@bajoel:~# touch /etc/postfix/
mysql-virtual_domains.cf
isi file mysql-virtual_domains.cf dg
baris-baris dibawah ini :
root@bajoel:~# mcedit /etc/postfix/
mysql-virtual_domains.cf
user = mailadmin
password = passwordanda
dbname = mail
table = domains
select_field = ‘virtual’
where_field = domain
hosts = 127.0.0.1
Buat file baru dg nama mysql-
virtual_forwardings.cf yg berisi :
root@bajoel:~# touch /etc/postfix/
mysql-virtual_forwardings.cf
isi file mysql-virtual_forwardings.cf
dg baris-baris dibawah ini :
root@bajoel:~# mcedit /etc/postfix/
mysql-virtual_forwardings.cf
user = mailadmin
password = passwordanda
dbname = mail
table = forwardings
select_field = destination
where_field = source
hosts = 127.0.0.1
Buat file baru dg nama user mysql-
virtual_mailboxes.cf yg berisi :
root@bajoel:~# touch /etc/postfix/
mysql-virtual_mailboxes.cf
isi file mysql-virtual_mailboxes.cf dg
baris-baris dibawah ini :
root@bajoel:~# mcedit /etc/postfix/
mysql-virtual_mailboxes.cf
user = mailadmin
password = passwordanda
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 baru mysql-
virtual_email2email.cf yang berisi :
root@bajoel:~# touch /etc/postfix/
mysql-virtual_email2email.cf
isi file mysql-virtual_email2email.cf
dg baris-baris dibawah ini :
root@bajoel:~# mcedit /etc/postfix/
mysql-virtual_email2email.cf
user = mailadmin
password = passwordanda
dbname = mail
table = users
select_field = email
where_field = email
hosts = 127.0.0.1
[Penting] Demi keamanan, pastikan
hanya user root & postfix saja yang
bisa mengakses file-file yang telah
anda buat.
root@bajoel:~# chown root:postfix /
etc/postfix/mysql-virtual_*.cf
root@bajoel:~# chmod
u=rw,g=r,o= /etc/postfix/mysql-
virtual_*.cf
Step 4: Membuat user baru pada
system kita sebagai administrator-
email
User ini bertugas untuk membuat
maildir baru setiap ada user baru
yang mendaftar pada mailserver
anda
root@bajoel:~# groupadd -g 5000
mail-admin
root@bajoel:~# useradd -g mail-
admin -u 5000 mail-admin -d /
home/mail -m
root@bajoel:~# mkdir /home/mail
root@bajoel:~# chown -R mail-
admin:mail-admin /home/mail
root@bajoel:~# chmod -R
u=rwx,g=,o= /home/mail
Step 5: Mengkonfigurasi postfix sbg
server SMTP
File main.cf ini adalah file
konfigurasi utama dari postfix
root@bajoel:~# mcedit /etc/postfix/
main.cf
Editlah file tsb, sehingga menjadi
seperti dibawah ini :
inet_interfaces = all
myhostname = mail.domain-
anda.org (fqdn)
mydestination = (jangan menuliskan
virtual domain disini -> lebih baik
dikosongi saja)
mynetworks = lqman.org (nama
domain anda)
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@bajoel:~# /etc/init.d/postfix
restart
root@bajoel:~# postfix check
Jika tidak muncul suatu pesan
kesalahan, berarti anda sukses…….
root@bajoel:~# telnet localhost 25
Trying 127.0.0.1…
Connected to localhost.localdomain.
Escape character is ‘^]’.
220 mail.lqman.org ESMTP Postfix
(Debian/GNU)
Jika muncul sebagaimana tulisan
diatas, berarti postfix anda sudah
berjalan lancar...
Tekanlah tombol Ctrl+] lalu ketik quit
untuk keluar dari sesi telnet,
Ambilah napas dalam-dalam, dan
lanjutkan perjuangan
Step 6: Mengaktifkan fasilitas
authentikasi pada postfix (Auth-
SMTP)
Tell Postfix to use SASL/MySQL, dg
cara buat file baru dg nama /etc/
postfix/sasl/smtpd.conf :
root@bajoel:~# touch /etc/postfix/
sasl/smtpd.conf
Isi file /etc/postfix/sasl/smtpd.conf
dg baris-baris dibawah ini :
root@bajoel:~# mcedit /etc/postfix/
sasl/smtpd.conf
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: passwordanda
sql_database: mail
sql_select: select password from
users where email=’%u@%r’
log_level: 7
[Penting] Demi keamanan, pastikan
hanya user root & postfix saja yang
bisa mengakses file-file yang telah
anda buat.
root@bajoel:~# chown root:postfix /
etc/postfix/sasl/smtpd.conf
root@bajoel:~# chmod
u=rw,g=r,o= /etc/postfix/sasl/
smtpd.conf
Mengaktifkan TLS untuk meng-
encrypt SMTP traffik, dg cara
membuat sertifikat (certificate)
root@bajoel:~# openssl req -new -
outform PEM -out /etc/postfix/
smtpd.cert -newkey rsa:2048 -nodes
-keyout /etc/postfix/smtpd.key -
keyform PEM -days 365 -x509
[Penting] Demi keamanan, pastikan
hanya user root & postfix saja yang
bisa mengakses file-file yang telah
anda buat.
root@bajoel:~# chown root:postfix /
etc/postfix/smtpd.*
root@bajoel:~# chmod
u=rw,g=r,o= /etc/postfix/smtpd.*
Step 7: Mengkonfigurasi courier
sebagai server POP3 / IMAP
Edit file /etc/courier/authdaemonrc :
root@bajoel:~# mcedit /etc/courier/
authdaemonrc
Ubah parameter authmodulelist
menjadi :
authmodulelist=”authmysql”
Lalu edit file /etc/courier/
authmysqlrc :
root@bajoel:~# mcedit /etc/courier/
authmysqlrc
Ubah beberapa parameter, shg
menjadi seperti di bawah ini :
MYSQL_SERVER localhost
MYSQL_USERNAME mailadmin
MYSQL_PASSWORD passwordanda
MYSQL_PORT 0
MYSQL_DATABASE mail
MYSQL_USER_TABLE users
#MYSQL_CRYPT_PWFIELD (jadikan
baris ini sebagai komentar)
MYSQL_CLEAR_PWFIELD password
MYSQL_UID_FIELD 5000
MYSQL_GID_FIELD 5000
MYSQL_LOGIN_FIELD email
MYSQL_HOME_FIELD “/home/mail”
MYSQL_MAILDIR_FIELD CONCAT
(SUBSTRING_INDEX
(email,’@',-1),’/',SUBSTRING_INDEX
(email,’@',1),’/')
#MYSQL_NAME_FIELD (jadikan baris
ini sebagai komentar)
[Penting] Mengedit file authmysqlrc
agak sedikit susah, pastikan anda
berhati-hati dan tidak membuat
kesalahan (jangan memakai tanda
SPASI, tetapi gunakan tombol TAB)
Testing…
Restart service courier-authdaemon,
dan cobalah untuk mengakses port
110 dengan telnet
root@bajoel:~# /etc/init.d/courier-
authdaemon restart
Jika tidak muncul suatu pesan
kesalahan, berarti anda sukses...
root@bajoel:~# telnet localhost 110
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
+OK Hello there.
Jika muncul pesan seperti diatas,
maka berbahagialah.
Tarik napas dalam-dalam dan
ucapkan hamdalah atas
keberhasilan anda
[Penting] Anda tidak dapat
membuka mailbox / maildir anda
sebelum ada email yang terkirim
pada mailbox anda. Pesan
kesalahan akan dimunculkan.
Karena itulah anda harus mengirim
welcome email pada setiap user
baru.
Step 8: Test hasil konfigurasi anda
Selamat, anda telah menyelesaikan
poin konfigurasi. Pada bagian ini
anda anda hanya akan men-testing
server yang telah anda konfig
sebelumnya.
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 dg nama
lqman.org 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 mail
password:
mysql>INSERT INTO domains
(domain) VALUES (’lqman.org’);
mysql>INSERT INTO users
(email,password) VALUES
(’admin@lqman.org’,'admin’);
mysql>INSERT INTO users
(email,password) VALUES
(’user@lqman.org’,'user’);
Sekarang kita sudah punya sebuah
virtual domain baru dg nama
“lqman.org” dan 2 orang user, yaitu
“admin@lqman.org” dan
“user@lqman.org” yang masing-
masing user ini mempunyai
password “admin” dan “user”.
Jika anda tidak mempunyai MX
record pada DNS server anda, maka
kami menyarankan utk
menambahkan MX record spt
dibawah ini :
root@bajoel:~# mcedit /etc/bind/
db.lqman.org
@ IN MX 5 mail.lqman.org.
mail IN A 10.122.1.22
IP-Address 10.122.1.22 hanya
sebagai contoh saja, ubahlah sesuai
dg IP-Address yg anda inginkan.
Kemudian untuk mencoba
pengiriman email dari smtp server
anda, lakukan telnet pada localhost
25
root@bajoel:~# telnet localhost 25
Trying 127.0.0.1…
Connected to localhost.localdomain.
Escape character is ‘^]’.
220 mail.lqman.org ESMTP Postfix
(Debian/GNU)
Kemudian secara interaktif (pada
mode telnet) berikan perintah spt
dibawah ini :
Anda : ehlo virtual.test
Server : 250-mailtest
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN DIGEST-MD5
CRAM-MD5
250-AUTH=LOGIN PLAIN DIGEST-
MD5 CRAM-MD5
250 8BITMIME
Anda : mail from:admin@lqman.org
Server : 250 Ok
Anda : rcpt to:user@lqman.org
Server : 250 Ok
Anda : data
Server : 354 End data with .
Anda : Subject:Just for test
This is a test email
. (tanda titik)
Server : 250 Ok: queued as
ABC1D1C123
Anda : quit
Server : 221 BYE
Jika respon server seperti tulisan
diatas, berarti email dari
admin@lqman.org kepada
user@lqman.org sudah masuk ke
dalam antrian untuk segera
dikirimkan oleh postfix (SMTP
server).
Lihatlah pada log file yang berada
pada /var/log/mail.info :
root@bajoel:~# tail -f /var/log/mail/
info | ccze
Pasti akan kita lihat bagin seperti
dibawah ini :
Jul 24 21:48:28 myserver postfix/
smtpd[9119]: connect from
myserver[127.0.0.1]
Jul 24 21:48:48 myserver postfix/
smtpd[9119]: F2C1B47BD:
client=myserver[127.0.0.1]
Jul 24 21:48:52 myserver postfix/
cleanup[9144]: F2C1B47BD:
message-id=
Jul 24 21:48:52 myserver postfix/
qmgr[9117]: F2C1B47BD: from=,
size=313, nrcpt=1 (queue active)
Jul 24 21:48:52 myserver postfix/
virtual[9148]: F2C1B47BD: to=,
relay=virtual, delay=10, status=sent
(delivered to maildir)
Jika anda melihat “status=sent
(delivered to maildir)” maka email
yang anda kirimkan sudah berhasil
dikirimkan ke dalam Maildir user
yang bersangkutan
(user@lqman.org). Jalankan
perintah find untuk melihat seluruh
file dan direktori yang ada dibawah
direktori “/home/mail”.
root@bajoel:~# find /home/mail
/home/mail/
/home/mail/lqman.org
/home/mail/lqman.org/user
/home/mail/lqman.org/user/cur
/home/mail/lqman.org/user/new
/home/mail/lqman.org/user/
new/1170803794.V805I1c1fbM98807
.bajoel
/home/mail/lqman.org/user/
new/1170803833.V805I1c1feM87660
.bajoel
/home/mail/lqman.org/user/tmp
Semuanya berjalan Lancar? Bagus..
Sebagai langkah terakhir, anda harus
mencoba login pada email baru
nada melalui tampilan web yg telah
disediakan oleh squirrelmail. Pada
percobaan ini, username yang bisa
digunakan adalah
“user@lqman.org” dengan
password “user”
Step 9: Menambahkan User Baru
pada Mail-Server
Pada step yang terakhir ini anda
tinggal memasukkan /
menambahkan pada database
setiap username dan password user
baru pada mailserver anda.
Untuk setiap virtual-domain baru,
Tambahkan nama virtual-domain
tsb pada tabel ‘domains’
Untuk setiap user baru, Tambahkan
username (email address) dan
password (plain text) pada tabel
‘users’
Untuk setiap forwarding,
Tambahkan source dan destination
mail address pada tabel
‘forwardings’, jika anda punya
banyak destination, pisahkan
dengan koma. Tabel ini digunakan
untuk me-redirect setiap email pada
system anda, termasuk juga anda
bisa me-redirect local mail-address.
Contoh :
source destination Effect
test@my.domain philip@my.domain
me-redirect emails untuk postmaster
kepada philip.
@my.domain @another.domain Ini
adalah re-direction thd seluruh
domain. Setiap email yang
dialamatkan kpd suatu user pada
domain ‘my.domain’ akan di-
forward kepada user yang sama
pada domain ‘another.domain’.
Jadi mail kpd lqman@my.domain
akan di-redirect kepada
lqman@another.domain.
jesper@my.domain
dilbert@my.domain,dilbert@gmail.
com mem-forward email yg
dialamatkan untuk
jesper@my.domain kepada
dilbert@my.domain dan
dilbert@gmail.com
Step 10: Interface WebMail dg
squirrelmail
Untuk mempermudah user anda
dalam menggunakan mailserver yg
sdh anda buat, maka tampilan web
merupakan interface yang paling
mudah.
Oleh karena itu paket squirrelmail
yang sudah kita install pada step
pertama harus dikonfigurasi sesuai
dg mailserver yg sdh kita buat.
Untuk menyesuaikan dg konfigurasi
mailserver ini, cukup lakukan
perintah squirrelmail-configure :
root@bajoel:~# squirrelmail-
configure
lalu lakukan sesuai dg langkah-
langkah yang sudah tersedia.
Langkah yang paling penting disini
adalah saat menentukan “Server
Settings” saja, selain itu tidak ada
yang 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”.
Step 11: Menjadikan webmail kita
sebagai VirtualHost baru
Buatlah file baru pada konfigurasi
webserver anda (pada tutorial ini
dipakai webserver apache2)
root@bajoel:~# touch /etc/apache2/
sites/available/squirrelmail
Kemudian tambahkan baris-baris
dibawah ini :
NameVirtualHost 10.122.1.22:80
ServerAdmin admin@lqman.org
ServerName mail.lqman.org
DocumentRoot /usr/share/
squirrelmail
Options FollowSymLinks
AllowOverride None
Options Indexes FollowSymLinks
MultiViews
AllowOverride None
Order allow,deny
allow from all
Setelah itu, buatlah symbolic link ke
direktori /etc/apache2/sites-enable/
dengan cara :
root@bajoel:~# ln -s /etc/apache2/
sites-available/squirrelmail.conf /
etc/apache/sites-
enable/001squirrelmail.conf
Lalu cek konfigurasi apache2 dg
syntax :
root@bajoel:~# apache2ctl
configtest
dan jika muncul tulisan Syntax OK,
maka restart-lah apache2 dg :
root@bajoel:~# apache2ctl restart

Tidak ada komentar:

Posting Komentar