Kamis, 24 Februari 2011

Scrip Anti DDOS untuk Mikrotik

ip firewall filter add chain=input protocol=tcp dst-port=1337 action= add-src-to-address-list address-list=DDOS address-list-timeout=15s comment=”"disabled=no
ip firewall filter add chain=input protocol=tcp dst-port=7331 src-address-list=knock action= add-src-to-address-list address-list=DDOS address-list-timeout=15m comment=”" disabled=no
ip firewall filter add chain=input connection-state=established action=accept comment=”accept established connection packets” disabled=no
ip firewall filter add chain=input connection-state=related action=accept comment=”accept related connection packets” disabled=no
ip firewall filter add chain=input connection-state=invalid action=drop comment=”drop Paket Invalid” disabled=no
ip firewall filter add chain=input protocol=tcp psd=21,3s,3,1 action=drop comment=”Mendetek serangan Port Scaner” disabled=no
ip firewall filter add chain=input protocol=tcp connection-limit=3,32 src-address-list=black_list action=tarpit comment=”Bikin kejutan ke ip penyerang”disabled=no
ip firewall filter add chain=input protocol=tcp connection-limit=10,32 action=add-src-to-address-list address-list=black_list address-list-timeout=1d comment=”Masukin ke karung Ip penyerang” disabled=no
ip firewall filter add chain=input protocol=icmp action=jump jump-target=ICMP comment=”jump chain ICMP” disabled=no
ip firewall filter add chain=input action=jump jump-target=services comment=”jump chain service” disabled=no
ip firewall filter add chain=input dst-address-type=broadcast action=accept comment=”Allow Broadcast Traffic” disabled=no
ip firewall filter add chain=input action=log log-prefix=”Filter:” comment=”Catat kegiatan penyerang” disabled=no
ip firewall filter add chain=input src-address=Subnet WAN action=accept comment=”List Ip yang boleh akses ke router”
ip firewall filter add chain=input src-address=Subnet Lan action=accept
ip firewall filter add chain=input src-address=Subnet DMZ action=accept
ip firewall filter add chain=input action=drop comment=”Blok Semua yang aneh2"disabled=no
ip firewall filter add chain=ICMP protocol=icmp icmp-options=0:0-255 limit=5,5 action=accept comment=”0:0 dan limit utk 5pac/s” disabled=no
ip firewall filter add chain=ICMP protocol=icmp icmp-options=3:3 limit=5,5 action=accept comment=”3:3 dan limit utk 5pac/s” disabled=no
ip firewall filter add chain=ICMP protocol=icmp icmp-options=3:4 limit=5,5 action=accept comment=”3:4 dan limit for 5pac/s” disabled=no
ip firewall filter add chain=ICMP protocol=icmp icmp-options=8:0-255 limit=5,5 action=accept comment=”8:0 and limit utk 5pac/s” disabled=no
ip firewall filter add chain=ICMP protocol=icmp icmp-options=11:0-255 limit=5,5 action=accept comment=”11:0 and limit utk 5pac/s” disabled=no
ip firewall filter add chain=ICMP protocol=icmp action=drop comment=”Bloksemua yang aneh2" disabled=no
ip firewall filter add chain=forward protocol=icmp comment=”Perbolehkan ping”
ip firewall filter add chain=forward protocol=udp comment=”Perbolehkan ke udp”
ip firewall filter add chain=forward src-address=Subnet WAN action=accept comment=”Akses hanya dari ip terdaftar”
ip firewall filter add chain=forward src-address=Subnet LAN action=accept
ip firewall filter add chain=forward src-address=Subnet DMZ action=accept
ip firewall filter add chain=forward action=drop comment=”blok semua yanganeh2"

Sabtu, 11 Desember 2010

SETTING MIKROTIK ADSL SPEEDY

Sebelumnya saya gambarkan dulu skema jaringannya:

LAN —> Mikrotik RouterOS —> Modem ADSL —> INTERNET

Untuk LAN, kita pake kelas C, dengan network 192.168.0.0/24. Untuk Mikrotik RouterOS, kita perlu dua ethernet card. Satu (ether1 - 192.168.1.2/24) untuk sambungan ke Modem ADSL dan satu lagi (ether2 - 192.168.0.1/24) untuk sambungan ke LAN. Untuk Modem ADSL, IP kita set 192.168.1.1/24.
Sebelum mengetikkan apapun, pastikan Anda telah berada pada root menu dengan mengetikkan “/”
Set IP untuk masing²ethernet card
ip address add address=192.168.1.2/24 interface=ether1
ip address add address=192.168.0.1/24 interface=ether2
Untuk menampilkan hasil perintah di atas ketikkan perintah berikut:
ip address print

Kemudian lakukan testing dengan mencoba nge-ping ke gateway atau ke komputer yg ada pada LAN. Jika hasilnya sukses, maka konfigurasi IP Anda sudah benar
ping 192.168.1.1
ping 192.168.0.10
Menambahkan Routing
ip route add gateway=192.168.1.1

Setting DNS
ip dns set primary-dns=202.134.1.10 allow-remote-requests=yes
ip dns set secondary-dns=202.134.0.155 allow-remote-requests=yes
Karena koneksi ini menggunakan Speedy dari Telkom, maka DNS yg aq pake ya punya Telkom. Silahkan sesuaikan dengan DNS provider Anda.
Setelah itu coba Anda lakukan ping ke yahoo.com misalnya:
ping yahoo.com
Jika hasilnya sukses, maka settingan DNS sudah benar
Source NAT (Network Address Translation) / Masquerading
Agar semua komputer yg ada di LAN bisa terhubung ke internet juga, maka Anda perlu menambahkan NAT (Masquerade) pada Mikrotik.
ip firewall nat add chain=srcnat action=masquerade out-interface=ether1
Sekarang coba lakukan ping ke yahoo.com dari komputer yang ada di LAN
ping yahoo.com
Jika hasilnya sukses, maka setting masquerade sudah benar
DHCP (DynamicHost Configuration Protocol)
Karena alasan supaya praktis, temenku pengin pake DHCP Server. Biar klo tiap ada klien yang konek, dia ga perlu setting IP secara manual. Tinggal obtain aja dari DHCP Server, beres dah. Untungnya Mikrotik ini juga ada fitur DHCP Servernya. Jadi ya ga ada masalah..

Membuat IP Address Pool
ip pool add name=dhcp-pool ranges=192.168.0.2-192.168.0.254
Menambahkan DHCP Network
ip dhcp-server network add address=192.168.0.0/24 gateway=192.168.0.1 dns-server=202.134.1.10,202.134.0.155
Menambahkan Server DHCP
ip dhcp-server add name=DHCP_LAN disabled=no interface=ether2 address-pool=dhcp-pool
Sekarang coba lakukan testing dari komputer klien, untuk me-request IP Address dari Server DHCP. Jika sukses, maka sekali lagi, settingannya udah bener

Bandwidth Control
Agar semua komputer klien pada LAN tidak saling berebut bandwidth, maka perlu dilakukan yg namanya bandwidth management atau bandwidth control
Model yg saya gunakan adalah queue trees. Untuk lebih jelas apa itu, silahkan merujuk ke situsnya Mikrotik
Kondisinya seperti ini:
Koneksi Speedy kan katanya speednya sampe 384/64 Kbps (Download/Upload), nah kondisi itu sangat jarang tercapai. Jadi kita harus cari estimasi rata²nya. Maka saya ambil minimalnya untuk download bisa dapet sekitar 300 Kbps dan untuk upload aq alokasikan 50 Kbps. Sedangkan untuk yg maksimumnya, untuk download kira² 380 Kbps dan upload 60 Kbps.
Lalu, jumlah komputer klien yang ada saat ini adalah 10 buah. Jadi harus disiapkan bandwidth itu untuk dibagikan kepada 10 klien tersebut.
Perhitungan untuk masing² klien seperti ini:
Minimal Download: 300 / 10 * 1024 = 30720 bps
Maximal Download: 380 / 10 * 1024 = 38912 bps
Minimal Upload: 50 / 10 * 1024 = 5120 bps
Maximal Upload: 60 / 10 * 1024 = 6144 bps
Selanjutnya kita mulai konfigurasinya:
Tandai semua paket yg asalnya dari LAN
ip firewall mangle add src-address=192.168.0.0/24 action=mark-connection new-connection-mark=Clients-con chain=prerouting
ip firewall mangle add connection-mark=Clients-con action=mark-packet new-packet-mark=Clients chain=prerouting
Menambahkan rule yg akan membatasi kecepatan download dan upload
queue tree add name=Clients-Download parent=ether2 packet-mark=Clients limit-at=30720 max-limit=38912
queue tree add name=Clients-Upload parent=ether1 packet-mark=Clients limit-at=5120 max-limit=6144
Sekarang coba lakukan test download dari beberapa klien, mestinya sekarang tiap2 klien akan berbagi bandwidthnya. Jika jumlah klien yg online tidak sampai 10, maka sisa bandwidth yang nganggur itu akan dibagikan kepada klien yg online.

Graphing
Mikrotik ini juga dilengkapi dengan fungsi monitoring traffic layaknya MRTG biasa. Jadi kita bisa melihat berapa banyak paket yg dilewatkan pada PC Mikrotik kita.
tool graphing set store-every=5min
Berikutnya yang akan kita monitor adalah paket² yg lewat semua interface yg ada di PC Mikrotik kita, klo di komputerku ada ether1 dan ether2.
tool graphing interface add-interface=all store-on-disk=yes
Sekarang coba arahkan browser anda ke IP Router Mikrotik. Klo aq di sini:
http://192.168.0.1/graphs/
Nanti akan ada pilihan interface apa aja yg ada di router Anda. Coba klik salah satu, maka Anda akan bisa melihat grafik dari paket2 yg lewat pada interface tersebut.

Rabu, 10 November 2010

Mengatasi Masalah Generic Host Process for Win32 Services Error


Pernahkah anda mengalami ketika sedang asyik surfing tiba-tiba muncul kotak dialog “Host Process for Win32 Services Error”, atau yang senada dengan itu? Jengkel?

Yah, ketika pesan seperti itu muncul, biasanya komputer lalu tidak bisa konek ke internet, dan walaupun kita coba untuk men-diskonek koneksi kita, tetap saja tidak bisa konek lagi, kecuali kalau sudah direstart.

Kejadiannya seperti ini:

1. Ketika sedang enak-enaknya surfing di internet, Anda lihat icon Internet tetap terkoneksi di system tray tapi Anda tidak bisa surf, browse atau melakukan apapun.
2. Anda mendapatkan suatu pesan error seperti “Generic Host Process for Win32 Services has encountered a problem and needs to close. We are sorry for the inconvenience.”
3. Pesan error report tentang kegagalan netapi32.dll dan svchost.exe.
4. Anda mencoba untuk diskonek internet Anda karena tidak aktivitas internet tetapi icon Internet tidak tampak.
5. Anda menerima sebuah pesan error seperti “Your PC has recovered from a serious problem”, dsb.



Lalu bagaimana mengatasi masalah tersebut?
Sebetulnya kalau kotak dialog tersebut dibiarkan tidak ditutup atau ditekan OK, biasanya koneksi kita akan terus berjalan. Jadi jangan kesusu menekan tombol OK di kotak dialog tersebut, tapi sembunyikan saja di tempat yang tidak kelihatan atau tidak menutupi layar, dan koneksipun akan tetap berlanjut. Namun itu biasanya hanya berlangsung beberapa saat saja, dan selang beberapa lama kemudian, layar akan ‘blink’ putih, dan tetap berjalan, tapi koneksi tidak tersambung.

Cara kedua sebetulnya sangat mudah sekali mendapatkan solusinya, yaitu dengan
mencarinya di mbah Google dengan mengetikkan kata kunci “Fix Generic Host”, dan Anda akan menemukan banyak sekali blog yang menulis tentang masalah ini. Diantaranya adalah seperti yang akan diurai berikut ini.

Menutup Port 445:

1. Start Registry Editor (Regedit.exe) dengan meng-klik Start menu, kemudian klik Run.
2. Pada kotak kecil yang terbuka, ketik: regedit kemudian klik OK. Registry Editor sekarang terbuka.
3. Carilah registry berikut:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NetBT\Parameters
Di bagian kanan window carilah opsi yg bernama TransportBindName.
Dobel klik angka tersebut, kemudian delete default value, sehingga menjadi kosong (blank value).

Menutup Port 135:

1. 1. Kemudian Anda harus mencari kunci berikut : HKEY_LOCAL_MACHINE\Software\Microsoft\OLE
2. Anda akan melihat sebuah String Value yang bernama : EnableDCOM lalu Set-lah value ke: N (biasanya tertulis Y)
3. Tutuplah Registry Editor. Restart-lah komputer Anda.

Perhatian:
Sebelum melakukan perubahan pada registry tersebut, sebaiknya dibackup
terlebih dahulu, karena ada dampak dari perubahan registry tersebut,
seperti koneksi LAN tidak tersambung, dlsb.
Ada 4 solusi baru utk mengatasi Generic Host For Win32 Error di Windows, yang diambil dari Sizlopedia:

Solusi #1:
Klik ‘Run’ dan ketik ‘Regedit’
Klik bagian:
HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Services > Browser > Parameters
Carilah dengan mengklik Find kata kunci : IsDomainMaster
dan set
Data: False
Restart PC kamu.

Solusi #2:
Klik ‘Run’ dan ketik ‘cmd’
Tulislah ‘netsh’ di konsol command lalu tekan enter
Kemduian ketik ‘winsock’ dan tekan enter lalu tulis reset
Restart PC Anda.

Solusi #3:
Download LspFix (http://cexx.org/lspfix.htm) dan ikuti langkah-langkah yang diberikan.

Solusi #4:

Download Microsoft Update Patch (http://support.microsoft.com/kb/894391) dan jalankan. “Thanx to Nirmal for this”.

Semoga salah satu dari solusi diatas akan menyelesaikan error yang ada.

Protect share Folder with password in networking

Introduction
The following approach of password protecting a networked shared folder has been tested from a Windows Vista based client on Windows Server 2003, but given its generic nature on the Microsoft architecture it should as well work on the Server 2008 platform.
Configuring the Server
First of all, you have to enable the Guest account. On the server where the network shared folder is located Go to Start, All Programs, and right-click My Computer. Select Manage. In the console window which opens expand Local Users and Groups. Click on Users and right-click the Guest Account in the right pane.
Click Properties and un-tick Account is disabled. Click OK, then right-click the Guest account again and select Set Password. Enter and confirm the password for the Guest account which will be used to access the network folder you are going to share.
Configuring the Network Shared Folder
Right-Click the folder you want share. Select Properties. Change to the Sharing tab. Select the radio button Share this Folder, and assign a share name (ommit spaces if possible). Hit the Permissions tab and remove any existing group or user names.
Click Add and type Guest in the Enter the object names to select-field. Hit OK. On the Share Permissions tab, select the permission level for your password protect share by ticking Read, Change or Full Control in the Allow column. Click 2 x OK.
Configuring the Client
Client Computers can now connect to the shared folder using the UNC path \\\ and enter the Logon name Guest with the associated password when prompted. Alternatively, users may map a network drive from Windows Explorer with the Connect using a different user name-option on. It is usually a good thing leaving Reconnect at Logon ticked.
The Bottom Line
Using the Guest account to protect a network share works fine as long as you don’t need different passwords. If the default Windows way of sharing networked folders (network shares) by authenticating users with a password and assigning granular permissions to users or groups is not feasible then you might use zipped or compressed objects as outlined in the next parts of this series shoud there be a need for more than one password.

Jumat, 30 Juli 2010

Seting KOnfigurasi DHCP server di UBUNTU SERVER

buka konfigurasi (akses Root) dengan mengetik nano /etc/dhcp3/dhcpd.conf
kemudian :

cari baris berikut :

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
# range 10.5.5.26 10.5.5.30;
# option domain-name-servers ns1.internal.example.org;
# option domain-name “internal.example.org”;
# option routers 10.5.5.1;
# option broadcast-address 10.5.5.31;
# default-lease-time 600;
# max-lease-time 7200;
#}

ganti dengan :

# A slightly different configuration for an internal subnet.
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
option domain-name-servers 202.182.57.14;
option domain-name “kalonk.com”;
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
default-lease-time 600;
max-lease-time 7200;
}
edit default interface untuk digunakan sebagai DHCP Server, file konfigurasinya berada pada : /etc/default/dhcp3-server edit dengan editor kesayangan anda ! tambahkan interface default untuk DHCP Server pada section INTERFACES=”eth0″
default interface saya eth0 <--- tergantung device mana yang anda gunakan sebagai


selanjutnya restart DHCP service anda

Kamis, 20 Mei 2010

MEMBUAT DNS SERVER DENGAN SUB DOMAIN UNTUK MAIL SERVER PADA UBUNTU

MEMBUAT DNS SERVER UNTUK UBUNTU 9.04

1. Install paket bind 9 dan binutils, dengan mengetikkan perintah :

*

$ sudo apt-get install bind9 binutils
* Notes : perintah diatas hanya bisa berjalan jika anda sudah mensetting repository anda. caranya dijelaskan ditutorial lain dalam blog ini.

2. Setting alamat ip anda sehingga menjadi ip static dengan mengedit file /etc/network/interfaces, dengan cara:

*

ketikkan perintah:

$ sudo vim /etc/network/interfaces

*

edit file tersebut sehingga berisi seperti ini:

gambar-1

*

Save file tersebut dengan menenekan tombol‘ESC’, dan ketikkan :wq
* Notes: biasanya interface network anda adalah eth0, karena interface yang saya pakai adalah eth1 maka saya menulis eth1 sesuaikan interface yang dipakai dengan tipe interface yang tersedia dikomputer anda.
*

Restart service network kita dengan mengetikkan perintah:

$ sudo /et/init.d/networking restart

*

Cek Konfigurasi dengan mengetikkan perintah:

$ ifconfig

maka akan tampil alamat ip kita saat ini, seperti gambar dibawah ini:

gambar-2

3. Kemudian edit file /etc/bind/named.conf.local, dengan cara :

*

Ketikkan perintah

$ sudo vim /etc/bind/named.conf.local

*

edit file tersebut sehingga berisi seperti ini:

gambar-31

*

save file dengan menenekan tombol ‘ESC’, dan ketikkan :wq

4. Kemudian buat file db.vega dengan cara:

*

Ketikkan perintah

$ sudo vim /etc/bind/db.vega

*

isi file tersebut sehingga berisi seperti gambar dibawah ini:

gambar-4

* Save file dengan cara menekan tombol ‘ESC’ , dan kemudian ketikkan :wq

4. Kemudian buat file db.192 dengan cara:

*

Ketikkan perintah

$ sudo vim /etc/bind/db.192

*

isi file tersebut sehingga berisi seperti gambar dibawah ini:

gambar-5

*

Save file dengan cara menekan tombol ‘ESC’ , dan kemudian ketikkan :wq

6. Edit file /etc/resolv.conf, dengan cara:

*

Ketikkan perintah

$ sudo vim /etc/resolv.conf

*

Isi file tersebut sehingga berisi seperti ini:

nameserver 192.168.10.100

search vega.net

*

Save file dengan cara menekan tombol ‘ESC’, dan kemudian ketikkan :wq

7. Restart service bind dengan cara:

*

Ketikkan perintah:

$ sudo /etc/init.d/bind9 restart

*

Jika tidak ada pesan error, maka konfigurasi yang anda lakukan sudah benar, untuk memastikan apakah dns anda sudah berjalan dengan baik lakukan langkah berikutnya.

8. Tes apakah dns untuk domain vega.net sudah berjalan dengan cara:

*

Menggunakan perintah ping, Ketikkan perintah:

$ ping vega.net

*

Untuk kemudian akan muncul tampilan seperti dibawah ini:

gambar-6

*

Menggunakan perintah dig, Ketikkan perintah:

$ dig vega.net

*

Untuk kemudian akan muncul tampilan seperti dibawah ini:

gambar-7

*

Menggunakan perintah nslookup, Ketikkan perintah:

$ nslookup vega.net

*

Untuk kemudian akan muncul tampilan seperti dibawah ini:

gambar-8

*

Menggunakan perintah host, Ketikkan perintah:

$ host vega.net

*

Untuk kemudian akan muncul tampilan seperti dibawah ini:

gambar-91

8. Lakukan langkah yang sama seperti No.7 untuk mengetes subdomain mail.vega.net

9. Jika hasilnya seperti diatas maka DNS anda beserta subdomainnya sudah berjalan.


THANKS TO VEGA

Senin, 17 Mei 2010

Postfix Dovecot Mailserver on Ubuntu 9.10 Karmic/9.04 Jaunty

Update sources before we get started
view sourceprint?
1.sudo apt-get update

Install the package
view sourceprint?
1.sudo apt-get install dovecot-postfix

General Type of Mail Configuration: Internet Site
System mail name: yourcompany.com

That's it! You now have a working mailserver. If you've never done this before, the Ubuntu team just saved you about an hour worth of configuration file editing and testing.

Now that your mail server is running we need to set up users. The default dovecot-postfix install is set up to manage email addresses based on system users. We're going to set up a MySQL database to handle that so we don't need to create a new system user (or alias) every time we want to add an email address.

Install MySQL and Postfix MySQL compatibility
view sourceprint?
1.sudo apt-get install mysql-server postfix-mysql

We need to create a user to manage the database.

Fire up MySQL
view sourceprint?
1.mysql -u root -p
view sourceprint?
1.CREATE DATABASE postfix;
2.CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'password';
3.GRANT ALL ON postfix.* to 'postfix'@'localhost';
view sourceprint?
1.exit

Postfix admin is a web based administration panel for Postfix. It will handle creating and managing email addresses as well as other extras like vacation autoresponders. It requires a webserver with php5 support. I'll be using Apache2 for this guide, but you can use lighttpd if you want a smaller footprint. You can also install this on a different server if you don't want to run a webserver on your mail server. Note: if you run your webserver on another machine you'll need to make the necessary changes to the MySQL user permissions.

Install Apache2 and php5
view sourceprint?
1.sudo apt-get install apache2 php5 php5-mysql php5-imap

Restart Apache so it registers PHP
view sourceprint?
1.sudo /etc/init.d/apache2 restart

When that's complete confirm that you can pull up your server's IP in a web browser. You should see: It works!

Switch over to the /var/www directory
view sourceprint?
1.cd /var/www

Download the postfixadmin files
view sourceprint?
1.sudo wget http://downloads.sourceforge.net/sourceforge/postfixadmin/postfixadmin_2.3rc7.tar.gz

Note: This address is the current release candidate so this link may change. You can find the current version at http://sourceforge.net/projects/postfixadmin/files/.

Extract the contents
view sourceprint?
1.sudo tar -zxvf postfixadmin_2.3rc7.tar.gz

Rename the directory to something more friendly and remove the tarball:
view sourceprint?
1.sudo mv postfixadmin-2.3rc7 postfixadmin
2.sudo rm postfixadmin_2.3rc7.tar.gz

Update the postfixadmin configuration file with your settings
view sourceprint?
1.cd postfixadmin
2.sudo nano config.inc.php

$CONF['configured'] = true;
$CONF['postfix_admin_url'] = $_SERVER['HTTP_HOST'].'/postfixadmin';
$CONF['database_password'] = 'yourdbpasswdhere';

Also update the following variables to what makes sense for your installation
$CONF['admin_email']
$CONF['default_aliases']
Save and close (CTRL + X)

Browse to: http://yourserverip/postfixadmin/setup.php. You'll likely see a warning about magic quotes. Since I *hate* magic quotes, I'll go ahead and turn those off. You can safely skip this step if you really want to.
view sourceprint?
1.sudo nano /etc/php5/apache2/php.ini

magic_quotes_gpc = Off
save and close (CTRL + X)
view sourceprint?
1.sudo /etc/init.d/apache2 restart

Refresh the setup page and everything should read OK now. Scroll down to the bottom and enter a “Setup password”. (scroll back down to the bottom for the result) This was required in the configuration file if you noticed, so we'll have to copy the hashed result and paste it into the config.inc.php file.
view sourceprint?
1.sudo nano config.inc.php

Update $CONF['setup_password']
Save and close (CTRL + X)

Back on the setup page create a new admin user. (admin must be an email address) Once you create the admin account you can now log in to http://yourserverip/postfixadmin/ The postfixadmin interface is simple and mostly self explanatory so I won't go into it in detail here.

At this point we have a working mailserver and a MySQL powered user database, now we have to set up all the connections.

We need to create 4 files for postfix containing SQL queries that will give postfix the information it needs to delivery to active addresses.
view sourceprint?
1.cd /etc/postfix
2.sudo nano my_alias_maps.cf

user = postfix
password = yourdbpasswd
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address = '%s' AND active = 1
save and close (CTRL+x)
view sourceprint?
1.sudo nano my_domains_maps.cf

user = postfix
password = yourdbpasswd
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain = '%s' AND backupmx = 0 AND active = 1
save and close (CTRL+x)
view sourceprint?
1.sudo nano my_mailbox_limits.cf

user = postfix
password = yourdbpasswd
hosts = localhost
dbname = postfix
query = SELECT quota FROM mailbox WHERE username = '%s' AND active = 1
save and close (CTRL+x)
view sourceprint?
1.sudo nano my_mailbox_maps.cf

user = postfix
password = yourdbpasswd
hosts = localhost
dbname = postfix
query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username = '%s' AND active = 1
save and close (CTRL+x)

Now we have to update postfix's main.cf to add the paths to the new files as well as some various other updates.
view sourceprint?
1.sudo nano main.cf

Add these items to the file (at the end is fine)

virtual_minimum_uid = 150
virtual_uid_maps = static:150
virtual_gid_maps = static:8
virtual_mailbox_base = /var/vmail
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1

virtual_alias_maps = proxy:mysql:/etc/postfix/my_alias_maps.cf
virtual_mailbox_limit = proxy:mysql:/etc/postfix/my_mailbox_limits.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/my_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/my_mailbox_maps.cf

Comment out (or remove) the following set options:
#home_mailbox = Maildir/
#mailbox_command = /usr/lib/dovecot/deliver -c /etc/dovecot/dovecot-postfix.conf -n -m "${EXTENSION}"

Remove yourcompany.com from mydestination. (It can't be in mydestination and virtual_mailbox_domains)

save and exit (CTRL+X)
view sourceprint?
1.sudo nano master.cf

dovecot unix - n n - - pipe flags=DRhu user=vmail:mail argv=/usr/lib/dovecot/deliver -c /etc/dovecot/dovecot-postfix.conf -f ${sender} -d $(recipient)

save and exit (CTRL+X)

Create the directory for the mail and user who will handle it
view sourceprint?
1.sudo useradd -r -u 150 -g mail -d /var/vmail -s /sbin/nologin vmail
2.sudo mkdir /var/vmail
3.sudo chmod 770 /var/vmail
4.sudo chown vmail:mail /var/vmail/

Finally, we have to make some changes to the dovecot configuration to accept the mail and deliver it
view sourceprint?
1.cd /etc/dovecot
2.sudo nano dovecot-sql.conf

driver = mysql
connect = host=localhost dbname=postfix user=postfix password=yourdbpassword
default_pass_scheme = MD5-CRYPT

user_query = SELECT '/var/vmail/%d/%n' as home, 'maildir:/var/vmail/%d/%n' as mail, 150 AS uid, 8 AS gid, concat('dirsize:storage=', quota) AS quota FROM mailbox WHERE username = '%u' AND active = 1

password_query = SELECT username as user, password, '/var/vmail/%d/%n' as userdb_home, 'maildir:/var/vmail/%d/%n' as userdb_mail, 150 as userdb_uid, 8 as userdb_gid FROM mailbox WHERE username = '%u' AND active = 1

save and exit (CTRL+X)
view sourceprint?
1.sudo nano dovecot-postfix.conf

Change (or uncomment) a few options

mail_location = maildir:/var/vmail/%d/%n
first_valid_uid = 150
last_valid_uid = 150

passdb sql {
args = /etc/dovecot/dovecot-sql.conf
}

userdb sql {
args = /etc/dovecot/dovecot-sql.conf
}

master {
path = /var/run/dovecot/auth-master
mode = 0660
user = vmail
group = mail
}

save and exit (CTRL+X)

Restart both services so changes take effect
view sourceprint?
1.sudo /etc/init.d/postfix restart
2.sudo /etc/init.d/dovecot restart