membangun mail server menggunakan postfix
TRANSCRIPT
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, [...]
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 dibutuhkanmysql>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 = mailadminpassword = mailadmindbname = mailtable = domainsselect_field = ‘virtual’where_field = domainhosts = 127.0.0.1
isi file mysql_forwardings.cf dg baris-baris dibawah ini:vim /etc/postfix/mysql_forwardings.cf
user = mailadminpassword = mailadmindbname = mailtable = forwardingsselect_field = destinationwhere_field = sourcehosts = 127.0.0.1
isi file mysql_mailboxes.cf dg baris-baris dibawah ini:vim /etc/postfix/mysql-virtual_mailboxes.cfuser = mailadminpassword = mailadmindbname = mailtable = usersselect_field = CONCAT(SUBSTRING_INDEX(email,’@',-1),’/',SUBSTRING_INDEX(email,’@',1),’/')where_field = emailhosts = 127.0.0.1
Langkah4 : pastikan hanya user root & postfix saja yang bisa mengakses file-file tadiroot@baladewa:~#chown root:postfix /etc/postfix/mysql_*.cfroot@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-adminroot@baladewa:~#useradd -g mail-admin -u 500 mail-admin -d /home/mail -mroot@baladewa:~#mkdir /home/mailroot@baladewa:~#chown -R mail-admin:mail-admin /home/mailroot@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.edualias_maps = hash:/etc/aliasesalias_database = hash:/etc/aliasesmyorigin = ncc.its-sby.edumydestination = #kosongi sajarelayhost = #kosongi sajamynetworks = ncc.its-sby.edu #domain network andamailbox_size_limit = 51200000 #Ukuran mailbox 50MBrecipient_delimiter = +inet_interfaces = all
virtual_alias_domains =virtual_alias_maps = mysql:/etc/postfix/mysql_forwardings.cfvirtual_mailbox_domains = mysql:/etc/postfix/mysql_domains.cfvirtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual_mailboxes.cfvirtual_mailbox_base = /home/mailvirtual_uid_maps = static:500virtual_gid_maps = static:500
smtpd_sasl_auth_enable = yesbroken_sasl_auth_clients = yessmtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destinationsmtpd_use_tls = yessmtpd_tls_cert_file = /etc/postfix/smtpd.certsmtpd_tls_key_file = /etc/postfix/smtpd.keyKemudian restart postfix
root@baladewa:~# /etc/init.d/postfix restart
Test postfix menggunakan telnet
root@baladewa:~# telnet 127.0.0.1 25Trying 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.confroot@baladewa:~#vim /etc/postfix/sasl/smtpd.conf
Isi file /etc/postfix/sasl/smtpd.conf seperti berikut:
pwcheck_method: auxpropauxprop_plugin: sqlmech_list: plain login cram-md5 digest-md5sql_engine: mysqlsql_hostnames: 127.0.0.1sql_user: mailadminsql_passwd: mailadminsql_database: mailsql_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.confroot@baladewa:~#chmod u=rw,g=r,o= /etc/postfix/sasl/smtpd.conf
Mengaktifkan TLS untuk meng-encrypt SMTP traffik, dg cara membuat sertifikatroot@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 localhostMYSQL_USERNAME mailadminMYSQL_PASSWORD mailadminMYSQL_PORT 0MYSQL_DATABASE mailMYSQL_USER_TABLE users#MYSQL_CRYPT_PWFIELD (di comment)MYSQL_CLEAR_PWFIELD passwordMYSQL_UID_FIELD 500MYSQL_GID_FIELD 500MYSQL_LOGIN_FIELD emailMYSQL_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 110Trying 127.0.0.1…Connected to localhost.Escape character is ‘^]’.+OK Hello there.
telnet ke port 143
root@baladewa:~# telnet 127.0.0.1 143Trying 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) : falseServer 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.eduServerAlias ncc.its-sby.eduDocumentRoot /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 mailmail 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 -ppassword:mysql>INSERT INTO domains(domain) VALUES ('ncc.its-sby.edu');mysql>INSERT INTO users(email,password) VALUES ('[email protected]
sby.edu','joep');mysql>INSERT INTO users(email,password) VALUES ('[email protected]','fahim');mysql>INSERT INTO forwarding(source,destination) VALUES ('[email protected]','[email protected]');
Sekarang kita sudah punya sebuah virtual domain baru dg nama “ncc.its-sby.edu” dan 2 orang user, yaitu “[email protected]” dan “[email protected]” yang masing-masing user ini mempunyai password “joep” dan “fahim”. Ada juga 1 forwarding, yaitu “[email protected]” yang akan di forward ke “[email protected]”.
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.
Terimakasih buat http://lqman.wordpress.com atas referensinya.