Halaman

Kamis, 09 Juni 2011

Server Mail

Sudah menjadi fakta bahwa selama bertahun-tahun Sendmail merupakan Mail Transfer Agent (MTA, baca mail server) di lingkungan Unix. Sendmail sendiri mempunyai sejarah panjang dalam masalah keamanan, dan terkenal dengan banyaknya pilihan untuk mengkonfigurasikannya. Beberapa contoh masalah keamanan di Sendmail misalnya :
  • MIME Buffer Overflow Bug. Beberapa badan riset independen menemukan bahwa beberapa klien e-mail thd Sendmail Versi 8.9.1 berpotensi untuk diserang MIME header-based attack. Hal ini dapat terjadi jika sebuah mail membawa header MIME yang tidak diformat dengan benar akan menyebabkan buffer overflow. Isu ini dapat dibaca di
    http://www.cert..org/advisories/CA-98.10.mime_buffer_overflows.html.
  • HELO Buffer overflow. Pada versi 8.9, jika seseorang memberikan perintah HELO dan diikuti string/karakter lebih dari 1 Kb, atau kurang lebih 855 karakter, akan menyembunyikan identitas pengirim.
Selain sendmail, banyak bermunculan beberapa Mail Transfer Agent sebagai alternatif. qmail, Exim dan Postfix merupakan mailer yang banyak digunakan. Bab ini akan membahas secara singkat, bagaimana mengkonfigurasikan dan menjalankan 2 MTA, yakni Sendmail dan qmail.

Sendmail

Sendmail adalah program yang mengimplementasikan kebutuhan umum fasilitas mail routing antar jaringan, yang bekerja dibawah sistem UNIX. Sendmail memiliki pilihan yang sangat banyak dan fleksibel untuk dikonfigurasikan. Sendmail merupakan MTA yang sangat terkenal, dan terdapat hampir disemua OS unix yang ada saat ini, disusun berdasarkan :

  • RFC821 (Simple Mail Transport Protocol),
  • RFC822 (Internet Mail Headers Format),
  • RFC1123 (Internet Host Requirements),
  • RFC2045 (MIME),
  • RFC1869 (SMTP Service Extensions),
  • RFC1652 (SMTP 8BITMIME Extension),
  • RFC1870 (SMTP SIZE Extension),
  • RFC1891 (SMTP Delivery Status Notifications),
  • RFC1892 (Multipart/Report),
  • RFC1893 (Mail System Status Codes),
  • RFC1894 (Delivery Status Notifications),
  • RFC1985 (SMTP Service Extension for Remote Message Queue Starting),
  • RFC2033 (Local Message Transmission Protocol).
Pada saat instalasi Linux, sendmail secara otomatis akan terinstall serta dapat difungsikan untuk mengirim (SMTP) dan membaca e-mail, menyediakan sistem e-mail alias yang besar dan menangani mailing list. Mengingat semua fiturnya sangat fleksibel untuk dikonfigurasikan, sendmail mempunyai file konfigurasi yang sangat besar (biasanya di /etc/sendmail.cf). Hal ini menyulitkan pengguna biasa untuk mengkonfigurasikan secara manual. Meskipun demikian banyak program bantu (biasanya berupa skrip atau macro) yang memudahkan pengadministrasian sendmail.

 

Menjalankan sendmail sebagai Daemon.

Untuk dapat menerima dan mengirim e-mail, baik dalam lingkup internet dan intranet, sendmail harus dijalan pada saat pertama kali komputer dihidupkan (sebagai daemon). Secara default, Linux akan menjalankannya sebagai daemon.

Slackware

Untuk menjalankan sendmail sebagai daemon di Slackware, skripnya dapat ditemukan di /etc/rc.d/rc.M. Secara keseluruhan, skrip tersebut menjalankan semua daemon pada modus multi user. Untuk skrip sendmail, dapat ditemukan di baris 54

# Start the sendmail daemon: if [ -x /usr/sbin/sendmail ]; then   echo "Starting sendmail daemon (/usr/sbin/sendmail -bd -q15m)..."   /usr/sbin/sendmail -bd -q15m
Pertama kali script diatas akan mengecek keberadaan program sendmail, jika ada maka akan dijalankan perintah dibawahnya jika tidak akan dilewatkan. Untuk pilihan -q adalah memberitahu sendmail berapa lama untuk memproses antrian mail. Contoh diatas adalah memproses setiap satu jam (-q1h). Contoh lain, misalnya diubah menjadi (-q30m) artinya akan diproses dalam waktu 30 menit. Disarankan untuk memproses antrian ini dalam waktu yang tidak terlalu lama. Hal ini disebabkan karena antrian yang besar akan berpengaruh terhadap kinerja server, dan tentu akan berpengaruh terhadap kinerja jaringan secara keseluruhan. Pilihan -bd menunjukkan bahwa sendmail dijalankan sebagai daemon dan menunggu (listen) di port 25 (SMTP) TCP untuk mail yang tidak terlalu lama. Hal ini disebabkan karena antrian yang besar akan berpengaruh terhadap kinerja server, dan tentu akan berpengaruh terhadap kinerja jaringan secara keseluruhan. Pilihan -bd menunjukkan bahwa sendmail dijalankan sebagai daemon dan menunggu (listen) di port 25 (SMTP) TCP untuk mail yang datang.

SuSE

Skrip untuk menjalankan, mematikan, mengecek status dan merestart daemon sendmail di SuSE terletak di /etc/rc.d/init.d/sendmail. Berikut kutipannya :
#! /bin/sh

# Copyright (c) 1996 S.u.S.E. Gmbh Fuerth, Germany.  All rights

# reserved.

#

# Author: Florian La Roche <florian@suse.de>, 1996, 1997

#         Werner Fink <werner@suse.de>, 1996

#

 

. /etc/rc.config

 

# Determine the base and follow a runlevel link name.

base=${0##*/}

link=${base#*[SK][0-9][0-9]}

 
# Force execution if not called by a runlevel directory.

test $link = $base && SMTP=yes

test "$SMTP" = yes || exit 0

 

if test -z "$SENDMAIL_ARGS" ; then

        SENDMAIL_ARGS="-bd -q30m -om"

fi

 

# The echo return value for success (defined in /etc/rc.config).

return=$rc_done

case "$1" in

    start)

        echo -n "Initializing SMTP port. (sendmail)"

        startproc /usr/sbin/sendmail $SENDMAIL_ARGS || return=$rc_failed

        echo -e "$return"

        ;;

    stop)

        echo -n "Shutting down SMTP port:"

        killproc -TERM /usr/sbin/sendmail || return=$rc_failed

        echo -e "$return"

        ;;

    restart)

        $0 stop  &&  $0 start  ||  return=$rc_failed

        ;;

    reload)

        echo -n "Reload service sendmail"

        killproc -HUP /usr/sbin/sendmail || return=$rc_failed

        echo -e "$return"

        ;;

    status)

        echo -n "Checking for service sendmail: "

        checkproc /usr/sbin/sendmail && echo OK || echo No process

        ;;

    *)

        echo "Usage: $0 {start|stop|status|restart|reload}"

        exit 1

esac

 

# Inform the caller not only verbosely and set an exit status.

test "$return" = "$rc_done" || exit 1

exit 0

Untuk mengadministrasikannya, tersedia pilihan start, stop, status, restart, reload. Misalnya untuk melihat status sendmail :
# /etc/rc.d/init.d/sendmail status

RedHat

RedHat memiliki skrip yang agak mirip dengan SuSE untuk menadministrasikan daemon sendmail. Skrip tersebut dapat ditemukan pula di /etc/rc.d/init.d/sendmail.
#!/bin/sh

#

# sendmail      This shell script takes care of starting and stopping

#               sendmail.

#

# chkconfig: 2345 80 30

# description: Sendmail is a Mail Transport Agent, which is the

# program\

#              that moves mail from one machine to another.

# processname: sendmail

# config: /etc/sendmail.cf

# pidfile: /var/run/sendmail.pid

 

# Source function library.

. /etc/rc.d/init.d/functions

 

# Source networking configuration.

. /etc/sysconfig/network

 

# Source sendmail configureation.

if [ -f /etc/sysconfig/sendmail ] ; then

        . /etc/sysconfig/sendmail

else

        DAEMON=yes

        QUEUE=1h

fi


 

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

 

[ -f /usr/sbin/sendmail ] || exit 0

 

RETVAL=0

 

# See how we were called.

case "$1" in

  start)

        # Start daemons.

 

        echo -n "Starting sendmail: "

        /usr/bin/newaliases > /dev/null 2>&1

        for i in virtusertable access domaintable mailertable ; do

            if [ -f /etc/mail/$i ] ; then

                makemap hash /etc/mail/$i < /etc/mail/$i

            fi

        done

        daemon /usr/sbin/sendmail $([ "$DAEMON" = yes ] && echo -bd)\

                                  $([ -n "$QUEUE" ] && echo -q$QUEUE)

        RETVAL=$?

        echo

        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/sendmail

        ;;

  stop)

        # Stop daemons.

        echo -n "Shutting down sendmail: "

        killproc sendmail

        RETVAL=$?

        echo

        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/sendmail

        ;;

  restart|reload)

        $0 stop

        $0 start

        RETVAL=$?

        ;;

  status)

        status sendmail

        RETVAL=$?

        ;;

  *)

        echo "Usage: sendmail {start|stop|restart|status}"

        exit 1

esac

 

exit $RETVAL

 
RedHat menggunakan /etc/rc.d/init.d/.function untuk menyimpan fungsi dan variabel skripnya. Sendmail bisa diadministrasikan dengan menjalankan perintah (sebagaimana di SuSE) start, stop, restart, status. Misalnya untuk menghentikan daemon sendmail :
# /etc/rc.d/init.d/sendmail stop

Tidak ada komentar:

Posting Komentar