Tulisan ini dibuat karena untuk memenuhi kebutuhan pop3 server di kantor penulis yang sebelumnya menggunakan ServenG4 buatan Apple. Setelah dipikir-pikir, ditimbang-timbang dan dicari-cari, penulis merasa dengan distro RedHat + Sendmail lah yang tepat mengenai sasaran kebutuhan penulis. Pertimbangan waktu yang mendesak dan pemahaman penulis tentang linux juga menjadi alasan penulis memilih distro dan aplikasi MTA ini.
Semoga penulisan ini bermanfaat bagi orang banyak, khususnya bagi yang kebingungan mencari alternative penggunaan OS windows untuk Pop3 server. Wassalam ; Dwi Nugroho.
Install Redhat 9.0 sebagai server dan pastikan service dns dan email terinstall didalamnya.
- Beri nama host apa.ajah.deh
- IP 192.168.1.9 / 255.255.255.0
- DNS 202.158.*.* / 202.158.*.*
- Tambahkan search domain.com pada file /etc/resolv.conf
Setelah selesai, check apakah service iptables berjalan, dengan perintah :
# iptables –L
Jika service iptables masih berjalan, matikan dengan perintah :
# /etc/rc.d/init.d/iptables stop
# chkconfig –level 345 iptables off
# iptables –L
Check apakah sendmail sudah terinstall dengan perintah :
# rpm –qa |grep sendmail
Ubah baris pada /etc/hosts dengan :
127.0.0.1 mailserver.domain.com
Ubah status disable = yes menjadi disable = no, pada file /etc/xinetd.d/ipop3
Set konfigurasi pada /etc/mail/sendmail.mc sesuai dengan yang dibutuhkan, seperti :
divert(-1)dnl
dnl #
dnl # This is the sendmail macro config file for m4. If you make changes to
dnl # /etc/mail/sendmail.mc, you will need to regenerate the
dnl # /etc/mail/sendmail.cf file by confirming that the sendmail-cf package is
dnl # installed and then performing a
dnl #
dnl # make -C /etc/mail
dnl #
include(`/usr/share/sendmail-cf/m4/cf.m4′)dnl
VERSIONID(`setup for Red Hat Linux’)dnl
OSTYPE(`linux’)dnl
dnl #
dnl # Uncomment and edit the following line if your outgoing mail needs to
dnl # be sent out through an external mail server:
dnl #
dnl define(`SMART_HOST’,`smtp.your.provider’)
dnl #
define(`confDEF_USER_ID’,“8:12′’)dnl
define(`confTRUSTED_USER’, `smmsp’)dnl
dnl define(`confAUTO_REBUILD’)dnl
define(`confTO_CONNECT’, `1m’)dnl
define(`confTRY_NULL_MX_LIST’,true)dnl
define(`confDONT_PROBE_INTERFACES’,true)dnl
define(`PROCMAIL_MAILER_PATH’,`/usr/bin/procmail’)dnl
define(`ALIAS_FILE’, `/etc/aliases’)dnl
dnl define(`STATUS_FILE’, `/etc/mail/statistics’)dnl
define(`UUCP_MAILER_MAX’, `2000000′)dnl
define(`confUSERDB_SPEC’, `/etc/mail/userdb.db’)dnl
define(`confPRIVACY_FLAGS’, `authwarnings,novrfy,noexpn,restrictqrun’)dnl
define(`confAUTH_OPTIONS’, `A’)dnl
define(`confMAX_MESSAGE_SIZE’,`5000000′)dnl
dnl #
dnl # The following allows relaying if the user authenticates, and disallows
dnl # plaintext authentication (PLAIN/LOGIN) on non-TLS links
dnl #
dnl define(`confAUTH_OPTIONS’, `A p’)dnl
dnl #
dnl # PLAIN is the preferred plaintext authentication method and used by
dnl # Mozilla Mail and Evolution, though Outlook Express and other MUAs do
dnl # use LOGIN. Other mechanisms should be used if the connection is not
dnl # guaranteed secure.
dnl #
dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN’)dnl
1,1 Top
define(`confTO_IDENT’, `0′)dnl
dnl FEATURE(delay_checks)dnl
FEATURE(`no_default_msa’,`dnl’)dnl
FEATURE(`smrsh’,`/usr/sbin/smrsh’)dnl
FEATURE(`mailertable’,`hash -o /etc/mail/mailertable.db’)dnl
FEATURE(`virtusertable’,`hash -o /etc/mail/virtusertable.db’)dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl
dnl #
dnl # The -t option will retry delivery if e.g. the user runs over his quota.
dnl #
FEATURE(local_procmail,`’,`procmail -t -Y -a $h -d $u’)dnl
FEATURE(`access_db’,`hash -T -o /etc/mail/access.db’)dnl
FEATURE(`blacklist_recipients’)dnl
EXPOSED_USER(`root’)dnl
FEATURE(`accept_unresolvable_domains’)dnl
dnl #
FEATURE(`relay_entire_domain’)dnl
FEATURE(`relay_mail_from’)dnl
FEATURE(`relay_based_on_MX’)dnl
dnl #
dnl # Also accept email sent to “localhost.localdomain” as local email.
dnl #
LOCAL_DOMAIN(`domain.com’)dnl
dnl #
dnl # The following example makes mail from this host and any additional
dnl # specified domains appear to be sent from mydomain.com
dnl #
MASQUERADE_AS(`domain.com’)dnl
dnl #
dnl # masquerade not just the headers, but the envelope as well
dnl #
FEATURE(masquerade_envelope)dnl
dnl #
dnl # masquerade not just @mydomainalias.com, but @*.mydomainalias.com as well
dnl #
FEATURE(masquerade_entire_domain)dnl
dnl #
dnl MASQUERADE_DOMAIN(localhost)dnl
dnl MASQUERADE_DOMAIN(localhost.localdomain)dnl
dnl MASQUERADE_DOMAIN(mydomainalias.com)dnl
dnl MASQUERADE_DOMAIN(mydomain.lan)dnl
MAILER(smtp)dnl
MAILER(procmail)dnl
Setelah mengadakan perubahan pada sendmail.mc, jangan lupa untuk mengompile file tersebut dengan perintah :
# make –C /etc/mail
Perintah diatas hanya akan mengompile file sendmail.mc dan tidak akan mengompile sendmail.cf, untuk itu anda harus jalankan perintah
# m4 /etc/mail/sendmail.mc > /etc/sendmail.cf
Perintah tersebut untuk mengcopy semua file perubahan yang ada di sendmail.mc ke sendmail.cf. ( Kalau perintah tersebut tidak dilakukan maka beberapa service tidak berjalan dengan benar, seperti port 25 masih akan dipegang oleh mailserver sehingga user lain tidak dapat mengirim email )
Tambahkan pada file /etc/mail/access baris 192.168.1 RELAY
Kemudian lakukan compiling dengan perintah # makemap hash /etc/mail/access.db < /etc/mail/access
Baris tersebut akan memberikan akses kepada user pada jaringan 192.168.1 untuk dapat mengirim email ke internet.
Buat user di linux sebagai username untuk mengambil email yang sudah di fetch dari isp.
1 # adduser cm
# passwd cm
2 # adduser bimo
# passwd bimo
Agar user local dapat menerima email sesuai dengan usernamenya, definisikan masing-masing alamat email beserta username yang akan menerima email tersebut pada file /etc/mail/virtusertable, seperti pada contoh berikut :
vi /etc/mail/virtusertable
cabe.merah@domain.com cm
testing@domain.com testing
sinatrio.bimo@domain.com bimo
^wq
setelah disave compile file tersbut dengan perintah
# makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable
Buat file .fetchmailrc dibawah user root. vi /root/.fetchmailrc dan isikan sebagai berikut :
Set daemon 360
Set syslog
Poll mail.isp.com proto pop3
User “cabe.merah%domain.com with pass “artileri” is cm here
User “sinatrio.bimo%domain.com” with pass “bimo” is bimo here
Simpan.
File diatas artinya, bahwa fetchamail akan mengambil email atas nama account dari cabe.merah%domain.com dengan password untuk masuk ke isp, kemudian di transfer ke mailbox user cm atau bimo.
Ubah permission file .fetchmailrc menjadi 710. dengan perintah
# chmod 710 .fetchmailrc
Sampai pada tahap ini dapat dikatakan sendamil dan fetchmail telah selesai dilakukan dan tinggal mengkonfigurasi pada mail client dari user.
Pembatasan 1 atau beberapa alamat email agar tidak dapat keluar
1. Create user dan password. Misalnya dengan username bs
2. Tambahkan pada file # /etc/mail/virtusertable baris :
^wq
3. Lakukan compile dengan command # makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable
4. Selesai
MEMBUAT MILIS DEPARTMENT
Kadang ada email yang perlu dapat diterima bukan hanya oleh 1 email address saja melainkan dengan hanya mengirimkan ke satu alamat email dapat diterima oleh beberapa user. Contoh : marketing@domain.com
Cara membuatnya adalah :
Buat user marketing
# adduser marketing
# passwd marketing
Tambahkan di /root/.fetchmailrc baris :
User “marketing%domain.com” with pass “marketing” is marketing here
Kemudian buat file marketing dengan isi username yang akan dapat menerima email tersebut. # vi /etc/mail/marketing
cm
bimo
^wq
Buat rules di /etc/aliases dengan menambahkan baris :
# Person who should get root’s mail
#root: marc
marketing :include:/etc/mail/marketing
^wq
setelah disave jangan lupa untuk meng-compile file aliases tersebut dengan perintah
# newaliases
Arti pada baris di dalam /etc/aliases diatas adalah : siapapun yang mengirimkan email ke marketing@domain.com, akan diteruskan ke alamat email yang ada di dalam file /etc/mail/marketing.
Jika pada /etc/aliases tidak dibuat, maka user local tidak dapat mengirim email ke email marketing@domain.com tersebut.
Tambahkan pada /etc/mail/virtusertable masing-masing alamat email dan username yang berhak menerima email yang ditujukan ke alamat email tersebut.
Kemudian login ke user marketing
Pada home drive marketing, buat file .forward dengan cara
# vi .forward ( lalu isikan username yang dapat menerima email untuk marketing tersebut ). Contoh
# vi .forward
cm
bimo
^wq
Kalau konfigurasi diatas tidak dibuat, maka user dari luar tidak dapat mengirim email ke marketing@domain.com atau yang sifatnya milis.
DONE
PROCMAIL ( FILTERING EMAIL )
Untuk beberapa kebutuhan, email yang masuk dan keluar juga dapat difilter. Contoh kasus yang terjadi di IM&A adalah setiap email yang masuk dan yang keluar selalu di Cc kan ke postmaster. Dalam hal ini, kita akan menggunakan jasa file .procmailrc dari masing-masing users. Caranya adalah sbagai berikut :
Log in sebagai user
Buat file .procmailrc dengan cara # vi .procmailrc
Lalu isikan baris
PATH=/usr/bin:/bin
MAILDIR=/var/spool/mail
DEFAULT=$MAILDIR/$USER
:0
* ^From.*
{
: c
! postmaster
^wq
Arti dari baris diatas adalah email dari manapun yang ditujukan ke user tersebut ( misal dn ) akan di Cc kan ke postmaster.
Membuat milis department untuk internal
1. Create user internal
2. Passwd internal
3. Buat file dengan nama internal di /etc/mail/ yang isi dari file tersebut adalah nama-nama / user name yang berhak menerima email tersebut. Lalu di save.
4. Buka /etc/aliases dan tambahkan file tersebut ke dalamnya
internal: :include:/etc/mail/internal
lalu lakukan # newaliases
5. Tambahkan pada /etc/mail/virtusertable, alamat email internal@domain.com beserta username nya.
internal@domain.com internal
lalu lakukan kompile dengan command # makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable
6. DONE
Contoh hasil # netstat –a yang bener :
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:1024 *:* LISTEN
tcp 0 0 mailserver.inkemar:1025 *:* LISTEN
tcp 0 0 *:pop3 *:* LISTEN
tcp 0 0 *:sunrpc *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 mailserver.inkemari:ipp *:* LISTEN
tcp 0 0 *:smtp *:* LISTEN
tcp 0 0 192.168.1.9:ssh 192.168.1.6:3374 ESTABLISHED
udp 0 0 *:1024 *:*
udp 0 0 *:642 *:*
udp 0 0 *:sunrpc *:*
udp 0 0 *:631 *:*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 3048 /tmp/.font-unix/fs7100
unix 11 [ ] DGRAM 2347 /dev/log
unix 2 [ ] DGRAM 3153
unix 2 [ ] DGRAM 3102
unix 2 [ ] DGRAM 2951
unix 2 [ ] DGRAM 2915
unix 2 [ ] DGRAM 2891
unix 2 [ ] DGRAM 2816
unix 2 [ ] DGRAM 2553
unix 2 [ ] DGRAM 2408
unix 2 [ ] DGRAM 2355


