<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Asfihani</title>
	<atom:link href="https://layangan.com/asfik/blog/feed" rel="self" type="application/rss+xml" />
	<link>https://layangan.com/asfik/blog</link>
	<description>Dicatet Ben Ora Lali</description>
	<lastBuildDate>Sat, 24 Apr 2021 09:30:10 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>DomainKeys Identified Mail di Zimbra (Postfix)</title>
		<link>https://layangan.com/asfik/blog/domainkeys-identified-mail-di-zimbra-postfix</link>
					<comments>https://layangan.com/asfik/blog/domainkeys-identified-mail-di-zimbra-postfix#respond</comments>
		
		<dc:creator><![CDATA[Asfihani]]></dc:creator>
		<pubDate>Fri, 13 Aug 2010 03:36:20 +0000</pubDate>
				<category><![CDATA[ComSci]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[Zimbra]]></category>
		<category><![CDATA[tutorial]]></category>
		<guid isPermaLink="false">http://layangan.com/asfik/blog/?p=530</guid>

					<description><![CDATA[Dalam upaya mengurangi spam mail forgery (klaim email seolah-olah benar dari pengirim/domain yang valid) yang sering terjadi adalah dengan DKIM (DomainKeys Identified Mail). Pada DKIM, sebuah email yang dikirim akan disign dengan private key dan ketika diterima email akan diverifikasi dengan public key yang sudah disiarkan sebelumnya melalui record DNS. Dari hasil verifikasi tersebut bisa ditentukan apakah &#8230; <p class="link-more"><a href="https://layangan.com/asfik/blog/domainkeys-identified-mail-di-zimbra-postfix" class="more-link">Continue reading<span class="screen-reader-text"> "DomainKeys Identified Mail di Zimbra (Postfix)"</span></a></p>]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" class="alignnone size-full wp-image-521 floatleft" style="border: 0px;" title="zimbra_logo" src="http://www.layangan.com/asfik/blog/wp-content/uploads/2010/08/zimbra_logo.jpg" alt="zimbra_logo" width="120" height="40" /></p>
<p>Dalam upaya mengurangi spam <em>mail</em> <em>forgery</em> (klaim email seolah-olah benar dari pengirim/domain yang valid) yang sering terjadi adalah dengan DKIM (<a href="http://en.wikipedia.org/wiki/DomainKeys_Identified_Mail">DomainKeys Identified Mail)</a>. Pada DKIM, sebuah email yang dikirim akan di<em>sign</em> dengan <em>private key</em> dan ketika diterima email akan diverifikasi dengan <em>public key</em> yang sudah disiarkan sebelumnya melalui record DNS. Dari hasil verifikasi tersebut bisa ditentukan apakah email akan diterima atau ditola. Beberapa <em>major mail provider</em> seperti Yahoo dan Gmail telah lama mengadopsinya. <a href="http://www.postfix.org">Postfix</a>, mailer yang digunakan oleh Zimbra, juga telah mendukung penggunaan DKIM ini menggunakan proxy (via <a href="http://www.postfix.org/FILTER_README.html">content_filter</a>) atau secara native menggunakan <a href="http://www.postfix.org/MILTER_README.html">milter</a> (<em>mail filter</em>). Untuk mengkonfigurasi Postfix dengan <em>content_filter</em> (DKIM proxy), silakan baca posting saya yang lain: <strong><a href="http://layangan.com/asfik/blog/2008/03/11/dkim-di-postfix/">DKIM di Postfix</a></strong>.</p>
<p><span id="more-530"></span>Milter merupakan sebuah protokol yang diperkenalkan oleh <a href="https://www.sendmail.org/milter/">Sendmail</a> untuk memfilter email dari virus maupun spam maupun fungsi lain yang lebih kompleks. Antara MTA dengan milter ini komunikasi dilakukan dengan menggunakan API yang disediakan oleh library milter. Di Postfix, milter dibedakan dalam dua macam, yaitu SMTP milter (<a href="http://www.postfix.org/postconf.5.html#smtpd_milters">smtpd_milters</a>) untuk memfilter email yang <em>_hanya_</em> datang dari network, dan non-SMTP milter (<a href="http://www.postfix.org/postconf.5.html#non_smtpd_milters">non_smtpd_milters</a>) untuk email yang datang dari <em>local submission</em> (a.k.a <em>sendmail wrapper</em>). Aplikasi milter dapat &#8216;berbicara&#8217; dengan Postfix melalui unix-socket atau TCP. Contoh aplikasi milter adalah <a href="http://sourceforge.net/projects/dkim-milter/">dkim-milter</a>, <a href="http://sourceforge.net/projects/sid-milter/">sid-milter</a>, dan <a href="http://www.malgouyres.fr/linux/spamass-milter_postfix_en.html">SpamAssassin</a>. Jika digambarkan posisi aplikasi milter dan Postfix kira-kira seperti ini:</p>
<p><a href="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/postfix_milter.png"><img decoding="async" fetchpriority="high" class="alignnone size-full wp-image-535" title="postfix_milter" src="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/postfix_milter.png" alt="" width="619" height="381" srcset="https://layangan.com/asfik/blog/wp-content/uploads/2010/08/postfix_milter.png 619w, https://layangan.com/asfik/blog/wp-content/uploads/2010/08/postfix_milter-300x184.png 300w" sizes="(max-width: 619px) 100vw, 619px" /></a></p>
<p><strong>DKIM di Zimbra</strong></p>
<p>Untuk mengkonfigurasi Postfix DKIM Zimbra di Ubuntu, cukup dengan menginstall paket <em>dkim-filter</em> (yang otomatis akan menginstall paket <em>libmilter0</em>).</p>
<p><code>$ sudo aptitude install dkim-filter</code></p>
<p>Buat direktori untuk menyimpan file private key, misalnya <em>/etc/mail </em>:</p>
<p><code>$ sudo mkdir -p /etc/mail<br />
$ cd /etc/mail</code></p>
<p>Buat key yang akan digunakan untuk meng<em>sign</em> email dengan utiliti <a href="http://manpages.ubuntu.com/manpages/hardy/man8/dkim-genkey.8.html">dkim-genkey</a>, misalnya untuk membuat 1024 bits key pada domain <em>domain.tld</em> dengan selector <em>selector1</em> adalah:</p>
<p><code>$ sudo dkim-genkey -b 1024 -d domain.tld -s selector1</code></p>
<p>Maka kalau kita lihat perintah diatas akan membuat dua buah file  yaitu <em>selector1.private</em> yang berisi <em>private key</em> dan <em>selector1.txt</em> yang merupakan contoh record DNS yang berisi <em>public key </em>untuk domain <em>domain.tld</em>. Ubah DNS pada domain <em>domain.tld</em> seperti pada contoh file tersebut. Untuk memeriksanya bisa menggunakan perintah <em>dig</em>, misalnya :</p>
<p><code>$ dig -t txt +short selector1._domainkey.domain.tld</code></p>
<p>Ubah file <em>/etc/dkim.filter</em> pada bagian seperti dibawah ini :</p>
<p><a href="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/dkim-filter-conf.png"><img decoding="async" class="alignnone size-full wp-image-538" title="dkim-filter-conf" src="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/dkim-filter-conf.png" alt="" width="358" height="155" srcset="https://layangan.com/asfik/blog/wp-content/uploads/2010/08/dkim-filter-conf.png 358w, https://layangan.com/asfik/blog/wp-content/uploads/2010/08/dkim-filter-conf-300x129.png 300w" sizes="(max-width: 358px) 100vw, 358px" /></a></p>
<p>Ubah kepemilikan file  <em>/etc/mail/selector1.private</em> menjadi file milik user yang akan menjalankan <em>dkim-filter</em> (default: <em>dkim-filter</em>):</p>
<p><code>$ sudo chown dkim-filter /etc/mail/selector1.private</code></p>
<p>Restart daemon dkim-filter :</p>
<p><code>$ sudo /etc/init.d/dkim-filter restart</code></p>
<p>Secara default, daemon dkim-filter akan listen di port 8891 di localhost bukan menggunakan unix-socket. Periksa daemon apakah sudah listen di port tersebut :</p>
<p><code>$ sudo lsof -i TCP:8891</code></p>
<p><code> </code></p>
<p><code>COMMAND    PID        USER   FD   TYPE  DEVICE SIZE NODE NAME<br />
dkim-filt 4752 dkim-filter    4u  IPv4 2728156       TCP localhost:8891 (LISTEN)</code></p>
<p>Sekarang kita beritahu Postfix untuk menggunakan filter tersebut dengan mengubah/menambahkan pada file <em>/opt/zimbra/postfix/conf/master.cf.in</em> menjadi :</p>
<p><code> -o milter_default_action=accept<br />
-o smtpd_milters=inet:localhost:8891<br />
-o non_smtpd_milters=inet:localhost:8891<br />
-o disable_mime_output_conversion=yes</code></p>
<p>Pada <em>milter_default_action</em> diset <em>accept</em> agar jika suatu ketika milter tidak tersedia, email masih bisa diteruskan.</p>
<p>Restart Postfix di Zimbra :</p>
<p><code>$ sudo  su - zimbra<br />
$ zmmtactl restart</code></p>
<p>Kemudian coba kirim email ke Yahoo atau Gmail dan melihat header lengkapnya untuk memeriksa status DKIM. Alternatif lain adalah dengan mengirimkan email test ke <strong>autorespond+dkim-relaxed @ dk.elandsys.com</strong>.</p>
<p>Contoh di Gmail :</p>
<p><a href="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/gmail.png"><img decoding="async" loading="lazy" class="alignnone size-full wp-image-540" title="gmail" src="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/gmail.png" alt="" width="330" height="126" srcset="https://layangan.com/asfik/blog/wp-content/uploads/2010/08/gmail.png 330w, https://layangan.com/asfik/blog/wp-content/uploads/2010/08/gmail-300x114.png 300w" sizes="(max-width: 330px) 100vw, 330px" /></a></p>
<p><a href="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/gmail-header.png"><img decoding="async" loading="lazy" class="alignnone size-full wp-image-541" title="gmail-header" src="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/gmail-header.png" alt="" width="670" height="192" srcset="https://layangan.com/asfik/blog/wp-content/uploads/2010/08/gmail-header.png 670w, https://layangan.com/asfik/blog/wp-content/uploads/2010/08/gmail-header-300x85.png 300w" sizes="(max-width: 670px) 100vw, 670px" /></a></p>
<p>Contoh di Yahoo:</p>
<p><a href="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/yahoo.png"><img decoding="async" loading="lazy" class="alignnone size-full wp-image-542" title="yahoo" src="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/yahoo.png" alt="" width="460" height="234" srcset="https://layangan.com/asfik/blog/wp-content/uploads/2010/08/yahoo.png 460w, https://layangan.com/asfik/blog/wp-content/uploads/2010/08/yahoo-300x152.png 300w" sizes="(max-width: 460px) 100vw, 460px" /></a></p>
<p>Semoga bermanfaat.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://layangan.com/asfik/blog/domainkeys-identified-mail-di-zimbra-postfix/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Notifikasi Mangastream menggunakan BASH</title>
		<link>https://layangan.com/asfik/blog/notifikasi-mangastream-menggunakan-bash</link>
					<comments>https://layangan.com/asfik/blog/notifikasi-mangastream-menggunakan-bash#comments</comments>
		
		<dc:creator><![CDATA[Asfihani]]></dc:creator>
		<pubDate>Tue, 10 Aug 2010 06:11:45 +0000</pubDate>
				<category><![CDATA[ComSci]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[pemrograman]]></category>
		<guid isPermaLink="false">http://layangan.com/asfik/blog/?p=569</guid>

					<description><![CDATA[Apakah Anda penggemar serial komik (manga) Naruto dan One Piece ? Apakah capek mereload browser Anda untuk menanti seri terakhir dari Mangastream ? Jika jawabannya YA, maka hanya dengan beberapa baris skrip BASH dibawah ini mungkin bisa membuat Anda lebih tenang di akhir pekan tanpa berlama-lama didepan monitor untuk melihat apakah sudah ada seri terakhir &#8230; <p class="link-more"><a href="https://layangan.com/asfik/blog/notifikasi-mangastream-menggunakan-bash" class="more-link">Continue reading<span class="screen-reader-text"> "Notifikasi Mangastream menggunakan BASH"</span></a></p>]]></description>
										<content:encoded><![CDATA[<p><a href="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/terminal.png"><img decoding="async" loading="lazy" class="alignnone size-full wp-image-571 floatleft" title="terminal" src="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/terminal.png" alt="" width="64" height="64" /></a> Apakah Anda penggemar serial komik (manga) <a href="http://naruto.viz.com/">Naruto</a> dan <a href="http://onepiece.viz.com/">One Piece</a> ?<br />
Apakah capek mereload <em>browser</em> Anda untuk menanti seri terakhir dari <a href="http://mangastream.com/">Mangastream</a> ?<br />
Jika jawabannya YA, maka hanya dengan beberapa baris skrip <a href="http://www.gnu.org/software/bash/">BASH</a> dibawah ini mungkin bisa membuat Anda lebih tenang di akhir pekan tanpa berlama-lama didepan monitor untuk melihat apakah sudah ada seri terakhir atau belum :)</p>
<p><span id="more-569"></span>Skrip ini akan memeriksa apakah seri terbaru sudah ada dan memberitahu Anda melaulu email. Sederhana bukan? Yang dibutuhkan adalah <a href="http://links.sourceforge.net/">links</a>, MTA (misalnya: Postfix, Sendmail, qmail, Exim dll), akses crontab dan tentunya sistem operasi kesayangan Anda (Linux/BSD). Jangan lupa untuk membuat direktori <code>/etc/mangadata</code> serta bikin file <code>/etc/mangadata/Naruto.last</code> dan <code>/etc/mangadata/One_Piece.last</code> yang berisi data terakhir seri manga ybs. Pastikan user yang menjalankan crontab bisa menulis ke direktori tersebut.<br />
<small></p>
<pre lang="bash">#!/bin/bash
#
# Description : Skrip notifikasi serial manga terbaru dari Mangastream
# Author      : Asfihani <asfihani@gmail.com>
# License     : GPL

# daftar penerima email notifikasi, pisahkan dengan spasi
RECIPIENTS="asfihani@domain.tld asfik@otherdomain.tld"
MANGA_LIST="Naruto One_Piece"
URL="http://twitter.com/mangastream"
STRING="is out"

for MANGA in $MANGA_LIST; do
        # biasanya manga seri baru hari Kamis sudah ada, hapus lock file pada cycle pertama
	if [ `date +%u` == "4" ] && [ `date +%H%M` == "0000" ]; then
		rm -rf /etc/mangadata/$MANGA.lck
	fi

        # periksa file lock
	if [ ! -f /etc/mangadata/$MANGA.lck ]; then
                # periksa file yang berisi data seri terakhir
		if  [ -f /etc/mangadata/$MANGA.last ]; then
			LAST_EPISODE=$(cat /etc/mangadata/$MANGA.last)
			let CURRENT_EPISODE=$LAST_EPISODE+1

                        MANGA_TITLE=$(echo $MANGA | sed -e "s/_/ /g")
			OUTPUT=$(links -dump $URL | grep -A1 "$MANGA_TITLE $CURRENT_EPISODE $STRING")

			if [ "$OUTPUT" != "" ]; then
                                SUBJECT="[MANGABOT] $MANGA_TITLE Chapter $CURRENT_EPISODE sudah keluar"
				echo $OUTPUT | mail -s $SUBJECT $RECIPIENTS
                                # update seri terakhir
				echo $CURRENT_EPISODE > /etc/mangadata/$MANGA.last
                                # buat file lock, agar looping selanjutnya dilewati
				touch /etc/mangadata/$MANGA.lck
			fi
		fi
	fi
done</pre>
<p></small><br />
Buat entry di crontab, misalnya untuk memeriksa setiap 15 menit dari hari Kamis s/d Minggu :</p>
<p><code>*/15 * * * 4-7 /etc/mangadata/check_manga.sh &gt; /dev/null 2&gt;&amp;1</code></p>
<p>Kelemahan skrip ini adalah jika Mangastream merubah pola string maka skrip mungkin tidak akan bekerja sebagaimana yang diharapkan :)</p>
]]></content:encoded>
					
					<wfw:commentRss>https://layangan.com/asfik/blog/notifikasi-mangastream-menggunakan-bash/feed</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>FreePBX Inbound Route dengan DID</title>
		<link>https://layangan.com/asfik/blog/freepbx-inbound-route-dengan-did</link>
					<comments>https://layangan.com/asfik/blog/freepbx-inbound-route-dengan-did#comments</comments>
		
		<dc:creator><![CDATA[Asfihani]]></dc:creator>
		<pubDate>Sun, 08 Aug 2010 10:40:45 +0000</pubDate>
				<category><![CDATA[ComSci]]></category>
		<category><![CDATA[asterisk]]></category>
		<category><![CDATA[freepbx]]></category>
		<guid isPermaLink="false">http://layangan.com/asfik/blog/?p=553</guid>

					<description><![CDATA[FreePBX adalah aplikasi frontend untuk Asterisk yang sangat powerfull. Namun, untuk membuat sebuah sistem yang sesuai dengan keinginan (baca: request client hehe) maka sedikit kerja keras dan keberuntungan dibutuhkan. Misalnya begini, ada sebuah sistem IP PBX yang terhubung ke PSTN sebanyak empat buah nomor telepon. Dari ke empat nomor telepon tersebut salah satunya akan dialokasikan &#8230; <p class="link-more"><a href="https://layangan.com/asfik/blog/freepbx-inbound-route-dengan-did" class="more-link">Continue reading<span class="screen-reader-text"> "FreePBX Inbound Route dengan DID"</span></a></p>]]></description>
										<content:encoded><![CDATA[<p><a href="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/newlogo.gif"><img decoding="async" loading="lazy" class="alignnone size-full wp-image-558 floatleft" title="newlogo" src="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/newlogo.gif" alt="" width="99" height="55" /></a><a href="http://www.freepbx.org/">FreePBX</a> adalah aplikasi frontend untuk <a href="http://www.asterisk.org/">Asterisk </a>yang sangat <em>powerfull</em>. Namun, untuk membuat sebuah sistem yang sesuai dengan keinginan (baca: <em>request client</em> hehe) maka sedikit kerja keras dan keberuntungan dibutuhkan. Misalnya begini, ada sebuah sistem IP <a href="http://en.wikipedia.org/wiki/Private_branch_exchange">PBX</a> yang terhubung ke <a href="http://en.wikipedia.org/wiki/Public_switched_telephone_network">PSTN</a> sebanyak empat buah nomor telepon. Dari ke empat nomor telepon tersebut salah satunya akan dialokasikan khusus untuk fax. Dengan kata lain setiap panggilan ke nomor tersebut akan langsung diteruskan diterima oleh sebuah mesin fax konvensional. Masalah yang kelihatannya sederhana bukan?</p>
<p><span id="more-553"></span>Langkah yang paling mudah adalah tentunya dengan menyambungkan mesin fax langsung ke nomor telepon tersebut atau tidak masuk dalam sistem PBX. Terkadang hal ini ada kelemahannya, misalnya jika server diletakkan dalam datacenter yang tidak semua orang bisa masuk atau enggan masuk hanya untuk mengambil fax. Atau bisa juga terminasi dari penyedia PSTN hanya sampai diruang server dan Anda harus menarik kabel tambahan ke mesin fax&#8230;</p>
<p>Alternatif lainnya adalah dengan menggunakan IP PBX  yang telah ada untuk meneruskan fax ke sebuah ekstension khusus yang dibuat untuk menerima fax. Di DAHDI (<em>Digium Asterisk Hardware Device Interface</em>), setiap line telepon tersebut akan terhubung ke sebuah port (channel). Problemnya adalah FreePBX tidak berbicara langsung dengan port tersebut untuk bisa me<em>routing</em> ke tujuan akhir.</p>
<p>Beruntung ada <a href="http://en.wikipedia.org/wiki/Direct_inward_dialing">DID</a> yang bisa kita pakai untuk mensiasati hal ini. Dengan DID memungkinkan memberikan sebuah &#8216;label&#8217; pada sebuah port di DAHDI device. Dengan modal label tersebut nanti bisa dibuat aturan untuk mengarahkan panggilan yang masuk ke port tesebut.</p>
<p>Sebagai contoh kita mempunyai sebuah DAHDI device TDMP400P dengan 4 buah port seperti dibawah ini dan akan menggunakan port 4 (atau channel 4) khusus untuk fax :</p>
<p><a href="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/dahdi-channels.png"><img decoding="async" loading="lazy" class="alignnone size-full wp-image-555" title="dahdi-channels" src="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/dahdi-channels.png" alt="" width="366" height="223" srcset="https://layangan.com/asfik/blog/wp-content/uploads/2010/08/dahdi-channels.png 366w, https://layangan.com/asfik/blog/wp-content/uploads/2010/08/dahdi-channels-300x182.png 300w" sizes="(max-width: 366px) 100vw, 366px" /></a></p>
<p>Pertama yang akan kita lakukan adalah mengubah context dari <em>from-pstn</em> ke<em> from-zaptel</em> dengan mengedit file <em>/etc/asterisk/dahdi-channels.conf</em> seperti dibawah ini :</p>
<p><a href="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/dahdi-cfg.png"><img decoding="async" loading="lazy" class="alignnone size-full wp-image-554" title="dahdi-cfg" src="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/dahdi-cfg.png" alt="" width="357" height="153" srcset="https://layangan.com/asfik/blog/wp-content/uploads/2010/08/dahdi-cfg.png 357w, https://layangan.com/asfik/blog/wp-content/uploads/2010/08/dahdi-cfg-300x128.png 300w" sizes="(max-width: 357px) 100vw, 357px" /></a></p>
<p>Jika ingin menggunakan channel tersebut <em>dedicated </em>buat fax (<em>no outgoing calls</em>), maka <em>group </em>juga diubah (<em>default: group=0</em>).</p>
<p>Kemudian dari menu <strong>Zap Channels DID</strong> tambahkan channel tersebut sesuai dengan DID yang diinginkan. Ini bisa diisi dengan sembarang nomor, namun agar lebih mudah maka kita isi dengan nomor telepon fax tersebut misalnya kita isi dengan nomor telepon <em>12345678 </em>seperti gambar berikut ini :</p>
<p><a href="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/freepbx-did.png"><img decoding="async" loading="lazy" class="alignnone size-full wp-image-556" title="freepbx-did" src="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/freepbx-did.png" alt="" width="595" height="221" srcset="https://layangan.com/asfik/blog/wp-content/uploads/2010/08/freepbx-did.png 595w, https://layangan.com/asfik/blog/wp-content/uploads/2010/08/freepbx-did-300x111.png 300w" sizes="(max-width: 595px) 100vw, 595px" /></a></p>
<p>Baru kita buat aturan dari menu <strong>Inbound Routes</strong> untuk memberitahu Asterisk agar meneruskan setiap panggilan yang masuk ke channel 4 ke ekstension <em>200 </em>:</p>
<p><a href="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/freepbx-inbound-route.png"><img decoding="async" loading="lazy" class="alignnone size-full wp-image-557" title="freepbx-inbound-route" src="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/freepbx-inbound-route.png" alt="" width="455" height="366" srcset="https://layangan.com/asfik/blog/wp-content/uploads/2010/08/freepbx-inbound-route.png 455w, https://layangan.com/asfik/blog/wp-content/uploads/2010/08/freepbx-inbound-route-300x241.png 300w" sizes="(max-width: 455px) 100vw, 455px" /></a></p>
<p>Perlu diperhatikan bahwa dalam beberapa hal file <em>dahdi-channels.conf</em> bisa saja berubah oleh program lain setiap server <em>reboot</em>, silakan diperiksa kembali :)</p>
]]></content:encoded>
					
					<wfw:commentRss>https://layangan.com/asfik/blog/freepbx-inbound-route-dengan-did/feed</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title>Sedikit Catatan Migrasi Vpopmail ke Zimbra</title>
		<link>https://layangan.com/asfik/blog/sedikit-catatan-migrasi-vpopmail-ke-zimbra</link>
					<comments>https://layangan.com/asfik/blog/sedikit-catatan-migrasi-vpopmail-ke-zimbra#comments</comments>
		
		<dc:creator><![CDATA[Asfihani]]></dc:creator>
		<pubDate>Sun, 01 Aug 2010 02:51:47 +0000</pubDate>
				<category><![CDATA[ComSci]]></category>
		<category><![CDATA[Zimbra]]></category>
		<category><![CDATA[howto]]></category>
		<guid isPermaLink="false">http://www.layangan.com/asfik/blog/?p=500</guid>

					<description><![CDATA[Berikut ini sedikit catatan pengalaman saya yang mungkin bermanfaat sewaktu memigrasikan sejumlah account email (350+) dari vpopmail ke Zimbra beberapa waktu yang lalu. Dalam catatan ini saya akan bahas secara garis besarnya aja. Sebelumnya perlu diingat bahwa memigrasikan sebuah sistem ke sistem lain itu lebih rumit dari pada membuat sistem baru. Maka dari itu persiapkanlah &#8230; <p class="link-more"><a href="https://layangan.com/asfik/blog/sedikit-catatan-migrasi-vpopmail-ke-zimbra" class="more-link">Continue reading<span class="screen-reader-text"> "Sedikit Catatan Migrasi Vpopmail ke Zimbra"</span></a></p>]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" loading="lazy" class="alignnone size-full wp-image-521 floatleft" style="border: 0px;" title="zimbra_logo" src="http://www.layangan.com/asfik/blog/wp-content/uploads/2010/08/zimbra_logo.jpg" alt="zimbra_logo" width="120" height="40" />Berikut ini sedikit catatan pengalaman saya yang mungkin bermanfaat sewaktu memigrasikan sejumlah account email (350+) dari <a href="http://www.inter7.com/vpopmail/">vpopmail </a>ke <a href="http://www.zimbra.com/">Zimbra</a> beberapa waktu yang lalu. Dalam catatan ini saya akan bahas secara garis besarnya aja.</p>
<p>Sebelumnya perlu diingat bahwa memigrasikan sebuah sistem ke sistem lain itu <strong><em>lebih rumit</em></strong> dari pada membuat sistem baru. Maka dari itu persiapkanlah jauh-jauh hari apa yang bisa dikerjakan terlebih dahulu, meskipun itu hal yang kecil (misalnya dokumentasi) sehingga dalam proses migrasi nanti berjalan <em>smooth</em> dan Anda tidak jatuh dalam <a href="http://en.wikipedia.org/wiki/Don%27t_repeat_yourself">DRY/DIE</a>. Jangan lupa catat semua yang dilakukan agar mempermudah <em>tracking</em> jika ada sesuatu yang tidak berjalan.</p>
<p><span id="more-500"></span>Beberapa hal yang perlu dipersiapkan sebelum migrasi dari sistem lama adalah :</p>
<ul>
<li>Daftar account dan informasi pendukung yang dibutuhkan seperti password, nama lengkap dan quota</li>
<li>Daftar <em>mailing-list</em></li>
<li>Daftar alias (forward .qmail)</li>
<li>Data <em>address book </em>webmail (jika ada)</li>
</ul>
<p>Kemudian pada sistem baru  sebaiknya :</p>
<ul>
<li>Zimbra diinstall pada partisi yang cukup (paling) besar, lebih baik partisi <em>/opt</em> dipisahkan</li>
<li>Mengaktifkan <em>clear-text</em> login pada servis IMAP (digunakan untuk sinkronisasi mailbox)</li>
<li>Mensetting IMAP agar menerima mail dengan ukuran besar (misalnya 50MB) untuk mengantisipasi email ukuran besar dari sistem lama (<em>zimbraMtaMaxMessageSize </em>dan<em> zimbraMailContentMaxSize</em>)</li>
</ul>
<p><strong>Account</strong></p>
<p><span style="font-style: normal;">Data user (account) yang akan dimigrasikan bisa diambil dari</span><em> vpasswd. </em>Data tersebut meliputi account, password (yang dienkripsi), clear password (kecuali jika vpopmail dikompile dengan &#8211;<em>-disable-clear-passwd</em>), nama lengkap dan quota. Sebagian penjelasan struktur field <em>vpasswd </em>adalah seperti ini (seperti yang dijelaskan oleh pak Ken Jones <a href="http://osdir.com/ml/mail.vpopmail/2002-09/msg00064.html">disini</a>) :</p>
<p><img decoding="async" loading="lazy" class="alignnone size-full wp-image-511" style="border: 0px none;" title="passwd" src="http://www.layangan.com/asfik/blog/wp-content/uploads/2010/08/passwd1.jpg" alt="passwd" width="619" height="94" srcset="https://layangan.com/asfik/blog/wp-content/uploads/2010/08/passwd1.jpg 688w, https://layangan.com/asfik/blog/wp-content/uploads/2010/08/passwd1-300x45.jpg 300w" sizes="(max-width: 619px) 100vw, 619px" /></p>
<p>Dengan memanfaatkan perintah <a href="http://wiki.zimbra.com/wiki/Zmprov"><em>zmprov</em></a>, maka account yang telah ada tersebut bisa dibuat di server baru dengan melakukan <em>looping</em> pada file tersebut. Contoh perintah untuk membuat <em>asfik@domain.tld</em> (nama lengkap <em>Asfihani</em>) dengan password <em>rahasia </em>adalah :</p>
<p><code>zmprov ca asfik@domain.tld rahasia displayName 'Asfihani'</code></p>
<p><strong>Password</strong></p>
<p>Di Zimbra selain bisa menerima argumen clear-password pada saat membuat account, bisa dimungkinkan untuk mengganti account yang telah ada dengan cara memodifikasi atribut <em>userPassword </em>account ybs. Yang sudah saya coba adalah algoritma enkripsi CRYPT.  Cara ini sangat berguna untuk memigrasikan sebuah sistem lama ke sistem yang baru tanpa mengganti password user lama. Sehingga dari sisi pengguna, migrasi ini berjalan secara transparan tanpa ada proses reset password.</p>
<p><strong>Quota</strong></p>
<p>Informasi quota di vpopmail bisa diambil dari file vpasswd. Dengan mengubah attribut <em>zimbraMailQuota </em>kita dapat menerapkan quota tersebut.  Contoh untuk menerapkan quota 20MB (20971520 bytes) pada account <em>asfik@domain.tld</em> dengan <em>zmprov </em>adalah :</p>
<p><code>zmprov ma asfik@domain.tld zimbraMailQuota 20971520</code></p>
<p><strong>Mailbox</strong></p>
<p>Data paling penting yang harus dipindahkan tentunya adalah email-email account atau kita sebut saja mailbox. Untuk memindahkan data tersebut kita manfaatkan tool <a href="http://www.linux-france.org/prj/imapsync/">imapsync</a> yang berfungsi untuk menyalin data dari sistem lama ke sistem baru menggunakan protokol IMAP. Contoh untuk memigrasikan account <em>asfik@domain.tld</em> dari server lama (<em>10.126.10.10</em>) ke localhost (Zimbra) dengan password <em>rahasia </em>menggunakan imapsync adalah sebagai berikut :<br />
<code><br />
imapsync --buffersize 8192000 --nosyncacls --subscribe --syncinternaldates --noauthmd5 \<br />
--host1 10.126.10.10 --user1 asfik@domain.tld --password1 rahasia \<br />
--host2 127.0.0.1 --user2 asfik@domain.tld --password2 rahasia<br />
</code></p>
<p>Proses ini memakan waktu cukup lama. Pengalaman saya memindahkan 350 mailbox secara sekuensial dengan ukuran total 20 GB memakan waktu +- 5 jam! Mungkin jika Anda mempunya sumber daya perangkat yang memadai hal ini bisa dicoba dilakukan secara pararel :)</p>
<p><strong>Alias</strong></p>
<p>Alias (atau dot-forward) di vpopmail bisa dilihat pada direktori domain ybs dengan memperhatikan file<em> .qmail-*</em> atau menggunakan tool <a href="http://www.inter7.com/qmailadmin.html">qmailadmin</a>. Contoh untuk menambahkan alias <em>asfihani@domain.tld</em> ke account <em>asfik@domain.tld</em> :</p>
<p><code>zmprov aaa asfik@domain.tld asfihani@domain.tld</code></p>
<p><strong>Mailing-list</strong></p>
<p>Memindahkan mailing-list dari sistem vpopmail (tepatnya <a href="http://www.ezmlm.org/">ezmlm</a>) ke Zimbra memang sedikit <em>tricky</em>. Hal ini disebabkan karena Zimbra belum ada fitur mailing list seperti ezmlm. Memang sudah ada <em>Distribution List</em> yang sudah cukup untuk sekedar meneruskan email ke beberapa orang, namun fitur-fitur sebuah mailing-list seperti proteksi posting hanya dari member masih belum bisa dilakukan.</p>
<p>Untuk mengatasi hal ini kita gunakan GNU <a href="http://www.gnu.org/software/mailman/index.html">Mailman</a> dengan Apache dan Postfix yang listen di port yang lain (karena port default sudah digunakan oleh Zimbra). Kemudian pada Zimbra kita buat seluruh email alias dari Mailman tersebut (<em>admin, bounces, confirm, join, leave, owner, request, subscribe, unsubscribe</em>) untuk diredirect ke Postfix pada port alternatif tersebut dengan cara mengubah atribut <em>zimbraMailTransport</em>. Kalau digambarkan flow email yang mengarah ke mailing list kira-kira seperti ini:</p>
<p><img decoding="async" loading="lazy" class="alignnone size-full wp-image-506" style="border: 0px;" title="zimbra_mailman" src="http://www.layangan.com/asfik/blog/wp-content/uploads/2010/08/zimbra_mailman.jpg" alt="zimbra_mailman" width="360" height="388" srcset="https://layangan.com/asfik/blog/wp-content/uploads/2010/08/zimbra_mailman.jpg 360w, https://layangan.com/asfik/blog/wp-content/uploads/2010/08/zimbra_mailman-278x300.jpg 278w" sizes="(max-width: 360px) 100vw, 360px" /></p>
<p>Untuk melihat mailing-list yang ada di sistem lama bisa menggunakan tool qmailadmin  atau beberapa perintah berikut ini yang mungkin bisa membantu:</p>
<p>Daftar moderator:<br />
<code>$ezmlm-list DIR/mod/</code></p>
<p>Daftar member:<br />
<code>$ezmlm-list DIR/</code></p>
<p>Prefix subject mailing list :<br />
<code>$cat DIR/prefix</code></p>
<p>Footer (jika ada) :<br />
<code>$cat DIR/text/trailer</code></p>
<p>Dimana DIR adalah direktori mailing-list,  misalnya:<em> /home/vpopmail/domains/domain.tld/list-name</em></p>
<p>Update: jika Anda tidak ingin menginstall Postfix dan Apache tambahan bisa mengikuti <a href="http://www.zimbra.com/forums/administrators/1380-solved-zimbra-mailman-howto.html">tutorial ini</a> (Thanks Mas Dudi).</p>
<p><strong>Address Book</strong></p>
<p>Jika sistem lama menggunakan <a href="http://squirrelmail.org/">Squirrelmail</a> sebagai webmailnya, maka data address book masing-masing user bisa dikonversi menjadi format <a href="http://en.wikipedia.org/wiki/Comma-separated_values">CSV</a>. Di Zimbra, import address book (<em>Contact</em>) menerima file CSV dengan format sebagai berikut :</p>
<p><code>"First Name","Last Name","E-mail Address","E-mail Display Name"</code></p>
<p>Untuk mengimport file address book di Zimbra bisa memanfaatkan perintah <a href="http://wiki.zimbra.com/wiki/Zmmailbox">zmmailbox</a>, misalnya perintah untuk mengimport file <em>asfik_domain_tld.csv</em> yang berisi address book ke account <em>asfik@domain.tld</em> :</p>
<p><code>zmmailbox -z -m asfik@domain.tld pru /Contacts asfik_domain_tld.csv</code></p>
<p>&#8212;</p>
<p>Demikian sedikit catatan yang mungkin berguna. Tertarik melakukan migrasi atau punya pengalaman yang bisa dishare? Silakan menulis komentar dibawah ini :)</p>
]]></content:encoded>
					
					<wfw:commentRss>https://layangan.com/asfik/blog/sedikit-catatan-migrasi-vpopmail-ke-zimbra/feed</wfw:commentRss>
			<slash:comments>9</slash:comments>
		
		
			</item>
		<item>
		<title>CodeIgniter: resizing image using SimpleImage</title>
		<link>https://layangan.com/asfik/blog/codeigniter-resizing-image-using-simpleimage</link>
					<comments>https://layangan.com/asfik/blog/codeigniter-resizing-image-using-simpleimage#respond</comments>
		
		<dc:creator><![CDATA[Asfihani]]></dc:creator>
		<pubDate>Mon, 12 Jul 2010 09:29:16 +0000</pubDate>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[ComSci]]></category>
		<category><![CDATA[programming]]></category>
		<guid isPermaLink="false">http://www.layangan.com/asfik/blog/?p=477</guid>

					<description><![CDATA[The CodeIgniter (CI) framework is powerfull tool for rapid PHP application development. It has a lot of ready to use libraries and helpers. For example the Image Manipulation library resize function that lets you resize the original image, create a copy (with or without resizing), or create a thumbnail image. But, there is a minor &#8230; <p class="link-more"><a href="https://layangan.com/asfik/blog/codeigniter-resizing-image-using-simpleimage" class="more-link">Continue reading<span class="screen-reader-text"> "CodeIgniter: resizing image using SimpleImage"</span></a></p>]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" class="size-full wp-image-494 floatleft" style="border: 0pt none;" title="ci_logo2" src="http://www.layangan.com/asfik/blog/wp-content/uploads/2010/07/ci_logo.jpg" alt="ci_logo2" />The CodeIgniter (CI) framework is powerfull tool for rapid PHP application development. It has a lot of ready to use libraries and helpers. For example the <a href="http://codeigniter.com/user_guide/libraries/image_lib.html">Image Manipulation</a> library resize function that lets you resize the original image, create a copy (with or without resizing), or create a thumbnail image. But, there is a minor problem when resize image with main ratio enabled. For example, if you want to resize an 256px x256px earth images below to 128px x 128px.</p>
<p><span id="more-477"></span><img decoding="async" loading="lazy" class="alignnone size-full wp-image-481" title="earth" src="http://www.layangan.com/asfik/blog/wp-content/uploads/2010/07/earth.jpg" alt="earth" width="256" height="256" srcset="https://layangan.com/asfik/blog/wp-content/uploads/2010/07/earth.jpg 256w, https://layangan.com/asfik/blog/wp-content/uploads/2010/07/earth-150x150.jpg 150w" sizes="(max-width: 256px) 100vw, 256px" /></p>
<p>The snippet Controller code :</p>
<pre lang="php">$config['image_library'] = 'gd2';
$config['source_image'] = FCPATH .'images/earth.jpg';
$config['create_thumb'] = TRUE;
$config['maintain_ratio'] = TRUE;
$config['width'] = 128;

$this-&gt;load-&gt;library('image_lib', $config);
$this-&gt;image_lib-&gt;resize();

if ( file_exists(FCPATH .'images/earth_thumb.jpg'))
{
	echo '<img decoding="async" src="/images/earth_thumb.jpg" alt="" />';
}</pre>
<p>The result is 128px x 256px image :</p>
<p><img decoding="async" loading="lazy" class="alignnone size-full wp-image-483" title="earth_thumb" src="http://www.layangan.com/asfik/blog/wp-content/uploads/2010/07/earth_thumb.jpg" alt="earth_thumb" width="128" height="256" /></p>
<p>Not as expectedâ€¦until you have specified  <em>$config[&#8216;height&#8217;] </em> value :) like  <em>$config[&#8216;height&#8217;] = 128 </em> :)</p>
<p>Alternatively, there is excellent class called <a href="http://www.white-hat-web-design.co.uk/articles/php-image-resizing.php">SimpleImage</a> by Simon Jarvis. We can use this class as library in CodeIgniter. First, create file <em>Simple_image.php</em> inside <em>system/application/libraries/ </em>directory and paste the code from above link. After php tags add :</p>
<pre lang="php">if ( ! defined('BASEPATH')) exit('No direct script access allowed');</pre>
<p>Modify :</p>
<pre lang="php">class SimpleImage {</pre>
<p>To :</p>
<pre lang="php">class Simple_image {</pre>
<p>Dont forget to remove php closing tag (?&gt;) at the end of the file as stated <a href="http://codeigniter.com/user_guide/general/styleguide.html#php_closing_tag">here</a>. And let&#8217;s call the library inside the code :</p>
<pre lang="php">$this-&gt;load-&gt;library('simple_image');
$this-&gt;simple_image&gt;load(FCPATH .'images/earth.jpg');
$this-&gt;simple_image-&gt;resizeToWidth(128);
$this-&gt;simple_image-&gt;save(FCPATH .'images/earth_thumb.jpg');

if ( file_exists(FCPATH .'images/earth_thumb.jpg'))
{
	echo '<img decoding="async" src="/images/earth_thumb.jpg" alt="" />';
}</pre>
<p>The code render image with correct size :</p>
<p><img decoding="async" loading="lazy" class="alignnone size-full wp-image-489" title="earth_thumb2" src="http://www.layangan.com/asfik/blog/wp-content/uploads/2010/07/earth_thumb2.jpg" alt="earth_thumb2" width="128" height="128" /></p>
<p><em>Image source: http://twitrounds.com/</em></p>
]]></content:encoded>
					
					<wfw:commentRss>https://layangan.com/asfik/blog/codeigniter-resizing-image-using-simpleimage/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
