29 November 2004

Postfix mail server

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/postfix
- 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 ports 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:
# adduser [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 ports.
- 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 ports 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 ports 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 ports 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 ports:
# 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

12 November 2004

Move to new ISP

Setelah sekian lama bertahan dengan QuasarNet [http://www.quasar.net.id/] ternyata musti lepas juga. Sangat delematis memang, setidaknya kita tidak ingin pindah dengan kondisi yang ada tp karena ada beberapa alasan yg sangat memberatkan terhadap warnet dengan sangat terpaksa kami musti cari ISP baru.

Terhitung pada tanggal 21-Oktober-2005 dengan adanya pemberitahuan re-numbering IP Address awalnya kita biasa2, saya pikir cuma merubah IP Address-nya aja [Tidak merubah system yg ada], ternyata setelah dapat tlp dari pihak sales kita sempat kaget juga dengan perubahan system yg mendasar ini.

Awalnya kita mendapatkan block IP Static untuk point to pointnya dan block IP Static untuk digunakan di client, dengan regulasi baru ini block IP Static yg biasa digunakan di client tidak dapat direquest kembali ke pihak ISP, padahal saya tau space IP Address ISP saya /21 tentunya cukup banyak. Tapi dengan alasan yg _tidak masuk akal_ menurut saya mereka tidak mau kasi kembali block IP Address itu. Setidaknya kita memang betul2 memerlukan IP Address tersebut untuk beberapa kepentingan user kami.

Dan salah satu yg sangat membut saya shock adalah semua client warnet QuasarNet di arahkan ke 1 IP Address saja gatewaynya, padahal system sebelomnya itu yg baik/benar menurut saya, dan memang layaknya ISP lainnya juga memang demikian biasanya dengan memberikan subnet khusus untuk masing2 clientnya (Tidak disatukan semua clientnya)

Tidak habis pikir kenapa koq bisa systemnya demikian[?], saya tidak tau pasti regulasi dan ada apa sebenernya di QuasarNet. Yang jelas kami sbg warnet terus terang dengan kwalitas links spt itu tidak bisa menjual kepada user dengan kata lain kondisi links-nya tidak layak jual sama sekali.

Ada beberapa prediksi kami:
1. Client warnet terlalu diremehkan oleh pihak ISP[?], karena spt kita ketahui QuasarNet salah satu perusahaan besar atau layaknya kita sebut NAP. Dan banyak anak perusahaannya yg bergerak di bidang infrastruktur telpon. _Bisa jadi_ untuk warnet ini cuma bisnis untuk "cuci mulut" saja.

2. Karena kami warnet kecil yg cuma langganan 64 kbps[?], yg mungkin dianggap income buat mereka "geli2"[?].

Pernyataan diatas cuma sebagian dari kekecewaan kami sbg client yg selayaknya musti di service dengan baik, bagaimana pun kita adalah customer, dan kalo memang dalam hal request IP Address tidak boleh oleh QuasarNet kenapa tidak dicantumkan di SLA mereka misalnya:

- Setiap client tidak boleh merequest IP Static Address apa pun alasannya, _kecuali_ IP Static Address untuk point to point saja.

"Nasi sudah jadi bubur", gimana pun kita tidak bisa apa2 untuk masalah ini. Dan kita tetep berharap warnet kita bisa survive untuk keadaan ini. Ini salah satu cobaan buat kami dan setidaknya jadi pengalaman yg berharga bagi kami dikemudian hari.