Server Mail

  • Uploaded by: Achmad Muzaqi
  • 0
  • 0
  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Server Mail as PDF for free.

More details

  • Words: 10,311
  • Pages: 74
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/CA98.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.

Subsections •



Sendmail o Menjalankan sendmail sebagai Daemon.  Slackware  SuSE  RedHat o POP3 di Sendmail o Administrasi Sendmail  Alias sendmail (sendmail aliases)  Personal Mail Forwarding o Sendmail.cf  Bagaimana membuat konfigurasi sendmail (sendmail.cf)?  sendmail.cf di SuSE  sendmail.cf di RedHat qmail o Instalasi qmail o Seting mbox o Seting Maildir o Test mengirim e-mail

o o



Seting Klien Windows 9x atau Windows NT Program Tambahan qmail (Add on)

Ringkasan

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.

Subsections •

Menjalankan sendmail sebagai Daemon. o Slackware

o o

SuSE RedHat

• •

POP3 di Sendmail Administrasi Sendmail o Alias sendmail (sendmail aliases) o Personal Mail Forwarding



Sendmail.cf o Bagaimana membuat konfigurasi sendmail (sendmail.cf)? o sendmail.cf di SuSE o sendmail.cf di RedHat

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.

Subsections • • •

Slackware SuSE RedHat

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 , 1996, 1997 #

Werner Fink <[email protected]>, 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

POP3 di Sendmail Agar user dapat mengambil e-mail secara remote, maka perlu dipasang POP3 Server. Dalam hal ini, sendmail tidak mendukungnya, dan untuk dapat menjalankan POP3 harus menggunakan program tambahan lain. Secara default, jika anda instal pine (klien e-mail) saat instalasi, maka program tersebut secara otomatis menyertakan ipop3d yang melayani pengguna di port 110. Tidak ada konfigurasi secara khusus. Dari sisi user, cukup menunjuk mesin Linux sebagai SMTP server (yang dilayani oleh sendmail) dan POP3 server (yang dilayani oleh ipop3d). Misalnya untuk klien Outlook Express, seting untuk servernya bisa lewat Tools - Accounts - Mail - Add - Mail. Pada bagian E-mail Server Names, cukup isikan nama server Linux, atau alamat IP-nya. Jika diisi nama server, perlu diperhatikan seting MX Record pada DNS servernya. Untuk ujicoba memastikan bahwa sistem berjalan baik, isikan terlebih dahulu nomor IP-nya. Gambar 8 E-mail Server Names di Outlook Express

Administrasi Sendmail

Subsections • •

Alias sendmail (sendmail aliases) Personal Mail Forwarding

Alias sendmail (sendmail aliases) Fungsi alias disini adalah untuk : • •

Memberikan nama alternatif kepada setiap user Mailing list

Biasanya untuk aliases ini disimpan di /etc/aliases yang merupakan file teks. Format penulisannya yaitu : Alias: penerima, [penerima, ...]

Alias ini biasanya digunakan untuk menerima khusus seperti postmaster atau root. Pada saat membuat aliasnya dapat digunakan hanya nama atau alamat lengkap, contoh : anggap bahwa domain yang digunakan adalah nuts.com

# special names postmaster: root root: wars

# accept first-intial_last-name@ nuts.com kacang: anda@peanut tanah: andajuga@walnut

# a mailing list admin: wars, root, anda@peanut , andajuga@walnut , fade2blac@pecan , sipoer

owner-admin: root

jika ada e-mail yang dikirim kan ke alamat diatas maka akan disampaikan kepada user yang ada disebelah kanan alias, contoh bila ada e-mail yang ditujukan ke [email protected] akan dikirimkan ke user root dan begitupun dengan alias admin maka akan dikirim ke user wars, root, anda@peanut dan seterusnya. Untuk alias ini sendmail tidak langsung mengenal pada saat ada penambahan ataupun pengurangan data, untuk supaya dapat dikenal maka harus dilakukan perintah newaliases atau sendmail -bi oleh user root.

Personal Mail Forwarding Untuk forwarding ini selain dapat dilakukan oleh aliases juga dapat dilakukan dengan menambahkan file .forward pada direktori user masing-masing dan ini bisa dilakukan oleh user yang bersangkutan sementara untuk aliases hanya dapat dilakukan oleh superuser atau root, jadi apabila user ingin memindahkan alamat e-mailnya cukup dengan

membuat personal mail forwarding ini. Contoh user wars akan dipindahkan ke user wars yang ada di domain domain.com Berarti isi dari file .forward ini adalah : [email protected]

Apabila ada e-mail untuk user [email protected] akan secara otomatis dikirim lagi ke user [email protected]

Biasanya .forward ini digunakan untuk forwarding sementara. Dan semua konfigurasi untuk sendmail ini ditentukan oleh file /etc/sendmail.cf.

Sendmail.cf Seperti telah disebutkan sebelumnya bahwa semua konfigurasi sendmail ini terdapat file /etc/sendmail.cf yang berisi bermacam-macam konfigurasi yang secara umum dibagi 3 fungsi utama yaitu : • • •

Mendefinisikan lingkungan sendmail ( sendmail environment ) Menuliskan kembali alamat-alamat pada sintak yang benar (tepat) untuk mail penerima. Memetakan alamat-alamat kepada intruksi yang dibutuhkan untuk mengirimkan e-mail.

Didalam sendmail.cf ini juga dapat dibentuk beberapa macro, rule untuk mendefiniskan lingkungan yang akan digunakan sendmail.

Bagaimana membuat konfigurasi sendmail (sendmail.cf)? Untuk memudahkan dalam memanfaatkan semua fasilitas dan kelebihan sendmail sebaiknya kode sumber (source code) dari sendmail disertakan pada linux yang diinstall, atau untuk mendapatkan versi terbaru sendmail dapat diambil di situs : http://www.sendmail.org . Gunakan m4 script untuk memudahkan feature yang ada, contoh file m4 dengan nama file locallinux.mc : # File Name : locallinux.mc divert(0)dnl VERSIONID(`@(#)sendmail.mc 8.9.1 ') OSTYPE(linux)dnl

DOMAIN(generic)dnl FEATURE(always_add_domain)dnl FEATURE(access_db, dbm -o /var/adm/sendmail/accessdb)dnl FEATURE(blacklist_recipients)dnl FEATURE(genericstable, hash -o /var/adm/sendmail/genericstable)dnl FEATURE(virtusertable, hash -o /var/adm/sendmail/virtusertable)dnl MAILER(local)dnl MAILER(smtp)dnl

Setelah itu jalankan program m4 yang biasanya terletak pada direktori /usr/sbin # m4 ../m4/cf.m4 locallinux.mc > sendmail.cf

Perintah diatas akan membentuk file konfigurasi sendmail, yaitu sendmail.cf setelah itu pindahkan sendmail.cf ini ke direktori /etc dan lakukan restart sendmail, dengan menjalankan script yang ada pada direktori /etc/rc.d/rc.init/sendmail restart. Berikut ini adalah contoh sendmail.cf yang telah ditambahkan beberapa fitur seperti contoh di atas. Dimana ada fungsi untuk filter e-mail tertentu berdasarkan Header E-mail Reply-To atau berdasarkan Subject e-mail. # #################################################################### # Copyright (c) 1998 Sendmail, Inc.

All rights reserved.

# Copyright (c) 1983, 1995 Eric P. Allman.

All rights reserved.

# Copyright (c) 1988, 1993 # The Regents of the University of California. reserved.

All rights

# # By using this file, you agree to the terms and conditions set # forth in the LICENSE file which can be found at the top level of # the sendmail distribution. #

###################################################################### ###################################################################### ##### #####

SENDMAIL CONFIGURATION FILE

##### ##### built by [email protected] on Wed Feb 23 11:41:37 GMT+0700 2000 ##### in /data/source/sendmail-8.9.1/cf/cf ##### using ../ as configuration include directory ##### ###################################################################### ######################################################################

#####

@(#)cfhead.m4

8.22 (Berkeley) 5/19/98

#####

#####

@(#)cf.m4

8.29 (Berkeley) 5/19/98

#####

#####

@(#)sendmail.mc 8.9.1

#####

@(#)linux.m4

8.10 (Berkeley) 5/19/98

#####

@(#)generic.m4

8.9 (Berkeley) 5/19/98

#####

@(#)redirect.m4

8.10 (Berkeley) 5/19/98

#####

@(#)use_cw_file.m4

#####

#####

#####

#####

8.6 (Berkeley) 5/19/98

#####

#####

@(#)always_add_domain.m4 8.6 (Berkeley) 5/19/98

#####

#####

@(#)access_db.m4 8.8 (Berkeley) 5/19/98

#####

@(#)blacklist_recipients.m4

#####

@(#)genericstable.m4

8.7 (Berkeley) 5/19/98

#####

#####

@(#)virtusertable.m4

8.7 (Berkeley) 5/19/98

#####

#####

@(#)proto.m4

#####

8.9 (Berkeley) 5/19/98

8.223 (Berkeley) 6/30/98

#####

#####

# level 8 config file format V8/Berkeley

# override file safeties - setting this option compromises system security # need to set this now for the sake of class files #O DontBlameSendmail=safe O DontBlameSendmail=GroupWritableDirPathSafe, forwardfileinunsafedirpath, GroupWritableAliasFile

##################

#

local info

#

##################

Cwlocalhost # file containing names of hosts for which we receive e-mail Fw/etc/sendmail.cw

CGut.astra.co.id C{DomainMilisBlocking} onelist.com # my official domain name # ... define this only if sendmail cannot automatically determine your domain #Dj$w.Foo.COM

CP.

# "Smart" relay host (may be null) DS

# operators that cannot be in local usernames (i.e., network indicators) CO @ % !

# a class with just dot (for identifying canonical names) C..

# a class with just a left bracket (for identifying domain literals)

C[[

# Generics table (mapping outgoing addresses) Kgenerics hash -o /etc/mail/genericstable

# Virtual user table (maps incoming users) Kvirtuser hash -o /etc/mail/virtusertable

# Access list database (for spam stomping) Kaccess dbm -o /etc/mail/accessdb

# Blocking Mailing List Database Kmilis hash -o /etc/mail/milis

# User list Database Kuserut hash -o /etc/mail/userut

# Resolve map (to check if a host exists in check_mail) Kresolve host -a -T

# Hosts that will permit relaying ($=R) FR-o /etc/mail/relay-domains

# who I send unqualified names to (null means deliver locally) DR

# who gets all local e-mail traffic ($R has precedence for unqualified names) DH

# dequoting map Kdequote dequote

# class E: names that should be exposed as from this host, even if we masquerade # class L: names that should be delivered locally, even if we have a relay # class M: domains that should be converted to $M #CL root #CE root CEroot postmaster news uucp mailer-daemon rdist nobody daemon pop imap

# who I masquerade as (null for no masquerading) (see also $=M) DM

# my name for error messages DnMAILER-DAEMON

CPREDIRECT

# Configuration version number DZ8.9.1

############### #

Options

#

###############

# strip message body to 7 bits on input? O SevenBitInput=False

# 8-bit data handling O EightBitMode=pass8

# wait for alias file rebuild (default units: minutes) #O AliasWait=5m

# location of alias file O AliasFile=/etc/aliases

# minimum number of free blocks on filesystem #O MinFreeBlocks=100

# maximum message size O MaxMessageSize=2097152

# substitution for space (blank) characters O BlankSub=.

# avoid connecting to "expensive" mailers on initial submission? O HoldExpensive=False

# checkpoint queue runs after every N successful deliveries #O CheckpointInterval=10

# default delivery mode O DeliveryMode=background

# automatically rebuild the alias database? #O AutoRebuildAliases

# error message header/file #O ErrorHeader=/etc/sendmail.oE

# error mode #O ErrorMode=print

# save Unix-style "From_" lines at top of header? #O SaveFromLine

# temporary file mode

#O TempFileMode=0600

# match recipients against GECOS field? #O MatchGECOS

# maximum hop count #O MaxHopCount=17

# location of help file O HelpFile=/usr/local/lib/sendmail.hf

# ignore dots as terminators in incoming messages? #O IgnoreDots

# name resolver options #O ResolverOptions=+AAONLY

# deliver MIME-encapsulated error messages? O SendMimeErrors=True

# Forward file search path O ForwardPath=$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward

# open connection cache size O ConnectionCacheSize=2

# open connection cache timeout O ConnectionCacheTimeout=5m

# persistent host status directory #O HostStatusDirectory=.hoststat

# single thread deliveries (requires HostStatusDirectory)? #O SingleThreadDelivery

# use Errors-To: header? O UseErrorsTo=False

# log level O LogLevel=9

# send to me too, even in an alias expansion? #O MeToo

# verify RHS in newaliases? O CheckAliases=False

# default messages to old style headers if no special punctuation? O OldStyleHeaders=True

# SMTP daemon options

#O DaemonPortOptions=Port=esmtp

# privacy flags O PrivacyOptions=authwarnings

# who (if anyone) should get extra copies of error messages #O PostMasterCopy=Postmaster

# slope of queue-only function #O QueueFactor=600000

# queue directory O QueueDirectory=/var/spool/mqueue

# timeouts (many of these) #O Timeout.initial=5m #O Timeout.connect=5m #O Timeout.iconnect=5m #O Timeout.helo=5m #O Timeout.mail=10m #O Timeout.rcpt=1h #O Timeout.datainit=5m #O Timeout.datablock=1h #O Timeout.datafinal=1h #O Timeout.rset=5m #O Timeout.quit=2m

#O Timeout.misc=2m #O Timeout.command=1h #O Timeout.ident=30s #O Timeout.fileopen=60s O Timeout.queuereturn=5d #O Timeout.queuereturn.normal=5d #O Timeout.queuereturn.urgent=2d #O Timeout.queuereturn.non-urgent=7d O Timeout.queuewarn=4h #O Timeout.queuewarn.normal=4h #O Timeout.queuewarn.urgent=1h #O Timeout.queuewarn.non-urgent=12h #O Timeout.hoststatus=30m

# should we not prune routes in route-addr syntax addresses? #O DontPruneRoutes

# queue up everything before forking? O SuperSafe=True

# status file O StatusFile=/etc/mail/sendmail.st

# time zone handling: #

if undefined, use system default

#

if defined but null, use TZ envariable passed in

#

if defined and non-null, use that info

#O TimeZoneSpec=

# default UID (can be username or userid:groupid) O DefaultUser=daemon

# list of locations of user database file (null means no lookup) #O UserDatabaseSpec=/etc/userdb

# fallback MX host #O FallbackMXhost=fall.back.host.net

# if we are the best MX host for a site, try it directly instead of config err #O TryNullMXList

# load average at which we just queue messages #O QueueLA=8

# load average at which we refuse connections #O RefuseLA=12

# maximum number of children we allow at one time #O MaxDaemonChildren=12

# maximum number of new connections per second

#O ConnectionRateThrottle=3

# work recipient factor #O RecipientFactor=30000

# deliver each queued job in a separate process? #O ForkEachJob

# work class factor #O ClassFactor=1800

# work time factor #O RetryFactor=90000

# shall we sort the queue by hostname first? #O QueueSortOrder=priority

# minimum time in queue before retry #O MinQueueAge=30m

# default character set #O DefaultCharSet=iso-8859-1

# service switch file (ignored on Solaris, Ultrix, OSF/1, others) #O ServiceSwitchFile=/etc/service.switch

# hosts file (normally /etc/hosts) #O HostsFile=/etc/hosts

# dialup line delay on connection failure #O DialDelay=10s

# action to take if there are no recipients in the message #O NoRecipientAction=add-to-undisclosed

# chrooted environment for writing to files #O SafeFileEnvironment=/arch

# are colons OK in addresses? #O ColonOkInAddr

# how many jobs can you process in the queue? #O MaxQueueRunSize=10000

# shall I avoid expanding CNAMEs (violates protocols)? #O DontExpandCnames

# SMTP initial login message (old $e macro) O SmtpGreetingMessage=$j Sendmail $v/$Z; $b

# UNIX initial From header format (old $l macro) O UnixFromLine=From $g

$d

# From: lines that have embedded newlines are unwrapped onto one line #O SingleLineFromHeader=False

# Allow HELO SMTP command that does not include a host name #O AllowBogusHELO=False

# Characters to be quoted in a full name phrase (@,;:\()[] are automatic) #O MustQuoteChars=.

# delimiter (operator) characters (old $o macro) O OperatorChars=.:%@!/[]+

# shall I avoid calling initgroups(3) because of high NIS costs? #O DontInitGroups

# are group-writable :include: and .forward files (un)trustworthy? #O UnsafeGroupWrites

# where do errors that occur when sending errors get sent? #O DoubleBounceAddress=postmaster

# what user id do we assume for the majority of the processing? #O RunAsUser=sendmail

# maximum number of recipients per SMTP envelope #O MaxRecipientsPerMessage=100

# shall we get local names from our installed interfaces? #O DontProbeInterfaces

# No Vrfy and expn Opnovrfy Opnoexpn

########################### #

Message precedences

#

###########################

Pfirst-class=0 Pspecial-delivery=100 Plist=-30 Pbulk=-60 Pjunk=-100

##################### #

Trusted users

#

#####################

# this is equivalent to setting class "t" #Ft/etc/sendmail.ct

Troot Tdaemon Tuucp

######################### #

Format of headers

#

#########################

H?P?Return-Path: <$g> HReceived: $?sfrom $s $.$?_($?s$|from $.$_) $.by $j ($v/$Z)$?r with $r$. id $i$?u for $u; $|; $.$b H?D?Resent-Date: $a H?D?Date: $a H?F?Resent-From: $?x$x <$g>$|$g$. H?F?From: $?x$x <$g>$|$g$. H?x?Full-Name: $x # HPosted-Date: $a # H?l?Received-Date: $b H?M?Resent-Message-Id: <$t.$i@$j> H?M?Message-Id: <$t.$i@$j> # ################################################################ #

Mailing List Rules ( Base on Reply-To Header )

#

#

Contoh Rule untuk memblock mailing list dengan

#

#

berdasarkan Header Reply-To dan disimpan di file milis #

################################################################

HReply-To:

$>Check_RplyTo

D{MPat}REJECT D{MMsg}User unknown

SCheck_RplyTo R$*

$: < $1 >

R$+ < $* >

< $2 >

R< $* > $+

< $1 >

R<>

$@ < @ >

R< $+ > $: $1 R$*@$={DomainMilisBlocking} Mailing-List dari Onelist R$*

$#error $: 553 ${MMsg}

Block

R${MPat}

$: $( milis $1 $) $#error $: 553 ${MMsg}

############################################################### #

Mailing List Rules ( Base on Subject Header )

#

Contoh untuk memblok mailinglist/E-mail

#

berdasarkan subject

# # #

###############################################################

HSubject:

$>Check_Subject

D{MPat1}[http://come.to/konyol] D{MMsg1}User unknown

SCheck_Subject R${MPat1} $*

$#error $: 553 ${MMsg1}

###################################################################### ###################################################################### ##### #####

REWRITING RULES

##### ###################################################################### ######################################################################

############################################ ###

Ruleset 3 - Name Canonicalization

###

############################################ S3

# handle null input (translate to <@> special case) R$@

$@ <@>

# strip group: syntax (not inside angle brackets!) and trailing semicolon R$*

$: $1 <@>

mark addresses

R$* < $* > $* <@>

$: $1 < $2 > $3

unmark

R@ $* <@>

$: @ $1

unmark @host:...

R$* :: $* <@> node::addr

$: $1 :: $2

unmark

R:include: $* <@> :include:...

$: :include: $1

unmark

R$* [ $* : $* ] <@> addrs

$: $1 [ $2 : $3 ]

unmark IPv6

R$* : $* [ $* ] leading colon

$: $1 : $2 [ $3 ] <@>

remark if

R$* : $* <@> marked

$: $2

strip colon if

R$* <@>

$: $1

unmark

R$* ; semi

$1

strip trailing

R$* < $* ; > semi

$1 < $2 >

bogus bracketed

# null input now results from list:; syntax R$@

$@ :; <@>

# strip angle brackets - note RFC733 heuristic to get innermost item R$*

$: < $1 >

housekeeping <>

R$+ < $* > left

< $2 >

strip excess on

R< $* > $+ right

< $1 >

strip excess on

R<> case

$@ < @ >

MAIL FROM:<>

R< $+ > housekeeping <>

$: $1

remove

# make sure <@a,@b,@c:user@d> syntax is easy to parse - undone later R@ $+ , $+ to ":"

@ $1 : $2

change all ","

# localize and dispose of route-based addresses R@ $+ : $+ addr>

$@ $>96 < @$1 > : $2

handle
# find focus for list syntax R $+ : $* ; @ $+

$@ $>96 $1 : $2 ; < @ $3 >

list syntax

R $+ : $* ;

$@ $1 : $2;

list syntax

# find focus for @ syntax addresses R$+ @ $+

$: $1 < @ $2 >

focus on domain

R$+ < $+ @ $+ >

$1 $2 < @ $3 >

move gaze right

R$+ < @ $+ > canonical

$@ $>96 $1 < @ $2 >

already

# do some sanity checking R$* < @ $* : $* > $* addrs

$1 < @ $2 $3 > $4

nix colons in

# convert old-style addresses to a domain-based address R$- ! $+ names

$@ $>96 $2 < @ $1 .UUCP >

resolve uucp

R$+ . $- ! $+ uucps

$@ $>96 $3 < @ $1 . $2 >

R$+ ! $+

$@ $>96 $2 < @ $1 .UUCP >

domain

uucp subdomains

# if we have % signs, take the rightmost one R$* % $* all @s.

$1 @ $2

First make them

R$* @ $* @ $* the last.

$1 % $2 @ $3

Undo all but

R$* @ $* finish

$@ $>96 $1 < @ $2 >

Insert < > and

# else we must be a local name R$*

$@ $>96 $1

################################################ ###

Ruleset 96 - bottom half of ruleset 3

###

################################################

S96

# handle special cases for local names R$* < @ localhost > $* domain at all

$: $1 < @ $j . > $2

no

R$* < @ localhost . $m > $* domain

$: $1 < @ $j . > $2

local

R$* < @ localhost . UUCP > $* domain

$: $1 < @ $j . > $2

.UUCP

R$* < @ [ $+ ] > $* [a.b.c.d]

$: $1 < @@ [ $2 ] > $3

mark

R$* < @@ $=w > $* literal

$: $1 < @ $j . > $3

self-

R$* < @@ $+ > $* IP addr

$@ $1 < @ $2 > $3

canon

# if really UUCP, handle it immediately

# try UUCP traffic as a local address R$* < @ $+ . UUCP > $*

$: $1 < @ $[ $2 $] . UUCP . > $3

R$* < @ $+ . . UUCP . > $*

$@ $1 < @ $2 . > $3

# pass to name server to make hostname canonical R$* < @ $* $P > $*

$: $1 < @ $[ $2 $3 $] > $4

# local host aliases and pseudo-domains are always canonical R$* < @ $=w > $*

$: $1 < @ $2 . > $3

R$* < @ $j > $*

$: $1 < @ $j . > $2

R$* < @ $=M > $*

$: $1 < @ $2 . > $3

R$* < @ $* $=P > $*

$: $1 < @ $2 $3 . > $4

R$* < @ $* . . > $*

$1 < @ $2 . > $3

################################################## ###

Ruleset 4 - Final Output Post-rewriting

###

################################################## S4

R$* <@> list:;

$@

handle <> and

# strip trailing dot off possibly canonical name R$* < @ $+ . > $*

$1 < @ $2 > $3

# eliminate internal code - should never get this far! R$* < @ *LOCAL* > $*

$1 < @ $j > $2

# externalize local domain info R$* < $+ > $*

$1 $2 $3

defocus

R@ $+ : @ $+ : $+ canonical

@ $1 , @ $2 : $3



R@ $*

$@ @ $1

... and exit

# UUCP must always be presented in old form R$+ @ $- . UUCP

$2!$1

[email protected] => h!u

# delete duplicate local names R$+ % $=w @ $=w u@host

$1 @ $2

u%host@host =>

############################################################## ###

Ruleset 97 - recanonicalize and call ruleset zero

###

(used for recursive calls)

### ###

##############################################################

S97 R$*

$: $>3 $1

R$*

$@ $>0 $1

###################################### ###

Ruleset 0 - Parse Address

###

######################################

S0

R$*

$: $>Parse0 $1

initial parsing

R<@>

$#local $: <@>

special case error msgs

R$*

$: $>98 $1

handle local hacks

R$*

$: $>Parse1 $1

final parsing

# #

Parse0 - do initial syntax checking and eliminate local addresses.

#

This should either return with the (possibly modified) input

#

or return with a #error mailer.

#

#mailer other than the #error mailer.

It should not return with a

#

SParse0 R<@>

$@ <@>

special case error msgs

R$* : $* ; <@> recipient addresses"

$#error $@ 5.1.3 $: "List:; syntax illegal for

#R@ <@ $* >

< @ $1 >

R<@ $+>

$#error $@ 5.1.3 $: "User address required"

R$*

$: <> $1

R<> $* < @ [ $+ ] > $*

$1 < @ [ $2 ] > $3

R<> $* <$* : $* > $* part"

$#error $@ 5.1.3 $: "Colon illegal in host name

R<> $*

$1

R$* < @ . $* > $*

$#error $@ 5.1.2 $: "Invalid host name"

R$* < @ $* .. $* > $*

$#error $@ 5.1.2 $: "Invalid host name"

catch "@@host" bogosity

# now delete the local info - note $=O to find characters that cause forwarding R$* < @ > $*

$@ $>Parse0 $>3 $1

user@ => user

R< @ $=w . > : $*

$@ $>Parse0 $>3 $2

@here:... -> ...

R$- < @ $=w . > "foo"@here

$: $(dequote $1 $) < @ $2 . >

dequote

R< @ $+ >

$#error $@ 5.1.3 $: "User address required"

R$* $=O $* < @ $=w . >

$@ $>Parse0 $>3 $1 $2 $3

R$"foo"

$: $(dequote $1 $) < @ *LOCAL* >

R< @ *LOCAL* >

$#error $@ 5.1.3 $: "User address required"

R$* $=O $* < @ *LOCAL* >

...@here -> ... dequote

$@ $>Parse0 $>3 $1 $2 $3

... R$* < @ *LOCAL* >

...@*LOCAL* ->

$: $1

# #

Parse1 - the bottom half of ruleset 0.

#

SParse1 # handle numeric address spec R$* < @ [ $+ ] > $* internet spec

$: $>98 $1 < @ [ $2 ] > $3

numeric

R$* < @ [ $+ ] > $* numeric: send

$#esmtp $@ [$2] $: $1 < @ [$2] > $3

still

# handle virtual users R$+ < @ $=w . > $2 . >

$: < $(virtuser $1 @ $2 $@ $1 $: @ $) > $1 < @

R<@> $+ + $* < @ $* . > $: < $(virtuser $1 + * @ $3 $@ $1 $: @ $) > $1 + $2 < @ $3 . > R<@> $+ + $* < @ $* . >

< @ $3 . >

$: < $(virtuser $1 @ $3 $@ $1 $: @ $) > $1 + $2

R<@> $+ < @ $+ . > . >

$: < $(virtuser @ $2 $@ $1 $: @ $) > $1 < @ $2

R<@> $+

$: $1

R< error : $- $+ > $*

$#error $@ $(dequote $1 $) $: $2

R< $+ > $+ < @ $+ >

$: $>97 $1

# short circuit local delivery so forwarded e-mail works R$=L < @ $=w . >

$#local $: @ $1

R$+ < @ $=w . > name

$#local $: $1

special local names regular local

# resolve remotely connected UUCP links (if any)

# resolve fake top level domains by forwarding to other hosts

# pass names that still have a host to a smarthost (if defined) R$* < @ $* > $* smarthost name

$: $>95 < $S > $1 < @ $2 > $3

glue on

# deal with other remote names R$* < @$* > $* $#esmtp $@ $2 $: $1 < @ $2 > $3 [email protected]

# handle locally delivered names R$=L names

$#local $: @ $1

special local

R$+ names

$#local $: $1

regular local

####################################################################### ####

### ###

Ruleset 5 - special rewriting after aliases have been expanded

####################################################################### ####

S5

# deal with plussed users so aliases work nicely R$+ + *

$#local $@ $&h $: $1

R$+ + $*

$#local $@ + $2 $: $1 + *

# prepend an empty "forward host" on the front R$+

$: <> $1

# see if we have a relay or a hub R< > $+

$: < $H > $1

try hub

R< > $+

$: < $R > $1

try relay

R< > $+ +detail

$: < > < $1 $&h >

nope, restore

R< > < $+ + $* > $* part

< > < $1 > + $2 $3

find the user

R< > < $+ > + $* +

$#local $@ $2 $: @ $1

strip the extra

R< > < $+ >

$@ $1

no +detail

R$+ back in

$: $1 $&h

add +detail

R< local : $* > $* extension

$: $>95 < local : $1 > $2

no host

R< error : $* > $* extension

$: $>95 < error : $1 > $2

R< $- : $+ > $+

$: $>95 < $1 : $2 > $3 < @ $2 >

R< $+ > $+

$@ $>95 < $1 > $2 < @ $1 >

no host

################################################################### ###

Ruleset 95 - canonify mailer:[user@]host syntax to triple ###

###################################################################

S95 R< > $* relay

$@ $1

strip off null

R< error : $- $+ > $*

$#error $@ $(dequote $1 $) $: $2

R< local : $* > $*

$>CanonLocal < $1 > $2

R< $- : $+ @ $+ > $*<$*>$*

$# $1 $@ $3 $: $2<@$3>

use literal user

R< $- : $+ > $* mailer

$# $1 $@ $2 $: $3

try qualified

R< $=w > $* host

$@ $2

delete local

R< $+ > $* mailer

$#relay $@ $1 $: $2

use unqualified

################################################################### ###

Ruleset CanonLocal - canonify local: syntax

###

###################################################################

SCanonLocal

# strip trailing dot from any host name that may appear R< $* > $* < @ $* . >

$: < $1 > $2 < @ $3 >

# handle local: syntax - use old user, either with or without host R< > $* < @ $* > $*

$#local $@ $1@$2 $: $1

R< > $+

$#local $@ $1

$: $1

# handle local:user@host syntax - ignore host part R< $+ @ $+ > $* < @ $* >

$: < $1 > $3 < @ $4 >

# handle local:user syntax R< $+ > $* <@ $* > $*

$#local $@ $2@$3 $: $1

R< $+ > $*

$#local $@ $2

$: $1

################################################################### ###

Ruleset 93 - convert header names to masqueraded form

###

###################################################################

S93

# handle generics database R$+ < @ $=G . > $: < $1@$2 > $1 < @ $2 . > @

mark

R$+ < @ *LOCAL* >

$: < $1@$j > $1 < @ *LOCAL* > @ mark

R< $+ > $+ < $* > @

$: < $(generics $1 $: $) > $2 < $3 >

R< > $+ < @ $+ >

$: < $(generics $1 $: $) > $1 < @ $2 >

R< $* @ $* > $* < $* >

$@ $>3 $1 @ $2

found qualified

R< $+ > $* < $* > unqualified

$: $>3 $1 @ *LOCAL*

found

R< > $*

$: $1

not found

# special case the users that should be exposed R$=E < @ *LOCAL* >

$@ $1 < @ $j . >

R$=E < @ $=M . >

$@ $1 < @ $2 . >

R$=E < @ $=w . >

$@ $1 < @ $2 . >

leave exposed

# handle domain-specific masquerading R$* < @ $=M . > $* masqueraded doms

$: $1 < @ $2 . @ $M > $3

convert

R$* < @ $=w . > $*

$: $1 < @ $2 . @ $M > $3

R$* < @ *LOCAL* > $*

$: $1 < @ $j . @ $M > $2

R$* < @ $+ @ > $*

$: $1 < @ $2 > $3

$M is null

R$* < @ $+ @ $+ > $*

$: $1 < @ $3 . > $4

$M is not null

################################################################### ###

Ruleset 94 - convert envelope names to masqueraded form

###

###################################################################

S94 R$* < @ *LOCAL* > $*

$: $1 < @ $j . > $2

################################################################### ###

Ruleset 98 - local part of ruleset zero (can be null)

###

###################################################################

S98

# addresses sent to [email protected] will give a 551 error code R$* < @ $+ .REDIRECT. > >

$: $1 < @ $2 . REDIRECT . > < ${opMode}

R$* < @ $+ .REDIRECT. >

$: $1 < @ $2 . REDIRECT. >

R$* < @ $+ .REDIRECT. > < $- > moved; please try " <$1@$2>

$# error $@ 5.1.1 $: "551 User has

###################################################################### ###

LookUpDomain - search for domain in access database

### ###

Parameters:

###

<$1> - key (domain name)

###

<$2> - default (what to return if not found in db)

### through)

<$3> - passthru (additional data passed unchanged

######################################################################

SLookUpDomain R<$+> <$+> <$*>

$: < $(access $1 $: ? $) > <$1> <$2> <$3>

R <$+.$+> <$+> <$*>

$@ $>LookUpDomain <$2> <$3> <$4>

R <$+> <$+> <$*>

$@ <$2> <$3>

R<$*> <$+> <$+> <$*>

$@ <$1> <$4>

###################################################################### ###

LookUpAddress - search for host address in access database

### ###

Parameters:

###

<$1> - key (dot quadded host address)

###

<$2> - default (what to return if not found in db)

###

<$3> - passthru (additional data passed through)

######################################################################

SLookUpAddress R<$+> <$+> <$*>

$: < $(access $1 $: ? $) > <$1> <$2> <$3>

R <$+.$-> <$+> <$*>

$@ $>LookUpAddress <$1> <$3> <$4>

R <$+> <$+> <$*>

$@ <$2> <$3>

R<$*> <$+> <$+> <$*>

$@ <$1> <$4>

###################################################################### ###

ParseRecipient -

Strip off hosts in $=R as well as possibly

###

$* $=m or the access database.

###

Check user portion for host separators.

### ###

Parameters:

###

$1 - full recipient address

### ### ###

Returns: parsed, non-local-relaying address

######################################################################

SParseRecipient R$*

$: $>Parse0 $>3 $1

R $* < @ $* . >

$1 < @ $2 >

R $- < @ $* > local part

$: $(dequote $1 $) < @ $2 >

strip trailing dots dequote

# if no $=O character, no host in the user portion, we are done R $* $=O $* < @ $* > $: $1 $2 $3 < @ $4> R $*

$@ $1

R $* < @ $* $=R >

$: $1 < @ $2 $3 >

R $* < @ $* >

$: $>LookUpDomain <$2> <$1 < @ $2 >>

R<$+> <$+>

$: <$1> $2

R $* < @ $* >

$@ $>ParseRecipient $1

R<$-> $*

$@ $2

###################################################################### ###

check_relay - check hostname/address on SMTP startup

######################################################################

SLocal_check_relay Scheck_relay R$*

$: $1 $| $>"Local_check_relay" $1

R$* $| $* $| $#$*

$#$3

R$* $| $* $| $*

$@ $>"Basic_check_relay" $1 $| $2

SBasic_check_relay # check for deferred delivery mode R$*

$: < ${deliveryMode} > $1

R< d > $*

$@ deferred

R< $* > $*

$: $2

R$+ $| $+

$: $>LookUpDomain < $1 > < $2 >

R < $+ >

$: $>LookUpAddress < $1 > < $1 >

R < $* >

$: $1

R < $* >

$: $1

R $*

$#error $@ 5.7.1 $: "550 Access denied"

R $*

$#discard $: discard

R<$+> $*

$#error $@ 5.7.1 $: $1

###################################################################### ###

check_mail - check SMTP `MAIL FROM:' command argument

######################################################################

SLocal_check_mail Scheck_mail R$*

$: $1 $| $>"Local_check_mail" $1

R$* $| $#$*

$#$2

R$* $| $*

$@ $>"Basic_check_mail" $1

SBasic_check_mail # check for deferred delivery mode R$*

$: < ${deliveryMode} > $1

R< d > $*

$@ deferred

R< $* > $*

$: $2

R<>

$@

R$* canonical

$: $>Parse0 $>3 $1

make domain

R $* < @ $+ . > $* dots

$1 < @ $2 > $3

strip trailing

# Handle user from ut.astra.co.id R $* < @ $=w > $*

$: $1 < @ $2 > $3

R $* < @ $* > $* R< $* > $* < @ $* > $*

$#error $@ 5.7.1 $: "550 Access Denied" $: $2 < @ $3 > $4

# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc) R $* < $* $=P > $*

$: $1 < @ $2 $3 > $4

R $* < @ $+ > $* > $3

$: $) > $1 < @ $2

R> $* < @ $+ > $* $: <$2> $3 < @ $4 > $5

# handle case of @localhost on address R<$+> $* < @localhost > $: < ? $&{client_name} > <$1> $2 < @localhost > R<$+> $* < @localhost.$m >

@localhost.$m >

$: < ? $&{client_name} > <$1> $2 <

R<$+> $* < @localhost.UUCP > $: < ? $&{client_name} > <$1> $2 < @localhost.UUCP > R <$+> $*

<$2> $3

R <$+> $* required"

$#error $@ 5.5.4 $: "553 Real domain name

R <$+> $*

$: <$1> $2

# lookup localpart (user@) R<$+> $* < @ $+ > $* > $4

$: <$1> $2 < @ $3

# no match, try full address (user@domain rest) R <$+> $* < @ $* > $* $: <$1> $2 < @ $3 > $4 # no match, try address (user@domain) R <$+> $+ < @ $+ > $* $: <$1> $2 < @ $3 > $4 # no match, try (sub)domain (domain) R <$+> $* < @ $+ > $* $: $>LookUpDomain <$3> <$1> <> # check unqualified user in access database R $*

$: $1

# retransform for further use R <$+> $*

$: <$1> $3

# handle case of no @domain on address R $*

$: < ? $&{client_name} > $1

R $* unqualed ok

$@

R $*

$#error $@ 5.5.4 $: "553 Domain name required"

...local

...remote is not # check results R $*

$@

R $*

$@

R $* resolve"

$#error $@ 4.1.8 $: "451 Sender domain must

R $* exist"

$#error $@ 5.1.8 $: "501 Sender domain must

R $*

$@

R $*

$#discard $: discard

R $*

$#error $@ 5.7.1 $: "550 Access denied"

R<$+> $* access db

$#error $@ 5.7.1 $: $1

error from

###################################################################### ###

check_rcpt - check SMTP `RCPT TO:' command argument

######################################################################

SLocal_check_rcpt Scheck_rcpt R$*

$: $1 $| $>"Local_check_rcpt" $1

R$* $| $#$*

$#$2

R$* $| $*

$@ $>"Basic_check_rcpt" $1

SBasic_check_rcpt # check for deferred delivery mode R$*

$: < ${deliveryMode} > $1

R< d > $*

$@ deferred

R< $* > $*

$: $2

R$* hosts

$: $>ParseRecipient $1

strip relayable

# blacklist local users or any host from receiving mail R$*

$: $1

R $+ < @ $=w > $2 >>

$: <> <$1 < @

R $+ < @ $* >

$: <> <$1 < @ $2 >>

R $+

$: <> <$1>

R<> $*

$: <$(access $1 $: $)> $2

R<> $*

$: <$(access $1 $: $)> $2

R $*

$: <$(access $1 $: $)> $2

R<> $*

$: <$(access $1 $: $)> $2

R $*

$: <$(access $1 $: $)> $2

R<> <$*>

$: $1

R <$*>

$: $1

R <$*>

$: $1

R $* this recipient"

$#error $@ 5.2.1 $: "550 Mailbox disabled for

R<$+> $* from access db

$#error $@ 5.2.1 $: $1

error

# anything terminating locally is ok R$+ < @ $=w >

$@ OK

R$+ < @ $* $=R >

$@ OK

R$+ < @ $* >

$: $>LookUpDomain <$2> <$1 < @ $2 >>

R $*

$@ RELAY

R<$*> <$*>

$: $2

# check for local user (i.e. unqualified address) R$*

$: $1

R $+ < @ $+ >

$: $1 < @ $2 >

# local user is ok R $+

$@ OK

R<$+> $*

$: $2

# anything originating locally is ok R$*

$: $&{client_name}

# check if bracketed IP address (forward lookup != reverse lookup) R [$+]

$: [$1]

# pass to name server to make hostname canonical R $* $P

$: $[ $1 $2 $]

R<$-> $*

$: $2

R$* . dots

$1

R$@

$@ OK

strip trailing

R$=w

$@ OK

R$* $=R

$@ OK

R$*

$: $>LookUpDomain <$1> <$1>

R $*

$@ RELAY

R<$*> <$*>

$: $2

# check IP address R$*

$: $&{client_addr}

R$@

$@ OK

originated locally

R0

$@ OK

originated locally

R$=R $*

$@ OK

relayable IP address

R$*

$: $>LookUpAddress <$1> <$1>

R $*

$@ RELAY

R<$*> <$*>

$: $2

R$* it...

$: [ $1 ]

put brackets around

R$=w local

$@ OK

... and see if it is

relayable IP address

# anything else is bogus R$*

$#error $@ 5.7.1 $: "550 Relaying denied"

# ###################################################################### ###################################################################### #####

#####

MAILER DEFINITIONS

##### ###################################################################### ######################################################################

################################################## ###

Local and Program Mailer specification

###

##################################################

#####

@(#)local.m4

Mlocal,

8.30 (Berkeley) 6/30/98

#####

P=/bin/mail, F=lsDFMAw5:/|@qrmn9, S=10/30, R=20/40, T=DNS/RFC822/X-Unix, A=mail -r $g -d $u

Mprog,

P=/bin/sh, F=lsDFMoqeu9, S=10/30, R=20/40, D=$z:/, T=X-Unix, A=sh -c $u

# #

Envelope sender rewriting

# S10 R<@>

$n

errors to mailer-daemon

R@ <@ $*> bogosity

$n

temporarily bypass Sun

R$+ needed

$: $>50 $1

add local domain if

R$*

$: $>94 $1

do masquerading

# #

Envelope recipient rewriting

# S20 R$+ < @ $* >

$: $1

strip host part

# #

Header sender rewriting

# S30 R<@>

$n

errors to mailer-daemon

R@ <@ $*> bogosity

$n

temporarily bypass Sun

R$+ needed

$: $>50 $1

add local domain if

R$*

$: $>93 $1

do masquerading

# #

Header recipient rewriting

# S40 R$+ needed

$: $>50 $1

add local domain if

# #

Common code to add local domain name (only if always-add-domain)

# S50 R$* < @ $* > $* qualified

$@ $1 < @ $2 > $3

already fully

R$+ qualification

$@ $1 < @ *LOCAL* >

add local

##################################### ###

SMTP Mailer specification

###

#####################################

#####

Msmtp,

@(#)smtp.m4

8.38 (Berkeley) 5/19/98

#####

P=[IPC], F=mDFMuX, S=11/31, R=21, E=\r\n, L=990, T=DNS/RFC822/SMTP, A=IPC $h

Mesmtp,

P=[IPC], F=mDFMuXa, S=11/31, R=21, E=\r\n, L=990, T=DNS/RFC822/SMTP, A=IPC $h

Msmtp8,

P=[IPC], F=mDFMuX8, S=11/31, R=21, E=\r\n, L=990, T=DNS/RFC822/SMTP, A=IPC $h

Mrelay,

P=[IPC], F=mDFMuXa8, S=11/31, R=61, E=\r\n, L=2040, T=DNS/RFC822/SMTP, A=IPC $h

# #

envelope sender rewriting

# S11 R$+ $1

$: $>51 sender/recipient common

R$* :; <@> case

$@

list:; special

R$* unqual'ed names

$: $>61 $1

qualify

R$+

$: $>94 $1

do masquerading

# #

envelope recipient rewriting -

#

also header recipient if not masquerading recipients

# S21 R$+ $1

$: $>51 sender/recipient common

R$+ unqual'ed names

$: $>61 $1

qualify

# # #

header sender and masquerading header recipient rewriting

S31 R$+ $1

$: $>51 sender/recipient common

R:; <@> case

$@

list:; special

# do special header rewriting R$* <@> $* through

$@ $1 <@> $2

pass null host

R< @ $* > $* through

$@ < @ $1 > $2

pass route-addr

R$* unqual'ed names

$: $>61 $1

qualify

R$+

$: $>93 $1

do masquerading

# #

convert pseudo-domain addresses to real domain addresses

# S51

# pass s through R< @ $+ > $* addr>

$@ < @ $1 > $2

resolve
# output fake domains as user%fake@relay

# do UUCP heuristics; note that these are shared with UUCP mailers

R$+ < @ $+ .UUCP. > form

$: < $2 ! > $1

convert to UUCP

R$+ < @ $* > $*

$@ $1 < @ $2 > $3

not UUCP form

# leave these in .UUCP form to avoid further tampering R< $&h ! > $- ! $+

$@ $2 < @ $1 .UUCP. >

R< $&h ! > $-.$+ ! $+

$@ $3 < @ $1.$2 >

R< $&h ! > $+

$@ $1 < @ $&h .UUCP. >

R< $+ ! > $+

$: $1 ! $2 < @ $Y >

use UUCP_RELAY

R$+ < @ $+ : $+ > part

$@ $1 < @ $3 >

strip mailer:

R$+ < @ >

$: $1 < @ *LOCAL* >

if no UUCP_RELAY

# #

common sender and masquerading recipient rewriting

# S61

R$* < @ $* > $* qualified

$@ $1 < @ $2 > $3

already fully

R$+ qualification

$@ $1 < @ *LOCAL* >

add local

# # #

relay mailer header masquerading recipient rewriting

S71

R$+

$: $>61 $1

R$+

$: $>93 $1

sendmail.cf di SuSE Untuk menghasilkan file sendmail.cf di SuSE, bisa dilakukan secara otomatis oleh yast. Lewat account root, jalankan yast. # yast

Masuk kebagian System Administration - Network Configuration - Configure Sendmail. Disitu sudah ada pilihan : 1. 2. 3. 4.

Host with permanent network connection Single user machine without network connection Host with temporarily network connection (modem/ISDN) Do not instal /etc/sendmail.cf

Pilih sesuai dengan kebutuhan anda, dan yast secara otomatis akan membuat file sendmail.cf yang sederhana, namun dapat langsung difungsikan.

sendmail.cf di RedHat Untuk RedHat, file konfigurasi sendmail.cf bisa dibuat melalui LinuxConf, pada bagian Config - Server Task - Sendmail Basic Information. Pilihan yang ada akan memudahkan anda untuk mengkonfigurasikannya : •

Present your system as

Nama domain utama yang dipergunakan. •

Accept e-mail for your domain

Biasanya sendmail hanya menerima domain name yang benar/FQDN (Fully Qualified Domain Name). Dengan mengaktifkan pilihan ini, sendmail juga akan menerima e-mail dengan domain yang didahului nama server. •

Mail Server

Nama server mail utama. Hal ini bisa terjadi jika dalam satu intranet terdapat banyak server mail. •

Mail Gateway

Nama server mail yang meneruskan e-mail anda (fasilitas forward). Hal ini berlaku misalnya pada jaringan dengan satu mail server yang meneruskan semua e-mail yang keluar (ke Internet) •

Mail Gateway Protocol

Protocol yang dipergunakan untuk menghubungi mail gateway. Untuk ESMTP, jangan lupa untuk mengisikan nama domain yang lengkap. Sedangkan UUCP (Unix to Unix Copy Protocol) cukup diisikan nama server. •

Features

Beberapa pilihan untuk layanan sendmail. Pilihan tersebut adalah : •

Relay Control

Mengontrol siapa saja yang boleh menggunakan sendmail anda untuk relay. •

No batching for uucp mail E-mail yang menggunakan UUCP akan langsung dikirimkan (tidak diantrikan terlebih dahulu). Hal ini mengurangi lalu lintas dalam jaringan.



Max size for UUCP users

Ukuran maksimal untuk pengguna UUCP. •

Deliver locally to users

Dipergunakan biasanya untuk pseudo user. •

No masquerade for users

Nama user yang tidak dimasquerade (lihat pilihan present your system as). •

Special routing database enabled

Pilih jika ingin menggunakan routing khusus. •

Special routing database format

Database yang digunakan oleh sendmail. Biasanya menggunakan format dbm. •

Local Delivery Agent

Pilih jika ingin menggunakan program lain untuk mendistribusikan e-mails ecara lokal. Biarkan kosong dan linuxconf akan melakukan probing, dan memilihkan program yang cocok untuk mesin linux anda. •

Don't try to deliver immediately

E-mail tidak langsung dikirim, melainkan diantrikan terlebih dahulu (dengan perintah sendmail -q) •

Process queue every (minutes)

Interval waktu untuk mengirimkan e-mail yang antri (qeued). •

Support bogus mail client (HELO)

Beberapa klien e-mail menghasilkan urutan HELO secara tidak beraturan. Biasanya sendmail akan menolak e-mailnya. Dengan pilihan ini sendmail akan lebih toleran dan menerimanya sebagai e-mail yang valid. Agar dapat di Relay jangan lupa dapftarkan domain mail server yang bersangkutan ke file /etc/sendmail.cw.

qmail qmail merupakan pengganti yang lebih modern dari sendmail, disusun oleh Dan Bernstein. Beberapa situs besar yang menggunakan qmail diantaranya Hotmail (untuk outgoing mail), USA.net (untuk outgoing e-mail), Yahoo! mail, Network Solutions, listserv.acsu.buffalo.edu (menggunakan qmail sejak 1996), XOOM.com, onelist.com (yang tellah merger dengan E-group, perusahaan besar penyedia mailing list gratis), Red Hat's mailing lists, Hypermart.net, dan FSmail.net.

Subsections • • • • •

Instalasi qmail Seting mbox Seting Maildir Test mengirim e-mail Seting Klien Windows 9x atau Windows NT



Program Tambahan qmail (Add on)

Instalasi qmail Pertama, download terlebih dahulu program qmail dalam bentuk kode sumber (source code). Daftar server yang menyediakan qmail dapat Anda lihat di http://www.qmail.org dan dapat Anda pilih mirror yang terdekat. Saat ini mirror di Indonesia yang masih aktif adalah http://qmail.indosite.co.id. Catatan : Binary qmail dalam format RPM (Redhat Package Manager) dapat diperoleh di ftp://moni.msci.memphis.edu/pub/qmail. Yang akan Anda bahas di sini adalah instalasi program yang mempunyai format kode sumber (source code) Setelah download programnya secara lengkap, Anda mulai dengan mengekstrak dari bentuk zip dan tar ball. Dianjurkan untuk melakukan proses instalasi sebagai root. # gunzip qmail-1.0.03.tar.gz | tar xvf-

Kemudian sebelum instalasi, tentukan terlebih dahulu direktori utama yang menyimpan program qmail. Secara default adalah /var/qmail. Selain itu, jika server tempat Anda instalasi sudah menjalankan sendmail sebagai MTA, dianjurkan untuk menyimpan terlebih dahulu surat-surat yang masih antre untuk dikirim. Atau lebih aman lagi matikan daemon sendmail. Setelah itu, buat direktori tempat di mana qmail disimpan. # mkdir /var/qmail

Langkah selanjutnya, buat qmail user dan grup sebelum instalasi dimulai. # groupadd nofiles # useradd -g nofiles -d /var/qmail/alias alias # useradd -g nofiles -d /var/qmail qmaild # useradd -g nofiles -d /var/qmail qmaill # useradd -g nofiles -d /var/qmail qmailp # groupadd qmail # useradd -g qmail -d /var/qmail qmailq # useradd -g qmail -d /var/qmail qmailr # useradd -g qmail -d /var/qmail qmails

Setelah itu kompilasi dapat dijalankan. qmail-1.0.03#./make setup check qmail-1.0.03#./config

Selain perintah config, untuk mengkonfigurasikan qmail dalam mesin Anda, Anda dapat menjalankan perintah config-fast nama.domain.Anda sebagai alternatif instalasi lebih singkat. qmail-1.0.03#./config-fast nama.domain.anda

Nama domain ini akan dipergunakan secara default dalam pengalamatan domain emailnya. Anda bisa bikin sembarang untuk implementasi intranet. Dengan perintah config-fast nama domain ini, skrip config akan menuliskan nama.domain.anda ke dalam file control/me, control/local dan control/rcpthosts sehingga qmail secara default akan menerima e-mail dari nama.domain.anda. Untuk pemberian nama domain yang resmi (bisa diakses dari luar) harus menggunakan nama domain yang memenuhi standar (Fully Qualified Domain Name). Konsultasikan dengan ISP atau penyedia jasa hosting untuk bisa memperoleh nama domain resmi. Catatan : Untuk lebih mengenal direktori direktori yang dibuat oleh qmail, Anda dapat membaca FAQ yang terletak di /var/qmail/doc setelah instalasi selesai. Selesai menjalankan skrip config bisa dikatakan proses instalasi telah selesai. Namun sebelum Anda menjalankan qmail ada beberapa hal yang perlu disetup. Pertama Anda perlu membuat alias. Alias akan menangani e-mail dengan user tidak dikenal. qmail secara default tidak membundel paketnya untuk mendukung /etc/alias. Jika Anda ingin menggunakan file tersebut, maka perlu ditambahkan aplikasi pendukung bernama fast forward. Aplikasi ini bersama aplikasi pendukung lainnya dapat Anda peroleh di homepage qmail. Untuk mengaktifkan alias, jalankan perintah berikut : #touch alias/qmail-postmaster #chmod 644 alias/qmail-postmaster #touch alias/qmail-mailer-daemon #chmod 644 alias/qmail-mailer-daemon #touch alias/qmail-root #chmod 644 alias/qmail-root

Alias postmaster akan menangani e-mail yang ditujukan kepada postmaster. Alias mailer daemon akan menangani setiap e-mail yang bounce (tidak bisa diteruskan). Sedangkan alias root dipergunakan untuk menangani e-mail yang ditujukan kepada root. Anda dapat

menambahkan alias lainnya, seperti qmail-default yang akan menerima setiap e-mail dengan username yang tidak dikenal. Langkah berikutnya adalah seting Mailbox. Pada umumnya, Mail Transfer Agent menggunakan dua format dalam menangani e-mail. 1. Format mbox E-mail disimpan dalam sebuah file. Setiap kali ada surat masuk atau keluar, ditambahkan (embed) secara otomatis kedalam file yang bersangkutan. Dengan demikian ukuran file mbox ini bertambah setiap kali ada penambahan e-mail. Kelemahan dari format ini, jika di tengah-tengah download e-mail ada gangguan, maka pada sesi berikutnya Mail User Agent (MUA/Klien e-mail; program untuk mengirim, mendownload dan membaca e-mail) akan mencoba mengulang lagi download e-mailnya. Sesi terdahulu yang terputus di tengah jalan dianggap gagal. Selain itu kemungkinan besar format mbox akan rusak. 2. Format Maildir Maildir merupakan format yang anti crash, dan lebih reliabel dibandingkan format mbox. Namun belum banyak MUA (Mail User Agent - klien e-mail) yang mendukung format maildir ini. qmail mendukung kedua format tersebut. Anda diberi kebebasan untuk memilihnya, namun dianjurkan untuk menggunakan format maildir.

Seting mbox Sendmail dalam mendistribusikan e-mail secara lokal menggunakan binmail. Secara default, binmail akan mengirimkan mail ke dalam folder/var/spool/mail/nama_user. qmail menggunakan qmail-local untuk distribusi lokal, dan langsung menyimpannya kenama_user/Mailbox. Prosedur untuk menggantikan dari /var/spool/mail/nama_user adalah :

1. Pindahkan semua /var/spool/mail/nama_user ke dalam nama_user/Mailbox. Demi keamanan, jalankan dalam proses single mode. Jika server masih dalam keadaan berjalan, berikan pesan broadcast kepada semua user untuk keluar dari jaringan. # init 1

(menuju modus singel user)

# cd /var/spool/mail

# cp nama_user /home/nama_user/Mailbox # rm nama_user

2. Kemudian sebagai root buat link simbolik dari nama_user/Mailbox ke dalam /var/spool/mail/nama_user. Lakukan ini untuk semua user. Berikan mode 1777 untuk folder /var/spool/mail untuk menghindarkan penghapusan link secara tidak sengaja. # cd /home/nama_user # ln Mailbox /var/spool/mail/nama_user

Lakukan ini untuk semua user. Seting pada klien Windows 9x atau Windows NT akan dibahas dalam bagian lain. Di beberapa program mail, tidak dapat menangani link simbolik. Untuk itu harus langsung ditujukan ke nama_user/Mailbox daripada /var/spool/mail/nama_user pada saat chek e-mail. Untuk program procmail misalnya, ganti SYSTEM_MBOX dalam config.h dan lakukan kompilasi ulang. Pada beberapa versi terbaru, Anda dapat mendefinisikan MAILSPOOLHOME dalam src/authenticate.c. Untuk mengoptimalkan kemampuan klien e-mail membaca e-mail dalam jumlah banyak (yang kadang-kadang menjadi lebih lambat karena membaca link simbolik dari Mailbox), Anda dapat tujukan langsung klien e-mailnya untuk membaca nama_user/Mailbox. 3. Sebagian besar klien e-mail, masukkan "setenv MAIL $HOME/Mailbox" jika menggunakan shell csh ke dalam .cshrc dan "MAIL=$HOME/Mailbox; export MAIL" jika menggunakan shell bash ke dalam .profile secara umum. 4. elm: ganti "mailbox" ke "Mailbox" pada baris 388 dari file newmbox.c dan lakukan kompilasi ulang. elm dalam membaca e-mail selalu melihat $MAIL, tapi jika Anda tidak mengganti ini, maka elm akan mengalami masalah saat dua user membaca mail secara simultan. 5. pine: Masukkan "inbox-path=Mailbox" dalam file pine.conf. Atau jika masingmasing user mempunyai konfigurasi sendiri, minta kepada user untuk mengganti konfigurasi inbox-path-nya.

Seting Maildir Untuk menggunakan format Maildir dalam menangani setiap mail yang masuk ke alamat Anda, jalankan perintah : $ maildirmake $HOME/Maildir $ echo ./Maildir/ > /.qmail

Jangan lupa setelah Maildir tambahkan slash sebagaimana dituliskan di atas. Jalankan proses tersebut terhadap setiap user. Untuk MUA (mail client) yang hanya mendukung format mbox, qmail menyertakan program maildir2mbox yang dijalankan bersama wrapper elq dan pineq. Dengan demikian, setiap kali Anda menjalankan pine atau elm, wrapper tersebut akan memanggil program maildir2mbox, sehingga MUA favorit Anda tidak akan bermasalah menggunakan format maildir. Catatan: Variasi dapat dibuat dengan menerapkan format Maildir pada user tertentu, dan format mbox pada user lainnya. Penerapan ini cukup ideal, jika anda mempunyai user yang mengambil e-mail lewat POP3 secara remote dan lokal. Untuk user yang mengambil email secara remote, diterapkan format maildir, dan yang lokal diterapkan format mbox. Langkah selanjutnya adalah mengkopi file-file yang berada dalam /var/qmail/boot/home ke dalam /var/qmail/rc. # cd /var/qmail/boot/home # cp * /var/qmail/rc.

Test mengirim e-mail Selesai mengkopi, Anda persiapkan untuk test kirim e-mail antar user. Langkah pertama adalah menjalankan program qmail. #csh -cf

'/var/qmail/rc &'

Jika qmail sudah berjalan, maka dalam gile log Anda (biasanya /var/log/messages) akan memberikan pesan : qmail: status: local 0/10 remote 0/20

Jalankan perintah ps untuk mengetahui program-rogram qmail yang sedang berjalan. Suite qmail yang siap melayani pengiriman mail Anda adalah : qmail-send, dijalankan oleh qmails; qmail-lspawn, dijalankan oleh root; qmail-rspawn, dijalankan oleh qmailr; and qmail-clean, dijalankan oleh qmailq; splogger, dijalankan oleh qmaill, untuk mencatat aktivitas qmail ke file log. $ ps ax | more (grep hasil ps ax)

Jika semua program qmail sudah berjalan dengan baik, coba kirim e-mail secara lokal. Gantikan aku berikut kepada salah satu username yang terdaftar di mesin Anda (atau username Anda). $ echo to: aku | /var/qmail/bin/qmail-inject

Segera setelah Anda jalankan perintah di atas, file log Anda akan mencatat kurang lebih sebagai berikut : qmail: new msg 53 qmail: info msg 53: bytes 246 from qp 20345 uid 666 qmail: starting delivery 1: msg 53 to local [email protected] qmail: status: local 1/10 remote 0/20 qmail: delivery 1: success: did_1+0+0/ qmail: status: local 0/10 remote 0/20 qmail: end msg 53

Catatan : 53 adalah nomor inode dan 20345 adalah nomor proses. Di komputer Anda mungkin akan tampak lain. Sedangkan domain.com adalah domain yang Anda konfigurasikan pada saat instalasi. Test berikutnya adalah mengirim e-mail kepada user sembarang (tidak terdaftar sebagai user). $ echo to: sembarangan | /var/qmail/bin/qmail-inject

Pada file log Anda akan tampak sebagai berikut : qmail: new msg 53 qmail: info msg 53: bytes 246 from qp 20351 uid 666 qmail: starting delivery 2: msg 53 to local [email protected] qmail: status: local 1/10 remote 0/20 qmail: delivery 2: failure: No_such_address.__#5.1.1_/ qmail: status: local 0/10 remote 0/20 qmail: bounce msg 53 qp 20357 qmail: end msg 53

qmail: new msg 54 qmail: info msg 54: bytes 743 from <> qp 20357 uid 666 qmail: starting delivery 3: msg 54 to local [email protected] qmail: status: local 1/10 remote 0/20 qmail: delivery 3: success: did_1+0+0/ qmail: status: local 0/10 remote 0/20 qmail: end msg 54

Segera setelah itu, buka mailbox Anda, maka akan terlihat di situ e-mail yang bounce (balik lagi). Jika mesin Linux Anda mempunyai nomor IP resmi dan terdaftar dalam salah satu name server, maka Anda dapat melakukan seting MX Record. Namun jika server Linux Anda mengunakan dial-up untuk koneksi ke internet, maka solusinya adalah menggunakan program tambahan (add on) untuk qmail yang bernama serialmail dan tcp-ucspi. Silakan lihat di bagian program tambahan qmail. Selain menjalankan test lewat qmail-inject, Anda dapat mengirim e-mail langsung lewat smtp qmail. % telnet 127.0.0.1 25 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is ']'. 220 domain ESMTP helo katro 250 nama.domain.Anda mail 250 ok rcpt 250 ok data

354 go ahead Subject: testing Ngetes doang nehhh. . 250 ok 812345679 qp 12345 quit 221 nama.domain.Anda Connection closed by foreign host. $

Untuk meyakinkan qmail Anda berjalan dengan baik, lakukan beberapa test terhadap user langsung menggunakan klien e-mail. Untuk workstation Windows 9x atau NT, klien emailnya harus disetup terlebih dahulu untuk bisa memanfaatkan qmail yang baru saja berjalan.

Seting Klien Windows 9x atau Windows NT Klien Windows 9x ataupun Windows NT dapat menggunakan qmail sebagai mail servernya. Seting umum yang harus dilakukan adalah memasukkan nomor IP (atau nama mesin qmail yang terdaftar dalam MX record jika server Anda menjalankan name server) ke dalam konfigurasi smtp dan pop3 server. Pada klien Outlook Express, buka tools-account-mail. Buat account baru, dengan aturan : • • • •

Username : isi dengan username yang dipakai untuk login ke mesin linux Alamat e-mail : [email protected]. Anda (ingat saat instalasi qmail ./config-fast nama.domain.Anda) Smtp server, isi dengan nomor IP mesin linux Anda Pop3 server, sama dengan di atas, isi dengan nomor IP mesin linux.

Selanjutnya, Anda bisa menjalankan beberapa tes untuk saling berkirim satu sama lain dalam satu jaringan. Untuk MUA yang lain, seperti Eudora, Pegasus, Netscape Messenger, pada prinsipnya sama. Username, alamat e-mail, smtp server dan pop3 server.

Program Tambahan qmail (Add on) 1. serialmail

Program yang mengirimkan E-mail dari Maildir ke SMTP luar. Program ini cocok jika anda menggunakan koneksi dial up ke Internet. 2. ucspi-tcp Program tcpserver yang dipergunakan untuk menjalankan qmail (selain lewat inetd). 3. daemontools Program yang mengadministrasi qmail sebagai daemon. Misalnya menghentikan dan memulai kembali daemon qmail, penambahan fasilitas logging yang lebih komprehensif. 4. qmailanalog Program yang membantu menganalisa aktivitas qmail. Misalnya berapa banyak email yang didistribusikan? Siapa yang menerima e-mail? Kapan? Apakah e-mail berhasil dikirim? Atau gagal? Apa sebab kegagalannya? Dan sebagainya. 5. dot-forward Program yang membaca file .forward yang ada di Sendmail di bawah qmail. 6. fastforward Program yang menangani forwarding di qmail dengan menggunakan database cdb. 7. checkpassword Program yang memberikan metode pengecekan password sederhana terhadap semua aplikasi yang dijalankan di bawah root. Selain itu banyak program-program bantu lainnya yang dikembangkan oleh sukarelawan di seluruh dunia. Daftar terakhirnya dapat anda lihat di situs qmail, http://www.qmail.org atau http://qmail.indosite.co.id untuk mirror di Indonesia.

Ringkasan Pada bab ini telah dibahas bersama bagaimana mengkonfigurasikan qmail sebagai MTA server untuk distribusi lokal. Jika Anda berencana menggunakannya sebagai mail server internet, pastikan untuk mengeset Mail Record pada name server yang punya otorisasi untuk merawat domain yang Anda miliki.

Selain sendmail dan qmail masih ada exim, dan postfix yang juga banyak dipakai. Jika anda menangani dan memelihara mail server, usahakan untuk selalu terinformasikan berita-berita terbaru, terutama tentang bug. Biasanya para pengembang program ini menginformasikannya lewat mailing list.

Related Documents

Server Mail
May 2020 11
Mail Server Sulinux
April 2020 4
Membuat Mail Server
November 2019 8
Mail Server & Client
May 2020 19
Mail Server Linux
November 2019 4

More Documents from ""

Index
May 2020 16
Dns Untuk Intranet
May 2020 14
Load Balanced Quangga
May 2020 16
Konfigurasi Apache
May 2020 20
Konsep Dan Kerja Dns
May 2020 20