ANALISIS DAN IMPLEMENTASI JAVA SOCKET PADA
EMAIL CLIENT
Naskah Publikasi
disusun oleh
Indah Wardini
07.12.2376
kepada
SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER
AMIKOM
YOGYAKARTA
2011
ANALYSIS AND IMPLEMENTATION JAVA SOCKET IN
EMAIL CLIENT
ANALISIS DAN IMPLEMENTASI JAVA SOCKET PADA
EMAIL CLIENT
Indah Wardini
Jurusan Sistem Informasi
STMIK AMIKOM YOGYAKARTA
ABSTRACT
The development of Java can not be separated from the development of the Internet that already connects millions of computers in a single global network. This network allows computers to communicate with each other. In general, all machines connected to the Internet can be categorized into two types: servers and clients. Machines that provide services on another machine called a server. The use ofsocket programming enables communication between client and server. One simple example of using socket programming is making a program to send email. The program is a form of communication between client applications and servers.
The use of java socket on creating an email client application used to communicate between client and server. Java programming language is very flexible because it can run in different platforms because of the JVM (Java Virtual Machine). The use of existing libraries, such as libraries Java Mail API support in making applications. Internet connection for the delivery and retrieval of email from mail server.
The process of sending email using multiple protocols, including SMTP (Simple Mail Transfer Protocol) and POP3 (Post Office Protocol version 3). Data transmission (email) using SMTP (Simple Mail Transfer Protocol) and for decision-mail from the server using POP3 protocol (Post Office Protocol version 3). To use the security protocol SSL (Secure Socket Layer) libraries that already exist in the Java Mail API.
1. Pendahuluan
Email atau electronic mail merupakan layanan berupa pengiriman pesan teks
yang datanya diubah ke bentuk data elektronik dan dikirimkan melalui jaringan komputer. SMTP (Simple Mail Transfer Protocol) merupakan protokol yang digunakan untuk mengirim email, dan bekerja pada port 25. Pengiriman email dilakukan menggunakan aplikasi MTA, misalnya kerio, mdaemon, sendmail, qmail, dan sebagainya. Protokol ini merupakan protokol yang sekarang banyak dipakai oleh mail server (MTA) di internet. POP3 (Post Office Protocol Version 3) adalah protokol yang digunakan untuk mengambil surat elektronik (email) dari server email. Protokol ini sangat erat hubungannya dengan protokol SMTP (Simple Mail Transfer Protocol) dimana protokol SMTP berguna untuk mengirim surat elektronik dari komputer pengirim ke komputer server dari penerima. Kemudian penerima mengambil surat elektronik yang dikirim dari server dengan menggunakan protokol ini.
Socket adalah mekanisme komunikasi yang memungkinkan terjadinya pertukaran
data antar program atau proses baik dalam satu mesin maupun antar mesin. Komunikasi
socket terutama diciptakan untuk tujuan menjembatani komunikasi antara dua buah
program yang dijalankan pada mesin yang berbeda. Kelebihan lain dari komunikasi
socket adalah mampu menangani banyak klien sekaligus (multiple clients).
Penggunaan socket programming memungkinkan adanya komunikasi antara client dan server. Salah satu contoh sederhana penggunaan socket programming adalah pembuatan program untuk mengirim email. Program tersebut merupakan bentuk aplikasi berupa komunikasi antara client dan server. Ketika seorang user (client) melakukan koneksi ke server email, program akan membuka koneksi ke port yang diberikan, sehingga server perlu membuka socket pada port tersebut dan “mendengarkan” koneksi yang datang. Socket sendiri merupakan gabungan antara host-adress dan port adress. Dalam hal ini socket digunakan untuk komunikasi antara client dan server.
2. Landasan Teori
2.1 E-mail (Elektronik Mail)
Electronic-Mail (E-Mail) merupakan aplikasi TCP/IP yang paling banyak
digunakan. Email adalah pesan yang terdiri atas kumpulan string ASCII dalam format RFC 822 (dikembangkan tahun 1982). Sistem email yang beroperasi di atas jaringan berbasis pada model store and forward. Sistem ini mengaplikasikan sebuah sistem server email yang menerima, meneruskan, dan mengirimkan, serta menyimpan
pesan-pesan user, dimana user hanya perlu untuk mengkoneksikan komputer mereka ke dalam jaringan. Email dapat dianalogikan dengan kotak surat yang ada di kantor pos sedangkan server email dapat diibaratkan sebagai kantor pos. Dengan analogi ini sebuah mail server dapar memiliki banyak account email yang ada didalamnya. Beberapa pengamat mempertanyakanapakah teknologi Push mirip dengan e-mail dan bukanlah sesuatu yang baru. Metode Listservs telah ada untuk pendistribusian pesan e-mail secara otomatis tanpa harus user melakukan request. Pada dasarnya prinsip dari Listserv mirip dengan teknologi push, teknologi Push mengijinkan distribusi informasi dan gambar yang lebih kompleks dari apa yang dapat ditangani oleh e-mail dan dilakukan real-time dimana sistem store and forwards dari e-mail tidak di-desain untuk itu. Cara kerja email dapat dilihat pada Gambar 2.3.
Gambar 2.5 Cara kerja e-mail
E-mail yang dikirim belum tentu akan diteruskan ke komputer penerima (end
user), tapi disimpan/dikumpulkan dahulu dalam sebuah komputer server (host) yang akan
online secara terus menerus (continue) dengan media penyimpanan (storage) yang relatif lebih besar dibanding computer biasa. Hal ini bisa diibaratkan dengan sebuah kantor pos, jika sesorang mempunyai alamat (mailbox), maka dia dapat memeriksa secara berkala jika dia mendapatkan surat. Komputer yang melayani penerimaan email secara terus-menerus tersebut biasa disebut dengan mailserver atau mailhost1.
2.2 SMTP (Simple Mail Transfer Protocol)
Merupakan salah satu protokol yang umum digunakan untuk pengiriman surat elektronik di internet. Protokol ini dipergunakan untuk mengirimkan data dari komputer
1
Tri Aditya Sasongko. Idris Winarno dan Kholid Fathoni. Rancang Bangun Email Client pada
Perangkat Mobil, http://digilib.its.ac.id/public/ITS-Undergraduate-14635-paperpdf.pdf, diakses tanggal 03 Agustus 2011.
pengirim surat elektronik ke server surat elektronik penerima. Protokol ini timbul karena desain sistem surat elektronik yang mengharuskan adanya server surat elektronik yang menampung sementara sampai surat elektronik diambil oleh penerima yang berhak.
2.3 POP3 (Post Office Protocol version 3)
Post Office Protocol version 3 (POP3) adalah protokol yang digunakan untuk
mengambil surat elektronik (email) dari server email protokol ini erat hubungannya dengan protokol SMTP dimana protokol SMTP berguna untuk mengirim surat elektronik dari komputer pengirim ke server. Protokol POP3 dibuat karena desain dari sistem surat elektronik yang mengharuskan adanya server surat elektronik yang menampung surat eletronik untuk sementara sampai surat elektronik tersebut diambil oleh penerima yang berhak. Kehadiran server surat elektronik ini disebabkan kenyataan hanya sebagian kecil dari komputer penerima surat elektronik yang terus menerus melakukan koneksi ke jaringan internet. Protokol ini dispesifikasikan pada RFC 1939.
2.4 Secure Socket Layer
SSL atau Secure Sockets Layer adalah sebuah protokol keamanan data yang digunakan untuk menjaga pengiriman data web server dan pengguna situs web. Untuk mengetahui apabila transaksi diamankan oleh SSL adalah sebuah icon berlambangkan gembok yang terkunci akan muncul di browser yang telah diamankan dengan SSL. Dengan meng-klik icon tersebut akan diketahui otoritas sertifikasi dari sertifikat SSL tersebut.
SSL dikembangkan oleh Netscape Communication pada tahun 1994. SSL memiliki tiga versi yaitu 1.0, 2.0, dan 3.0 yang diliris pada tahun 1996. SSL merupakan suatu standar teknologi keamanan yang menjamin bahwa seluruh data yang dilewatkan antara web server dengan web browser terjaga kerahasiaan dan keutuhannya. SSL membuat koneksi yang ter-enkripsi (tersandi) antara server atau situs dengan pengunjungnya saat pengunjung itu mengaksesnya, sehingga data rahasia atau penting bisa terkirim tanpa khawatir ada usaha perubahan ditengah jalannya. Tanpa enkripsi SSL semua data yang dikirim lewat internet sangat mungkin dilihat oleh orang lain. SSL bertindak sebagai protokol yang mengamankan komunikasi antara client dan server.
3 Analisis
Analisis sistem dapat didefinisikan sebagai berikut: penguraian dari suatu sistem informasi yang utuh ke dalam bagian-bagian komponennya dengan maksud mengidentifikannya dan mengevaluasi permasalahan-permasalahan, kesempatan-kesempatan, hambatan-hambatan yang terjadi dan kebutuhan-kebutuhan yang diharapkan sehingga dapat diusulkan perbaikan-perbaikannya.
Requirements bertujuan untuk mendeskripsikan apa yang harus dilakukan oleh
system. Terdapat dua jenis requirements yang harus dilakukan untuk menghasilkan sebuah sistetem yang berkualitas, yaitu kebutuhan fungsional dan kebutuhan non-fungsional.
3.1 Kebutuhan Fungsional
Beberapa kebutuhan fungsional pada aplikasi email client:
1. Terdapat pengaturan konfigurasi SMTP dan POP3.
2. Aplikasi dapat mengirim dan menerima email secara langsung. 3. Email yang sudah didownload disimpan ke dalam database. 4. Aplikasi dapat menyimpan alamat (address book).
3.2 Kebutuhan Non—Fungsional
Beberapa kebutuhan non-fungsional dalam aplikasi yang dibangun adalah:
1. Koneksi internet (modem, DSL, wifi). 2. JRE (Java Runtime Environment).
4 Hasil Penelitian dan Pembahasan
4.1 Pembuatan Program
Pada tahap ini dilakukan pembuatan program aplikasi Email Client. Tahap pembuatan program pada aplikasi ini adalah sebagai berikut:
4.1.1 Pembuatan Form dan Coding Program
Form tampilan dari aplikasi email client antara lain sebagai berikut:
Gambar 4.1 Tampilan awal email client public class SendController {
private SendModel model;
public void setModel(SendModel model) { this.model = model;
}
public void resetSend(NewMessageView view){ model.resetSend();
}
public void resetSend(SendView view){ model.resetSend();
}
String to = view.getTxtTo().getText(); String cc = view.getTxtCc().getText(); String bcc = view.getTxtBcc().getText(); String subject = view.getTxtSubject().getText();
String attachment = view.getTxtAttachment().getText(); String message = view.getTxtMessage().getText();
model.setToEmail(to); model.setCc(cc); model.setBcc(bcc); model.setSubject(subject); model.setAttachment(attachment); model.setMessage(message); try{ model.insertSend();
// JOptionPane.showMessageDialog(view, "Message have been save to outbox"); }catch(Throwable throwable){
JOptionPane.showMessageDialog(view, new Object[]{
"Have error in database with message: ", throwable.getMessage() });
} }
Class yang digunakan untuk proses pengiriman yang diimplementasikan pada form send. Method insertSend mengimplementasikan class SendModel untuk proses pengiriman email.
4.1.2 Koneksi Server
Penggalan source code untuk koneksi ke server adalah sebagai berikut :
a. Koneksi ke server
public void sendEmail(Email email){
Session session = Session.getInstance(this.configuration.getProperties(), auth);
try{
Message msg = this.buildEmailMessage(session, email); Transport.send(msg);
}catch (MessagingException e){ throw new RuntimeException(e); }
}
private Message buildEmailMessage(Session session, Email email) throws MessagingException{
Message msg = new MimeMessage(session); msg.setSubject(email.getSubject());
this.addRecievers(msg, email);
Multipart multipart = new MimeMultipart(); this.addMessageBodyPart(multipart, email); this.addAttachments(multipart, email); msg.setContent(multipart);
return msg; }
Penggalan methode diatas digunakan untuk mengirimkan email ke server email, dengan methode buildEmailMessage untuk menyusun isi email (body email).
b. Authenticator
class SMTPAuthenticator extends javax.mail.Authenticator{ private String username;
private String password;
public SMTPAuthenticator(String username, String password) { this.username = username;
this.password = password; }
@Override
public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); }
}
Class diatas sebagai authentifikasi ke server email sebelum proses pengiriman email,
meliputi authentifikasi user dan email. Menggunakan method getPasswordAuthentication yang mengembalikan nilai (user dan password).
4.2 Pengujian Sistem
Uji coba program atau testing adalah sebuah proses terhadap program atau aplikasi untuk menemukan kesalahan dan segala kemungkinan yang akan menimbulkan kesalahan sesuai dengan spesifikasi software yang telah ditentukan sebelum aplikasi tersebut digunakan. Metode testing ada dua, antara lain :
4.2.1 Black Box Testing
Pengujian yang dilakukan untuk antarmuka perangkat lunak. Pengujian ini dilakukan untuk memperlihatkan bahwa fungsi-fungsi bekerja dengan baik dalam arti masukan yang diterima dengan benar dan keluaran yang dihasilkan benar-benar tepat, pengintegrasian dari eksternal data berjalan dengan baik. Salah satu bentuk Black Box testing adalah testing validasi.
Testing ini dinyatakan berhasil jika fungsi-fungsi yang ada pada perangkat lunak sesuai dengan apa yang diharapkan. Contoh testing validasai, saat proses pengiriman pesan ke alamat email tertentu berhasil akan muncul besan “Message have sent” pada dialog. Berikut contoh tampilannya.
Gambar 4.2 Contoh black box testing
Tabel 4.1 Tabel hasil pengujian Black Box Testing
No Fitur Status
1 Pengiriman pesan (new Message) Berhasil mengirimkan pesan kepada alamat yang dituju
2 Download pesan (inbox) Berhasil
3 Reply Berhasil
4 Address Book Berhasil menyimpan
menghapus, update alamat.
5 Smtp configuration Berhasil, field bias diakses
sebagi properties dalam proses pengiriman email
6 Pop Configuration Berhasil, field bias diakses
sebagi properties dalam proses download email
4.2.2 White box testing
Pengujian yang dilakukan lebih dekat lagi untuk menguji prosedur-prosedur yang ada. Lintasan logik yang dilalui oleh setiap bagian prosedur diuji dengan memberikan kondisi yang spesifik. Salah satu contoh white box testing ialah disaat user memasukkan alamat email pada address book dan salah dalam penulisan (tidak lengkap) maka tidak bisa memasukkan alamat. Alamat ini digunakan pada saat user akan mengirimkan email pada alamat yang sudah ada pada address book.
5 Kesimpulan
Dari uraian penjelasan pembahasan keseluruhan materi pada bab-bab sebelumnya, email client mempermudah dalam proses pengiriman maupun penerimaan pesan. Secara lebih rinci dapat diambil kesimpulan sebagai berikut:
1. Java socket digunakan dalam komunikasi antara client dan server, dalam hal ini
menggunakan SSL yang telah disediakan oleh library JavaMail API. 2. Mengetahui proses pengiriman surat elektronik (email) dari user ke server. 3. Proses pengambilan (download) pesan dari server mail ke database bisa
diketahui dan dimengerti.
4. Penyimpanan pesan ke dalam database bisa ditangani.
5. Dengan adanya prototype email client ini diharapkan bisa dimanfaatkan untuk perancangan aplikasi email yang lebih sempurna dan sebagai pondasi dalam perancangan aplikasi yang menerapkan java socket.
DAFTAR PUSTAKA
Java SE tips. 2005. How to create an e-mail client in Java. http://www.java-tips.org/java-se-tips/javax.swing/how-to-create-an-e-mail-client-in-java.html, diakses tanggal 1 Januari 2011.
Kusnadi. 2011. Pemrograman Socket, http://www.scribd.com/doc/48135346/tutorial1, diakses tanggal 18 Januari 2011.
Nugroho, Adi. 2009. Rekayasa Perangkat Lunak Menggunakan UML dan Java. Yogyakarta : Andi.
Oracle. 2011. About the Java Technology.
http://download.oracle.com/javase/tutorial/getStarted/intro/definition.html, diakses tanggal 1 Januari 2011.
Oracle. 2011. Java Mail. http://www.oracle.com/technetwork/java/javamail/index-138643.html, diakses tanggal 21 Januari 2011.
Sasongko, Tri Aditya. Idris Winarno dan Kholid Fathoni. Rancang Bangun Email Client
pada Perangkat Mobil, http://digilib.its.ac.id/public/ITS-Undergraduate-14635-paperpdf.pdf, diakses tanggal 03 Agustus 2011.
Soetanto, Agus. Aplication Of Simulation Algorithm Prim And Kruskal Implementation In
Search Route Around Campus At Gunadarma
University.http://papers.gunadarma.ac.id/index.php/industry/article/viewFile/1066 6/10211, diakses tanggal 03 April 2011.