BLOGGER TEMPLATES AND TWITTER BACKGROUNDS

Kamis, 17 September 2009

mail server on freebsd

1. Disabling sendmail system/sendmail binary.
- Disabling via startup script:
# vim /etc/rc.conf
sendmail_enable="NONE"
sendmail_flags="-L sm-mta -bd -q30m"
sendmail_submit_enable="NO"
sendmail_submit_flags="-L sm-mta -bd -q30m -ODaemonPortOptions=Addr=localhost"
sendmail_outbound_enable="NO"
sendmail_outbound_flags="-L sm-queue -q30m"
sendmail_msp_queue_enable="NO"
sendmail_msp_queue_flags="-L sm-msp-queue -Ac -q30m"
 
- Disable sendmail binary:
# mv /usr/sbin/sendmail /usr/sbin/sendmail.old
# chmod 0 /usr/sbin/sendmail.old
# mv /usr/bin/mailq /usr/bin/mailq.old
# chmod 0 /usr/bin/mailq.old
# mv /usr/bin/newaliases /usr/bin/newaliases.old
# chmod 0 /usr/bin/newaliases.old

Catatan: Jika melakukan "build world" (Update src system), maka
wajib melakukan update file2 binary postfix tersebut.

2. Download postfix dari salah satu mirror, atau silahkan gunakan ports
system untuk *BSD class.

# links http://www.postfix.org/download.html
# whereis postfix
postfix: /usr/ports/mail/postfix

- Ada beberapa pilihan versi yg hendak anda pakai silahkan sesuaikan
dengan kebutuhan anda.

# ls -d /usr/ports/mail/postfix*
/usr/ports/mail/postfix /usr/ports/mail/postfix20
/usr/ports/mail/postfix-current /usr/ports/mail/postfixadmin
/usr/ports/mail/postfix1

- Jika akan menginstall postfix -CURRENT version (Version sekarang):
# cd /usr/ports/mail/postfix-current
# make ; make install ; make clean

- Jika versi yg anda inginkan 2X gunakan cara ini: 
# cd /usr/ports/mail/postfix20
# make ; make install ; make clean

- Kalo mendownload secara manual silahkan gunakan cara ini:
# mkdir /usr/local/src
# cd /usr/local/src/
# fetch http://www.mirrorspace.org/postfix/official/postfix-2.1.6.tar.gz 
# tar zxvf postfix-2.1.6.tar.gz
# ls README*
# ls INSTALL*

Silahkan baca2 dulu :-). Tapi saya sarankan menggunakan port untuk
memudahkan instalasinya.

3. Installasi postfix & configurasi postfix.
- Buat username dan group untuk daemon postfix:
# adduser [Untuk interaktif menu] atau,
# man pw(8)
# pw groupadd postdrop
# pw useradd postfix -s /sbin/nologin -g postdrop -d /nonexistent

Jika berniat untuk membangun mailserver support virtual bisa
langsung anda create user/group yg mengurus keperluan itu:
# dduser [Untuk interaktif menu] atau,
# man pw(8)
# pw groupadd virtual
# pw useradd virtual -g virtual -d /home/virtual

- Edit file /etc/postfix/main.cf jika installasi dilakukan dari
tarball, confdir berada di /usr/local/etc/postfix/main.cf jika dilakukan
lewat port.

- Sunting isi dari file2 diatas:
myhostname = example.com
mydestination = $myhostname, localhost.$mydomain 
mynetworks = 127.0.0.0/8 
alias_maps = hash:/etc/aliases 
alias_database = hash:/etc/aliases 
home_mailbox = Maildir/ 

Untuk "myhostname" isi hostname yg FQDN, biasanya nama domain yg
digunakan adalah domain yg nge-handle postfix ini berjalan. 
Isi "mydestination" dengan domain target anda biasanya domain local
saja. Isi IP Address/block IP Address (Penggunaan netmask atau prefix) 
di "mynetworks" yg anda perbolehkan konek dari LAN anda dipisahkan
dengan tanda "coma".

- Untuk menangkal spammer biasanya digunakan:
maps_rbl_domains = relays.ordb.org 
smtpd_helo_restrictions = reject_maps_rbl, permit_mynetworks

- Menolak domain sender yang tidak mempunyai record A atau MX:
smtpd_sender_restrictions = reject_unknown_sender_domain

Untuk custom memilih sender yang akan direject sesuai dengan
kebutuhan bisa diapply via database hash sebagai contoh:
check_sender_access hash:/etc/postfix/sender_access 

- Untuk kebutuhan aliasing bisa menggunakan database hash:
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

- Format/type yg dipilih untuk mbox email adalah:
home_mailbox = Maildir/

- Edit untuk keperluan virtual domain:
Untuk keperluan isi type "mailbox_transport" dengan virtual.
mailbox_transport = virtual

Untuk virtual domain silahkan anda isi path yg sesuai dengan home
basenya. Parameter ini digunakan untuk menyimpan seluruh email2 yg
akan dihandle di mesin ini.
virtual_mailbox_base = /home/virtual

Map database yg digunakan untuk keperluan ini, silahkan isi sesuai
dengan rencana anda dimana akan diletakannya.
virtual_mailbox_maps = hash:/etc/postfix/virtual

Isi dengan UID/GID dari user shell virtual, kita check dulu user
virtualnya:
# id virtual
uid=1000(virtual) gid=100(virtual) groups=100(virtual)

Isikan UID/GID-nya di main.cf.
virtual_uid_maps = static:1000
virtual_gid_maps = static:100
virtual_create_maildirsize = yes

Biar support quota Maildir untuk user virtual.
virtual_mailbox_limit_maps = hash:/etc/postfix/vquota
virtual_mailbox_limit_override = yes

- Tambahan untuk postfix biar bisa menggunakan/terintegrasi dengan amavis antivirus scanner
content_filter = vscan:

Dan jangan lupa tambahkan baris di /etc/postfix/master.cf:
vscan unix - n n - 10 pipe user=vscan
argv=/usr/sbin/amavis ${sender} ${recipient}
localhost:10025 inet n - n - - smtpd -o content_filter=

Untuk konfigurasi lainnya biarkan default saja.

- Kemudian bikin email alias yang akan mengurusi hal-hal yang berkaitan dengan urusan teknis 
(ganti email @example.com sesuai dengan konfigurasi yang anda inginkan):
# echo "postfix: root" > /etc/aliases 
# echo "root : hostmaster@example.com " >> /etc/aliases 
# echo "mailer-daemon : mailer-daemon@example.com " >> /etc/aliases
# echo "postmaster : someone@example.com " >> /etc/aliases
etc...

- Generate database yg baru dari file aliases :
# newaliases 

- Jalankan daemon postfix :
# /usr/sbin/postfix start # Dari tarball instalasi.
# echo "/usr/sbin/postfix start" >> /etc/rc.local

Untuk port biasanya terbentuk file "postfix.sh", sunting dulu file
ini untuk lebih bagusnya:
# /usr/local/etc/rc.d/postfix.sh start # Dari port instalasi.

- Jika emang tidak ada masalah biasanya postfix daemon langsung jalan, 
ada baiknya check saja:
# tail -f /var/log/maillog
Nov 20 02:31:49 example postfix/postfix-script: starting the Postfix mail system 
Nov 20 02:31:49 example postfix/master[2031]: daemon started -- version 2.1.6

- Bikin virtual domain yg akan anda handle, dan sebelomnya bikin
folder "example.com" di /home/virtual
# mkdir /home/virtual/example.com
# vim /etc/postfix/virtual
example.com Yeah....

Create user atas nama domain example.com:
 user@example.com example.com/user/ 

Build file tersebut menjadi hash database:
# postmap /etc/postfix/virtual

- Biar support quota user Maildir. Edit file /etc/postfix/vquota
 user@example.com 1024000
# postmap /etc/postfix/vquota 

Biasanya dengan cara dikirim email atas nama user tersebut, maka secara otomatis akan 
terbentuk folder di /home/virtual/example.com/user.

4. Install tpop3d
- Download source tpop3d dan install tpop3d 
# cd /usr/local/src
# fetch http://www.ex-parrot.com/~chris/tpop3d/tpop3d-1.4.2.tar.gz 
# fetch http://www.ex-parrot.com/~chris/tpop3d/tpop3d-1.4.2-auth-flatfile-broken.patch 
# tar -zxvf tpop3d-1.4.2.tar.gz
# cd tpop3d-1.4.2
# patch -p0 < ../tpop3d-1.4.2-auth-flatfile-broken.patch
# ./configure --help | more
# ./configure --enable-auth-flatfile --enable-mbox-maildir
# make ; make install

Atau menggunakan port system:
# cd /usr/ports/mail/tpop3d
# make ; make install ; make clean

- Buat file /etc/tpop3d.conf isinya :
listen-address: IP_ADDRESS_HERE 
log-facility: local6 
mailbox: maildir:/home/virtual/$(domain)/$(local_part)
auth-flatfile-enable: yes 
auth-flatfile-passwd-file: /etc/virtual/$(domain)/passwdPOP3 
auth-flatfile-mail-user: virtual 
auth-flatfile-mail-group: virtual 
append-domain: yes
log-bad-passwords: yes

- Jalankan tpop3d daemon:
# /usr/local/sbin/tpop3d
# echo "/usr/local/sbin/tpop3d" >> /etc/rc.local

atau via *.sh script di /usr/local/etc/rc.d/ 

- Create file /etc/virtual/example.com/passwdPOP3 untuk menyimpan account POP3:
# mkdir /etc/virtual
# mkdir /etc/virtual/example.com
# cd /etc/virtual/example.com
# htpasswd -c -s passwdPOP3 user

5. Installing Courier-IMAP
- Download source courier-imap & install courier.
# fetch http://www.courier-mta.org/beta/imap/courier-imap-1.7.1.20030319.tar.bz2
# tar -jxvf courier-imap-1.7.1.20030319.tar.bz2 
# cd courier-imap-1.7.1.20030319 
# ./configure --help | more
# ./configure --enable-workarounds-for-imap-client-bugs --disable-root-check 
# make ; make install 

Atau menggunaan port system:
# /usr/ports/mail/courier-imap
# make ; make install

- Configurasi courier-imap, standard kita pake module "authuserdb"
saja, module yg lainnya kita hapus saja:
# rm -rf /usr/lib/courier-imap/libexec/authlib/*
# cp authlib/authuserdb /usr/lib/courier-imap/libexec/authlib/
# cp /usr/lib/courier-imap/etc/imapd.dist /usr/lib/courier-imap/etc/imapd
# cp /usr/lib/courier-imap/etc/imapd-ssl.dist /usr/lib/courier-imap/etc/imapd-ssl

- Edit file yg diperlukan:
# vim usr/lib/courier-imap/etc/imapd
ADDRESS=0 menjadi ADDRESS=IP_ADDRESS_YG_DIGUNAKAN
AUTHMODULES="authdaemon" menjadi AUTHMODULES="authuserdb"

- Starup script:
# echo "/usr/lib/courier-imap/libexec/imapd.rc start" >> /etc/rc.local

atau, via *.sh kl dari port system di /usr/local/etc/rc.d/.

- Membuat user account imap:
# mkdir /etc/userdb 
# chmod 700 /etc/userdb 
# userdb -f /etc/userdb/example.com user@example.com set \
home=/home/virtual/example.com/user \
mail=/home/virtual/example.com/user uid=1000 gid=100
# userdbpw -md5 | userdb -f /etc/userdb/example.com \
 user@example.com set imappw 
# makeuserdb 

6. Installing Squirrelmail
- Download sourcenya:
# fetch http://umn.dl.sf.net/sourceforge/squirrelmail/squirrelmail-1.2.11.tar.gz 
# tar -zxvf squirrelmail-1.2.11.tar.gz
# cd squirrelmail-1.2.11

Atau dengan sistem port:
# cd /usr/ports/mail/squirrelmail
# make ; make install

- Asalkan sudah terinstall Apache web server dan PHP anda tinggal
copy paste saja ke directory browse-nya.

PS: Untuk versi2 yg dibutuhkan silahkan terlebih dahulu baca
manual2 yg terkait di directory "squirrelmail-1.2.11".

7. Script untuk memudahkan pengerjaan membuat account email, anda bisa custom/modif 
sesuai dengan kebutuhan anda:

#!/bin/sh
# Adding user and quota email in virtual/vquota files.
domain="example.com"
vquota="10240000"
echo "Masukan login : " 
read login

echo "$login@$domain $domain/$login/" >> /etc/postfix/virtual
echo "$login@$domain $vquota" >> /etc/postfix/vquota

# Rebuild database postfix.
/usr/sbin/postmap /etc/postfix/virtual
/usr/sbin/postmap /etc/postfix/vquota
/usr/sbin/postmap /etc/postfix/sender_access

# Adduser dan password untuk imap.
adduserargument="-f /etc/userdb/$domain $login@$domain set
home=/home/virtual/$domain/$login mail=/home/virtual/$domain/$login
uid=1021 gid=1021"

userdb $adduserargument
passwdargument="-f /etc/userdb/$domain $login@$domain set imappw"
userdbpw -md5 | userdb $passwdargument
makeuserdb




PERHATIAN:
1. Jangan pernah mencoba ini jika anda tidak tau apa yang anda lakukan.
2. Jangan pula mencoba ini jika anda tidak tau apa itu FeeBSD .
3. siapkan rokok + kopi secukup nya jika anda perokok berat , karena proses ini akan memakan waktu.
4. Tulisan ini di dedikasikan untuk kemajuan freebsd di indonesia.
5. Dipersilahkan mengcopy atau memeperbanyak tulisan ini tanpa seijin saya demi kemajuan freebsd di Indonesia.
Berikut ini langkah langkah membuat mail server :
login : ogeb
pass :* * * *
FreeBSD 5.4-STABLE (INDOFREEBSD) #3: Thu Oct 20 19:56:53 UTC 2005
$ sudo su
Disable sendmail melalui rc.conf
#pico /etc/rc.conf
sendmail_enable=”NONE” 
lalu save
Install postfix
#cd /usr/ports/mail/postfix
#make ; make install ; make clean 
Install Clamav
#cd /usr/ports/security/clamav
#make ; make install ; make clean 
Install clamsmtp
#cd /usr/ports/security/clamsmtp #make ; make install ; make clean 
Install tpop3d
#cd /usr/ports/mail/tpop3d #make ; make install ; make clean 
tahap selanjut nya adalah mengkonfigurasi yang telah kita install tadi
#mv /usr/local/etc/postfix/main.cf /usr/local/etc/postfix/main.cf.default #pico /usr/local/etc/postfix/main.cf 
-----isi file main.cf-----
myhostname = mail.indofreebsd.or.id
mydomain = indofreebsd.or.id
mydestination = $myhostname, localhost.$mydomain
inetinterfaces =192.168.1.5,203.130.195.1
mynetworks = 127.0.0.0/8,192.168.1.0/24,203.130.195.1/29,222.124.1.1/29
aliasmaps = hash:/usr/local/etc/postfix/aliases
aliasdatabase = hash:/usr/local/etc/postfix/aliases
bouncequeuelifetime = 1d
maximalqueuelifetime = 1d
notifyclasses = 2bounce, bounce, delay, policy, protocol, resource, software
daemondirectory = /usr/local/libexec/postfix
commanddirectory = /usr/local/sbin
messagesizelimit = 502400000
mailboxsizelimit = 502400000
smtpdhelorequired = yes
disablevrfycommand = yes
strictrfc821envelopes = yes
smtpdetrnrestriction = reject
smtpdrecipientrestrictions =
rejectunknownsenderdomain
rejectnonfqdnsender
rejectunauthpipelining
rejectmultirecipientbounce,
checkrecipientaccess hash:/usr/local/etc/postfix/recipientaccess
permitmynetworks
rejectunauthdestination
rejectrblclient sbl-xbl.spamhaus.org
rejectrblclient list.dsbl.org
rejectrblclient dnsbl.sorbs.net
rejectrblclient bl.spamcop.net
rejectrhsblclient blackhole.securitysage.com
rejectrhsblsender blackhole.securitysage.com
smtpdrestrictionclasses =
mimeheaderchecks = regexp:/usr/local/etc/postfix/mimeheaderchecks
headerchecks = regexp:/usr/local/etc/postfix/headerchecks
bodychecks = regexp:/usr/local/etc/postfix/bodychecks
mailowner = postfix
smtpdbanner = $myhostname INDOFREEBSD MAIL SERVER
contentfilter = scan:127.0.0.1:10025
receiveoverrideoptions = noaddressmappings
readmedirectory = no
sampledirectory = /usr/local/etc/postfix
sendmailpath = /usr/local/sbin/sendmail
htmldirectory = no
setgidgroup = maildrop
manpagedirectory = /usr/local/man
newaliasespath = /usr/local/bin/newaliases
mailqpath = /usr/local/bin/mailq
queuedirectory = /var/spool/postfix
unknownlocalrecipientreject_code = 450
-isi file main.cf-
lalu save 
kemudian edit master.cf untuk dukungan clamav
#pico /usr/local/etc/postfix/master.cf 
-------------tambahkan ini ke master.cf---------------
#AV scan filter (used by contentfilter)
scan unix – - n – 16 smtp
-o smtpsendxforwardcommand=yes
#For injecting mail back into postfix from the filter
127.0.0.1:10026 inet n – n – 16 smtpd
-o contentfilter=
-o receiveoverrideoptions=nounknownrecipientchecks,noheaderbodychecks
-o smtpdhelorestrictions=
-o smtpdclientrestrictions=
-o smtpdsenderrestrictions=
-o smtpdrecipientrestrictions=permitmynetworks,reject
-o mynetworksstyle=host
-o smtpdauthorizedxforwardhosts=127.0.0.0/8 
------------tambahkan ini ke master.cf---------------
tahap selanjutnya adalah mengkonfigurasi clamav
#pico pico /usr/local/etc/clamd.conf 
--------------isi file clamd.conf-----------------
LogFile /tmp/clamd.log
LogFileUnlock
LogFileMaxSize 2M
LogTime
LogClean
LogSyslog
LogFacility LOG_MAIL
LogVerbose
PidFile /www/tmp/clamd.pid
TemporaryDirectory /www/tmp
LocalSocket /www/tmp/clamd
FixStaleSocket
MaxConnectionQueueLength 30
StreamMaxLength 26M
MaxThreads 20
FollowDirectorySymlinks
FollowFileSymlinks
User clamav qscand
ScanOLE2
ScanMail
ScanRAR
ArchiveMaxFileSize 25M
ArchiveMaxCompressionRatio 300
ArchiveBlockMax
-------------------isi file clamd.conf------------------------
tahap selanjutnya adalah mengkonfigurasi clamsmtp
#pico /usr/local/etc/clamsmtpd.conf 
--------------------isi file clamsmtpd.conf-------------------
OutAddress: 127.0.0.1:10026
Listen: 127.0.0.1:10025
ClamAddress: /www/tmp/clamd
Header: X-Virus-Scanned: INDOFREEBSD MAIL Anti Virus
TempDirectory: /www/tmp
Quarantine: on
User: clamav
---------------------isi file clamsmtpd.conf-------------------
tahap selanjutnya jalankan satu persatu aplikasi yang kita install tadi
#cd /usr/local/etc/rc.d
#ln -s /usr/local/sbin/postfix postfix.sh #pico /etc/rc.conf 
-----------------tambahkan ini pada rc.conf-----------
clamsmtpdenable=”YES”
clamavfreshclamenable=”YES”
clamavclamdenable=”YES”
tpop3denable=”YES”
------------------tambahkan ini pada rc.conf-----------
#./tpop3d.sh start
#./clamav-clamd.sh start 
#./clamav-freshclam.sh start 
#postfix start 

-------------semua tahapan telah selesai silahkan mempergunakan email anda-------------

selamat mencoba yach!!!!!!!!!!!!!!!!!!good luck